当在训练一个神经网络的时候,相对于一次性将所有的数据全输入进去,有一个更好的方法:先将数据随机地分为几个大小一致的数据块,再分批次输入。跟一次性训练出来的模型相比,分批训练能够使模型的适用性更好 。 (14) 周期(epochs) 一个周期表示对所有的数据批次都进行了一次迭代,包括一次正向传播和一次反向传播,所以一个周期/纪元就意味着对所有的输入数据分别进行一次正向传播和反向传播。 训练网络周期的次数是可以选择的,往往周期数越高,模型的准确性就越高,但是,耗时往往就越长。同样你还需要考虑如果周期/纪元的次数过高,那么可能会出现过拟合的情况。 (15) Dropout方法 Dropout是一个可以阻止网络过拟合的规则化方法。就像它的名字那样,在训练过程中隐藏的某些特定神经元会被忽略掉(drop)。这意味着网络的训练是在几个不同的结构上完成的。 这种dropout的方式就像是一场合奏,多个不同结构网络的输出组合产生最终的输出结果。 △来源:Hinton论文《Improving neural networks by preventing co-adaptation of feature detectors》 地址: https://arxiv.org/pdf/1207.0580.pdf(16) 分批标准化(Batch Normalization) 分批标准化就像是人们在河流中用以监测水位的监察站一样。这是为了保证下一层网络得到的数据拥有合适的分布。在训练神经网络的过程中,每一次梯度下降后权重因子都会得到改变,从而会改变相应的数据结构。 但是下一层网络希望能够得到与之前分布相似的数据,因此在每一次数据传递前都需要对数据进行一次正则化处理。 卷积神经网络 (17) 过滤器/滤波器(Filter) CNN中的滤波器,具体是指将一个权重矩阵,我们用它乘以输入图像的一部分,产生相应的卷积输出。 比方说,对于一个28×28的图片,将一个3×3的滤波器与图片中3×3的矩阵依次相乘,从而得到相应的卷积输出。滤波器的尺寸通常比原始图片要小,与权重相似,在最小化成本的反向传播中,滤波器也会被更新。 就像下面这张图片一样,通过一个过滤器,依次乘以图片中每个3×3的分块,从而产生卷积的结果。 (18) CNN(卷积神经网络) 卷积神经网络通常用来处理图像数据,假设输入数据的形状为28×28×3(28pixels×28pixels×RGB Value),atv,那么对于传统的神经网络来说就会有2352(28×28×3)个变量。随着图像尺寸的增加,那么变量的数量就会急剧增加。 因此,通过对图片进行卷积,可以减少变量的数目。随着过滤器沿着图像上宽和高的两个方向滑动,就会产生一个相应的2维激活映射,最后再沿纵向将所有的激活映射堆叠在一起,就产生了最后的输出。 可以参照下面这个示意图。 △来源:cs231n (19) 池化(pooling) 为了进一步减少变量的数目同时防止过拟合,一种常见的做法是在卷积层中引入池化层(pooling layer)。如下图所示,最常用的池化层的操作是将原始图片中每个4×4分块取最大值形成一个新的矩阵,这叫做最大值池化(max pooling)。 △来源:cs231n 当然也有人尝试诸如平均池化(average pooling)之类的方式,但在实际情况中最大化池化拥有更好的效果。 (20) 补白(padding) 如下图所示,补白(padding)通常是指给图像的边缘增加额外的空白,从而使得卷积后输出的图像跟输入图像在尺寸上一致,这也被称作相同补白(Same Padding)。 有效补白(Valid Padding)指的是保持图片上每个真实的像素点,不增加空白,因此在经历卷积后数据的尺寸会不断变小。(译者注:具体是指有效补白每次会丢弃最后不满足于一次卷积的像素点,比如说filter是3*3的,那么对于一行有32个pixel的数据,经历一次卷积后就会丢掉最后2个pixel;而通过相同补白,增加一个空白位,使每行有33个pixel,卷积后数据的尺寸不会变小。 (21) 数据增强(Data Augmentation) 数据增强(Data Augmentation)指的是从已有数据中创造出新的数据,通过增加训练量以期望能够提高预测的准确率。 (责任编辑:本港台直播) |