自编码器(AutoEncoder,AE)

结构图

image-20230326203307091

原理

  1. AE结构包含两部分:编码器Encoder和解码器Decoder
  2. 原始数据X通过编码器,得到隐层变量Z,Z包含了原始数据X的一些特征
    1. 编码部分将原始数据X从数据空间Rn映射到隐层变量Z所在的隐层空间Rd
  3. 隐层变量Z,通过解码器,得到输出变量X’,即原始数据X的重构
    1. 解码部分将隐层变量Z从隐层空间Rd映射到输出变量X’所在的空间,即原始数据X所在的数据空间Rn

功能

  1. AE可以学习得到原始数据的隐层特征
    1. 如人脸可由如下特征表示:眼睛大小,鼻子高低,嘴唇厚度,胡子长度…
    2. 编码部分任务
  2. AE可以通过学习到的隐层特征,重构原始数据
    1. 如通过人脸的特征,重构得到该张人脸
    2. 解码部分任务

算法实现

  1. 原始数据到隐层特征

h=Encode(x)=fe(We⋅x+be) h=Encode\left( x \right) =f_e\left( W_e\cdot x+b_e \right) h=Encode(x)=fe(Wex+be)

  1. 隐层特征到重构输出

x~=Decode(x)=fd(Wd⋅h+bd) \tilde{x}=Decode\left( x \right) =f_d\left( W_d\cdot h+b_d \right) x~=Decode(x)=fd(Wdh+bd)

公式中的 f_e 和 f_d 函数是常用的非线性函数,如Sigmoid函数、ReLU函数、Tanh函数
  1. 整个模型需要得到最优参数组:

θ(We,be,Wd,bd) \theta \left( W_e, b_e, W_d, b_d \right) θ(We,be,Wd,bd)

  1. 随机梯度下降算法寻找最优参数组

θk+1(We,be,Wd,bd)=θk(We,be,Wd,bd)−∂J∂θJ=12N∑i=1N∥x~i−xi∥2 \theta _{k+1}\left( W_e, b_e, W_d, b_d \right) =\theta _k\left( W_e, b_e, W_d, b_d \right) -\frac{\partial J}{\partial \theta} \\ J=\frac{1}{2N}\sum_{i=1}^N{\left\| \tilde{x}_i-x_i \right\| ^2} θk+1(We,be,Wd,bd)=θk(We,be,Wd,bd)θJJ=2N1i=1Nx~ixi2

代码实现

待补充。。。

模型不足

  1. AE模型只能重构已有数据,不能生成数据
  2. 若通过人为给定隐层特征Z,则大概率不能重构目标输出,因为人为给定的Z不满足原始数据学习到的隐层变量Z所遵从的分布
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐