Java教程

反向传播算法

本文主要是介绍反向传播算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、公式定义

举例:

 

二、推导过程

 (1)求解第k层的参数:

注:loss表示误差,由误差函数作用于神经网络最后一层输出值和真实值而得出。

 将参数表示为矩阵:

注:另外一些文章的Wk可能是这种表示方式的转置。

 则:

(a0即为输入层x0)(公式1)

(公式2)

显然,ak-1在前向传播过程中已经得到,要求出第k层的W和b,我们很自然地想到要求出第k层的δ。

(2)求解

 (公式3)

注:diag((γk)T)即以γk为对角元素的对角矩阵。

三、算法流程

可以直接求出最后一层的δ,然后根据公式3依次求出前面各层的δ。根据公式1,2求出各层的W和b。

假设最后一层(输出层)的上标为K(省略了前向传播过程)。

注:个人认为流程中的第2步和第3步不能颠倒顺序。

推荐:

https://zhuanlan.zhihu.com/p/25609953(详细推导)

https://www.cnblogs.com/jsfantasy/p/12177216.html(算法实现)

 

这篇关于反向传播算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!