RNN 公式及其推导

通过时间反向传播

t = 1 t = τ 应用如下更新方程:

a ( t ) = b + W h ( t 1 ) + U x ( t )

h ( t ) = t a n h ( a ( t ) )

o ( t ) = c + V h ( t )

y ^ ( t ) = s o f t m a x ( o ( t ) )

设损失函数 L ( t ) 为给定 x ( 1 ) , . . . , x ( τ ) y ( t ) 的负对数似然,则:

L ( x , y ) = t l o g p m o d e l ( y ( t ) | { x ( 1 ) , . . . , x ( τ ) } )

= l o g e x p ( o y ( t ) ( t ) ) i e x p ( o i ( t ) )

= l o g y ^ ( t )

其中 i o ( t ) 中元素的下标。

计算RNN的梯度

对于时间节点 t ,我们要基于t后面的节点梯度来计算当前的节点梯度。

扫描二维码关注公众号,回复: 56509 查看本文章

L L ( t ) = 1

o ( t ) 是softmax函数的参数,设 i o ( t ) 中元素的下标。

1. 计算 o ( t ) 的梯度

对于 o ( t ) 中的每个元素 o i ( t ) :

i y ( t ) 时:

L o i ( t ) = i e x p ( o i ( t ) ) e x p ( o y ( t ) ( t ) ) × e x p ( o y ( t ) ( t ) ) ( i e x p ( o i ( t ) ) ) 2 × e x p ( o i ( t ) )

= y ^ i ( t )

i = y ( t ) 时:

L o i ( t ) = i e x p ( o i ( t ) ) e x p ( o y ( t ) ( t ) ) × ( e x p ( o y ( t ) ( t ) ) ( i e x p ( o i ( t ) ) ) 2 × e x p ( o y ( t ) ( t ) ) + e x p ( o y ( t ) ( t ) ) i e x p ( o i ( t ) ) )

= y ^ i ( t ) 1

2. 计算 h ( t ) 的梯度

h = τ 的时候,只有 o ( τ ) 为后续节点:

L h ( τ ) = V L o ( τ )

h τ 的时候, o ( t ) , h ( t + 1 ) 为后续节点:

因为: h ( t + 1 ) = t a n h ( b + W h ( t ) + U x ( t ) ) ,所以

L h ( t ) = V L o ( t ) + ( h ( t + 1 ) h ( t ) ) L h ( t + 1 )

= d i a g ( 1 ( h ( t + 1 ) ) 2 ) W ( L h ( t + 1 ) )

因为tanh是对每个元素分别应用tanh, 所以这里实际为 d i a g ( t a n h ) ,
其Jacobian矩阵则为 d i a g ( 1 t a n h 2 ) .

3.计算其他参数的梯度

因为参数是共享的,他们依赖于每一步时间t的节点:

L c
= t ( o ( t ) c ) T L o ( t )
= t L o ( t )

L b
= t ( h ( t ) b ( t ) ) T L h ( t )
= t d i a g ( 1 ( h ( t ) ) 2 ) L h ( t )

L V
= t h ( t ) L o ( t )

L W
= t L h ( t ) h ( t ) W ( t )
= t d i a g ( 1 ( h ( t ) ) 2 ) L h ( t ) h ( t 1 )

L U
= t d i a g ( 1 ( h ( t ) ) 2 ) L h ( t ) x ( t )

猜你喜欢

转载自blog.csdn.net/CZWin32768/article/details/80039682
RNN