学习笔记——基本神经网络(CNN,RNN,LSTM,GRU)与注意力机制及其变体
cnn
结构
输入层->卷积层->池化层->全连接层->输出层

【DL笔记6】从此明白了卷积神经网络(CNN)
1. Convolutional layer(卷积层--CONV)
由滤波器filters和激活函数构成。 一般要设置的超参数包括filters的数量、大小、步长(stride),以及padding是“valid”还是“same”,激活函数。
2. Pooling layer (池化层--POOL)
这里没有参数需要学习,里面的参数都手动设置好了。
池化方式要么是Maxpooling,要么是Averagepooling。
窗口大小手动设置,channels不变
3. Fully Connected layer(全连接层)
神经网络中的那种最普通的层,就是一排神经元。
这里要指定的超参数,无非就是神经元的数量,以及激活函数。
rnn
用来处理序列信息,即数据点之间存在顺序关系
结构

image-20250518153928730
U是输入层到隐藏层的权重矩阵,o也是一个向量,它表示输出层的值;V是隐藏层到输出层的权重矩阵。
循环神经网络的隐藏层的值s不仅仅取决于当前这次的输入x,还取决于上一次隐藏层的值s。权重矩阵 W就是隐藏层上一次的值作为这一次的输入的权重。
将循环展开

公式

image-20250518154221086
局限
受短期记忆影响

image-20250518181038111
梯度消失问题:计算到后期时,某些层由于梯度过小而停止学习
lstm
旨在解决RNN存在的梯度消失问题。lstm具有类似rnn的控制流,不同之处在于lstm cell中的操作。
结构

遗忘门
这个门决定了哪些信息应该丢弃或保留。来自以前隐藏状态的信息和来自当前输入的信息通过sigmoid函数进行传递。结果在0到1之间。越接近0表示忘记,越接近1表示保留。

输入门
使用输入门来更新cell状态。首先,将之前的隐藏状态和当前输入传递给一个sigmoid函数。它将值转换为0到1之间来决定更新哪些值。0表示不重要,1表示重要。
将隐藏状态和当前的输入送到tanh函数中,以得到-1到1之间的值,帮助调节网络。然后将tanh输出与sigmoid输出相乘。sigmoid输出将决定从tanh的输出中保留哪些重要信息。

cell 状态
首先,cell状态逐点乘以遗忘向量。如果将其乘以接近0的值,则有可能降低cell状态下的值。然后我们从输入门获取输出,并进行逐点加法,将cell状态更新为神经网络认为相关的新值。这就得到了新的cell状态。

输出门
输出门决定下一个隐藏状态应该是什么。由于隐藏状态中包含之前输入的信息,所以隐藏状态也用于预测。首先,我们将之前的隐藏状态和当前输入传递给一个sigmoid函数。然后我们将新修改的cell状态传递给tanh函数。我们将tanh输出与sigmoid输出相乘,以决定隐藏状态应该包含哪些信息,输出是隐藏状态。新的cell状态和新的隐藏状态然后被转移到下一个时间步骤。

gru
一种新的递归神经网络,与lstm类似,但计算量更小。
结构

image-20250518165007549

人人都能看懂的GRU

image-20250518164755217

image-20250518164817306
其中r为控制重置的门控,z为控制更新的门控
更新门
更新门的作用类似于LSTM的遗忘门和输入门,它决定丢弃什么信息和添加什么新信息。

image-20250518165153995

image-20250518165231339
复位门

image-20250518182029872
复位门用来决定有多少过去的信息要忘记。在上面的表达式中,我们使用r获得了h',从而参与了更新门的计算。
attention
encoder-decoder框架上的attention机制
encoder-decoder框架
使用一个encoder将长度为n的输入数据转化为一个上下文向量c,然后将c传入另一个decoder,其中encoder和decoder可以是两个神经网络。
在Encoder-Decoder结构中,Encoder把所有的输入序列都编码成一个统一的语义特征c再解码,因此, c 中必须包含原始序列中的所有信息,它的长度就成了限制模型性能的瓶颈。
rnn+attention
Attention机制通过在每个时间输入不同的 c 来解决这个问题

在这里插入图片描述
每一个 c 会自动去选取与当前所要输出的 y 最合适的上下文信息。
c的计算过程如下:

image-20250518192643202
使用 aij 衡量Encoder中第 j 阶段的 hj 和解码时第i阶段的相关性,最终Decoder中第 i 阶段的输入的上下文信息Ci 就来自于所有 hj 对 aij 的加权和。其中aij可由学习得到,大致过程如下

在这里插入图片描述
脱离encoder-decoder框架的attention
原理

img
Attention 通常可以进行如下描述,表示为将 Query(Q) 和 key-value pairs(把 Values 拆分成了键值对的形式) 映射到输出上,其中 query、每个 key、每个 value 都是向量,输出是 V (被查询对象)中所有 values 的加权,其中权重是由 Query 和每个 key 计算出来的,计算方法分为三步:
第一步:Query与每一个Key计算相似性得到相似性评分s
第二步:将s评分进行softmax转换成[0,1]之间的概率分布
第三步:将[a1,a2,a3…an]作为权值矩阵对Value进行加权求和得到最后的Attention值

Q:query K:key V:value
self-attention
计算过程和attention一样,相当于是 Query=Key=Value(来源相同)的特殊情况。
自注意力机制是注意力机制的变体,其减少了对外部信息的依赖,更擅长捕捉数据或特征的内部相关性
计算过程:

img
其中I代表输入,O代表输出,A为衡量相关性的矩阵,A‘为归一化之后的A。
MultiHead Self-Attention
因为相关性有很多种不同的形式,有很多种不同的定义,所以有时要有多个q,不同的q负责不同种类的相关性。
计算过程与Self-Attention无太大差异,但由于有多个qkv,所以要将输出拼接起来。
以两个head为例:

img


浙公网安备 33010602011771号