神经网络中的前向和后向算法
神经网络中的前向和后向算法看了一段时间的深度网络模型,也在tf和theano上都跑了一些模型,但是感觉没有潜下去,对很多东西的理解都只停留在“这个是干什么的”层次上面。
昨天在和小老师一起看一篇文章的时候,就被问到RNN里面的后向传播算法具体是怎么推。当时心里觉得BP算法其实很熟悉啊,然后在推导的过程中就一脸懵逼了。
于是又去网上翻了翻相关内容,自己走了一遍,准备做个笔记,算是个交代。准备一个神经网络模型,比如:其中,[i1,i2]代表输入层的两个结点,[h1,h2]代表隐藏层的两个结点,[o1,o2]为输出。
[b1,b2]为偏置项。连接每个结点之间的边已经在图中标出。
来了解一下前向算法:前向算法的作用是计算输入层结点对隐藏层结点的影响,也就是说,把网络正向的走一遍:输入层—->隐藏层—->输出层计算每个结点对其下一层结点的影响。
??例如,我们要算结点h1的值,那么就是:是一个简单的加权求和。这里稍微说一下,偏置项和权重项的作用是类似的,不同之处在于权重项一般以乘法的形式体现,而偏置项以加法的形式体现。
??而在计算结点o1时,结点h1的输出不能简单的使用neth1的结果,必须要计算激活函数,激活函数,不是说要去激活什么,而是要指“激活的神经元的特征”通过函数保留并映射出来。
以sigmoid函数为例,h1的输出:于是最后o1的输出结果,也就是整个网络的一个输出值是:按照上面的步骤计算出out02,则[outo1,outo2]就是整个网络第一次前向运算之后得到的结果。
后向算法:??在实际情况中