chapter1 Using neural nets to recognize handwritten digits

来源:互联网 发布:中日贸易数据 编辑:程序博客网 时间:2024/06/06 08:23

本章主要介绍的是传统神经网络(BP),作者的比喻,启发想象写的很好。可以说是非常适合入门级选手


本章从手写数字出发,介绍了其历史,以及大脑视觉皮层的可能工作原理。依次介绍了几个概念:

1,Perceptrons感知器

神经元作为感知器,其工作原理:

于是申请网络的可以由一系列神经元及连接构成


作者还提到了复杂的问题使用浅层网络很难,而使用深度网络可以表达的很简单。举了与或门的例子。


2,Sigmoid neurons

为什么要引入Sigmoid函数? 由于感知器的输出是阶跃的(从0突然变到1),是非光滑函数;而我们希望它能够学习(即慢慢改正错误,慢慢向好的方向学习)是很难做到的。

因此引入Sigmoid函数,因为它是平滑函数,适合学习。


3,The architecture of neural networks 神经网络结构

介绍了神经网络:输入、隐藏、输出层。(并说明隐藏层之所以这么叫,纯粹是为了区分输入、输出层,没有其它含义)

还说明了本文主要研究feedforward神经网络,并提到有一种循环网络RNN。


4,A simple netword to classify handwritten digits 

手写数字例子说明神经网络的工作:一个数字的图片  784个像素* 隐藏层(15个神经元)*输出层(10个)

并形象解释了输出层10个,而不是4个的原因。(启发式,定性,而非定量)


5,Learning with gradient descent 梯度下降学习

为了训练神经网络,定义了代价函数C。文中还说明了为什么使用代价函数,而不是直接比较结果:代价函数是smooth,容易改变一点点权值向量,降低一点代价。

并分析了梯度方向降低,可以保证其代价是不断减小的。

为了减少复杂度,原代价函数需要所有样本的训练结果产生的代价,使用SGD stochastic gradient descent先将训练样本随机分为若干块,使用每一块的代价代替原代价,epoch所有块进行训练。


6, Implementing our network to classify digits 执行神经网络进行分类

例子:github上,python编程(并不太懂,所以未一步步执行)



总之:该书写的是极好的!  我是需要掌握python了。


0 0