神经网络是一种仿生学的产品,源于时代对二进制创新追求解决问题的更好方法,更希望这个模型的应用替代人的劳动力。
1.主要功能
分类识别:用数学方式来说,就是找到一个函数f(x),通过输入一个值x判断预测得出函数值y的过程。例如,当我们输入一个像素矩阵组成的图片,当流经一个神经网络从而判断出这个图片的内容。
分类:
i. 图像:图像识别应用在自动驾驶等等
ii. 语音:应用在语音助手,如qq小冰,电脑的Cortana,手机语音助手等等
iii. 文本:新闻推送,如手机新闻app
2.组件
(1)网络结构:
i,输入值+隐含层+输出层+预测值
神经网络的特点之一是具备结构性的顺序,即具备层和节点的概念。当层数增加时,也就是深度增加,会对运算减省很多复杂过程、时间及空间等一些性能,同时每层也能增加一层理解力。例如,一张图片分层递进:色彩——单一的线——小形状——部分形状——整个图片。
单层神经网络:下图表示输入到输出的预测过程,正向学习,逆向传播对运算中的参数调节
为输入值,下一层是隐含层,表示运算的神经元,再下一层为输出层,y代表神经网络学习的预测值。
ii,神经元的设计解决非线性问题
神经元节点(最小的结构单元)结构分为两部分: :把原始数据或者前一层得来的数据进行线性组合; a=g(z) : 进行非线性处理,即激励函数g(z)把线性组合转换为非线性的结果,下面会介绍。
iii,逻辑回归结构:是最简化的神经网络结构
单个神经元节点也具备独立判断问题的能力,这样的节点本身就是逻辑回归的模型:通过神经元节点里的W , b参数对输入的 进行线性化,通过激励函数来得出激励后的预测值。通过模型学习后的得出的结果与数据实际值比较评估,即损失函数,在损失函数确定情况下,再通过模型逆向调节W,b参数的值,这是一个神经网络学习训练的过程。
(2)激励函数
作用:提供规模化的非线性化能力,如上文中提到的g(z)。常见有以下三种:
tanh是Sigmoid的中心对称版,ReLU的左半部分有时候会修改为斜率比较小的曲线,以便求导。
(3)损失函数:判断学习过程得出的预测值和数据集给定的函数值之间的差异性
单次训练损失:
,
是学习得出的值,
是数据集中的实际值。使用log运算,使得学习平面变成一个凸函数,在进行梯度下降的时候才会得到合理值。
全部训练损失:单次综合取平均值
(4)梯度下降:通过渐进式调整函数的形态,即修改w,b的参数值和激活函数。一般情况下,激活函数选定后,影响参数就只有w和b了,调整w和b使得得出的y值和实际值保持相对一致。
首先,正向学习运算得出一个y值,此时w和b有一个初始值,y值和实际值得差异通过损失函数反馈;
其次,通过损失函数,对w和b进行求导,即在w,b相对应的方向上进行渐进:
左图是损失函数的函数面,通过求导找到函数变化的方向,从而跟着这个方向趋近一个相对的极小值,当损失函数趋近于全局最小值时,此时预测的y值和对应的实际值差异最小。这个过程中不断调节w和b,渐进性的过程如右图,图中的是预测值。
求导公式:
,
。 :=表示同步更新w和b,
是学习速率
3.网络向量化,也称神经网络的向前传播,神经网络预测,神经网络运算
加入w,b向量规模后表示为
。
运算公式: ,
为原始
的值。
4.网络梯度下降,也称反向传播即通过运算结果逆向调节每一层参数w和b,使得神经链条达到最佳。
运算从最后一层开始算起,对进行求导
==>得出
==>得出
==>得出
==>得出
每层类似,从y到到
一直到倒二层,即
输入值的下一层。
然后通过调节好的w和b正向传播得出新的预测值,过程不断往复,直到损失函数达到极小值。
5.训练过程
正向传播和反向传播顺序:
正向传播过程:把原始数据输入值(input)通过网络向量化将预测值算出来,然后进行反向运算;
反向传播过程:通过网络梯度下降(lost)来更新每一层的参数w和b,然后再进行正向运算。
注意点:层直接独立运算,同步更新。
若有不当,还望指教,谢谢!
记录来源:慕课网《神经网络简介》