文章目录
  1. 1. SAE稀疏自动编码器
    1. 1.1. 算法:
    2. 1.2. Tips:
    3. 1.3. 参考:
  2. 2. CNN卷积神经网络

SAE稀疏自动编码器

自编码神经网络是一种无监督学习算法,它使用了反向传播算法,并让目标值等于输入值。换句话说,它尝试逼近一个恒等函数,从而使得输出y接近于输入x 。恒等函数虽然看上去不太有学习的意义,但是当我们为自编码神经网络加入某些限制,比如限定隐藏神经元的数量,我们就可以从输入数据中发现一些有趣的结构。自编码神经网络通常可以学习出一个跟主元分析(PCA)结果非常相似的输入数据的低维表示。

算法:

实质上是一个单层的神经网络,一个输入层,一个隐层,一个输出层,输入层和输出层保持近似,是一种无监督的学习。
损失函数:



梯度下降更新公式:

Tips:

  1. 当稀疏自动编码器训练好了之后,可以保存第一层的W权重,作为初始值,之后重新构建分类的神经网络,重新进行分类训练。
  2. 稀疏编码和稀疏自动编码器的区别?
    A. 稀疏编码需要训练基,而稀疏自动编码器是一个单隐层的神经网络,不需要训练基。
    B. 稀疏编码即使在基已经训练好的情况下,当需要提取测试图片的稀疏编码时还需要经过最优迭代才能得到稀疏特征,而稀疏自动编码器是一个神经网络,仅需要前向叠乘几次矩阵即可快速得到特征。
  3. 稀疏自动编码器的可视化?
    在该自编码器中,每个隐藏单元i对如下关于输入的函数进行计算:

    当满足一定约束的情况下,能使隐藏层激活的输入特征满足下式,因此,训练的权重正相关与所需要提取的特征,可视化权重W即可。

参考:

Deep learning:八(Sparse Autoencoder)
可视化自编码器训练结果
UFLDL教程

CNN卷积神经网络

CNN的详细介绍和具体操作可以参考Deep Learning(深度学习)学习笔记整理中的CNN部分,讲的很详细。
对于Deep Learning的源代码网上也有不少,如Deep Learning(深度学习)学习笔记整理等,可以帮助更好的理解SAE、CNN等深度学习结构。其中对Matlab版Deep learning toolbox代码的理解可以参看
面向代码】学习 Deep Learning(三)Convolution Neural Network
Deep Learning论文笔记之(五)CNN卷积神经网络代码理解
Deeplearning Toolbox中CNN代码学习
Deeplearning Toolbox中CNN代码的修改—增加下采样层偏置
在Deep learning toolbox中对于pooling层并没有计算权值w和偏移b,结点输出也没有使用sig函数,在反向传播的过程中,仅仅传递了残差,但是pooling层没有可以训练的参数。

文章目录
  1. 1. SAE稀疏自动编码器
    1. 1.1. 算法:
    2. 1.2. Tips:
    3. 1.3. 参考:
  2. 2. CNN卷积神经网络