神经网络 前向,反向传播过程

前向传播

 

X,数据集矩阵。

每一行的元素代表了一个样例的特征值x1,x2,x3...

       共有n行,说明数据集一共n个样例

theta,参数矩阵

      行数:要生成的神经元个数

      列数:上一层的输入个数

      每一行的元素代表了对样例各个特征值的权重

 

以数据集为X(5 * 3),使用上图的网络结构为例:

输入层

     X(5 * 3)说明数据集有5个样例,每个样例有3个特征值

    针对图中的输入层a(1),是一个样例的所有特征值。

 

隐藏层1

       z2=X * theta1.T ——> (5,3) * (3,5) ——> (5,5)的矩阵

     theta1:要生成5个神经元,上一层输入个数是3,所以其结构是(5 * 3

           公式中的 theta1 * a1 是算法思想的描述,代码实现需用X * theta.T

 

得到的矩阵,矩阵元素是神经元的暂时取值,后续需带入g( )

        有5列,代表5个神经元的各自暂时取值 {

  •     样例特征值乘以其各自权重之后,相加。是一个数
  •      5个神经元对特征值的权重不一样

  }

      有5行,每一行是一个样例的所有神经元的暂时取值

 

a2 = g( z2 )

      将z2矩阵中的每一个元素作为参数传入g( )函数,进行运算。

      运算后的矩阵行列数不变,矩阵中每一行是一个样例,一行中的每一个元素代表神经元的值,即a(2)1,a(2)2  ...

 

隐藏层2

       以a2矩阵的每一行作为一个样例输入,与隐藏层1类似操作,得到a3矩阵

              theta2 ——> (5,5)

 

输出层

       z4 = a3 * theta3.T ——> (5 ,5)  *  (5,4) ——> (5,4)

              theta3:要生成4个神经元(此层的神经元就是输出,4个神经元代表4种分类),上一层输入个数是5,所以其结构是(45

      

     a4 = h(x) = g(z4),运算后是一个(5,4)矩阵

           每一行一个样例,共5个样例

          每一行的4个元素,代表该样例是分类1的概率,是分类2的概率...

          若分类1的概率最大,则该样例属于分类1。使用np.argmax,返回最大值的下标n,可将a4转换成(5,1)的向量。

 

反向传播

根据前向传播的预测结果,建立代价函数J。反向传播是为了计算J的梯度,以便进行最小化操作,得到最佳的theta1、2、3矩阵。

神经网络的代价函数如下,我们的目标是求出\mathop{argmin}\limits_{\Theta}(J(\Theta ))求解需要用到J的梯度数据

J是一个多元函数,所有的theta矩阵元素都是J的变量。其梯度是:J对每一个theta元素的偏导。如下可以证得(下图的网络结构与本例不同,具体做法有差别),偏导可以通过反向传播的误差矩阵求得。

具体做法是:

在本例中,可达到delta4,delta3,delta2。不对输入层做误差分析,故没有theta1。

\Delta =a^{(l)} \delta^{(l+1)}D=\Delta /m

由此可以得到D1,D2,D3矩阵,D1、2、3降维,合并在一起,即可得到一个一维向量,即梯度grad。grad中的元素是J关于所有theta矩阵元素的偏导。

grad即是反向传播过程的输出。

 

有了代价函数J及梯度数据grad,可带入优化算法,运算得到训练后的theta1、2、3矩阵。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值