内容简介:吴恩达的关于课程作业的 Python 代码已经放到了 Github 上,点击大家知道现在深度学习在计算机视觉领域全面开花结果,得到了许多之前无法想象的好结果。而就在这之前大家还要花费很大的精力来人工设计特征。下面要学习的
吴恩达的 CS294A 是一门很好的深度学习入门课程,打算接下来的学习以这个课程的内容为主。 UFLDL Tutorial 是 CS294A 课程的 wiki 页,包含了课程讲义和作业。如果你对 监督学习 、 逻辑回归 、 梯度下降 等基础概念并不熟悉,可以先学习 之前的课程 。
关于课程作业的 Python 代码已经放到了 Github 上,点击 课程代码 就能去 Github 查看( 无法访问 Github 的话可以点击 Coding 查看 ),代码中的错误和改进欢迎大家指出。
稀疏自编码器
大家知道现在深度学习在计算机视觉领域全面开花结果,得到了许多之前无法想象的好结果。而就在这之前大家还要花费很大的精力来人工设计特征。下面要学习的 稀疏自编码器 正是向自动学习特征迈出的第一步。( 下图为作业中的神经网络,左图为输入图像,右图为训练后的输出图像 )
稀疏自编码器的基本模型是一个三层的神经网络,在学习时让网络输出的目标值接近于输入的图像本身,从而学习图像中的特征。直接学习一个恒等函数的话没有什么意义,所以我们要对隐含层做出一些限制,比如减小神经元的个数,网络就会被迫压缩数据并尝试重建输入图像。当我们加入惩罚让神经元在大部分情况下都不激活的时候,网络能够学习到十分有趣的边缘特征。隐含层的神经元在观察到输入图像中某个特定角度的边缘特征时才会被激活( 这和神经科学发现的人类视觉皮层V1中的神经元的激活方式相似 )。
代价函数
根据机器学习的一般模式,首先给出 稀疏自编码器 的代价函数:
比起熟悉的前两项,代价函数新增了对于隐含层的惩罚,式中 表示隐含层的神经元个数。 表示 隐含层神经元 对于所有训练数据的平均激活度, ( 注意这里的 表示一个函数,值为数据 对应的 ), 为 的目标值,目的就是之前说的让神经元在大多数时间不激活。
按照 Ng 的说法,新的惩罚项有多种函数可以选择,而这里用来衡量 与 差异的度量为 又称为 相对熵 ,定义为:
它所度量的是两个概率分布间的距离( 我也不是太懂,有机会再做深入的研究 )。 有了代价函数,接下来看下原先的反向传播算法有什么变化~
梯度下降
在之前 反向传播算法 课程中已经说过它该算法的两个重点,一个是它的目的:更快速地计算代价函数的梯度,另一个是它的计算依赖于多元函数求导的链式法则。
由于代价函数的增加项直接为隐含层的函数,所以隐含层的误差:
其中后一项可化为:
因此 反向传播算法 中的 计算变为:
其余的计算都和原先的算法相同。 搞定代价函数和梯度计算,剩下的就是调用带优化的梯度下降算法了~
可视化
最后稍微提下课程作业,它让我们在 10 张风景图片中随机取 10000 个 8x8 的局部图,然后让稀疏自编码器学习其中的特征。神经网络的隐含层神经元个数为 25,输入输出维度都为 64。下图为每个隐含层神经元对应的输入层权重,大致可看成该神经元检测到这种特征时会被激活。( tip: 作业中的学习算法和梯度检查函数在之前的课程中都写过,因此可以直接拿来用。 )
So~,稀疏自编码器的内容就是这些了,谢谢大家耐心阅读。
P.S. 封面图为猴子视觉皮层 V1 区的方向柱
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 解码器 与 编码器
- 深度有趣 | 06 变分自编码器
- 深度有趣 | 05 自编码器图像去噪
- 一文读懂自动编码器的前世今生
- EAE:自编码器 + BN + 最大熵 = 生成模型
- LameXP v4.16 发布,多用途音频编码器
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Eloquent JavaScript
Marijn Haverbeke / No Starch Press / 2011-2-3 / USD 29.95
Eloquent JavaScript is a guide to JavaScript that focuses on good programming techniques rather than offering a mish-mash of cut-and-paste effects. The author teaches you how to leverage JavaScript's......一起来看看 《Eloquent JavaScript》 这本书的介绍吧!