• 自编码器(autoencoder)


    autoencoder

    简单来说 autoencoder 就是将输入复制到输出的神经网络。但是为了autoencoder能学习到数据中的有效特征而不是简单的拷贝,
    我们会在其中加入各种各样的约束,使得autoencoder 学习到有用的特征。
    一般来讲AE有两部分组成, 假设输入为\(x\), encoder \(h = f(x)\); decoder \(r = g(h)\); \(f,g\) 均为确定的函数。而现在的AE也将\(f,g\)替换为了具有随机性的映射
    \(f \rightarrow p_{encoder}(h|x)\), \(g\rightarrow p_{decoder}(r|h)\)

    AE 的发展

    AE提出的motivation用于实现dimensionality reduction和 features learning.目前,也被用于generative model(生成模型)。AE可以采用一般神经网络所采用的优化算法,例如梯度下降。

    recirculation 优化算法

    AE也可以采用recirculation, 该方法对比AE在原始输入(original input)上的激活和重构(reconstructed input)输入上的激活。该方法从生物学角度有其合理性,但是在机器学习领域却很少应用。

    undercomplete AE

    该方法想法较为简单,即 h 的维度要小于 x的维度,这使得AE不得不学习一些有效的特征来降低重构损失 \(L(x, g(f(x)))\), L一般的 MSE。
    然而该方法却有很大的局限性,encoder, decoder模型容量不能过高。例如,encoder, decoder 模型容量过高,拟合能力过强,会使得即便将h维度设为一维,也即是一个整数,该整数,也并没有包含原始数据的有效特征,仅仅作为一种索引。模型容量过高的decoder仅仅依据该整数,就可以重构该样例。

    Regularized AE

    Undercomplete AE约束了AE的encoder,decoder的模型容量,h的维度,RAE采用正则化的方式使得模型在学习重构输入的同时,还学习其他特性,例如 h的稀疏性, h导数较小,对于噪音和输入缺失的鲁棒性。

    Sparse AE

    该方法主要通过对h施加约束,使得h稀疏化。来达到SAE模型不得不学习更多有效特征。优化目标如下

    \[L(x, g(f(x))) + \Omega(h) \]

    正则项可能为如下形式:

    \[\Omega(h) = \lambda \sum_{i} |h_{i}| \]

    该正则并没有施加在模型参数上面,所以不能使用模型参数先验的思想进行解释。
    也可以从概率角度解释上述问题。

    Denoising AE

    DAE 修改了AE的优化目标

    \[L(x, g(f(\hat{x}))) \]

    其中, \(\hat{x}\) 为加入部分噪音的 \(x\)

    导数正则项/Contractive autoencoder

    Contractive autoencoder

    \[L(x, g(f(x)) + \Omega(h, x), \Omega(h, x) = \lambda \sum_{i} \Vert \Delta_{x}h_{i}\Vert \]

    这使得 \(x\) 的轻微改变不会影响 \(h\)

    AE 表达能力与层大小和深度的关系

    即便是AE仅仅有一层隐藏层,根据通用近似定理(万能近似定理)只要有足够的隐藏单元可以任意好的拟合数据域中的恒等函数。但是单层的映射是shallow的,无法引入更多的约束,例如稀疏约束。
    所以更深的AE是必要的,同前馈神经网络一致,更深的层数在表示同一个函数时可以指数级缩小计算成本和指数级减少所需的训练集数量。
    deep AE的通用训练策略是训练一系列shallow的AE,然后,使用这些shallow的AE初始化 deep AE。

    Stochastic encoders and decoders

    encoder: $ h = p_{encoder}(h|x)$
    decoder: $ r = p_{decoder}(r|h)$
    而隐状态模型分布 \(p_{model}(h, x)\) 可以定义上述分布

    \[p_{encoder}(h|x) = p_{model}(h|x) \]

    \[p_{decoder}(x|h) = p_{model}(x|h) \]

    \(p_{encoder}, p_{decoder}\)不是采样函数,而是引入了noise, 如同被从\(p_{encoder}, p_{decoder}\)采样一样。

    Denoising AE

    DAE 引入了两个分布
    \(C(\hat{x}|x)\)定义了从原始样本生成 引入噪音样本的分布
    \(p_{reconstruct}(\hat{x}|x)\)定义了训练样例\((\hat{x}, x)\)的重构损失
    DAE 训练流程:

    1. 从训练数据中采样 \(x\)
    2. \(C(\hat{x}|x)\) 生成 corrupted version of \(x\)
    3. 优化损失函数 \(L := p_{reconstruct}(x|\hat{x}) = p_{decoder}(x|h), h=f(\hat{x})\)
      优化目标可以总结为如下形式:

    \[-\mathbb{E}_{x \sim \hat{p}_{data}(x)}\mathbb{E}_{\hat{x}\sim C(\hat{x}|x)} log p_{decoder}(x|h=f(\hat{x})) \]

  • 相关阅读:
    WEB 3D SVG CAD 向量 几个实施(转)
    Dos.Common
    dos.orm
    php程序员招聘
    python之禅
    Electron
    MongoDB主从复制
    OSG开发概览
    从1-100中隔5个数去掉一个数,最后去掉的哪个数(如果数过一遍了从前端接着开始)?
    django/python日志logging 的配置以及处理
  • 原文地址:https://www.cnblogs.com/lif323/p/15944523.html
Copyright © 2020-2023  润新知