人类的神经元传递及其做用:html
这里有几个关键概念:算法
将其延伸到神经元中,示意图以下:网络
将上图整理成数学公式,则有函数
y = activation function( x1*w1 + x2*w2 + x3*w3 + b )post
相应说明:学习
Sigmoid 激活函数优化
激活函数一般为非线性函数,其可仿真神经传导的工做方式将上一层神经元信号传递到下一层中。动画
TensorFlow 和 Keras 支持不少激活函数,经常使用的有两种:Sigmoid 和 ReLU。ui
函数图像以下:google
Sigmoid 激活函数相似于人类感受神经:
ReLU 激活函数
对比人类神经网络,可理解为:
实际的神经网络存在有较多的值,此时通常用矩阵表示。
y = activation(x * w +b )
多层感知器(Multilayar Perceptron ,MLP)模型是一种受欢迎的及其学习解决方案,尤为是在语音识别、图像识别、和机器翻译等多个领域;20世纪90年代,MLP模型遭遇到更简单模型(如支持向量机SVM)的强烈竞争,近年来,因为深度学习的成功,MLP模型又从新收到业界重视。
以多层感知器模型识别MNIST手写数字图像为例,通常有
创建输入层与隐藏层的映射关系公式:h1 = ReLU ( x * w1 + b1 )
创建隐藏层与输出层的映射关系公式:y = softmax ( h1 * w2 + b2 )
反向传播(Back Propagation)是训练人工神经网络的常见方法,且与优化器(Optimizer,如梯度降低法)结合使用。
反向传播是一种有监督的学习方法,必须有特征值features 和 标签 label
MNIST 数据集通过数据预处理产生 数字图像特征值features和图像标签 label;备用。
创建多层感知模型,并以随机数初始化模型的权重weight 和误差值 bias。
进行训练时,数据分多批次喂入(如每次200项数据)进行模型训练;重复传播以使权重更新( weight update ),直到偏差 bias 收敛。
1 - 向模型中喂入数据
2 - 模型输出计算结果
1 - 损失函数计算偏差。使用损失函数计算模型输出结果(预测结果)与 Label 标签之间的偏差值
2 - 优化器更新权重与误差。基于偏差值更新权重和误差,以使损失函数的偏差值最小化。
损失函数来帮助咱们计算偏差,其中 Cross Entropy 是深度学习经常使用的损失函数。
优化器是使用某种数值方法在不断的批次训练中不断更新权重与误差,是损失函数的偏差值最小化,并最终找到偏差值最小的 ” 权重与误差的组合 "。
在深度学习中,经常使用随机梯度降低法(Stochastic Gradient Descent , SGD)来优化权重和误差。
另外,还有许多随机梯度降低法的变形,如 RMSprop、Adagrad、Adadelta、Adam 等,这些适用于不一样的深度学习模型,
地址:http://www.denizyuret.com/2015/03/alec-radfords-animations-for.html
原文摘录:
Alec Radford建立了一些伟大的动画,比较优化算法SGD,Momentum,NAG,Adagrad,Adadelta,RMSprop(不幸的是没有Adam)的低维问题。另请查看他关于RNN的演讲。
Alec Radford has created some great animations comparing optimization algorithms SGD, Momentum, NAG, Adagrad, Adadelta, RMSprop(unfortunately no Adam) on low dimensional problems. Also check out his presentation on RNNs.
“ 嘈杂的卫星:这是来自sklearn的嘈杂卫星数据集的逻辑回归,它显示了基于动量的技术的平滑效果(这也致使过分射击和校订)。偏差表面在经验上可视化为整个数据集的平均值,可是轨迹显示了微型数据在噪声数据上的动态。下图是精确度图。“
"Noisy moons: This is logistic regression on noisy moons dataset from sklearn which shows the smoothing effects of momentum based techniques (which also results in over shooting and correction). The error surface is visualized as an average over the whole dataset empirically, but the trajectories show the dynamics of minibatches on noisy data. The bottom chart is an accuracy plot."
“ Beale的功能:因为大的初始梯度,基于速度的技术射击和反弹 - adagrad几乎变得不稳定,出于一样的缘由。像adadelta和RMSProp那样缩放渐变/步长的算法更像加速SGD并处理大的渐变动稳定。“
"Beale's function: Due to the large initial gradient, velocity based techniques shoot off and bounce around - adagrad almost goes unstable for the same reason. Algos that scale gradients/step sizes like adadelta and RMSProp proceed more like accelerated SGD and handle large gradients with more stability."
“ 长谷:没有根据梯度信息进行缩放的Algos在这里很难打破对称性 - SGD没有在哪里和Nesterov加速梯度/动量呈现振荡,直到它们在优化方向上创建速度。阿尔戈斯基于梯度快速缩放步长打破对称并开始降低。“
"Long valley: Algos without scaling based on gradient information really struggle to break symmetry here - SGD gets no where and Nesterov Accelerated Gradient / Momentum exhibits oscillations until they build up velocity in the optimization direction. Algos that scale step size based on the gradient quickly break symmetry and begin descent."
“ 鞍点:围绕鞍点的行为.NAG / Momentum再次喜欢探索周围,几乎采起不一样的路径.Adadelta / Adagrad / RMSProp像加速SGD同样前进。”
"Saddle point: Behavior around a saddle point. NAG/Momentum again like to explore around, almost taking a different path. Adadelta/Adagrad/RMSProp proceed like accelerated SGD."