感知器
1. 阈值神经元
* 三层网络
* 关键:任何自动学习权重和阈值
2. S型神经元
* 如果对权重或者偏置的微小改动,仅仅引起输出的微小变化,可以利用这个性质来修改权重和偏置
* 上述要求,对于阈值神经元,无法完成,因为微小的改动直接导致输出发生反转
* 引入S型神经元
* $$\sigma$$ 函数
* 阶跃函数
* S型是平滑感知器
- 平滑特性,意味权重和偏值的微小变化,会导致神经元产生微小的输出
3. 神经网络的架构
- 输入层
- 输出层
- 隐藏层
5. 应用感知器实现手写识别数字网络
网络结构
* 输入层
- 每幅图像是28*28,灰度级是:0.0是白色,1.0是黑色
- 784=28*28
* 隐藏层
- 可以给隐藏层分配不同的神经元
- 15个神经元
* 输出层
- 10个神经元
- 计算每个神经元,然后选择最大的值,作为输出
数据集合
- MNIST
- 60.000用于训练数据
- 10.000用于测试数据
* 输入数据
- 28*28=784维的向量
* 期望输出数据
- y(x)=(0,0,0,0,0,0,0,0,0,1,0)
代价函数
- 代价函数:量化输出数据对期望数据的拟合,用来找到权重和偏置的最优值
$$C(w,b) = \frac{1}{2n} \sum\limits_{x} ||y(x)-a||^2$$
- w:网络中权重的集合
- b:网络中偏置的集合
- n:训练输入数据的个数
- a:输入时x时的输出
- y:真实输出
* 二次代价函数的意义
- 为什么使用二次函数,不直接使用正确分类的图像数量
- 正确分类的图像数量关于权重和偏置的函数不是一个平滑函数,对权重和偏值的微小变化不会引起正确数量的个数 难以通过,修改权重和偏置来改进性能
梯度下降算法学习权重
* 梯度向量
* 上式得到:
* 速度如何取值,才会使得C一直减少
* 得到位置的变化,循环,一直得到最小值
使用梯度下降计算神经网络
随机梯度下降算法
* 计算公式
* 一个迭代周期
- 当前小批量数据训练完后,然后再挑选另一个随机选定的小批量的数据,直到用完所有的训练输入,
- 然后进行下一轮迭代周期的训练