Datawhale X 李宏毅苹果书 AI夏令营 (进阶)Task3- 批量归一化、卷积神经网络、自注意力机制

目录

一、批量归一化

二、卷积神经网络

观察1:检测模式不需要整张图像

观察2:同样的模式可能会出现在图像的不同区域

观察3:下采样不影响模式检测

卷积神经网络的应用:下围棋

三、自注意力机制原理

自注意力的运作原理

多头注意力


一、批量归一化

如果使用固定的学习率,可能很难得到好的结果,所以我们才需要自适应的学习率、Adam等比较进阶的优化的方法,才能够得到好的结果。从另外一个方向想,直接把难做的误差表面把它改掉,看能不能够改得好做一点。而这其中的一个想法就是批量归一化。

批量归一化(Batch Normalization,简称BN)是深度学习中用于提高训练速度和模型稳定性的技术。以下是关于批量归一化的详细介绍:

特征归一化:特征归一化的目的是消除数据特征之间的量纲影响,使不同指标之间具有可比性。例如,在分析一个人的身高和体重对健康的影响时,如果使用米(m)和千克(kg)作为单位,身高特征的数值范围可能在1.6~1.8m,而体重特征的数值范围可能在50~100kg。为了得到更准确的结果,需要进行特征归一化处理,使各指标处于同一数值量级,以便进行分析。归一化的方法包括线性函数归一化(Min-Max Scaling)和零均值归一化(Z-Score Normalization),它们分别将数据映射到[0, 1]的范围或转换为均值为0、标准差为1的分布。

内部协变量偏移:内部协变量偏移是指在训练过程中,由于网络参数的变化,导致网络激活分布的变化。例如,假设有两层网络,开始时输出的分布可能是固定的,但经过一些训练步骤后,分布可能发生变化。这种分布的变化会对训练速度产生不利影响,因为后续层必须适应这种变化的分布。批量归一化通过稳定分布来减少内部协变量偏移的影响,从而加速深层网络的训练。

考虑深度学习后的批量归一化(BN):在深度学习中,由于网络层数的增加,数据在每一层的分布可能会发生变化,这种现象称为内部协变量偏移。批量归一化通过规范化层的输入来保持数据分布的稳定,具体操作是对每个小批量数据进行归一化处理,使其均值为0,方差为1,然后通过可学习的参数γ(拉伸)和β(偏移)进行调整,以恢复网络的表达能力。这种方法可以加速模型的收敛,提高训练的效率和模型的性能。

测试时的批量归一化:在训练过程中,批量归一化使用当前小批量的统计量(均值和方差)进行归一化。而在预测时,由于无法获得实时的小批量统计量,通常会使用训练过程中计算得到的移动平均均值和方差作为替代。这种方法确保了模型在预测时的稳定性和一致性。

移动平均:在训练过程中,可以计算整个训练集的均值和方差的移动平均值。这种方法通过对每个小批量数据的统计量进行加权平均,逐渐累积整个训练集的统计信息。移动平均的计算通常使用以下公式:

moving_mean=β×moving_mean+(1−β)×sample_mean

moving_var=β×moving_var+(1−β)×sample_var

其中,β是衰减率(momentum),通常设置在0.9到0.999之间。这样,在测试时,就可以使用这些移动平均统计量来归一化数据。

优点与实现:BN不仅可以加速模型的收敛速度,还可以提高模型的泛化能力。此外,BN允许使用更高的学习率,并且对于权重的初始化不那么敏感。在深度学习框架中,如PyTorch和TensorFlow,BN通常是作为一层来实现的,使用起来非常简单。例如,在PyTorch中,可以使用nn.BatchNorm1dnn.BatchNorm2d分别对全连接层和卷积层进行批量归一化。尽管BN已经被广泛使用,但研究者仍在探索其更深层次的原理和可能的改进。例如,一些研究试图解释BN如何影响模型的学习过程,以及它与传统正则化技术之间的关系。


二、卷积神经网络

卷积神经网络(Convolutional Neural Networks, CNNs)是深度学习中用于图像处理和图像识别任务的一种重要网络架构。在设计用于图像分类任务的CNN时,我们可以根据一些观察来优化网络结构,提高效率和性能。

观察1:检测模式不需要整张图像

在图像识别任务中,我们通常不需要分析整个图像来识别其中的物体。例如,识别一只猫,我们可能只需要关注它的耳朵、眼睛和胡须等局部特征。这些局部特征在图像的不同位置都可能存在,而且它们对于识别整个物体是至关重要的。

简化1:感受野

观察1指出,识别图像中的模式不需要整张图像的信息。这直接导致了第1个简化——感受野的概念。感受野允许网络通过局部的视角来处理图像,这与观察1中提到的局部特征识别是一致的。感受野是指网络在处理图像时所关注的范围。在CNN中,这通常通过卷积层实现,其中每个卷积核覆盖图像的一个局部区域(例如3x3或5x5像素)。每个卷积核负责提取它所覆盖区域的特征,这样网络就可以专注于图像的关键部分。

感受野的设计使得网络能够捕捉到局部的模式和特征,而不是依赖于整个图像的信息。这正是观察1中提到的,识别模式通常只需要关注图像的局部信息。这种设计减少了不必要的计算,提高了效率,并且使得网络能够更好地捕捉到局部特征。

观察2:同样的模式可能会出现在图像的不同区域

在自然界中,相同的物体或特征可能会出现在图像的不同位置。例如,无论猫出现在图像的哪个角落,它的耳朵和眼睛的特征都是相似的。这种模式的重复性是图像识别中的一个重要特性。

简化2:共享参数

观察2强调了图像中相同模式的重复性。为了有效利用这一特性,第2个简化——共享参数被引入。为了有效利用这种模式的重复性,CNN采用了共享参数的策略。这意味着同一个卷积核(滤波器)在整个输入图像上滑动,提取相同类型的局部特征。由于卷积核的参数在整个图像上是共享的,这大大减少了模型的参数数量,从而降低了计算复杂度和过拟合的风险。同时,这也使得模型能够学习到更加泛化的特征表示。

共享参数的策略直接响应了观察2中提到的模式重复性。通过在整个图像上重复使用相同的卷积核,网络不仅减少了参数数量,提高了计算效率,而且能够学习到更加泛化的特征表示,这对于识别图像中不同位置的相同模式至关重要。

简化1和2总结

通过这两个简化,CNN能够以更高效的方式处理图像数据。感受野允许网络关注图像的局部区域,而共享参数则使得网络能够捕捉到图像中重复出现的模式。这种设计使得CNN在图像分类任务中表现出色,尤其是在处理具有局部特征和重复模式的图像时。

全连接层在传统的神经网络中用于处理特征,但它们不考虑图像的空间结构。全连接层的参数数量随着输入图像的尺寸线性增长,这在处理高分辨率图像时会导致计算量急剧增加。而卷积层通过局部感受野和参数共享,有效地解决了这一问题。卷积层能够捕捉到图像的局部特征,并且通过参数共享减少了模型的复杂度,这与全连接层相比是一个显著的进步。

观察3:下采样不影响模式检测

在图像处理中,下采样(如池化操作)是一种减少数据维度的技术,它通过合并相邻的像素来降低图像的空间分辨率。尽管下采样会减少图像的细节,但它对于识别图像中的主要模式和特征通常是足够的。

简化3:汇聚

观察3指出,下采样(如池化)不会显著影响模式的检测。这一观察为第3个简化——汇聚提供了理论基础。汇聚层通过降低特征图的分辨率,减少了后续层的计算负担,同时保留了关键信息。汇聚层(如最大池化层)在CNN中用于下采样,它们通过在特征图上滑动一个窗口,并提取窗口内的最大值(或其他统计量,如平均值),来减少特征图的尺寸。这种操作有助于减少计算量,同时保留重要的特征信息。此外,汇聚层还有助于增加模型的不变性,即对输入图像的平移、缩放和旋转等变化具有更好的鲁棒性。

汇聚层的设计直接响应了观察3中提到的下采样对模式检测的影响较小。通过在特征图上进行下采样,网络能够在减少计算量的同时,保持对关键模式的敏感性。这种设计增加了网络对图像尺度变化的不变性,这对于处理不同大小和位置的图像特征至关重要。

卷积神经网络的应用:下围棋

除了图像识别以外,卷积神经网络另外一个最常见的应用是用来下围棋,以 AlphaGo 为例。下围棋其实是一个分类的问题。在围棋中,CNN可以用来识别棋盘上的模式,如活棋、死棋、眼位等。通过训练网络识别这些模式,CNN可以帮助评估棋局的状态,预测对手的可能走法,甚至生成自己的走法。这种方法在围棋AI中已经取得了显著的成功,如AlphaGo就是利用深度学习技术,特别是CNN,来实现超越人类顶尖棋手的表现。

从以上提到三个简化的角度对下围棋中如何使用卷积神经网络(CNN)进行描述:

  1.  感受野:在围棋中,棋盘上的每个点都可能受到周围点的影响。CNN通过感受野的概念来捕捉这种局部关系。感受野定义了网络中一个特征点在输入图像上映射的区域大小。在围棋的背景下,这意味着网络能够理解棋盘上一个点的周围环境,从而做出更加精准的决策。通过多层卷积操作,网络能够捕捉到从局部到全局的棋盘模式,这对于预测下一步棋非常关键。
  2. 共享参数:CNN中的参数共享意味着相同的卷积核在整个棋盘上滑动,提取特征。在围棋中,这意味着相同的模式(如棋形、棋局的局部结构)可以在棋盘的不同位置被识别出来。这种共享减少了模型的复杂度,同时提高了网络的泛化能力,因为它允许网络学习到在不同位置都有效的围棋策略。
  3. 汇聚:汇聚层在CNN中用于下采样,减少特征图的尺寸,同时保留重要特征。在围棋中,这可以类比为忽略棋盘上的小尺度变化,而专注于大尺度的格局和模式。这种简化有助于网络在进行下一步棋的决策时,不过分关注细节,而是从更宏观的角度考虑问题。

结合这三个简化,CNN在围棋中的应用可以总结为:使用多层卷积层来捕捉棋盘上的局部特征和全局模式。通过参数共享,网络能够在棋盘的不同位置识别出相同的策略模式。利用汇聚层来减少特征的维度,专注于棋局的关键部分,提高决策的效率。

AlphaGo就是结合了这些CNN的特性,通过深度神经网络和树搜索(如蒙特卡洛树搜索)来优化围棋策略的典型例子。AlphaGo的策略网络负责预测下一步棋的最佳位置,而价值网络则评估当前棋局的胜负概率。这些网络通过大量的自我对弈进行训练,不断优化其参数,最终达到了超越人类顶尖棋手的水平。在AlphaGo的例子中,CNN被用来构建策略网络和价值网络,这些网络通过学习大量的围棋数据来提高其预测的准确性。CNN的感受野允许AlphaGo在棋盘的每个位置考虑周围棋子的影响,而参数共享则使得网络能够识别出棋盘上不同位置的相似模式。最后,汇聚层帮助AlphaGo在保持决策质量的同时减少了计算量,这对于实时围棋对弈至关重要。通过这种方式,AlphaGo不仅在围棋领域取得了突破,也为深度学习和人工智能在其他复杂决策任务中的应用提供了宝贵的经验。


三、自注意力机制原理

除了卷积神经网络,还有另外一个常见的网络架构——自注意力模型(self-attention model)。目前为止,不管是在预测观看人数的问题上,还是图像处理上,网络的输入都是一个向量。输入可以看作是一个向量,如果是回归问题,输出是一个标量,如果是分类问题,输出是一个类别。而自注意力模型的输入可以是向量序列。

自注意力模型(Self-Attention Model)是一种强大的神经网络架构,它允许模型在序列的不同部分之间直接建立联系,而不需要像传统的循环神经网络(RNN)那样按顺序逐步处理。这种模型特别适合处理序列数据,如文本或时间序列,因为它可以捕捉序列内部的长距离依赖关系。自注意力模型可以分为三种类型:

类型 1:输入与输出数量相同 - 在这种类型中,模型的输入和输出序列长度相同,每个输出元素是通过对输入序列中所有元素的加权求和得到的,权重由自注意力机制确定。这种类型的自注意力模型可以用于某些特定的序列转换任务,例如某些语音处理任务。

类型 2:输入是一个序列,输出是一个标签 - 这种类型通常用于分类任务,模型的输入是一个序列,但输出是一个固定大小的向量,代表类别标签。例如,情感分析任务中,输入是一个句子,输出是表示情感极性(如正面、负面)的标签。

类型 3:序列到序列(Sequence to Sequence) - 在这种类型中,模型的输入和输出都是序列,如机器翻译或文本摘要任务。模型需要捕捉输入序列和输出序列之间的复杂关系。这种类型的自注意力模型通常包含编码器和解码器两部分,编码器处理输入序列,解码器生成输出序列。

自注意力的运作原理

自注意力(Self-Attention)机制,也称为内部注意力机制,是一种在序列模型中用于捕捉序列内部不同位置之间依赖关系的技术。这种机制允许模型在处理序列的每个元素时,考虑到序列中其他所有元素的信息,从而有效地处理长距离依赖问题。自注意力机制是Transformer模型的核心组成部分,它在自然语言处理(NLP)和其他序列处理任务中取得了显著的成功。

自注意力机制的运作原理可以分为以下几个步骤:

1. 输入表示:模型接收一个序列作为输入,序列中的每个元素通常是一个向量。这些向量可以是词嵌入(word embeddings)或其他类型的表示。

2. 计算查询(Query)、键(Key)和值(Value):对于序列中的每个元素,模型通过与权重矩阵的乘积来计算对应的查询(Q)、键(K)和值(V)向量。这些权重矩阵是模型学习到的参数,每个元素的Q、K、V都是该元素的线性变换。

 Q=XW^{Q}

K=XW^{K}

V=XW^{V}

其中,X是输入序列,W^{Q}W^{K}W^{V}是权重矩阵。

3. 计算注意力分数:模型计算查询向量与所有键向量之间的点积,以得到一个原始的注意力分数矩阵。为了避免点积结果过大,通常将点积的结果除以键向量维度的平方根,然后应用softmax函数进行归一化,得到最终的注意力权重。

 Attention Scores = softmax\left ( \frac{QK^{T}}{\sqrt{d_{k}}}\right )

其中,d_{k} 是键向量的维度。

4. 加权求和:使用上一步得到的注意力权重对值向量进行加权求和,得到每个元素的输出表示。这个输出表示是序列中所有元素的加权组合,权重由注意力分数确定。

Output=Attention Scores\times V

自注意力机制的优势在于其能够并行处理序列中的所有元素,这与传统的循环神经网络(RNN)和长短期记忆网络(LSTM)不同,后者需要按顺序逐步处理序列。这种并行性使得自注意力机制在处理长序列时更加高效。此外,自注意力机制能够直接捕捉序列内部的长距离依赖关系,而不需要通过多层循环结构来传递信息。

多头注意力

多头注意力(Multi-Head Attention)是自注意力的一个进阶版本,它通过使用多组不同的权重矩阵来计算Q、K、V,允许模型在不同的表示子空间中捕捉信息。每个头计算得到的输出被拼接起来,并通过另一个权重矩阵进行线性变换,以得到最终的多头自注意力输出。这种机制使得模型能够同时从多个角度学习数据的不同特征,提高了模型的表达能力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YHa_a

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值