机器学习 - 自动编码器

自动编码器

什么是自动编码器(AutoEncoder)

自动编码器是一种特殊的神经网络,它希望拟合出一个输入层与输出层神经元个数相同的神经网络,使得\(h_{(w,b)(x)} = x\)或近似相等.

它力求逼近一个恒等函数,使得神经网络的输出接近于输入x.使用自动编码器的意义在于,我们可以取用其隐层的输出结果,如果隐层的输出结果是一个维度较小的矩阵(向量),就可以实现诸如降维,数据降噪等优化.

图为一个自动编码器(输入层忽略掉偏置神经元,则数目与输出层神经元数目一致)

image-20201202154341256

image-20201202154443477

因此,自动编码器的优化目标,就是使得重构误差之和最小

为了规范定义重构误差,我们先定义稀疏性的概念

稀疏性,激活度与相对熵

如果当神经元的输出接近于1的时候我们认为它被激活,而输出接近于0的时候认为它被抑制,那么使得神经元大部分的时间都是被抑制的限制则被称作稀疏性限制。这里我们假设的神经元的激活函数是sigmoid函数。如果你使用tanh作为激活函数的话,当神经元输出为-1的时候,我们认为神经元是被抑制的。

对于单个神经元,其在整个样本集上的平均激活度表达式如下:

image-20201202154811954

下式位衡量某一整层神经元在样本集上的平均激活度的表达式. 我们希望这层各个神经元的激活度近似为\(\rho\),因此类比于神经网络中输出层的误差计算,我们定义出相对熵的表达式(实际上,这个表达式近似等于二乘法)

image-20201202154903874

相对熵越小,表明神经元的实际激活度与规定激活的的差值平均越小,如图:

image-20201202155342326

自动编码器的总体代价函数

image-20201202155456430

实际上,自动编码器总体的代价函数可以看作

  • 优化神经网络的输出值近似等于神经网络的输入值
  • 优化各层神经元的激活度近似等于规定的激活度

接下来,我们要实现自动编码器,只需要设法优化这个代价函数\(J_{sparse}\)即可. 下面讨论对\(J_{sparse}\)求导

image-20201202155823616

posted @ 2020-12-02 16:01  popozyl  阅读(950)  评论(0编辑  收藏  举报