机器学习中的迭代是什么意思?

3
我不理解机器学习中的“迭代”概念。由于编程是确定性的(每次运行都执行相同的操作),重复运行相同的算法如何提高准确性?
这个迭代概念是否与RNN(循环神经网络)-以一种反馈到同一神经元更多次的方式-模型或SGD(随机梯度下降)-在效率上采用相同的训练数据样本-有关?
谢谢
编辑:我所说的迭代是在这个玩具应用程序中找到的: https://blog.kovalevskyi.com/rnn-based-chatbot-for-6-hours-b847d2d92c43 作者使用RNN创建了一个聊天机器人。我无法理解的是,为什么增加迭代次数会提高预测的准确性,因为每次都运行相同的算法。

但是从@Spirit_Dongdong的帖子中看来,我的迭代理解可能是错误的,因此我想澄清一下迭代的含义以及每个迭代中所做的事情。


迭代的概念非常通用,可以应用于许多情况。我想你指的是迭代算法,请更清楚地说明你想要了解的具体问题。 - Dr. Snoopy
2个回答

3
这篇文章讲的是训练迭代。这是因为当训练神经网络时,我们使用迭代算法,通常是随机梯度下降。
这样做是为了解决优化问题,最小化函数,但我们不知道最小化函数的参数值。然后我们使用梯度作为信息来指导参数移动的方向,但它并没有告诉我们要移动多少,所以我们移动一个固定量(步长或学习率)。
考虑到所有这些,如果我们朝着梯度方向移动一步,我们就更接近解(最小值),但我们只移动了一点,然后我们再移动一点,如此往复。这些是迭代。当增加迭代次数时,您将更接近极小值和最佳参数集,这些是改进性能的关键。
您说得对,同样的算法被运行,但输入不同。输入保持变化,因为当前参数值在一次迭代后会发生变化。

啊,我明白了。那么如果步长很大,我们需要的迭代次数会更少(假设我们没有超过最小点),这样说可以吗? - Bosen
一般来说是的,但大多数情况下很难确定什么是大步长或小步长。 - Dr. Snoopy
抱歉问一个愚蠢的问题,但在下载示例后,我没有找到任何人给出正确的参数。由于这是一个计算机程序,在它运行完成后,您需要捕获一些变量并告诉用户这是正确的参数,对吗? - Abdelouahab
@Abdelouahab,我不知道你在说什么,评论不是用来提问的,你必须在这个网站上创建自己的问题。 - Dr. Snoopy
@MatiasValdenegro已经这样做了,但人们并不喜欢!我只想要一个简单的通俗易懂的答案。https://stackoverflow.com/questions/45260829/explaining-tensorflow-for-programmer-and-not-for-maths-or-stats-people - Abdelouahab
@Abdelouahab,请注意,你的问题已经被明确指出需要关闭,因为没有人知道你在问什么。我们已经提供了一些资源,你至少应该去查看一下。学习TensorFlow并不等同于学习机器学习。 - Dr. Snoopy

0

大多数机器学习问题都是优化问题,例如最小化损失函数或最大化似然函数。有不同的优化方法,例如像普通最小二乘法(OLE)这样的方法不需要迭代,而像随机梯度下降(SGD)或牛顿法这样的方法则需要找到一个方向进行优化并进行迭代。


那些(例如 SGD)在每次运行中没有充分利用所有可用训练数据的方法将需要迭代以提高准确性?使用所有数据的方法将不会使用迭代,因为对它们没有好处?我可以这样理解吗? - Bosen
没有方法使用迭代,因为它们分配一些初始参数,计算优化方向,然后迭代以使参数值更好。一些方法使用所有训练数据并进行迭代(批量梯度下降)。 - Spirit_Dongdong
那么一个迭代意味着它尝试仅使用一组数据来获取结果吗?例如:只给定一组x和y,并要求它在y = mx + c中找到m。那么一个迭代只意味着它仅使用那个x和y的一组来找到m? - Bosen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接