7模型训练
7.1 次数的定义
在训练的过程中, 我们会遇到两个关于次数的定义。 一个是 epoch, 一个是 batch。 这里,我们说它是怎么做的,然后解释它背后的思路。
假设,你的训练数据集中收集到了 100 笔输入数据。 开始时,你把这些输入数据 一笔笔送到模型中,计算一下其最后的损失值。 (这里的「计算」一词,文献中被称 evaluate.) 接着,把刚刚得到的这 100 个损失值求个平均值。 然后根据最小化损失的 原则, 把模型中的参数都用梯度下降法更新一遍。 我们把刚才这个过程称为第 1 遍 epoch。 早期数据量小,epoch 和 batch 是一回事。 如果你阅读的文献出版时间早,可 能也会用 batch 这个词。
接下来重复一遍刚刚的动作: 再把输入的训练数据集中的这 100 个数据再送进去 算一遍损失值。 然后计算损失平均值,按最小化损失的原则更新模型中的参数。 这是 第 2 遍 epoch。 理论上,你可一直这样训练下去。 我们把所有训练数据集中的数据全 部算一遍损失值(有时也称为全量数据),就称为一次 epoch。
为什么可以反复地把相同的数据放到同一个模型中训练呢? 你可以这样想:还拿 估算房价的例子, 前面的例子中考试卷子上只有一道题,现在呢, 我们一张卷子上 有 100 道题。 当你更新了模型参数后,也意味着你找到了前一个人A推荐的下一位专 家B。 所以,因为换了一个新人,你不得不推倒重来, 让他把卷子上 100 道题都重新 做一遍, 才能更好地评估当前这个人的专业水平。 这是不得已而为之的,是被迫的。 当然这个办法也有其优点,就是每次的评估比较全面。
但是后来,大数据的时代来了。