神经网络中进行的处理有推理和学习两个阶段。神经网络的推理通常不使用Softmax层。当神经网络的推理只需要给出一个答案的情况下,因为此时只对得分最大值感兴趣,所以不需要Softmax层。不过,神经网络的学习阶段则需要Softmax层。
神经网络学习的全貌图
前提
神经网络中有合适的权重和偏置,调整权重和偏置以便拟合训练数据的过程称为学习。神经网络的学习分为下面4个步骤。
1.mini-batch
从训练数据中随机选择一部分数据
2.计算梯度
计算损失函数关于各个权重参数的梯度。
3.更新参数
将权重参数沿梯度方向进行微小的更新。
4.重复
重复步骤1、步骤2、步骤3。
神经网络的学习的目的是找到使损失函数的值尽可能小的参数。这是寻找最优参数的问题,解决这个问题的过程称为最优化。
SGD的缺点是,如果函数的形状非均向,比如呈延伸状,搜索的路径就会非常低效。因此,我们需要比单纯朝梯度方向前进的SGD更聪明的方法。SGD低效的根本原因是,梯度的方向并没有指向最小值的方向。
权值衰减是一种以减小权重参数的值为目的的进行学习的方法,通过减小权重参数的值来抑制过拟合的发生。
各层的激活值的分布都要求有适当的广度。为什么呢?因为通过在各层间传递多样性的数据,神经网络可以警醒高效的学习。反过来,如果传递的是有所偏向的数据,就会出现梯度消失或者“表现力受限”的问题,导致学习可能无法顺利进行。
权值衰减是一直以来经常被使用的一种抑制过拟合的方法。该方法通过在学习的过程中对大的权重进行惩罚,来抑制过拟合。很多过拟合原本就是因为权重参数取值过大才发生的。
Dropout是一种在学习的过程中随机删除神经元的方法。训练时,随机选出隐藏层的神经元,然后将其删除。被删除的神经元不在进行信号的传递。训练时,每传递一次数据,就会随机选择要删除的神经元。然后,测试时,虽然会传递所有的神经元信号,但是对于各个神经元的输出,要乘上训练时的删除比例后再输出。
本章所学的内容
1.参数的更新方法,除了SGD之外,还有Momentum、AdaGrad、Adam等方法。
2.权重初始值的赋值方法对进行正确的学习非常重要。
3.作为权重初始值,Xavier初始值、He初始值等比较有效。
4.通过使用Batch Normalization,可以加速学习,并且对初始值变得健壮。
5.抑制过拟合的正则化技术有权值衰减、Dropout等。
6.逐渐缩小“好值”存在的范围是搜索超参数的一个有效方法。
池化层的特征
池化层有以下特征。
1.没有要学习的参数
池化层和卷积层不同,没有要学习的参数。池化只是从目标区域中取最大值(或者平均值),所以不存在要学习的参数。
2.通道数不发生变化
经过池化运算,输入数据和输出数据的通道数不会发生变化,计算是按通道独立进行的。
3.对微小的位置变化具有鲁棒性(健壮)
输入数据发生微小偏差时,池化仍会返回相同的结果。因此,池化对输入数据的微小偏差具有鲁棒性。
如果堆叠了多层卷积层,则随着层次加深,提取的信息也愈加复杂、抽象,这是深度学习中很有意思的一个地方。最开始的层对简单的边缘有响应,接下来的层对纹理有响应,再后面的层对更加复杂的物体部件有响应。也就是说,随着层次加深,神经元从简单的形状向“高级”信息变化。换句话说,就像我们理解东西的“含义”一样,响应的对象在逐渐变化。
关于网络结构,LeNet和AlexNet没有太大的不同。但是,围绕它们的环境和计算机技术有了很大的进步。具体地说,现在任何人都可以获得大量的数据。而且,擅长大规模并行计算的GPU得到普及,高速进行大量的运算已经成为可能。大数据和GPU已成为深度学习发展的巨大的原动力。
大多数情况下,深度学习(加深了层次的网络)存在大量的参数。因此,学习需要大量的计算,并且需要使那些参数“满意”的大量数据。可以说是GPU和大数据给这些课题带来了希望。
本章所学的内容
1.CNN在此前的全连接层的网络中新增了卷积层和池化层;
2.使用im2col函数可以简单、高效地实现卷积层和池化层;
3.通过CNN的可视化,可知随着层次变深,提取的信息愈加高级;
4.LeNet和AlexNet是CNN的代表性网络;
5.在深度学习的发展中,大数据和GPU做出了很大的共线。