深度学习读书笔记

bias & variance

ED[fD(x)f(x)]=ED[fD(x)EDfD(x)+EDfD(x)f(x)]=ED[fD(x)EDfD(x)]variance+ED[EDfD(x)f(x)]bias

神经网络的优化

参数学习

0gigAg.png

网络前向传播过程如下

z(l)=Wla(l1)+b(l)a(l)=f(z(l))

反向传播的误差要传导到z(l),第l层净输入,表示为δ(l)=L(y,y^)δz(l)。要学习的参数是Wb

根据前向传播的过程得到δ(l)δ(l+1)的关系

δ(l)=\partz(l+1)\partz(l)L(y,y^)z(l+1)=f(z(l))((W(l+1))Tδ(l+1))

L(y,y^)W(l)的梯度为

\partL(y,y^)\partW(l)=\partL(y,y^)\partz(l)T\partz(l)\partW(l+1)=δ(l)(a(a1))T

Ex: 两层分类神经网络

卷积神经网络

卷积与互相关

图像处理上的卷积和平时简便操作的卷积(应该叫互相关)有些区别,它们的公式如下:

卷积:yij=u=1Uv=1Vwu,vxiu+1,jv+1互相关:yij=u=1Uv=1Vwu,vxi+u1,j+v1

两者基本操作是一样的,无非是将卷积核沿着中心点旋转180°。

卷积的变种

在深度学习中经常会有fullsame, valid三种卷积方式

  • full,宽卷积,步长为1,对于大小为K的卷积核,两边填充(K1)
  • same,等宽卷积,步长为1,对于大小为K的卷积核,两边填充(K1)/2
  • valid,窄卷积,步长为1,不进行填充

卷积的求导

假设Y=WX,其中XRM×NWRU×VYR(MU+1,NV+1)f(Y)R,则

\partf(Y)\partwu,v=i=1MU+1j=1NV+1\partyij\partwuv\partf(Y)\partyij=i=1MU+1j=1NV+1xi+u1,j+v1\partf(Y)\partyij=\partf(Y)\partYX

同理可以得到

\partf(Y)\partxs,t=i=1MU+1j=1NV+1\partyij\partxst\partf(Y)\partyij=i=1MU+1j=1NV+1wsi+1,tj+1\partf(Y)\partyij=\partf(Y)\partYW

f(Y)关于X的偏导数为W\partf(Y)\partY的宽卷积。

卷积与全连接的对比

相比于全连接,卷积共享权重、采用的是局部连接。

1×1的卷积操作可以在深度方面进行更为方便的处理。

参数学习

卷积网络中的学习参数是W和偏置b,损失函数对第l层的卷积核W(l,p,d)的偏导数为

\partL\partW(l,p,d)=\partL\partZ(l,p)X(l1,d)=δ(l,p)X(l1,d)

  • 汇聚层δ(l,p)

    汇聚层的操作都在同一个特征映射中,令l+1层为汇聚层

    δ(l,p)=\partL\partZ(l,p)=\partX(l,p)\partZ(l,p)\partZ(l+1,p)\partX(l,p)\partL\partZ(l+1,p)=f(Z(l,p))up(δ(l+1,p))

  • 卷积层δ(l,p)

    Z(l+1,p)=d=1DW(l+1,p,d)X(l,d)+b(l+1,p)

    δ(l,d)=\partL\partZ(l,d)=\partX(l,d)\partZ(l,d)\partL\partX(l,d)=f(Z(l,d))p=1P(rot180(W(l+1,p,d))δ(l+1,p))

其他卷积方式

  • 转置卷积

    转置卷积可以看作一种上采样

  • 空洞卷积

    在卷积核的两个元素之间插入D1个空洞,卷积核的有效大小为

    K=K+(K1)×(D1)

循环神经网络

感觉循环神经网络一定程度上借鉴了自回归模型,保存一定的历史信息,用来预测下一阶段的状态。

循环神经网络的三种类型

  • 序列类别

    如语句情感分析

  • 同步的序列到序列

    如逐字的生成

  • 异步的序列到序列

    auto-encoder

上面三个类型对历史信息ht的预测有所区别

参数学习

zt=Uht1+Wxt+b

ht=f(zt)

yt=Vht

  • BPTT

    \partLt\partU=k=1t\partLt\partzk\partzk\partU=k=1tδt,khk1T

    δt,k=\partLtzk=\partzk+1\partzk\partLtzk+1=f(zk)(UTδt,k+1)

网络优化与正则

网络优化

神经网络为了满足一定的泛化能力,要求最后收敛到平坦最小值。当一个模型收敛到一个平坦的局部最小值时,其鲁棒性会更好,即微小的 参数变动不会剧烈影响模型能力;而当一个模型收敛到一个尖锐的局部最小值 时,其鲁棒性也会比较差.具备良好泛化能力的模型通常应该是鲁棒的,因此理想的局部最小值应该是平坦的。

IstAw.png

优化方法

  • 批量梯度下降

    批量大小随迭代次数和epoch的变化

    IsvMQ.png

  • 学习率衰减

    指数衰减:αt=α0βt

    自然指数衰减:αt=α0exp(β×t)

    余弦衰减:αt=12α0(1+cos(tπT))

  • AdaGrad

    自适应的学习率(根据变量的方差变化)

    Gt=τ=1tgτgτ

    AdaGrad算法的缺点是在经过一定次数的迭代依然没有找到最优点时,由 于这时的学习率已经非常小,很难再继续找到最优点。

  • RMSprop

    将AdaGrad中的G变为滑动平均

    Gt=(1β)τ=1tβtτgτgτ

  • 动量法

    使用负梯度的加权移动平均替代当前批量梯度

    Δθt=ρΔθt1αgt=ατ=1tρtτgτ

  • Nesterov加速梯度

    将动量法的梯度求解拆为两步骤

    Δθt=ρΔθt1αgt(θ+ρΔθt1)

  • Adam

    Adam是动量法和RMSprop方法的结合

    :Mt=β1Mt1+(1β1)gtGt=β2Gt1+(1β2)gtgt

    在迭代初期𝑀𝑡 和𝐺𝑡 的值会比真实的均值和方差,对偏差进行修正

    M^t=Mt1β1tG^t=Gt1β2t

注意力机制与外部记忆

神经网络中可以存储的信息量称为网络容量。由于计算的限制,在处理复杂任务时不希望过多的提升模型的复杂度,但同时不丢失过多的信息。在有限的计算能力下,通过引入注意力和记忆机制处理过载的信息。注意力,通过自上而下的信息选择机制来过滤掉大量的无关信息;外部记忆,优化神经网络的记忆结构来提高神经网络存储信息的容量。

注意力机制

在神经学上,注意力分为两种:

  • 聚焦式注意力(自上而下,任务驱动的)。
  • 基于显著性的注意力(自下而上,外界刺激,如名字)。

在目前的神经网络模型中,可以将最大汇聚(Max Pooling)、门控(Gating)机制近似地看作自下而上的基于显著性的注意力机制。

注意力机制的计算可以分为两步:一是在所有输入信息上计算注意力分布,二是根据注意力分布来计算输入信息的加权平均。

  • 注意力分布。

    为了从N个输出向量[x1,,xn]中选择出和某个特定任务相关的信息,需要引入一个和任务相关的表示,称为查询向量。并通过一个打分函数来计算每个输入向量和查询向量之间的相关性。

    αn=p(z=n|X,q)=softmax(s(xn,q))

    αn成为注意力分布,s(xn,q)是一种相似性度量,称为注意力打分函数,可以采用

    s(xn,q)=vTtanh(Wxn+Uq)s(xn,q)=xnTqs(xn,q)=xnTqDs(xn,q)=xnTWq

  • 加权注意力

    注意力加权可以使软性加权,即求分布期望也可以直接选择概率值最大的向量xz作为输出。

    att(X,q)=i=1nαnxn=Ezp(z|X,q)[xz]

    更一般的可以用一种键值对的格式来表示输入信息,即x=(K,v),其中K用来计算注意分布αv用来计算聚合信息。

  • 指针网络

自注意力模型

序列模型一个重要的问题就是表示长距离的依赖关系。循环神经网络和卷积神经网络虽然可以记录依赖关系,但是由于梯度消失等问题导致并不能建立长距离的依赖关系。全连接虽然可以建立长距离的依赖关系,但是无法适应序列模型的不定长输入。

自注意力模型就是解决对序列不定长输入建立长距离的依赖关系提出的,其模型如下

IizCL.png

  • 对于输入向量[x1,,xn],通过线性映射生成(Q,K,V)对,分别表示查询向量矩阵,键向量和值向量。
  • 对于每一个查询向量,利用注意力分布共公式计算出注意力分布。

自注意力模型可以作为神经网络中的一层来使用,既可以用来替换卷积层和循环层,也可以和它们一起交替使用。在计算注意力分布的过程中忽略了输入信息的位置信息,在使用时需要加入位置编码。

记忆增强网络

为了增强网络容量,我们可以引入辅助记忆单元,将一些和任务相关的信息保存在辅助记忆中,在需要时再进行读取,这样可以有效地增加网络容量。

Q00vw.png

  • 控制器,负责信息处理,以及与外界的交互
  • 外部记忆单元负责存储信息
  • 读操作,根据控制器生成的查询向量从外部记忆单元读取相应的信息
  • 写操作,根据控制器生成的查询向量和要写入的信息a来更新外部记忆单元。

模型独立的学习方式

模型独立的意思是使用的方法和所应用的模型无关,例如可以将集成学习用在支持向量机、逻辑回归上也可以用在神经网络上。虽然学习方式和模型无关,但是

集成学习(Ensemble Learning)

定义R¯(f)=1Mm=1MEx[ϵm(x2)],最简单的集成学习策略是平均各个模型的预测结果(voting)

F(x)=1Mi=1Mfm(x)

F(x)的经验误差在[R¯(x)1MR¯(x)]之间

证明:

Ex[F(x)f(x)]2=1M2ijE(ϵiϵj)

如果ϵiϵj独立,那么上式就等于1MR¯(x)如果两者完全相等,那么上式就等于R¯(x)。因此为了使集成学习有意义,则模型间的应尽可能有差异。这也是集成学习的原理所在。

为了增加模型之间的差异性,可以采取BaggingBoosting这两类方法。

  • Bagging类方法是通过随机构造训练样本、随机选择特征等方 法来提高每个基模型的独立性
  • Boosting类方法是按照一定的顺序来先后训练不同的基模 型,每个模型都针对前序模型的错误进行专门训练
  • AdaBoost

F(x)=m=1αmfm(x)

fm(x)成为弱分类器,集成的F(x)为强分类器。AdaBoost算法是一种迭代式的训练算法,通过改变数据分布来提高弱分类器的差异。在每一轮训练中,增加分错样本的权重,减少分对样本的权重,从而得到一个新的数据分布。

对于[1,+1]二分类的AdaBoost算法流程如下

QQWBN.png

对于第m个弱分类器fm(x)它要学习的目标是

L(fm(x),αm)=exp(y(n)(Fm1(x(n))+αmfm(x(n))))

wm(n)=exp(y(n)Fm1(x(n))),上式可以写为

L(αm,fm(x))=wm(n)exp(αy(n)fm(x(n)))

将上式在0处进行泰勒展开

L(αm,fm)=wm(n)(1αy(n)fm(x(n))+12αm2)αmwm(n)I(y(n)fm(x(n)))

上式最后一步正比于是除去与训练数据,fm无关的项,而且y(n)fm(n)=12I(y(n)fm(x(n)))

在求出fm(x)后,为了得到αm对没有进行泰勒展开的式子进行整理得到

L(αm)=wm(n)exp(αy(n)fm(x(n)))=y(n)=fm(x(n))w(n)exp(αm)+y(n)fm(x(n))w(n)exp(αm)(1ϵm)exp(αm)+ϵmexp(αm)

其中ϵm=y(n)fm(x(n))wm(n)nwm(n),就是第m弱分类器预测错误所占的比例。通过对αm求导数,令其为0得到

αm=12log(1ϵmϵm)

自训练

自学习是为了解决监督学习中缺少标签样本的问题,利用已经标记好的样本训练一个模型,并利用这个模型来预测五标注样本的标签,把预测置信度较高的样本和伪标签加入训练集。整体流程如下:

QuIkL.png

Multi task

多任务学习是指同时学习多个相关任务,让这些任务在学习过程中共享知识,利用多个任务之间的相关性来改进模型在每个任务上的性能和泛化能力,有一点类似collaborative Learning

多任务学习在深度学习中有四种常见的知识共享模式:

  • 硬共享模式。类似于某视觉任务直接套用VGG底层网络权重。
  • 软共享模式。隐性的知识共享,如从隐状态、或者注意力机制主动选择一些有用的信息。
  • 层次共享模式。任务有层次,底层输出低层任务,高层输出语义级别的任务。
  • 共享-私有模式。共享模块和任务模块分开运行。

QuQZF.png

迁移学习

迁移学习要解决的是将在一个样本空间domain(source)内训练好的模型迁移到另一个相似样本空间target来帮助学习的问题,两个样本空间有一定相似性但是分布是不同的,而且target domain的数据量是不足的。例如将识别狗的网络应用到识别猫的任务中,猫和狗的特征可能有一定相似性,但是特征分布是有送不同的。

迁移学习可以分为两类:

  • 归纳迁移学习

    归纳迁移学习是指在源领域和任务上学习出一般的规律,然后将这个规律迁移到目标领域和任务上。

    源领域和目标领域有相同的输入空间,而输出空间不一致。一般要求源领域内有大量样本,如果样本是没有标注的,可以通过自编码等无监督学习方式学习到一种特征表示。

  • 转导迁移学习

    转导迁移学习是一种从样本到样本的迁移,直接利用源领域和目标领域的样本进行迁移学习,如领域适应domain adaption,通过一种变换将两个样本分布映射到分布一致的空间上。

    造成数据分布不一致通常有三种原因:

    • 协变量偏移covariate shift,即源领域和目标领域的输入边际分布不同,但是后验分布相同。
    • 概念偏移concept shift,即输入边际分布相同,但是后验分布不同。
    • 先验偏移prior shift,即输入标签y的边际分布不同,特征x的条件分布相同。

    如果数据分布确实是因为协变量偏移造成的,那么可以学习一种数据表示g是的,两个分布相似,即下公式

    RT(θf)=E(x,y)PT(x,y)[L(f(θ,x),y)]=E(x,y)PS(x,y)PT(x,y)PS(x,y)[L(f(θ,x),y)]=E(x,y)PS(x,y)PT(x)PS(x)[L(f(θ,x),y)]=E(x,y)PS(x,y)[L(f(g(θg,x),θ),y)]+γdg(S,T)

    dg(S,T)是两个分布的度量

    这方面的内容可以阅读知乎王晋东不在家的文章。

终身学习(lifelong learning or continuous learning)

终身学习是建立在贝叶斯公式上的,假设有两个样本DA,DB,则对于两个样本同时学习到的参数后验分布等价于先学习DA得到的参数后验再学习数据集DB(反过来也是对的)

log(p(θ|DA,DB))=log(p(DA|θ))+log(p(DB|θ))+log(p(θ))log(p(DA))log(p(DB))=log(p(DB|θ))+log(p(θ|DA))log(p(DB))

由于后验分布难以建模,通常通过一个近似的方法来估计,假设p(θ|DA)是一个高斯分布,精度矩阵可以通过参数θDAFisher信息矩阵来近似。

F(θ)=E[θlog(p(θ,x))θlog(p(θ,x))T]

其中E(θlog(p(x,θ)))0。Fisher信息矩阵的对角线的值反映了对应参数在通过最大似然进行估计时的不确定性,其值越大,表示该参数估计值的方差越小,估计更可靠性,其携带的关于数据分布的信息越多。

元学习(meta learning)

元学习的目的是从已有任务中学习一种学习方法或元知识,可以加速新任务的学习。元学习侧重从多种不同(甚至是不相关)的任务中归纳出一种学习方法。

有一篇关于元学习的综述,将元学习大致分为,基于优化的,模型的等三种类型,当时我为了理解MAML只看了基于优化的。

  • 基于优化器的元学习

Queyp.png

基于优化器的元学习是学习一个参数迭代过程,输入当前时刻的梯度差,预测下一个时刻的梯度差(是不是看起来是时间序列预测问题)。

QuSJc.png

  • 模型无关的元学习(Model agnostic meta learning)

模型无关的元学习假设所有任务都来自于同一个任务空间,MAML的任务是学习到一个参数θ使其经过一个梯度迭代就可以在新任务上达到最好的表现。

minθ\Taump(\Tau)LTm(fθm)=minθ\Taump(\Tau)LTm(fθαθL)

概率图模型

无向图模型

无向图模型也成为马尔可夫随机场或者马尔可夫网络,相对于有向图的局部马尔可夫性,无向图的马尔可夫性只需将父节点替换为邻居节点即可。

由于无向图模型并不提供一个变量的拓扑顺序,无向图模型的联合概率的分解一般以全连接子图为单位进行分解,全连接子图称为(clique),如果一个团不被其他团包围则成为最大团(maximal clique)。

p(x)=1ZcCϕc(xc)

其中ϕc(xc)=exp(Ec(xc))Ec(xc)是一种势能函数。

  • 对数线性模型

ϕc(xc|θc)=exp(θcfc(xc))

  • 线性链条件随机场

p(y|x,θ)=1Z(x,θ)exp(t=1Tθ1Tf1(x,yt)+t=1T1θ2Tf2(x,yt,yt+1))

模型学习

概率图的学习包含网络结构的学习和参数的学习,网络结构的学习我看之前的文章都是利用条件独立来做,因果推断的文章就是在做网络结构的学习。有了网络结构之后,网络参数的学习可以直接通过极大化似然函数就可以。

相较于有向图,无向图的求解更为困难

p(x,θ)=1Z(x,θ)exp(cCθTfc(xc))L(D,θ)=1Nn=1N(cCθcTfc(xc(n)))log(Z(θ))\partL(D,θ)\partθ=Exp~(x)[fc(xc)]Exp(x,θ)[fc(xc)]

p~(x)为经验分布,因此无向图的最大似然估计的优化目标等价于,对于每个团𝑐上的特征fc(xc)使得其在经验分布p~(x)下的期望等于其在模型分布的期望。

posted @   Neo_DH  阅读(357)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示