自动编码机

自动编码机(Autodencoder)

  1. 自动编码机(Autoencoder)属于非监督学习,不需要对训练样本进行标记。自动编码机(Autoencoder)由三层网络组成,其中输入层神经元数量与输出层神经元数量相等,中间层神经元数量少于输入层和输出层。在网络训练期间,对每个训练样本,经过网络会在输出层产生一个新的信号,网络学习的目的就是使输出信号与输入信号尽量相似。自动编码机(Autoencoder)训练结束之后,其可以由两部分组成,首先是输入层和中间层,我们可以用这个网络来对信号进行压缩;其次是中间层和输出层,我们可以将压缩的信号进行还原。
  2. 自动编码机原理,假设我们输入一个 n 维的信号x(x[0,1]),经过输入层到达中间层,信号变为 y ,可以用如下公式表示:
    y=s(Wx+b)

    上式中中 s 是非线性函数,如sigmoid. W 是输入层到中间层的链接权值,b为中间层的bias. 信号 y 经过解码层解码,输出到n个神经元的输出层,信号变为 z ,如下公式:
    z=s(Wy+b)

    上式中中 s 是非线性函数,如sigmoid. W 是中间层到输出层的链接权值, b 为输出层的bias. z 被当作是x的预测。 通常情况下,权重矩阵 W 被限制为权重矩阵 W 的转置:W=WT.
  3. 当前的问题就是调整网络参数,使得最终输出的 z 与原始输入的信号x尽量的接近。根据输入数据的假设分布,有很多误差计算方法。可以使用典型的平方误差(squared error): L(xz)=||xz||2 . 如果输入的数据为位向量或者是位概率向量,可以使用交叉熵方法:
    LH(x,z)=k=1n[xklogzk+(1xk)log(1zk)]
  4. 我们希望中间层输出的分布式 y ,它能够捕获数据变化的主要因素的坐标数据。这类似于将数据投影到主成分上,可以获取数据变化的主要因素。如果我们将输入层与中间层之间的函数s变为线性函数,将最终输出层信号 z 与原始输入信号x的误差变为设为平方误差.则这个问题就变成了一个线性代数中的主成份分析问题了。假设中间层有 k 个节点,就变成由输入信号x的前k个主成份项,来近似表示原始输入信号.如果中间层的函数 s 是非线性的,自动编码机功能不同于PCA,具有捕获输入数据多模态方面的能力。当我们考虑堆叠多个编码器构建深度自动编码器时,不考虑PCA变得更加重要。
  5. 因为y可以视为 x <script type="math/tex" id="MathJax-Element-442">x</script>的有损压缩形式,通过我们的优化算法,可以对训练样本产生很好的压缩效果,同时在测试样本集上有很好的表现,但是我们并不能保证网络可以所有样本都有好的压缩效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值