人工神经元有:es6
感知机input是多个二进制,output是一个二进制。算法
感知机经过赋予不一样evidence权值,升高或下降threshold来达到做出决策的目的。网络
更新后的感知机规则:app
bias能够理解为使神经元被激活的容易度的度量。ide
咱们经过设计 Learning Algorithm 去自动地调整 Network of Artificial Neuron 的 Weights 和 Biases。这种调整,能够对外部刺激做出响应。函数
网络经过学习 Weights 和 Biases 以便最终正确地分类。咱们但愿在网络的 Weights 和 Biases 上做出一些小的改变时,只会引发输出上的小幅变化。只有这样,学习才变得可能。经过不断地修改 Weights 和Biases 来产生愈来愈好的结果。学习
若是网络中包含感知机的话,轻微的改变甚至会致使感知机的输出彻底翻转,很难实现逐步改变 Weights 和 Biases 来使网络行为更加接近预期。ui
Sigmoid 神经元在轻微改变 Weights 和 Biases 时只会引发小幅的输出变化。这是因为 Sigmoid 神经元构成的网络可以学习的关键因素。spa
输入和输出都是介于0到1之间的浮点数。设计
将 Evidence,Weight,Bias 代入$\sigma$,输入是$\cdot+b$,输出是
Sigmoid 神经元使用 \(\sigma\) 函数,若是将 \(\sigma\) 函数换成 Setp(阶跃) 函数,就变成了感知机。
\(\sigma\) 函数的平滑属性,让咱们在 \(\triangle w_{j}\) 和 \(\triangle b\) 轻微改变时,神经元的输出也只是轻微地变化 \(\triangle output\)。
\(\sigma\) 有时也被称做 Logistic Function,对应的神经元被称为 Logistic Neurons。
对于判断一个手写数字是否是9这个问题,咱们使用$64\times64$的灰度图像。
输入层须要4096个神经元,每一个神经元接收标准化的0-1之间的灰度值。
输出层须要一个神经元,用于分类。
标准化是将数据按比例缩放,使之落入一个小的特定区间。
Min-Max Normalization 线性归一化
Z-Score Standardization
非线性归一化
前馈神经网络,是把上一层的输出,做为下一层的输入。信息老是向前传播,从不反向回馈。
数据是$28\times28$的灰度图像
为何输出层用10个神经元?神经元输出二进制的话,$2^4=16$,用4个神经元就足够了。
隐藏层的第1个神经元用于检测图像中是否存在特定模式。若是有,它会对特定模式在图像中对应部分的像素赋予较大的权重,对其它部分赋予较小的权重。
隐藏层的第2个神经元会检测另外一种模式。若是有,也会给对应部分的像素较大权重,其它像素较小权重。
输出层有10个神经元,它的第1个神经元经过权衡从隐藏层获得的信息,告诉咱们这个数字是否是0。若是输出层的第1个神经元检测到隐藏层的某几个神经元被激活,那么能够推断这个数字是0。
代价函数,有的地方也叫
咱们训练神经网络的目的,是寻找合适的 Weights 和 Biases 来最小化代价函数。
MSE代价函数:
梯度降低法,是一种能够解决最小化问题的技术。
在$v_{1}\(方向上移动很小的量\)\triangle v_{1}$,在$v_{2}\(方向移动很小的量\)\triangle v_{2}$,C将会发生以下变化:
咱们用$\triangle v$来描述v的变化
用$\nabla C$表示梯度向量
这样,C发生的变化能够表示为
若是想让C一直下降,$\triangle C$就得是负的。
咱们能够这样选取$\triangle v$,以确保$\triangle C$为负数:
$\eta$是很小的正数,也就是 Learning Rate。这样,
从而保证$\triangle C \le 0$。
若是从为止v移动到v',变化$\triangle v$为
而后反复迭代地更新,C会一直下降到咱们想要寻找的全局最小值。
梯度降低算法工做的方式是重复计算梯度$\nabla C$,而后沿着梯度的反方向运动,即下山坡。
同时,梯度降低法也被视为一种经过在C降低最快的方向上作微小变化,来使得C当即降低的方法。
Cost Function能够这样写:
这样,咱们要为每一个样本x单独计算梯度值$\nabla C_x$,而后求和再求平均值
梯度降低可能会花费大量时间,学习缓慢。
SGD随机梯度降低,每次随机选取少许输入样原本计算$\nabla C_x$和$\nabla C$,少许样本能够快速获得梯度$\nabla C$,加快梯度降低过程,进而加速学习过程。
SGD将训练数据随机打散,而后划分为多个大小为m的 mini-batch 。
经过计算随机选取的mini-batch的梯度来估计总体的 Gradient ,更新 Weights 和 Biases 。
用这个 mini-batch 更新完 Weights 和 Biases 后,再选取另外一个 mini-batch去训练,直到咱们用完全部训练数据,就完成了一个 epoch 训练。
也叫 Incremental Learning ,是 mini-batch=1 时的梯度降低极端版本。