反向传播算法(back propagation)

深度学习小白一枚(才起步),之前是做软件开发,读研转CV方向。帖子上的关于反向传播算法写的都很迷,自己想总结一下反向传播算法(back propagation)。

需要的数学知识有:1、线性代数(矩阵求导)

                                2、高等数学(链式求导法则)

反向传播算法,顾名思义,肯定有正向传播,forward propagation 算法。

forward propagation 就是在神经网络中上一层的输出作为输入乘上权重矩阵W加上偏置b(后面通过梯度下降bp算法要修改W、b)得到新的输出。

这里举逻辑回归的例子,z是隐藏层,加上激活函数后得到a,以及定义了损失函数loss function(极大似然法得到)。

下面是前向传播各层的值。

但是这些权重和偏置不是我们最终想要的,因此要优化损失函数,得到使损失函数最小的那组权重和偏置。因此需要对损失函数进行back propagation。

(这里为了书写方便,将偏倒写成微分d的形式 意思目明白就行)

这里以单层传播为例,从最后一层计算dL/da,微积分知识得到:

dL/da = -y/a+(1-y)/(1-a) 

dL/dz = dL/da * da/dz = [-y/a+(1-y)/(1-a) ]*[a(1-a)]  =  a - y

dL/dw = dL/dz * dz*dw = a * dL/dz

dL/db = dL/dz * dz*db = dL/dz(后面的层以此类推)

然后再gradient descent:(lr表示学习率)

repeat:

w := w - lr*dL/dw

b := b - lr*dL/db

这样最后得到的w和b就是使loss function最小的一组值。下图是恩达大哥的手写笔记 一个道理。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值