继续上次的学习内容:
深度学习的归一化
- 归一化定义:通过逐元素除法,将向量中的每个元素除以该向量的均值和标准差,使得处理后的数据具有统一的分布。
- 图示说明:通过图3.42展示了深度学习中特征归一化的过程,其中µ和σ是根据输入数据z1, z2, z3等计算得出的。
- 影响:改变输入z的值会影响后续的输出a,同时也会影响µ和σ的计算,进而影响到整个网络中的其他节点。
批量归一化(Batch Normalization)
- 背景:由于GPU显存限制,无法一次性加载整个数据集进行归一化,因此采用批量归一化,即只在一个批量内的数据进行归一化。
- 过程:在每个批量内计算µ和σ,然后进行归一化。此外,为了避免归一化后数据均值为0可能带来的负面影响,会加上可学习的参数β和γ来调整输出分布。
- 测试时的批量归一化:测试时通常没有批量数据,因此使用训练过程中计算得到的µ和σ的移动平均值来进行归一化。
批量归一化的优势
- 加速训练:通过平滑误差表面,使得训练过程更加稳定,从而加速训练过程。
- 提高模型性能:即使对于难以训练的sigmoid函数,加入批量归一化后也能进行有效训练。
- 学习率调整:由于误差表面更加平滑,可以使用更大的学习率,进一步提高训练效率。
内部协变量偏移(Internal Covariate Shift)
- 定义:批量归一化的原始论文中提出的概念,指网络在训练过程中,由于参数更新导致层间数据分布发生变化的现象。
- 争议:后续研究表明,内部协变量偏移可能不是训练网络时的主要问题,批量归一化之所以有效,可能是因为其改变了误差表面,使其更加平滑。
其他归一化方法
- 批量重归一化(Batch Renormalization)、层归一化(Layer Normalization)、实例归一化(Instance Normalization)、组归一化(Group Normalization)、权重归一化(Weight Normalization)和谱归一化(Spectrum Normalization)等,均是为了解决不同场景下的数据分布问题而提出的归一化方法。
实验结果
- 批量归一化可以显著提高训练速度和模型性能,特别是在使用sigmoid函数等难以训练的激活函数时,效果更为显著。
卷 积 网 络 基 础
简化1:感受野
- 定义:感受野是卷积神经网络(CNN)中每个神经元只关注的输入图像的一部分区域。这个区域的大小和形状是人为设定的,通常是一个正方形或长方形。
- 作用:通过只关注局部区域,CNN可以显著降低模型的参数量,同时仍然能够有效地捕捉图像中的关键模式。
- 核大小:感受野的大小通常被称为核大小(kernel size),例如3x3、5x5等。较小的核大小(如3x3)在图像识别中非常常见,因为它们足以捕捉大部分重要的局部特征。
- 步幅和填充:为了覆盖整个图像,感受野会在图像上滑动,滑动的距离称为步幅(stride)。同时,为了处理边界情况,可能需要在图像边缘进行填充(padding)。
简化2:参数共享
- 定义:参数共享是指不同感受野中的神经元可以使用相同的权重和偏置参数。这意味着,尽管这些神经元关注图像的不同部分,但它们通过相同的参数来检测特征。
- 作用:参数共享极大地减少了模型的参数量,因为它允许不同位置的神经元共享相同的特征检测器。这使得CNN能够有效地处理图像中不同位置的相同模式。
- 滤波器:在CNN中,共享参数的神经元组通常被称为滤波器(filter)或卷积核(convolutional kernel)。每个滤波器都负责检测图像中的一种特定模式
简化2:参数共享
-
汇聚层的作用:汇聚层通过下采样操作(如最大汇聚)将特征映射的尺寸减小,从而减少计算量并引入一定的平移不变性。在例子中,4x4的图像通过2x2的汇聚操作变为2x2的图像。
-
汇聚层与卷积层的交替使用:在经典的CNN架构中,卷积层和汇聚层往往交替使用,例如进行两次卷积操作后进行一次汇聚操作。
-
汇聚层对模型性能的影响:虽然汇聚层有助于减少计算量,但它也可能对模型的性能造成一定影响,特别是在需要检测微细特征时。因此,在现代CNN设计中,为了减少性能损失,有时会选择不使用汇聚层,转而采用全卷积网络。
-
全卷积网络的趋势:随着计算能力的提升,越来越多的网络架构开始采用全卷积设计,即整个网络只包含卷积层,不使用汇聚层。这种设计旨在保留更多的空间信息,以提高模型的性能。
-
网络架构的通常流程:一个典型的图像识别CNN架构包括卷积层(可选的汇聚层)、扁平化操作、全连接层和softmax层。扁平化是将多维特征映射转换为一维向量的过程,以便后续的全连接层处理。
卷积网络适用于围棋
卷积神经网络(CNN)因其处理图像的强大能力被应用于下围棋中。棋盘被视为低分辨率(19x19)且高通道数(48)的图像,其中每个位置用48个数字描述。CNN通过局部观察(如5x5滤波器)和模式在不同位置的重复性来识别围棋中的重要模式。在下围棋的CNN设计中,通常不使用汇聚层以避免影响精细的棋局判断。AlphaGo展示了如何将CNN应用于围棋,并通过多层卷积和ReLU激活函数构建网络,最终通过softmax进行分类。CNN不仅限于图像,还扩展到语音和文字处理,但需根据任务特性重新设计网络结构。CNN在处理图像放大、缩小或旋转方面存在局限性,需通过数据增强等技术提高性能。