稀疏自编码器的结构与求解方法

释放双眼,带上耳机,听听看~!
本文介绍了稀疏自编码器的结构特点、稀疏性约束以及求解方法,讨论了稀疏性参数对神经元激活度的影响,并提供了损失函数的详细解释。

1、稀疏自编码器的结构

稀疏自编码器的结构与求解方法

上图为稀疏自编码器的一个大致结构,其主要特征为其输入层的结点(不包括偏置节点)和输出层的结点的个数是相同的,而隐含层结点的个数则较少,该模型的目的在于学习得到hw,b(x)h_{w,b}(x)使得hw,b(x)≈xh_{w,b}(x) approx x成立。而“稀疏”则要体现造中间的隐含层,中间的隐含层是从原始数据x中提取出来的,而同时可以经过线性加权和激活函数得到h(x)h(x),即能够还原到原来的特征,那么可以认为中间的隐含层实现了对原始数据的抽象表示,而这里的抽象性表示可以分为两种:

  • 降维:让隐含层节点的个数小于输入节点的个数
  • 稀疏:即在隐含层的神经元上加入稀疏性的限制

降维很容易理解,那么“稀疏”呢?

2、稀疏性约束

对于使用Sigmoid函数作为激活函数的神经元,如果其输出为1代表该神经元被激活,否则称为未被激活。那么稀疏性表征的就是在大多数情况下神经元都是未被激活的。对于隐含层的第i个神经元,定义其激活度为

ai2=Sigmoid(Wi11x1+…+Wim1xn+bi1)a^2_i=Sigmoid(W^1_{i1}x_1 + … + W^1_{im}x_n+b^1_i)

那么对于m个样本,平均激活度为

ρj^=1m∑i=1m[aj(2)(x(i))]hat{rho_j}=frac{1}{m}sum^m_{i=1}[a^{(2)}_j(x^{(i)})]

通常让ρj^=ρhat{rho_j}=rho,其中ρrho为一个常数,表示稀疏性的参数。可让这个常数较小,来增加其稀疏性。为了让平均激活度能够尽可能接近于稀疏性常数,可以用相对熵来衡量平均激活度与稀疏性参数之间的差异程度,假设s2s_2为隐含层的节点个数,那么该层节点的相对熵之和可以表示为:

∑j=1s2KL(ρ∥ρj^)=∑j=1s2(ρlogρρj^+(1−ρ)log1−ρ1−ρj^)sum^{s_2}_{j=1}KL(rhoparallel hat{rho_j})=sum^{s_2}_{j=1}(rho logfrac{rho}{hat{rho_j}}+(1-rho)logfrac{1-rho}{1-hat{rho_j}})

上述式子表示若能够使得每个神经元的激活度都等于稀疏度参数,那么其相对熵将为0,代表差距达到最小。

3、稀疏自编码器的求解

该网络的损失函数是在其他一般网络的损失函数的基础上加上了稀疏性的约束,即:

J(W,b)=[1m∑i=1m(12∥hW,b(x(i)−y(i)∥2)]+λ2∑l=1L∑i=1sl∑j=1sl+1(Wji(l))2J(W,b)=[frac{1}{m}sum^m_{i=1}(frac{1}{2}lVert h_{W,b}(x^{(i)} – y^{(i)} rVert^2)]+frac{lambda}{2}sum^{L}_{l=1}sum^{s_l}_{i=1}sum^{s_{l+1}}_{j=1}(W^{(l)}_{ji})^2

那么求解的方法也是进行结合反向传播来进行梯度下降。

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

FastDeploy Python whl包安装和NanoDetPlus部署示例

2023-11-30 18:02:14

AI教程

端到端优化的图像压缩框架及非线性变换编码原理解析

2023-11-30 18:15:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索