奎克的藏经阁 · 原书印刷页

人工智能与大数据技术导论 · 第 199 页

PDF 物理页索引 215 · 第7章

书名
人工智能与大数据技术导论
作者
未记录
印刷页
199
PDF 物理页
215(从 0 开始)
章节
第7章
UUID
cd4f7678-cd9b-4971-bde0-e9ad46a6cc71
来源类型
original_book
页面 SHA-256
d5b2d8bcd61ca2c1d5da483a0b8230c097c7f7b9ea81e494152af84dd173934b

正向传播的目标是计算损失函数,而反向传播的目的是修正参数。在实际应用中,通常我们会在编程环境中记录价值函数值并观察其变化。我们会在第10章详细介绍正向/反向传播算法。

7.3 神经网络的优化和改进

7.3.1 神经网络的优化策略

优化的目的是让算法能更快收敛,使得训练速度加快。优化是神经网络建模中极其重要的环节,它直接决定了模型的训练时间和投入产出的性价比。在神经网络模型搭建中,优化包括任何可以使算法更快收敛、模型训练加快的手段。下面让我们来看一些常见的优化策略。

  1. Mini-Batch

为了加快训练速度,我们先不说算法,首先从读取数据“开刀”。传统的训练过程中的一个最大痛点是在漫长的迭代过程中,每一次都要读入整个样本集数据。样本量非常大的时候会成为限制运算速度的主要因素。为了让一次迭代数据缩短,我们是否可以考虑在一次迭代中仅使用部分样本数据?答案是可以的。Mini-Batch的原理是分批次读入样本数据,从而缩短一次迭代的运算时间。

为了充分利用样本集,我们将样本随机分成若干组(batches),使得每一组有N个样本。假设共有m个样本,那么一共分成m/N个组(若N取值不能整除m,则进行取整,整除多出来的样本单独作为一组)。通常N取值为2的整数次方,比如128、256等。

N通常被称为Mini-Batch Size,属于超参数之一。假设我们有m=2000条样本,Mini-BatchSizeN=256,那么第一次读取的是第1\~256个样本(样本顺序已随机打乱),进行一次迭代(正向传播和反向传播)后,在第二次迭代时读取第257\~512个样本,以此类推……第7次迭代读取第1537\~1792个样本,第8次迭代读取第1793\~2000个样本(本次样本量小于256)。在8次迭代后,整个样本进行了一次遍历。我们把到此为止的过程叫作一个周期(epoch)。在此之后重新开始下一个周期,整个样本集重新洗牌,随机分成8个组,然后重复类似上一个周期的操作,如此往复。

由此可见,Mini-Batch和常规算法的最大区别就是,每次迭代时,读取的样本是不一样的。每一次训练过程是在样本集的一个随机子集上进行的,而不是整个样本集。这样一来大大缩短了一次迭代的运算时间,从而使得训练时间大大缩短。

有的读者会想,这样做是否会影响收敛的轨迹呢?每次样本不一样,在整个训练过程刚开始的时候,参数的行进轨迹的确会显得不太规律,但经过一段时间后会步入正轨,最终逐渐向最优值靠拢。通常Mini-Batch只会缩短训练时间,不会给训练带来任何负面影响。所以在实际应用中,当样本量很大的时候,几乎总是会用到Mini-Batch。

第7章 深度学习

199