Task 3
3.7 批量归一化
批量归一化(Batch Normalization, BN)用于解决深度神经网络中的内部协变量偏移问题。给定一个批量数据 B B B,其中 x x x 表示单个数据点 μ B \mu_B μB和 σ B 2 \sigma_B^2 σB2分别是该批量数据的均值和方差。
归一化步骤
1.计算均值和方差:
μ
B
=
1
m
∑
i
=
1
m
x
i
\mu_B = \frac{1}{m} \sum_{i=1}^{m} x_i
μB=m1i=1∑mxi
σ
B
2
=
1
m
∑
i
=
1
m
(
x
i
−
μ
B
)
2
\sigma_B^2 = \frac{1}{m} \sum_{i=1}^{m} (x_i - \mu_B)^2
σB2=m1i=1∑m(xi−μB)2
其中,
m
m
m 是批量大小。
2.归一化:
x
~
i
=
x
i
−
μ
B
σ
B
2
+
ϵ
\tilde{x}_i = \frac{x_i - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}}
x~i=σB2+ϵxi−μB
其中,
ϵ
\epsilon
ϵ 是一个很小的常数,防止除以零。
3.缩放和平移:
y
i
=
γ
x
~
i
+
β
y_i = \gamma \tilde{x}_i + \beta
yi=γx~i+β
其中,
γ
\gamma
γ 和
β
\beta
β是可学习的参数。
这种操作的优点是允许更高的学习率,同时引入轻微的噪声,有助于模型泛化。
4.1&2&3&4 卷积神经网络-上
卷积神经网络(CNN)通过卷积层提取图像特征。
图像表示
图像可以表示为一个三维张量,其中两个维度表示图像的宽和高,第三个维度表示颜色通道(通常是RGB)。
例如,一张100x100像素的彩色图像可以表示为一个100x100x3的张量。
网络输入
网络的输入通常是将图像张量“拉直”成一维向量。
例如,100x100x3的图像会被拉直为一个包含30000个元素的向量。
卷积层的引入
卷积层通过局部感受野来检测图像中的模式,不需要考虑整张图像。感受野定义了神经元只关注图像的一个局部区域。
感受野(Receptive Field)
感受野是神经元在输入图像上关注的范围。
例如,一个3x3x3的感受野意味着神经元只关注3x3像素区域内的3个颜色通道。
卷积操作
卷积操作涉及将滤波器(一组权重)应用到感受野上,然后求和以产生输出。
数学表示为:
output
=
σ
(
∑
i
,
j
,
k
(
w
i
j
k
⋅
x
i
j
k
+
b
)
)
\text{output} = \sigma(\sum_{i,j,k} (w_{ijk} \cdot x_{ijk} + b))
output=σ(i,j,k∑(wijk⋅xijk+b))
其中
w
i
j
k
w_{ijk}
wijk是权重,
x
i
j
k
x_{ijk}
xijk是输入图像的像素值,
b
b
b 是偏置,
σ
\sigma
σ 是激活函数。
步幅(Stride)
步幅定义了感受野在图像上移动的步长。
例如,步幅为2意味着每次移动两个像素。
填充(Padding)
填充是在图像边缘添加额外的像素(通常是0),以允许边缘区域被感受野覆盖。
填充有助于保持图像的空间维度。
参数共享
参数共享是指在不同位置的感受野使用相同的权重和偏置。
这大大减少了模型的参数数量,同时允许模型检测图像中任何位置的相同模式。
卷积层的输出
卷积层的输出是多个特征图(feature maps),每个特征图由一组共享参数的神经元生成。
特征图的数量取决于卷积层中的滤波器数量。
池化层(Pooling Layer)
池化层通常跟在卷积层后面,用于降低特征图的空间维度,减少计算量和过拟合。
常见的池化操作包括最大池化(max pooling)和平均池化(average pooling)。
最大池化可以表示为:
(
x
)
i
,
j
p
o
o
l
=
max
m
,
n
x
i
+
m
,
j
+
n
(x)_{i, j}^{pool} = \max_{m, n} x_{i+m, j+n}
(x)i,jpool=m,nmaxxi+m,j+n
其中,
x
x
x 是输入特征图,
(
x
)
i
,
j
p
o
o
l
(x)_{i, j}^{pool}
(x)i,jpool是汇聚操作后的输出。
交叉熵损失(Cross-Entropy Loss)
交叉熵损失用于衡量模型输出和真实标签之间的差异。
数学表示为:
L
=
−
∑
i
y
i
log
(
y
^
i
)
L = -\sum_{i} y_i \log(\hat{y}_i)
L=−i∑yilog(y^i)其中
y
i
y_i
yi是真实标签的独热编码,
y
^
i
\hat{y}_i
y^i是模型预测的概率。
4.5&6&7&8 卷积神经网络-下
参数共享
在卷积层中,不同神经元共享同一组参数(权重),这使得网络能够检测到不同位置的相同特征,从而减少模型复杂度和计算量。
下采样
下采样(Downsampling):通过去掉偶数列和奇数行,将图像尺寸缩小为原来的1/4,仍然保持图像中的重要信息。这一过程不会影响模式的检测。
池化
汇聚(Pooling):通常在卷积层后使用,用于减少特征图的尺寸,从而降低计算量。汇聚操作可能会对模型性能产生影响,特别是在需要检测微小细节的任务中。
卷积神经网络的应用
图像识别:CNN在图像识别中表现优异,常见的架构包括多次卷积和汇聚操作,最后通过全连接层和softmax输出分类结果。
语音和文字处理:CNN也被应用于语音识别和文本分类,但需要根据语音和文字的特性重新设计感受野和参数共享策略。
多层卷积
多层卷积可以捕获更复杂的特征。设
K
K
K 层卷积层,每层卷积核数量为
F
i
F_i
Fi,则第
i
i
i 层的输出为:
(
x
(
i
)
)
j
,
k
=
f
(
∑
p
,
q
(
x
(
i
−
1
)
)
j
+
p
,
k
+
q
k
i
(
p
,
q
)
)
(x^{(i)})_{j, k} = f\left( \sum_{p, q} (x^{(i-1)})_{j+p, k+q} k_i(p, q) \right)
(x(i))j,k=f(p,q∑(x(i−1))j+p,k+qki(p,q))
其中,
f
f
f 是激活函数,如 ReLU。
选修 自注意力机制
自注意力机制允许模型在序列的不同部分之间动态地分配不同的注意力权重。
注意力机制
给定输入序列 XX,自注意力机制可以表示为:
Attention
(
Q
,
K
,
V
)
=
softmax
(
Q
K
T
d
k
)
V
\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V
Attention(Q,K,V)=softmax(dkQKT)V
其中,
Q
Q
Q、
K
K
K、
V
V
V 分别是查询、键和值矩阵,
d
k
d_k
dk是键向量的维度。
选修 ChatGPT
ChatGPT 是一个基于 Transformer 架构的生成模型,用于对话系统。
预训练
ChatGPT 通过预训练学习语言模式,预训练的目标函数可以表示为:
L
=
−
∑
i
=
1
n
log
p
(
t
i
∣
t
1
,
.
.
.
,
t
i
−
1
)
\mathcal{L} = -\sum_{i=1}^{n} \log p(t_i | t_1, ..., t_{i-1})
L=−i=1∑nlogp(ti∣t1,...,ti−1)
其中,
t
i
t_i
ti是目标词,
n
n
n 是序列长度。
微调
在预训练的基础上,ChatGPT 通过微调适应特定的对话任务,目标函数可以表示为:
L
finetune
=
−
∑
i
=
1
n
log
p
(
t
i
∣
context
)
\mathcal{L}_{\text{finetune}} = -\sum_{i=1}^{n} \log p(t_i | \text{context})
Lfinetune=−i=1∑nlogp(ti∣context)L
其中,
context
\text{context}
context 是对话上下文。
通过这部分学习,对深度学习中的批量归一化、自注意力机制、卷积神经网络和 ChatGPT 等有了更深入的理解。