05 深度学习

01 前馈神经网络

基本概念

神经元是深度学习模型中基本单位。可以如下刻画神经元功能:

  1. 对相邻前向神经元输入信息进行加权累加:In=in=wiai
  2. 对累加结果进行非线性变换 (通过激活函数) :g(x)
  3. 神经元的输出:Out =g(In)

Pasted image 20250422095711.png|375

神经网络使用非线性函数作为激活函数(activation function),通过对多个非线性函数进行组合,来实现对输入信息的非线性变换:
Pasted image 20250422095734.png|375

Softmax 函数一般用于多分类问题中,其将输入数据 xi 映射到第 i 个类别的概率 yi 如下计算:

yi=softmax(xi)=exij=1kexj

Pasted image 20250422095830.png|250

前馈神经网络(feedforward neural network)

损失函数(Loss Function):计算模型预测值与真实值之间的误差

感知机模型

早期的感知机结构和 MCP 模型相似,由一个输入层和一个输出层构成,因此也被称为 “单层感知机”。感知机的输入层负责接收实数值的输入向量,输出层则能输出 1 或 -1 两个值
Pasted image 20250530144957.png|400

多层感知机由输入层、输出层和至少一层的隐藏层构成

如何优化网络参数?

从标注数据出发,优化模型参数

梯度下降 Gradient Descent

梯度下降算法是一种使得损失函数最小化的方法。一元变量所构成函数𝒇在𝒙处梯度为:

df(x)dx=limh0f(x+h)f(x)h

假设损失函数 f(x) 是连续可微的多元变量函数, 其泰勒展开如下 ( Δx 是微小的增量):

f(x+Δx)=f(x)+f(x)Δx+12f(x)(Δx)2++1n!f(n)(x)(Δx)nf(x+Δx)f(x)(f(x))TΔx

误差反向传播 Error Back Propagation (BP)

BP 算法是一种将输出层误差反向传播给隐藏层进行参数更新的方法

Pasted image 20250530152625.png|450

梯度下降算法

batch size 的选择带来的影响

在合理地范围内,增大 batch size 的好处:

  • 内存利用率提高了
  • 跑完一次 epoch (全数据集) 所需的迭代次数减少
  • 在一定范围内,一般来说 Batch_Size 越大,其确定的下降方向越准,引起训练震荡越小

盲目增大 batch_size 的坏处:

  • 内存容量可能撑不住了
  • 跑完一次 epoch (全数据集) 所需的迭代次数减少,但要想达到相同的精度,其所花费的时间大大增加了,从而对参数的修正也就显得更加缓慢
  • Batch Size 增大到一定程度,其确定的下降方向已经基本不再变化

02 卷积神经网络 CNN

为什么需要卷积神经网络👇
当模型参数数量变得巨大时,不仅会占用大量计算机内存,同时也使神经网络模型变得难以训练收敛。因此,对于图像这样的数据,不能直接将所构成的像素点向量与前馈神经网络神经元相连。

2.1 卷积

不同卷积核可被用来刻画视觉神经细胞对外界信息感受时的不同选择性:
Pasted image 20250422103311.png|475

2.2 池化

图像中存在较多冗余,可用某一区域子块的统计信息 (如最大值或均值等)来刻画该区域中所有像素点呈现的空间分布模式

池化 Pooling: 对输入的特征图进行下采样,以获得最主要的信息

分布式向量表达 (distributed vector representation):卷积神经网络在若干次卷积操作、接着对卷积所得结果进行激活函数操作和池化操作下,最后通过全连接层来学习得到输入数据的特征表达

2.3 正则化

正则化系数 👉 缓解神经网络在训练过程中出现的过拟合问题

有如下几种方法:

2.4 AlexNet

考试不作要求

Pasted image 20250422111145.png|400


03 循环神经网络 RNN

循环神经网络:一类处理序列数据(如文本句子、视频帧等)时所采用的网络结构

3.1 基本架构

在时刻 t, 一旦得到当前输入数据 xt, 循环神经网络会结合前一时刻 t1 得到的隐式编码 ht1, 如下产生当前时刻隐式编码 ht:
$$h_t=\Phi(\mathrm{U}\times x_t+\mathrm{W}\times h_{t-1})$$

Pasted image 20250422112301.png|400

循环神经网络读入每个单词后,先产生对应单词的隐式编码,再如下得到一个句子的向量编码:

  1. 最后一个单词输出作为整个句子的编码
    • 因为句子中所有单词的信息均被后向传递
  2. 将每个单词的隐式编码进行加权平均,将加权平均结果作为整个句子的向量编码表示
    Pasted image 20250607204644.png|450

3.2 梯度传递

3.3 基本结构

一些基本的 RNN 结构:

双向循环神经网络:
e.g. 我的手机坏了,我打算____一部新手机

Pasted image 20250422114741.png|400

堆叠(多层)循环神经网络:
Pasted image 20250607205152.png|450

3.4 LSTM

由于 tanh 函数的导数取值位于 0 到 1 区间,对于长序列而言,若干多个 0 到 1 区间的小数相乘,会使得参数求导结果很小,引发梯度消失问题。为了解决梯度消失问题,长短时记忆模型(LongShort-Term Memory,LSTM)被提出

Pasted image 20250422115238.png|475

符号 内容描述/操作
xt 时刻 t 输入的数据
it 输入门的输出: it=sigmoid(Wxixt+Whiht1+bi)
( WxiWhibi 为输入门的参数)
输入门 it 控制有多少信息流入当前时刻内部记忆单元 ct
ft 遗忘门的输出: ft=sigmoid(Wxfxt+Whfht1+bf)
( WxfWhfbf 为遗忘门的参数)
遗忘门控制上一时刻内部记忆单元 ct1 中有多少信息可累积到当前时刻内部记忆单元 ct
ot 输出门的输出: ot=sigmoid(Wxoxt+Whoht1+bo)
( WxoWhobo 为输出门的参数)
输出门控制 ct 最终向 ht 的输出情况
ct 内部记忆单元的输出:ct=ftct1+ittanh(Wxcxt+Whcht1+bc)
(WxcWhcbc 为记忆单元的参数)
ht 时刻 t 输入数据的隐式编码:
$$h_{t}=o_{t}\odot\tanh (c_{t})=o_{t}\odot\tanh (f_{t}\odot c_{t-1}+i_{t}\odot\tanh (W_{xc}x_{t}+W_{hc}h_{t-1}+b_{c}))$$
(输入门、遗忘门和输出门的信息 itftot 一起参与得到 ht
两个向量中对应元素按位相乘 (element-wise product)
如: [10 6 3 7][0.2 0.1 0.8 0.5]=[2 0.6 2.4 3.5]

一些细节:

GRU

门控循环单元(gated recurrent unit,GRU)神经网络

对 LSTM 作了一定的简化:不用记忆单元,仅使用隐藏状态来进行信息的传递
Pasted image 20250422120852.png|450

3.5 注意力机制

Tip

首先生成每个单词的内嵌向量 (包含了单词在句子中位置编码向量信息), 记为 wi(1i4), 如下计算每个单词 wi 的查询向量 (query)、键向量 (key) 和值向量 (value):

后面可以看到,对每个单词而言 wi,wqwkwv 三个映射矩阵都是一样的,也是自注意力模型需要训练的全部参数

自注意力模型就是要挖掘单词 wi 与其他单词在句子中因为上下文 (context) 关联而具有的自注意力取值大小。以图 5.21 中单词 w3 与其他单词之间自注意力取值大小计算为例:

  1. 计算 w3 所对应查询向量与其他单词健向量之间的点积,该点积可作为单词 w3 与其他单词之间的关联度:α3i=q3ki
  2. α3i 结果通过 softmax 函数进行归一化操作,得到 a3i
    对于给定“项庄舞剑、意在沛公”句子,a3i 记录了“意在”单词与其他单词所具有的重要程度 (即注意力)
  3. a3i 乘以每个单词 wi 所对应的值向量 vi, 即 a3i×vi.
  4. 对上一步结果进行 Σia3i×vi, 这个结果作为在当前句子语境下单词 w2 “注意”到与其他单词的关联程度 (self-attention)

Pasted image 20250422121437.png|475

Multi-Head Attention: 构造不同的 Self-Attention 识别不同的特征


04 深度生成学习

考试不作要求

生成模型需要学习目标数据的分布规律,以合成属于目标数据空间的新数据:
Pasted image 20250530154454.png|450

一些生成模型:

生成对抗网络 GAN

生成对抗网络由一个生成器(generator,简称 G)和一个判别器(discriminator,简称 D)组成

GAN 的核心是通过生成器和判别器两个神经网络之间的竞争对抗,不断提升彼此水平以使得生成器所生成数据(人为伪造数据)与真实数据相似,判别器无法区分真实数据和生成数据

Pasted image 20250530154747.png|450

目标函数为:

minGmaxDV(D,G)=Expdata(x)[logD(x)]+Ezpz(z)[log(1D(G(z)))]
训练 GAN

  • 输入:神经网络 D、G,噪声分布 pz (z),真实数据分布 pdata (x)
  • 输出:神经网络参数θd、θg

  • 算法步骤:
    • 每轮训练循环执行:
    • 训练 k 轮判别器:
      • 从噪声分布 pz(z) 中采样 m 个样本 {z(1),z(2),z(3)z(m)}
      • 从真实数据分布 pdata(x) 中采样 m 个样本 {x(1),x(2),x(3)x(m)}
      • 沿梯度上升方向更新判别器参数:
        θd1mi=1m[logD(x(i))+log(1D(G(z(i))))]
    • 从噪声分布 pz(z) 中采样 m 个样本 {Z(1),Z(2),Z(3)...Z(m)}
    • 沿梯度下降方向更新判别器参数:θg1mi=1mlog(1D(G(z(i))))

GAN 具有收敛困难,且非常依赖于合适的交替训练轮次选择等不足,于是出现了 👇

Wasserstein GAN

条件生成网络

多了一个约束条件 y,输入到生成网络 G 和判别网络 D 中:
Pasted image 20250530155245.png|450

对抗样本攻击

加入随机噪声后,尽管人眼仍能明显地识别图像的主体,但神经网络会因此产生明显的判断错误:
Pasted image 20250607211128.png|450

对抗生成训练器模型


05 深度学习应用

“词袋”(Bag of Words)模型:一个单词按照词典序被表示为一个词典维数大小的向量(被称为 one hot vector),向量中该单词所对应位置按照其在文档中出现与否取值为 1 或 0。1 表示该单词在文档中出现、0 表示没有出现

分布式向量表达 (distributed vector representation) 👉 利用深度学习模型,可将每个单词表征为𝑁维实数值的分布式向量

Word2Vec

如何获得单个单词的词向量?

  1. 将该单词表示成 V 维 one-hot 向量 X
  2. 隐藏层神经元大小为 N, 每个神经元记为 hi(1iN)
  3. 向量 X 中每个 xi(1i V) 与隐藏层神经元是全连接,连接权重矩阵为 WV×N
  4. 这里 WV×NWN×V 为模型参数
  5. 一旦训练得到了下图的神经网络,就可以将输入层中 xk 与隐藏层连接权重为 {wk1,wk2,,wkN} (隐藏层) 作为第 k 个单词 N 维词向量 (word vector)

Pasted image 20250607211951.png|450

Word2Vec 的两种训练模式

Continuous Bag-of-Words (CBoW):根据某个单词所处的上下文单词来预测该单词

可用 xk 的前序 k1 个单词和后续单词 ck 个单词一起来预测 xk

  • 每个输入单词仍然是 V 维向量(可以是 one-hot 的表达)
  • 隐式编码为每个输入单词所对应编码的均值

Pasted image 20250607212711.png|400

Skip-gram:利用某个单词来分别预测该单词的上下文单词

无论是 CBOW 还是 Skip-Gram 模式,随着单词个数数目增加,模型参数数目也迅速上升
👉 加快模型训练:层次化 Softmax(Hierarchical Softmax)与负采样(Negative Sampling)


Copyright © 2025 Casette.
Made with Obsidian DG.