Neural Networks and Deep Learning 学习笔记(一)
第一章 Using neural nets to recognize handwritten digits
一、Perceptrons
据说现在已经不常用了,但是为了理解 sigmoid neuron,还是先理解一下它吧
xi 和 output 只能为0或者1
优化版本
可以用perceptrons模拟NAND门
二、Sigmoid neurons
似曾相识的一张图,只是这里的 xi 不再只能取0或1,而是可以取0~1之间的任何值;输出也不再是0或1,而是σ(w⋅x+b) ,在0~1之间
上面是这个函数的图,可以看到它是下面这个图(perceptrons的)更平滑的版本
三、The architecture of neural networks
名词定义自己看图哦
神经网络的几种:
feedforward neural networks:目前来看更常用
recurrent neural networks(周期性神经网络):为什么叫周期性呢?因为其中的神经元只活跃一段时间,在它活跃期间也可能**其他沉睡的神经元,这些神经元在一段时间后也变为活跃状态。
四、A simple network to classify handwritten digits
这是针对该问题设计的网络
图片像素:28*28=784 0~1灰度
n可以尝试不同的取值
输出为什么是10个神经元而不是4个呢(2的4次方=16>10也可以表示十个数字呀)
解释:对于10个神经元,第一个神经元判断的事情是输入是不是0,对于输入是不是0,hidden layer能很好地辅助决策(检测数字0的不同部分);对于4个神经元,output layer第一个神经元判断的事情就变成了最重要是哪一bit,hidden layer就不那么容易判断了。
五、Learning with gradient descent
6000训练集,1000测试集
(二次)代价函数、MSE
下面的目标就是让代价函数越小越好,梯度下降神器出现,铛铛铛~~~
为了让代价函数下降,需要ΔC是负数
总结起来,就是不断地计算梯度,向相反的方向移动
但是这种方法对于每个输入样例都需要计算梯度,计算量太大,所以引入了随机梯度下降方法来加速学习,即随机选一些样例计算梯度。这些随机选取的样例被称为是mini-batch
训练的过程就变成了:每次随机选一个mini-batch训练,下次再随机选另一个mini-batch,直到所有的训练数据都被选了,这叫做一个epoch完成。下一个epoch开始。
六、Implementing our network to classify digits
开始实战啦
注意训练集做了调整,原来60000张训练图片被划分为50000的训练集和10000的验证集
hyper-parameters(需要玄学调的参):the number of epochs of training, the mini-batch size, and the learning rate, η
parameters(需要炼的丹):weights and biases
七、Toward deep learning
deep neural networks:有很多layer的neural networks
这一章结束啦,撒花!