2021—2022学年第一学期寒假学习记录15
2022.01.15,今天是服务外包竞赛:随便拿个奖队的项目进行的第十五天,今天根据项目要求继续学习matlab数字图像处理
AutoEncoder原理
2.1 反向传播算法
自编码(AutoEncoder)神经网络是一种无监督的学习算法,它使用了反向传播算法,让目标值等于输入值,例如输入值为训练样本集合,则我们的输出值。下图是一个自编码神经网络的示例:
图4 单隐层神经网络
自编码神经网络的主要参数是连接权重和偏置,我们尝试利用自编码神经网络学习一个,也就是说我们尝试逼近一个恒等函数,从而使得输出接近于输入。假设我们有一个固定样本集,它包含个样例。对于单个样例,其代价函数为:
这是一个方差代价函数。给定一个包含个样例的数据集,我们可以定义整体代价函数为:
以上公式中的第一项是一个均方差项。第二项是一个规则化项(也叫权重衰减项),其目的是减小权重的幅度,防止过度拟合。
我们的目标是针对参数和来求其函数的最小值。为了求解神经网络,我们将每一个参数和初始化为一个很小的、接近于0的随机数,之后对目标函数求最优解。
梯度下降法中每一次迭代都是按照如下公式对参数和进行更新:
其中是学习速率。更新参数和的关键步骤是计算偏导数。而反向传播算法是计算偏导数的一种有效方法。整体代价函数的偏导数为:
反向传播算法的思路是:给定一个样例,我们首先进行前向传导算法,得到的激活值,包括输出层的输出值。之后,针对第层的每一个节点,我们计算出其“残差”,该残差表明了该节点对最终输出值得误差产证了多少影响。残差的定义如下:
对于的各个层,第层的第个节点的残差计算方法如下:
需要我们计算的偏导数就可以写成下面的形式:
总的来说,利用向量化的表示,反向传播算法可以表示成以下几个步骤:
1. 进行前馈传导计算,利用前向传导公式,得到直至输出层的激活值。
2. 对于第层(输出层),计算出残差:
3. 对于的各个层
4. 计算最终需要的偏导数值:
5. 根据公式(7)更新权重参数:
2.2 Softmax回归
Softmax回归模型是logistic回归模型在多分类问题上的推广。在logistic回归中,训练集由个已标记的样本构成:,其中输入特征。由于logistic回归是针对二分类问题的,因此类标记。假设函数如下:
我们的目的就是训练模型参数,使其能够最小化代价函数:
而在Softmax回归中,类标签可以取个不同的值。因此对于训练集,我们有,所以假设函数形式如下:
其中是模型参数。
Softmax回归算法的代价函数如下:
其中是示性函数。
为了限制Softmax回归在描述对象时候出现过拟合现象,我们加入了权重衰减项来修改代价函数,则整个代价函数变为:
经过这个权重衰减后,代价函数就变成了严格的凸函数,这样就可以保证得到唯一解。此时的Hessian矩阵变为可逆矩阵,并且因为是凸函数,L-BFGS等算法可以保证收敛到全局最优解。
2.3 Stacked AutoEncoder
栈式自编码神经网络(Stacked AutoEncoder)是一个由多层自编码神经网络组成的神经网络,其前一层的自编码神经网络的输出作为厚一层自编码神经网络的输入。对于一个层的栈式自编码神经网络,假定用表示第个自编码神经网络的参数,那么该栈式自编码神经网络的编码过程就是,按照从前向后的顺序徐行每一层自编码神经网络的编码步骤:
一种比较好的获取栈式自编码神经网络参数的方法是采用逐层贪婪训练法进行训练。即利用原始输入来训练网络的第一层,得到其参数;然后网络的第一层将原始输入转化为由隐层单元激活值组成的向量A,接着把A作为第二层的输入,继续训练得到第二层的参数,最后对后面的各层采用同样的策略训练参数。
2.4 微调过程
微调(fine-tuning)是深度学习中的常用策略,可以大幅提神一个展示自编码神经网络的性能表现。从更高的视角来讲,微调将栈式自编码神经网络的所有层视为一个模型,网络中所有的权重只都可以被优化。
在栈式的自编码神经网络中,微调的实现主要分为以下几个步骤:
1. 对于输出层(层),我们使用的是Softmax回归分类器,该层的残差为:
其中,其中为输入数据对应的类别标签,为条件概率向量。
2. 对于的各个层,利用公式(13),(14),(15),(16)计算残差,更新参数。
2.5 Sparse AutoEncoder
稀疏自编码神经网络(Sparse AutoEncoder)的稀疏性可以被解释如下。如果当神经元的输出接近于1的时候我们认为它是被激活的,而输出接近于0的时候认为它是被抑制的,那么是的神经元大部分的时候都是被抑制的限制被称作稀疏性限制。令表示隐层神经元的平均活跃度。我们可以加入一条限制,其中是一个接近于0的稀疏性参数,也就是说该层的所有隐节点的平均活跃度是,接近于0的。为了实现这一限制,我们在我们的优化目标函数中加入一个额外的惩罚因子,而这一惩罚因子将惩罚那些与相差较大的的情况,从而使得隐层神经元的平均活跃度保持在较小的范围之内。在本次实验中,我们选择相对熵来做我们惩罚函数,惩罚因子可以表示为:
这一惩罚因子具有如下的性质,当时,=0,并且随着和 。KL惩罚因子的函数图5所示:
图5 KL惩罚因子
加入惩罚因子后,总体的代价函数就可以表示为:
2.6 Denoise AutoEncoder
当采用无监督的方法分层预训练深度网络的权值时,为了学习到较鲁棒的特征,可以在网络的可视层(即数据的输入层)引入随机噪声,这种方法称为Denoise AutoEncoder(简称dAE模型)。Denoise AutoEncoder的模型如下:
图6 denoise Autoencoder 原理
由上图可知,样本按照分布加入随机噪声后变为,在本实验中,我们加入的噪音是对原始数据随机部分清0。dAE可以直观的解释为:1.dAE有点类似人体的感官系统,比如人眼看物体时,如果物体某一小部分被遮住了,人依然能够将其识别出来,2.多模态信息输入人体时(比如声音,图像等),少了其中某些模态的信息有时影响也不大。3.普通的autoencoder的本质是学习一个相等函数,即输入和重构后的输出相等,这种相等函数的表示有个缺点就是当测试样本和训练样本不符合同一分布,即相差较大时,效果不好,明显,dAE在这方面的处理有所进步。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!