Visualizing and Understanding Recurrent Networks

Visualizing and Understanding Recurrent Networks

Andrej

Justin Johnson

Li Fei-Fei

Intro

RNN和它的变形LSTM最近很火。但是如此成功的原因和缺点还没有完全发现。

Experimental Setup

Recurrent Nueral Network Models

先介绍三种常见的RNN模型。$$ht^l$$由$$h{t-1}^l$$和$$h_t^{l-1}$$组成。

Vanilla Recurrent Neural Network(RNN)

$$ht^l = tanh \, W^l \begin{bmatrix} h_t^{l-1} \ h{t-1}^l \end{bmatrix}$$

正向传播、反向传播算法一样。$$W^l$$在每一层都不一样,但是在不同的时间点,都是一样/共享的。

Long Short-Term Memory(LSTM) 简单的RNN会有一个问题,就是gradient会vanish或者explode。exploding gradient可以通过设置某些上限解决。LSTM就专门用来解决vanishing gradient的问题。LSTM有一个专门的门机制gating mechanism。

$$\begin{bmatrix} i \ f \ o \ g \end{bmatrix} = \begin{bmatrix} sigm \ sigm \ sigm \ sigm \end{bmatrix} \, W^l \, \begin{bmatrix} ht^{l-1} \ h{t-1}^l \end{bmatrix}$$

$$ct^l = f \bigodot c{t-1}^l + i \bigodot g$$

$$h_t^l = o \bigodot tanh(c_t^l)$$

$$i, f, o \in R^n$$是三个二进制门。分别表示是否更新,是否设置为0,和是否本地状态表明hidden vector。$$g$$用于附加的修改memory内容。

Gated Recurrent Unit(GRU)

$$\begin{bmatrix} r \ z \end{bmatrix} = \begin{bmatrix} sigm \sigm \end{bmatrix} W^lr \begin{bmatrix} h_t^{l-1} \ h{t-1}^l \end{bmatrix}$$

$$\tilde ht^l = tanh(W_x^l h_t^{l-1} + W_g^l(r \bigodot h{t-1}^l))$$

$$ht^l = (1-z) \bigodot h{t-1}^l + z \bigodot \tilde h_t^l$$

Character-Level Language Modeling

使用character-level作为测试。输入是一个字符序列,输出是预测每个时间点上,下一个最可能的字符,通过softmax。也就是,假设有K个字符,把所有的字符变成1-of-K的向量,然后把这个送给RNN进行训练,最上层得到了一个D维的hidden vector$${h_t^L}$$,$$t=1,2...T$$。为了的到下一个字符的预测,用一个activation在最上层进行映射,把这个D维映射到K维的序列$${y_t}$$,$$y_t = W_y h_t^L$$,而这个权重$$W_y$$是一个K*D维的矩阵。最小化的损失函数是平均cross-entropy。

Optimization

用了前面研究的参数。

Appendix

对应的PPT

这篇CSDN博客介绍不错。

关于LSTM一篇博客

results matching ""

    No results matching ""