稀疏自编码

来源:互联网 发布:维护数据库培训班 编辑:程序博客网 时间:2024/06/18 13:21

1 怎样理解稀疏性?为什么要加上稀疏性限制?目的是什么?当神经网络遇到什么问题时需要加上稀疏性?
答:自编码神经网络是一种无监督学习算法,它使用BP算法,让目标值等于输入值(O=I)。
那么问题来了,为什么要这样做?直接用I不就好了?
的确,我们并不关心O,我们关心的是中间层S。
中间层S有降维作用,但这种降维与PCA不同,PCA是提取数据的主要特征,直接去掉次要特征,而这里的S层是学习了数据更加本质的结构!比如:我们输入是6维的数据,现在我们强迫这个网络用3维的数据去表示本来的6维数据,然后又用这3维的数据去还原原来的6维数据,为了完成这个过程,网络不得不寻找数据中存在的一些数据结构。所以,S层的这些数据,就是神经网络学习得到的输入数据的更本质的特征。
但是,当隐藏层神经元数量过大时,这个学习过程也是相当费劲的,所以,我们一般在隐藏层神经元上加上稀疏性限制。怎么理解这个稀疏性?每一层的输入神经元到中间的S之后,会输出一个激活值,当激活值接近1时,我们认为被激活,也就是相当于有效的特征,反之,如果激活值接近0,那就是被抑制,相当于这些特征对后续的影响无足轻重。 那么使得输入神经元传到S的激活值被抑制的限制,我们就作系数限制。目的就是,在得到输入数据最本质的特征的同时,减少很多不必要的学习过程。
2 怎样做到稀疏性?
①计算隐藏层各神经元的平均激活度,得大概知道这些神经元活跃的范围。
ρj^=1mmi=1[a2j(xi)]
②加入一条限制,ρj^=ρ,让平均活跃度等于一个接近0的较小的值,这样,大部分激活度就会为0,也就达到稀疏的目的了。
然而问题又来了,ρj^是一个具体的平均激活度的数值,ρ是我们人为定义的接近0的隐藏层神经元的平均活跃度,这两个数肯定不一样,怎么能相等?这里,我们就在代价函数里加一个额外的惩罚因子,KL相对熵。这是一种衡量两个随机分布之间差异的方法,当两个随机分布相等时,它们之间的距离就是0,即相对熵为0,如果两个随机分布相差较大,那么它们的相对熵也较大。所以,当最小化这个相对熵的话,就能使ρj^靠近ρ的效果。