我不理解机器学习中的迭代概念。既然编程是确定性的(每次运行都做同样的事情),那么通过反复运行相同算法,准确性如何提高呢?
这个迭代概念是否与RNN(循环神经网络) – 它们多次反馈给相同的神经元 – 模型或SGD(随机梯度下降) – 它们为了效率而使用相同的训练数据样本 – 有关?
谢谢
编辑:我所说的迭代是指我在这个网站上找到的一个玩具应用:https://blog.kovalevskyi.com/rnn-based-chatbot-for-6-hours-b847d2d92c43
作者使用RNN创建了一个聊天机器人。我不理解的是,既然每次运行的是相同的算法,增加迭代次数是如何提高预测准确性的。
但是从@Spirit_Dongdong的帖子来看,我对迭代的理解(即每次迭代中所做的事情)可能有误,因此,我试图澄清迭代的含义以及每次迭代中所做的事情。
回答:
文章讨论的是训练迭代。这是由于在训练神经网络时,我们使用迭代算法,通常是随机梯度下降。
这是为了解决一个优化问题,最小化一个函数,但我们不知道最小化该函数的参数值。然后我们使用梯度作为信息,指导参数移动的方向,但它不告诉我们移动多少,所以我们移动一个固定量(步长或学习率)。
考虑到所有这些,如果我们朝梯度方向移动一步,我们就更接近解决方案(最小值),但我们只移动了一点,然后再移动一点,以此类推。这些就是迭代。增加迭代次数,你会更接近最小值和最优参数集,这些是提高性能的关键。
你说的对,是在运行相同的算法,但不是使用相同的输入。输入会随着参数值在一次迭代后的变化而变化。