神经网络入门

        神经网络是一种仿生学的产品,源于时代对二进制创新追求解决问题的更好方法,更希望这个模型的应用替代人的劳动力。


1.主要功能

       分类识别:用数学方式来说,就是找到一个函数f(x),通过输入一个值x判断预测得出函数值y的过程。例如,当我们输入一个像素矩阵组成的图片,当流经一个神经网络从而判断出这个图片的内容。

                                                         

      分类:

             i. 图像:图像识别应用在自动驾驶等等

            ii. 语音:应用在语音助手,如qq小冰,电脑的Cortana,手机语音助手等等

           iii. 文本:新闻推送,如手机新闻app


2.组件

(1)网络结构:

         i,输入值+隐含层+输出层+预测值

         神经网络的特点之一是具备结构性的顺序,即具备层和节点的概念。当层数增加时,也就是深度增加,会对运算减省很多复杂过程、时间及空间等一些性能,同时每层也能增加一层理解力。例如,一张图片分层递进:色彩——单一的线——小形状——部分形状——整个图片。

                单层神经网络:下图表示输入到输出的预测过程,正向学习,逆向传播对运算中的参数调节

                                                    

             x_{i}为输入值,下一层是隐含层,表示运算的神经元,再下一层为输出层,y代表神经网络学习的预测值。

       ii,神经元的设计解决非线性问题

             神经元节点(最小的结构单元)结构分为两部分:z=W^{T}x+b :把原始数据或者前一层得来的数据进行线性组合; a=g(z) : 进行非线性处理,即激励函数g(z)把线性组合转换为非线性的结果,下面会介绍。

                                                            

        iii,逻辑回归结构:是最简化的神经网络结构

        单个神经元节点也具备独立判断问题的能力,这样的节点本身就是逻辑回归的模型:通过神经元节点里的W , b参数对输入的 x_{i}进行线性化,通过激励函数来得出激励后的预测值。通过模型学习后的得出的结果与数据实际值比较评估,即损失函数,在损失函数确定情况下,再通过模型逆向调节W,b参数的值,这是一个神经网络学习训练的过程。

(2)激励函数

       作用:提供规模化的非线性化能力,如上文中提到的g(z)。常见有以下三种:

                                   

           tanh是Sigmoid的中心对称版,ReLU的左半部分有时候会修改为斜率比较小的曲线,以便求导。

(3)损失函数:判断学习过程得出的预测值和数据集给定的函数值之间的差异性

           单次训练损失:

                                     L(\^y^{(i)},y^{(i)} )=-(y^{(i)}log(\^y^{(i)}))+(1-y^{(i)})log(1-\^y^{(i)}) ,

            \^y^{(i)}是学习得出的值,y^{(i)} 是数据集中的实际值。使用log运算,使得学习平面变成一个凸函数,在进行梯度下降的时候才会得到合理值。

            全部训练损失:单次综合取平均值

                                         J(w,b)=(\sum_{i=1}^{m} L(\^y^{(i)},y^{(i)})) /m

(4)梯度下降:通过渐进式调整函数的形态,即修改w,b的参数值和激活函数。一般情况下,激活函数选定后,影响参数就只有w和b了,调整w和b使得得出的y值和实际值保持相对一致。

       首先,正向学习运算得出一个y值,此时w和b有一个初始值,y值和实际值得差异通过损失函数反馈;

       其次,通过损失函数,对w和b进行求导,即在w,b相对应的方向上进行渐进:

         

    左图是损失函数的函数面,通过求导找到函数变化的方向,从而跟着这个方向趋近一个相对的极小值,当损失函数趋近于全局最小值时,此时预测的y值和对应的实际值差异最小。这个过程中不断调节w和b,渐进性的过程如右图,图中的x_{i}是预测值。

  求导公式:

               w:=w-\alpha \frac{dJ(w,b)}{dw}  ,  b:=b-\alpha \frac{dJ(w,b)}{db}  。 :=表示同步更新w和b,\alpha是学习速率


3.网络向量化,也称神经网络的向前传播,神经网络预测,神经网络运算

                \begin{bmatrix} x_{1}\\ x_{2}\\ ...\\ x_{n} \end{bmatrix} ->\begin{bmatrix} a_{1}^{1}\\ a_{2}^{1}\\ ...\\ a_{m}^{1} \end{bmatrix}->...->\begin{bmatrix} a^{k} \end{bmatrix}->y  加入w,b向量规模后表示为

                \begin{bmatrix} x_{1}\\ x_{2}\\ ...\\ x_{n} \end{bmatrix}-(w_{n*m}^{1},b_{m*1}^{1})->\begin{bmatrix} a_{1}^{1}\\ a_{2}^{1}\\ ...\\ a_{m}^{1} \end{bmatrix}->...-(w_{p*1}^{k},b_{1*1}^{k})->\begin{bmatrix} a^{k} \end{bmatrix}->y

       运算公式:a^{n}=g(w^{nT}a^{n-1}+b^{n}) <=> z^{n}=w^{nT}a^{n-1}+b^{n} ;a^{n}=g(z^{n}) ,a^{0}为原始x_{i}的值。


4.网络梯度下降,也称反向传播即通过运算结果逆向调节每一层参数w和b,使得神经链条达到最佳。

        运算从最后一层开始算起,对a^{n}进行求导

              dz^{n}=da^{n}*g'(z^{n})   ==>得出da^{n}

              dw^{n}=dz^{n}*a^{n-1}      ==>得出dw^{n}

              db^{n}=dz^{n}                   ==>得出db^{n}

              da^{n-1}=w^{nT}*dz^{n}   ==>得出da^{n-1}

       每层类似,从y到a^{n}a^{n-1}一直到倒二层,即x_{i}输入值的下一层。

       然后通过调节好的w和b正向传播得出新的预测值,过程不断往复,直到损失函数达到极小值。


5.训练过程

           正向传播和反向传播顺序:

           

     正向传播过程:把原始数据输入值(input)通过网络向量化将预测值算出来,然后进行反向运算;

     反向传播过程:通过网络梯度下降(lost)来更新每一层的参数w和b,然后再进行正向运算。

     注意点:层直接独立运算,同步更新。

 

若有不当,还望指教,谢谢!

记录来源:慕课网《神经网络简介》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值