8288分类目录 8288分类目录 8288分类目录
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

深度学习之自编码与稀疏性

来源:本站原创 浏览:95次 时间:2022-01-28
深度学习之自编码与稀疏性

Fighting365 机器学习算法与Python学习

目前为止,我们已经讨论了神经网络在监督学习中的应用。在监督学习中,训练样本是有标签的。现在假设我们只有一个无类别标签的训练样本集合{x[^1], x[^2],...,x[^m]} ,其中x[^i] 是 n维向量。自编码神经网络是一种无监督学习算法,它使用了反向传播算法,并让目标值等于输入值,比如 y[^i = x[^i]。下图是一个自编码神经网络的示例。

自编码神经网络尝试学习一个hW,b = x 的函数。换句话说,它尝试逼近一个恒等函数,从而使得输出 接近于输入 。恒等函数虽然看上去不太有学习的意义,但是当我们为自编码神经网络加入某些限制,比如限定隐藏神经元的数量,我们就可以从输入数据中发现一些有趣的结构。举例来说,假设某个自编码神经网络的输入x 是一张 10 x 10 图像(共100个像素)的像素灰度值,于是 n=100 ,其隐藏层 L[2] 中有50个隐藏神经元。注意,输出也是100维的 y 是100维的 。由于只有50个隐藏神经元,我们迫使自编码神经网络去学习输入数据的压缩表示,也就是说,它必须从50维的隐藏神经元激活度向量 a[^2](是50维的) 中重构出100维的像素灰度值输入x 。如果网络的输入数据是完全随机的,比如每一个输入 x[i] 都是一个跟其它特征完全无关的独立同分布高斯随机变量,那么这一压缩表示将会非常难学习。但是如果输入数据中隐含着一些特定的结构,比如某些输入特征是彼此相关的,那么这一算法就可以发现输入数据中的这些相关性。事实上,这一简单的自编码神经网络通常可以学习出一个跟主元分析(PCA)结果非常相似的输入数据的低维表示。

我们刚才的论述是基于隐藏神经元数量较小的假设。但是即使隐藏神经元的数量较大(可能比输入像素的个数还要多),我们仍然通过给自编码神经网络施加一些其他的限制条件来发现输入数据中的结构。具体来说,如果我们给隐藏神经元加入稀疏性限制,那么自编码神经网络即使在隐藏神经元数量较多的情况下仍然可以发现输入数据中一些有趣的结构。
稀疏性可以被简单地解释如下。如果当神经元的输出接近于1的时候我们认为它被激活,而输出接近于0的时候认为它被抑制,那么使得神经元大部分的时间都是被抑制的限制则被称作稀疏性限制。这里我们假设的神经元的激活函数是sigmoid函数。如果使用tanh作为激活函数的话,当神经元输出为-1的时候,我们认为神经元是被抑制的。

注意到 a[^2][j] 表示隐藏神经元 j 的激活度,但是这一表示方法中并未明确指出哪一个输入 x 带来了这一激活度。所以我们将使用a[^2]j 来表示在给定输入为 x 情况下,自编码神经网络隐藏神经元 j 的激活度。 进一步,让

表示隐藏神经元 j 的平均活跃度(在训练集上取平均)。我们可以近似的加入一条限制

其中, ρ 是稀疏性参数,通常是一个接近于0的较小的值(比如 ρ = 0.05)。换句话说,我们想要让隐藏神经元 j 的平均活跃度接近0.05。为了
满足这一条件,隐藏神经元的活跃度必须接近于0。
为了实现这一限制,我们将会在我们的优化目标函数中加入一个额外的惩罚因子,而这一惩罚因子将惩罚那些 ρ[j] 和 ρ 有显著不同的情况从而使得隐藏神经元的平均活跃度保持在较小范围内。惩罚因子的具体形式有很多种合理的选择,我们将会选择以下这一种:

这里,s[2] 是隐藏层中隐藏神经元的数量,而索引 j 依次代表隐藏层中的每一个神经元。如果你对相对熵(KL divergence)比较熟悉,这一惩罚因子实际上是基于它的。于是惩罚因子也可以被表示为


上式是一个以 ρ 为均值以 ρ[j] 为均值的伯努利随机变量之间的相对熵(相对熵是一种标准的用来测量两个分布之间差异的方法)。
在下图中,我们设定 ρ = 0.2 并且画出了相对熵值的变化。

我们可以看出,相对熵在 ρ = ρ[j] 时达到它的最小值0,而当 ρ 靠近0或者1的时候,相对熵则变得非常大。所以,最小化这一惩罚因子具有使得 ρ[j] 靠近 ρ 的效果。

现在,我们的总体代价函数可以表示为

其中 J(W,b) 如之前所定义,而 β 控制稀疏性惩罚因子的权重。为了对相对熵进行导数计算,我们可以使用一个易于实现的技巧。( 这只需要在你的程序中稍作改动即可)。具体来说,前面在后向传播算法中计算第二层(l=2 )更新的时候我们已经计算了

现在我们将上式换成

有一个需要注意的地方就是我们需要知道 ρ[i] 来计算这一项更新。��������,������Ƥ所以在计算任何神经元的后向传播之前,你需要对所有的训练样本计算一遍前向传播,从而获取平均激活度。如果你的训练样本可以小到被整个存到内存之中,你可以方便地在你所有的样本上计算前向传播并将得到的激活度存入内存并且计算平均激活度 。然后你就可以使用事先计算好的激活度来对所有的训练样本进行后向传播的计算。如果你的数据量太大,无法全部存入内存,你就可以扫过你的训练样本并计算一次前向传播,然后将获得的结果累积起来并计算平均激活度 (当某一个前向传播的结果中的激活度 a[^2][i] 被用于计算平均激活度 ρ[i] 之后就可以将此结果删除)。然后当你完成平均激活度 的计算之后,你需要重新对每一个训练样本做一次前向传播从而可以对其进行后向传播的计算。对于后一种情况,你对每一个训练样本需要计算两次前向传播,所以在计算上的效率会稍低一些。

  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net