本页PDF
神经网络的发展历程:
- 第一代:感知机
- 第二代:多层感知器的 BP 反向传播算法
- 第三代:深度学习
神经网络结构
人工神经网络
什么是机器学习:通过算法使得机器能从大量数据中学习规律从而对新的样本做决策
机器学习三要素:模型、学习准则、优化
深度学习三步骤:定义网络、损失函数、优化
常见三类机器学习问题:分类、回归、聚类
常见的机器学习类型:监督学习、无监督学习、强化学习
随机梯度下降法:每次迭代只选择一个样本来更新网络参数
输入:训练集 D={x(n),y(n)}n=1N ,验证集 V ,学习率 α
随机初始化 θ
repeat
- 对训练集 D 的样本进行随机排序
- for n = 1 ... N do
- 从训练集 D 选取样本 (x(n),y(n))
- 更新参数: θ←θ−α∂θ∂L(θ;x(n),y(n))
- end
until 模型 f(x;θ) 在验证集 V上的错误率不再下降
输出 θ

机器学习模型的几个评价指标
预测结果为y^,真实结果为y
A=N1n=1∑NI(y(n)=y^(n))
E=1−A=N1n=1∑NI(y(n)=y^(n))
P=TP+FPTP
R=TP+FNTP
精确率和召回率详见统计学习方法
目标函数
R(w)=21∣∣y−xTw∣∣2
R(w)=21∣∣y−xTw∣∣2+21λ∣∣w∣∣2
p(y∣x;w,σ)=n=1∏NN(y(n);wTx(n),σ2)
最大后验估计:等价于结构风险最小化
验证岭回归的解:对结构风险求导即可
w∗=(XXT+λI)−1Xy
wkmaxwkTΣwks.t.wkTwk=1wkwj=0(j=1,…,k−1)
wmaxJ(w)=wmaxwTSwwwTSbw
max∣∣w∣∣21s.t.y(n)(wTx(n)+b)≥1
反向传播算法执行过程
- 输入训练集,验证集,学习率,正则化系数等
- 随机初始化网络参数
- 循环直到模型在验证集的错误率不再下降(或小于某一个阈值)
- 对训练集样本进行重排序
- 遍历每一个样本
- 前馈计算每一层的净输入和激活值
- 反向传播计算每一层梯度
- 更新参数
- 输出模型参数

反向传播算法的推导
设第 l 层
z(l)=W(l)a(l−1)+b(l)
损失函数是
L(y,y^)
要求的是
∂W(l)∂L∂b(l)∂L
- 对某个权重 wijl ,使用链式法则
∂wij(l)∂L=∂z(l)∂L∂wij(l)∂z(l)
由于
zi(l)=j∑wij(l)aj(l−1)+bi(l)
因此
∂wij(l)∂zi(l)=aj(l−1)
所以
∂wij(l)∂L=∂zi(l)∂Laj(l−1)
这时候定义
δi(l)=∂zi(l)∂L
所以
∂wij(l)∂L=δi(l)aj(l−1)
矩阵形式为
∂W(l)∂L=δ(l)(a(l−1))T
- 推导偏置梯度
因为
zi(l)=j∑wij(l)aj(l−1)+bi(l)
因此
∂bi(l)∂zi(l)=1
于是有
∂bi(l)∂L=∂zi(l)∂L=δi(l)
写成矩阵形式为
∂b(l)∂L=δ(l)
- 推导 δ(l)
δ(l)=∂z(l)∂L
通过链式法则
∂z(l)∂L=∂z(l)∂a(l)∂a(l)∂z(l+1)z(l+1)∂L
逐个看
∂z(l)∂a(l)=fl′(z(l))
且
z(l+1)=W(l+1)a(l)+b(l+1)
所以
∂a(l)∂z(l+1)=(W(l+1))T
而
∂z(l+1)∂L=δ(l+1)
最后
δ(l)=fl′(z(l))⊙((W(l+1))Tδ(l+1))
特征
反向传播算法推导
每一步
zt=Uht−1+Wxt+bht=f(zt)
输出为
ot=Vht+c
损失为
L=t=1∑TLt
要求的梯度为
∂U∂L∂W∂L∂b∂L
定义误差项
δt,k=∂zk∂Lt
长程依赖问题:循环神经网络在时间维度上非常深,包括梯度消失和梯度爆炸,可以使用循环边改为线性依赖关系和增加非线性来改进。
- 梯度消失:网络层数很深且导数小于1,经过每一层网络后导数不断衰减,造成梯度衰减
- 梯度爆炸:网络层数很深且导数大于1,经过每一层网络后导数不断被放大,造成梯度爆炸
应用到机器学习的模式
梯度下降有哪三种
神经网络优化的改善方法有网络优化和网络正则化两大类
小批量梯度下降:每次选取K个样本对模型参数进行更新,影响其的主要因素有
参数初始化方法
- 预训练初始化
- 随机初始化
- 神经网络初始化为什么不能将参数全设置为0:将参数都初始化为0导致第一遍前向计算时中间值都相同,导致反向传播权重更新也相同,导致神经元没有区分性,称为对称权重现象
- 固定值初始化
神经网络优化算法
- 学习率调整
- 梯度估计修正:动量法
- 综合方法:Adam = 动量法 + RMSProp
神经网络正则化方法
- L1、L2正则化
- 权重衰减
- 早停
- Dropout
- 数据增强
- 标签平滑
超参数优化方法
- 网格搜索
- 随机搜索
- 贝叶斯优化
- 动态资源分配
- 神经架构搜索
不能在循环神经网络中的循环连接上直接应用丢弃法:这样会损害循环网络在时间维度上记忆能力,导致信息流断裂,模型无法理解长序列依赖关系
L1、L2正则化目标函数
θ∗=θargminN1n=1∑NL(y(n),f(x(n);θ))+λlp(θ)
神经网络优化的改善方法
- 使用更有效的优化算法来提高梯度下降优化方法的效率和稳定性,比如动态学习率调整、梯度估计修正
- 使用更好的参数初始化方法、数据预处理方法来提高优化效率
- 修改网络结构来得到更好的优化地形,比如使用ReLU激活函数、残差连接、逐层归一化等
- 使用更好的超参数优化方法
RMSProp
维护梯度平方的累积变量Gt,梯度为gt
Gtθt=βGt−1+(1−β)gt=θt−1−Gt+ϵαgt
Momentum
维护一个速度变量vt
vtθt=βvt−1+(1−β)vt=θt−1−αvt
Adam算法
- 结合了RMSProp和动量法
- 动量法:使用了梯度的一阶矩
- RMSprop:使用了梯度的二阶矩
计算移动平均(一阶矩和二阶矩)
MtGt=β1Mt−1+(1−β1)gt=β2Gt−1+(1−β2)gt⊙gt
偏差修正
Mt^Gt^=1−β1tMt=1−β2tGt
更新参数
Δθt=−Gt^+ϵαMt^
逐层归一化
- 批量归一化(Batch Normalization):不同样本的同一维度上进行归一化
- 层归一化(Layer Normalization):同一样本的不同维度进行归一化
- 权重归一化
- 局部响应归一化
- 目的:更好的尺度不变性、更平滑的优化地形
典型的无监督学习问题分类
主成分分析
第一主成分优化问题
w1maxw1TΣw1s.t.w1Tw1=1
第k主成分优化问题
wkmaxs.t.wkTwk=1wkTΣwk,wkTwj=0 (j=1,…,k−1)
- 求解过程:使用拉格朗日乘子法,对w1求导,令导数为0
线性编码
- 表达式
- 输入样本x可以由基向量A和字典Z表示
- 其中,基向量A=[a1,…,am],编码向量是Z=[z1,…,zm]T
解码
x=m=1∑Mzmam=AZ
编码
z=m=1∑Mxmam=ATx
稀疏编码
- 优点
- 目标函数
- 其中ρ是稀疏性衡量函数,η是是一个超参数,用来控制稀疏性的强度
L(A,Z)=n=1∑N(∣∣x(n)−Az(n)∣∣2+ηρ(z(n)))
(1) 固定基向量A,对于每个输入x(n),计算其对应的最优编码
z(n)min∣∣x(n)−Az(n)∣∣2+ηρ(z(n)),∀n∈[1,N]
(2) 固定上一步得到的编码{z(n)}n=1N,计算其最优的基向量
Aminn=1∑N(∣∣x(n)−Az(n)∣∣2)+λ21∣∣A∣∣2
自编码器
分为编码器和解码器
学习目标是重构错误(最小化重构误差)
和主成分分析在学习目标上完全一致:最小化重构误差
- 在特定条件下,两者是同构的
- 自编码器是主成分分析的非线性泛化
三种变体
稀疏自编码器
- 目标函数
- 其中W是自编码器中的参数
- 不仅要求还原输入,还需要学习到稀疏且有意义的特征表示,且引入正则化进行参数惩罚
L=n=1∑N∣∣x(n)−x′(n)∣∣2+ηρ(z(n))+λ∣∣W∣∣2
堆叠自编码器
- 将编码器进行逐层堆叠,训练一个深度的自编码器
- 采用逐层训练的方式更新参数
降噪自编码器
- 思想:通过引入噪声来学习更鲁棒性的数据编码,并提高模型的泛化能力
- 结构:在原始输入x中引入噪声,交由编码器还原
- 学习目标:要求网络能够对输入样本进行去噪,从含有噪声的样本中恢复原始数据

变分自编码器

ϕ∗=argϕminKL(q(z∣x;ϕ),p(z∣x;θ))
模型独立的学习方法
组成部分
四种注意力机制
- 软性注意力:通过计算相似度作为权重对输入加权求和,计算完相似度之后一般用softmax
- 打分函数:s(x,q),对输入x和查询q计算相似度
- 信息提取:s(x,q)⋅x:用相似度作为连续权重对输入进行加权
- 硬性注意力:只选取相似度最高的那个输入
- 打分函数:I[s(x,q);λ],结合重参数技巧或阈值判断
- 信息提取:只选取相似度最高的那个输入
- 键值对注意力:将输入拆分为k用于计算相似度,v用于存储实际内容
- 打分函数:s(k,q),仅用k和v计算匹配度
- 信息提取:s(k,q)⋅v,用k和q的相似度加权对应的v
- 多头注意力:将Query、Key、Value通过不同线性投影拆分为h组
- 打分函数:s(ki,qi)
- 信息提取:s(ki,qi)⋅vi,之后进行拼接

Transformer的注意力机制是基于软性注意力的键值对模式
打分函数

自注意力计算过程

自注意力机制指的是Q、K、V都来自输入序列本身
当神经网络要处理变长的输入序列时,通常使用循环网络或者卷积网络进行编码得到一个相同长度的输出序列
建立非局部的依赖关系
具体请看Transformer
贝叶斯网络(有向图模型/信念网络)
- 局部马尔可夫性质:每个随机变量在给定父节点的情况下,条件独立于它的非后代节点
必考
p(a,b,c)=p(a)p(b∣a)p(c∣a,b)
p(x1,…,x7)=p(x1)p(x2)p(x3)p(x4∣x1,x2,x3)p(x5∣x1,x3)p(x6∣x4)p(x7∣x4,x5)
点估计
生成模型:包含密度估计和采样两个步骤
含隐变量的参数学习
- 可以看到隐变量:直接优化P(X,Z)
- 看不到隐变量:优化P(X)=∫P(X,Z)dZ,但这个积分不好算,因此要用EM算法
EM算法:解决已知观测变量X但对于隐变量Z未知的问题
- E步(期望步):使用已知模型参数θ和观测变量X估计隐变量Z
- 估计的是隐变量的后验分布q(Z∣X,θ),并让这个分布接近于真实后验分布p(Z∣X,θ)
- 精确EM:可以直接得到真实后验分布,直接让q(Z∣X,θ)等于p(Z∣X,θ)
- 其它:无法直接算出真实后验分布,让q(Z∣X,θ)近似真实后验概率分布
- 注意:真实后验概率分布无法直接求出,这里的近似是间接近似,也就是在M步最大化似然的同时间接让q(Z)和p(Z∣X,θ)的KL散度减小
- M步(最大化步):使用E步估计得到的隐变量Z和观测数据X重新拟合模型参数θ
EM算法推导
目标是最大化P(X∣θ)
可以转换为
P(X∣θ)=∫P(X,Z∣θ)dz
并且有
P(X∣θ)=P(Z∣X,θ)P(X,Z∣θ)
因此
logP(X∣θ)=logP(Z∣X,θ)P(X,Z∣θ)=logP(X,Z∣θ)−logP(Z∣X,θ)=logq(z)P(X,Z∣θ)−logq(z)P(Z∣X,θ)
两边同时乘以q(z)并对z积分
P(X∣θ)=∫q(z)logP(X∣θ)dz=∫q(z)logq(z)P(X,Z∣θ)−∫q(z)logq(z)P(Z∣X,θ)=LowerBoundBEz∼q(z)[logq(z)P(X,Z∣θ)]+KL(q(z)∣∣P(Z∣X,θ))
因为q(z)是在E步固定的,因此Ez∼q(z)[−logq(z)]与θ无关
因此对下界B最大化本质是在对
Ez∼q(z)[logP(X,Z∣θ)]
最大化
可以对下界B进行进一步变形
由于
P(X,Z∣θ)=P(X∣Z,θ)P(Z∣θ)
但在VAE里面,默认P(Z)服从正态分布,不受θ的影响
因此
Ez∼q(z)[logq(z)P(X,Z∣θ)]=Ez∼q(z)[logq(z)P(X∣Z,θ)P(Z∣θ)]=Ez∼q(z)[logP(X∣Z,θ)]−KL(q(z)∣∣P(Z∣θ))
MCMC和变分推断:为了解决E步中真实后验分布难以计算的问题
- 变分推断:在后验分布难以计算的情况下,引入一个分布q(Z)近似真实后验,在M步里面间接使他们俩的KL散度最小
- 给分布q(Z)引入参数ϕ形成q(Z∣ϕ)
- 原EM优化方法
- 通过优化ϕ以增大下界B,间接使得近似后验接近真实后验
- 新的EM优化方法
- E步优化ϕ,使得下界B最大,间接使得近似后验接近真实后验
- M步优化θ,使得下界B最大
- MCMC:从后验分布中采样,用样本形成的经验分布来近似后验,这些样本随后可以用样本平均来近似M步里的积分或期望
本质上是使用神经网络实现变分推断
- 目标:总损失 = 重建损失 + KL 散度损失(对应上面EM算法推导的下界B)
- 重建损失要求解码的图像和原始输入尽量接近
- KL散度损失要求近似的后验概率要尽可能接近高斯分布
- 注意:变分推断是引入一个分布近似真实后验,在VAE里面也不例外,这里的KL散度损失只是为了让这个近似后验不要那么乱,接近高斯分布好采样和计算
- 隐变量:Z是一个概率分布
- 编码器:为一个神经网络,输出隐变量Z的概率分布(通常为高斯分布),输出μ和σ
- 解码器:接受采样的Z,生成图像
VAE架构VAE方程
- 编码器:q(z∣gϕ(x))
- 解码器:p(x∣fθ(z))
- 模型希望似然概率大的同时,让隐变量分布接近真实后验分布
logp(x∣θ)−KL[q(z∣gϕ(x))∣∣p(z∣x,θ)]=Eq(z∣gϕ(x))[logp(x∣fθ(z))]−KL[q(z∣gϕ(x))∣∣p(z)]=L2(θ,ϕ∣x(i))+L1(ϕ∣x(i))
即
L(θ,ϕ∣x(i))=L2(θ,ϕ∣x(i))+L1(ϕ∣x(i))
更新方式为随机梯度下降
VAE流程
xϕzθx^
参数更新
- 通过重参数化解决对隐变量分布进行采样后梯度无法回传的问题
- 想从一个正态分布采样,直接采样梯度无法回传
- 因此先采样一个随机噪声ϵ,通过z=μϕ(x)+σϕ(x)ϵ保证梯度可以回传
解码器:梯度由重建项提供,不需要重参数化
L2=Eq(z∣gϕ(x))[logp(x∣fθ(z))]
L2≈L1l=1∑Llogp(x∣fθ(z(l)))
∂θ∂L≈L1l=1∑L∂θ∂logp(x∣fθ(z(l)))
编码器:梯度由重建项和KL项提供
∂ϕ∂L=∂ϕ∂L1+∂ϕ∂L2
即
∂ϕ∂L=∂ϕ∂L1+L1l=1∑L∂ϕ∂logp(x∣fθ(g~ϕ(ϵ(l),x)))
网络架构
- 判别网络:区分输入是真实数据,还是生成网络生成的假数据
- 生成网络:生成尽可能欺骗判别网络的逼真数据
目标函数
| 符号 | 含义 |
|---|
| pr(x) | 真实数据分布 |
| pθ(x) | 生成网络生成的数据服从的分布 |
| z∼p(z) | 从噪声分布中采样 |
| G(z;θ) | 生成网络生成的假样本 |
| D(x;ϕ) | 判别网络认为 (x) 是真实样本的概率 |
| ϕ | 判别网络参数 |
| θ | 生成网络参数 |
- 判别网络:让判别网络对真实样本的预测概率接近1,对假样本的预测概率接近0
ϕmaxEx∼pr(x)[logD(x;ϕ)]+Ez∼p(z)[log(1−D(G(z;θ);ϕ))]
- 生成网络:生成网络希望自己生成的样本G(z;θ) 被判别网络认为是真的
θmax(Ez∼p(z)[logD(G(z;θ);ϕ)])
θminϕmaxEx∼pr(x)[logD(x;ϕ)]+Ez∼p(z)[log(1−D(G(z;θ);ϕ))]
最优判别器
此时固定生成网络,调整判别网络的参数
为了让判别网络目标函数最大,对于每一个x,需要最大化
pr(x)logD(x)+pθ(x)log(1−D(x))
对D(x)求导
D(x)pr(x)−1−D(x)pθ(x)=0
可以解得最优解
D∗(x)=pr(x)+pθ(x)pr(x)
可以将最优判别器代回目标函数
L(G∣D∗)=Ex∼pr(x)[logD∗(x)]+Ex∼pθ(x)[log(1−D∗(x))]=Ex∼pr(x)[logpr(x)+pθ(x)pr(x)]+Ex∼pθ(x)[logpr(x)+pθ(x)pθ(x)]
我们定义
pa(x)=21(pr(x)+pθ(x))
即
pr(x)+pθ(x)=2pa(x)
因此
logpr(x)+pθ(x)pr(x)=log2pa(x)pr(x)=logpa(x)pr(x)−log2
另一项同理
logpr(x)+pθ(x)pθ(x)=log2pa(x)pθ(x)=logpa(x)pθ(x)−log2
所以目标函数可以写为
L(G∣D∗)=Ex∼pr(x)[logpr(x)+pθ(x)pr(x)]+Ex∼pθ(x)[logpr(x)+pθ(x)pθ(x)]=Ex∼pr(x)[logpa(x)pr(x)]+Ex∼pθ(x)[logpa(x)pθ(x)]−2log2=DKL(pr∣∣pa)+DKL(pθ∣∣pa)−2log2
而JS散度(≥0)定义为
DJS(pr∣∣pθ)=21DKL(pr∣∣pa)+21DKL(pθ∣∣pa)
最终目标函数可以写为
L(G∣D∗)=2DJS(pr∣∣pθ)−2log2
注意此时求出来的目标函数已经使得判别器是最优的了,现在要让目标函数最小,以求得最佳的生成网络
很显然,当JS散度为0,即pr=pθ(生成器分布等于真实分布)时,最优收敛点为
L(G∣D∗)=−2log2
同时
D∗(x)=21
生成网络的梯度消失
在使用原始的极大极小目标进行训练时,最后的目标函数为
L(G∣D∗)=2DJS(pr∣∣pθ)−2log2
如果真实分布pr和生成分布pθ差得很远,那么判别器很容易判定真假,即
D(x)≈1,x∼prD(x)≈0,x∼pθ
当两个分布完全不重叠时(JS散度有上界)
DJS(pr∣∣pθ)=log2
此时损失为
L(G∣D∗)=2log2−2log2=0
对于生成网络来说,得到的梯度很弱,生成网络无法正常收敛
模型坍塌
实际训练中可能不使用原始的极小极大目标函数,而是使用生成网络的目标函数
L′(G∣D∗)=Ex∼pθ(x)[logD∗(x)]
代入D∗(x)
L′(G∣D∗)=Ex∼pθ(x)[logpr(x)+pθ(x)pr(x)⋅pθ(x)pθ(x)]=−Ex∼pθ(x)[logpr(x)pθ(x)]+Ex∼pθ(x)[logpr(x)+pθ(x)pθ(x)]=−KL(pθ∣∣pr)+Ex∼pθ(x)[log(1−D∗(x))]=−KL(pθ∣∣pr)+2DJS(pr∣∣pθ)−2log2−Ex∼pr(x)[logD∗(x)]
后两项与生成网络无关,因此生成网络最终目标是
θargmaxL′(G∣D∗)=θargminKL(pθ∣∣pr)−2DJS(pr∣∣pθ)
先来理解KL散度的两种形式
- 前向KL散度:以真实分布为主,想让模型覆盖真实分布
- 如果模型输出的分布不在真实分布中,模型会受到巨大的惩罚
- 缺陷:模型输出的图像会变得模糊,试图覆盖真实分布的所有地方,导致输出的图像变成四不像
- 逆向KL散度:以模型分布为主,想让模型尽量接近真实分布
- 如果模型生成了一个样本,但是这个样本不在真实分布中,模型会受到巨大的惩罚
- 缺陷:模型只输出特定的样本,只要它生成的样本在真实分布里是合理的,它就不关心那些它没生成的区域
再看看我们推导出来的目标函数,其是一个典型的逆向KL散度,而这个目标函数会造成模型崩塌
DKL(pθ∣∣pr)=∫pθ(x)logpr(x)pθ(x)dx
- 情况一:生成器生成了真实分布不存在的东西
- 此时 pθ(x)>0,pr(x)=0,那么KL散度会无穷大
- 说明生成器一旦把概率放到真实数据完全没有的区域,会受到巨大惩罚
- 情况二:生成器生成的样本没有完全覆盖真实分布
- 此时 pr(x)>0,pθ(x)=0,那么KL散度为0
- 说明生成器漏掉真实数据的一些模式,反向 KL 不会强烈惩罚它
改进
可使用 Wasserstein 距离衡量不同分布之间的的远近
- 即使两个分布没有重叠或者重叠非常少,Wasserstein距离仍然能反映两个分布的远近
- 前向过程:对清晰图像每一步加入高斯噪声逐步加噪
- 后向过程:训练一个网络对噪声图像逐步去噪
组成部分

智能体看状态,选动作;环境变状态,给奖励;智能体根据奖励改策略
基本要素
- 环境的状态集合
- 智能体的动作集合
- 策略
- 状态转移概率
- 即时奖励
马尔可夫决策过程的轨迹
τ=(s0,a0,r1,s1,a1,r2,s2,a2,…)

p(τ)=p(s0)t=0∏T−1π(at∣st)p(st+1∣st,at)
总回报
给定策略π(a∣s),智能体和环境一次交互过程的轨迹τ所获得的累计回报成为总回报
G(τ)=t=0∑T−1γtrt+1
γ是折扣率
- 当γ接近0时,说明模型更在意短期回报
- 当γ接近1时,说明模型更在意长期回报
强化学习的目标:学习到一个策略πθ(a∣s)来最大化期望回报
J(θ)=Eτ∼pθ(τ)[G(τ)]=Eτ∼pθ(τ)[t=0∑T−1γtrt+1]
表示在当前策略产生的轨迹分布下,对轨迹总回报取期望
状态值函数与状态-动作值函数的区别:
- 状态值函数:当前状态的动作是不确定的,之后按策略 π 走
- 状态-动作值函数:当前状态的动作是确定的,先执行动作之后按策略 π 走
状态值函数
表示:
从状态 s 出发,之后一直按照策略 π 行动,最终能获得的期望总回报(因为可能会有很多条轨迹)
Vπ(s)=Eπ[Gt∣St=s]
其中 Gt 是从时刻 t 开始的总回报
状态值函数的贝尔曼方程
已知
Gt=Rt+1+γGt+1
代入定义
Vπ(s)=Eπ[Rt+1+γGt+1∣St=s]
写成求和形式
- 在状态 s 下可以采取不同的动作,要对所有动作加权平均
- 选定动作后,环境也不一定转移到唯一状态,因此要对所有状态加权平均
Vπ(s)=a∑π(a∣s)s′∑p(s′∣s,a)[r(s′,a,s)+γVπ(s′)]
状态-动作值函数
表示:
在状态 s 下先执行动作 a,之后按照策略 π 行动,能够获得的期望总回报
Qπ(s,a)=Eπ[Gt∣St=s,At=a]
状态-动作值函数的贝尔曼方程
已知
Gt=Rt+1+γGt+1
代入
Qπ(s,a)=Eπ[Rt+1+γGt+1∣St=s,At=a]=Eπ[Rt+1+γQπ(St+1,At+1)∣St=s,At=a]
写成求和形式
- 当前状态和动作已经确定,因此要对下一状态 s′ 进行加权求和
- 把 Vπ(s′) 进行展开,到达下一个状态后可以选择不同的动作,因此要对下一动作 a 进行加权求和
Qπ(s,a)=s′∑p(s′∣s,a)[r(s′,a,s)+γVπ(s′)]=s′∑p(s′∣s,a)[r(s′,a,s)+γa′∑π(a′∣s′)Qπ(s′,a′)]
策略梯度是直接优化策略参数 θ
策略写作:
πθ(a∣s)
表示:
在状态 s 下,按照参数为 θ 的策略选择动作 a
目标函数:
J(θ)=Eτ∼pθ(τ)[G(τ)]
即
J(θ)=τ∑pθ(τ)G(τ)
使用的方法是梯度上升
强化学习策略梯度是在最大化 J(θ),因此参数更新使用梯度上升
θ←θ+α∇θJ(θ)
对 θ 求导
∇θJ(θ)=∇θτ∑pθ(τ)G(τ)=τ∑∇θpθ(τ)G(τ)
由于
∇θpθ(τ)=pθ(τ)∇θlogpθ(τ)
代入得
∇θJ(θ)=τ∑G(τ)pθ(τ)∇θlogpθ(τ)=Eτ∼pθ(τ)[G(τ)∇θlogpθ(τ)]
轨迹概率为
pθ(τ)=p(s1)t=1∏Tπθ(at∣st)p(st+1∣st,at)
环境转移概率 p(st+1∣st,at) 和初始状态分布不含 θ ,所以求梯度时只剩策略项
∇θlogpθ(τ)=t=1∑T∇θlogπθ(at∣st)
最终策略梯度行形式为
∇θJ(θ)=Eτ∼pθ(τ)[G(τ)t=1∑T∇θlogπθ(at∣st)]
最后可写为
∇θJ(θ)=Eτ∼pθ(τ)[t=1∑T∇θlogπθ(at∣st)(G(τ1:t−1)+γtG(τt:T))]=Eτ∼pθ(τ)[t=1∑T(∇θlogπθ(at∣st)γtG(τt:T))]
特点
神经网络表示建模(word2vec)
- 传统分词器的问题:单个词包含的信息量太少,计算量爆炸,稀疏表示难以包含更多的信息
- word2vec:从稀疏的词袋表示,发展到神经网络学习出来的稠密词向量表示
语言模型基本架构(预训练 + 后训练 + 提示工程)
- 输出层
- 任务:语言建模、序列到序列(翻译)、分类或非生成任务
- 把 hidden 层得到的表示转成具体任务需要的结果
- 隐藏层
- 模型架构:RNN、LSTM、GRU、Bi-LSTM、Dilated-CNN、Transformer
- 负责对 embedding 层得到的词向量继续加工,学习词和词之间的关系
- 词嵌入层
- 把输入的词或token转换成计算机能处理的向量
- 采用模型:Word2Vec
表示模型与生成模型
- 表示模型:仅使用Transformer编码器,代表模型BERT
- 生成模型:仅使用Transformer解码器,代表模型GPT
Transformer的预训练
- 预训练基本思路:将预训练方法应用到Transformer上,并在下游任务中保持Embedding层和Hidden层结构不变,只针对具体任务进行输出层的微调
- 预训练可以分为:Embedding层、Hidden层、Output层
- 两种预训练基本形式(无监督学习)
- GPT(自回归语言模型):对于每一句话,预测每个位置的下一个Token(LM任务)
- BERT:随机遮住句子中的部分Token,让模型根据上下文预测被挡住的词(MLM任务)
语言模型架构流派
- Encoder-only流派:仅包含Transformer编码器,采用双向自注意力机制
- 代表模型:Bert、Roberta
- 适合任务:文本分类、理解、预测
- Decoder-only流派:仅包含Transformer解码器,采用掩码自注意力机制
- 代表模型:OpenAI的GPT系列,Meta的OPT系列
- 适合任务:文本生成
- Encoder-Decoder流派:采用序列到序列形式,包含解码器和编码器模块
绪论 & 机器学习
神经网络结构 神经网络发展历程
机器学习三要素,深度学习的步骤,常见三类机器学习问题,常见的机器学习类型
梯度下降有哪三种
随机梯度下降法步骤
前馈神经网络反向传播算法的推导
使用反向传播算法的随机梯度下降训练过程
机器学习几个评价指标
什么是长程依赖问题、梯度消失、梯度爆炸,分别如何改进
参数初始化方法有哪些,为什么神经网络不能初始化参数为0,会产生什么现象
神经网络正则化方法有哪些
神经网络的优化算法有哪些
神经网络优化的改善方法有哪些
Adma算法的内容
L1、L2正则化优化函数
超参数优化方法有哪些
几种常用的逐层归一化方法 逐层归一化的目标
典型的无监督学习问题可以分为哪几类
模型独立的学习方法有哪些
CNN的特征
RNN应用到机器学习的模式
RNN梯度消失和梯度爆炸如何解决
为什么不能在循环神经网络中的循环连接上直接应用丢弃法
自编码器三种变体
稀疏编码的目标函数和训练过程
自编码器的学习目标 和主成分分析的关系
稀疏自编码器目标函数和含义
堆叠自编码器的结构和训练方式
降噪自编码器的思想、结构、学习目标
稀疏编码的优点
注意力机制
注意力机制的组成部分
有哪几种注意力机制
打分函数有哪几种
为什么自注意力机制有“自”
多头注意力计算过程
概率图模型
贝叶斯有向无环图的联合概率密度
MLE和MAP
点估计公式推导
变分推断为什么叫变分
EM算法两个步骤做了什么 原始的和改进的EM算法有什么区别
生成模型
VAE的架构
VAE的目标函数
VAE编码器、解码器梯度如何计算
GAN的判别网络、生成网络的目标函数 总的目标函数
最优收敛点如何推导、最后损失多少、对应的最佳判别器如何推导、最后值是多少
GAN生成网络梯度消失的问题、模型坍塌的问题是咋来的
扩散模型前向和后向在做什么事情
强化学习
强化学习流程图 轨迹图
轨迹的联合概率怎么写 智能体和环境一次交互得到的总回报怎么写
强化学习的目标是什么
折扣率表达的含义
状态值函数、状态动作值函数以及其贝尔曼方程
策略梯度公式 最终策略梯度行形式
深度Q网络特点
大模型
语言模型架构图 架构图每一层的任务及其代表模型
表示模型和生成模型
Transformer预训练思路
gpt Bert预训练基本形式(任务、注意力方式、使用了什么模块)
语言模型架构流派、代表模型、适用的任务