【NLP】NMT之RNN结构

RNN一般有三种结构:vanilla RNN,LSTM,GRU。

1. vanilla RNN

最简单的RNN:

\small \\a_t = tanh(W_a[a_{t-1},X_t]+b_a)\\ y_t = softmax(W_ya_t + b_y)

2. GRU

使用两个门,reset使用多少过去cell的信息,update门控制该信息有多少用于更新当前cell,在GRU中a即为 c。

\small \\ g_r = \sigma (W_r[c_{t-1}, X_t] + b_r) \\ g_u = \sigma (W_u[c_{t-1}, X_t] + b_u) \\ \tilde{c_t} = tanh(W_c[g_rc_{t-1}, X_t] + b_c) \\ c_t = g_u \tilde{c_t} + (1-g_u)c_{t-1}

3. LSTM

使用三个门。

\small \\ g_u = \sigma (W_u[c_{t-1}, X_t] + b_u) \\ g_f = \sigma (W_f[c_{t-1}, X_t] + b_f) \\ g_o = \sigma (W_o[c_{t-1}, X_t] + b_o) \\ \tilde{c_t} = tanh(W_c[c_{t-1}, X_t] + b_c) \\ c_t = g_u \tilde{c_t} + g_fc_{t-1} \\ a_t = g_oc_t

4. attention model

attention 也用于缓解long-tem dependency。

\small \\encoder: h_j = lstm([h_{j-1},X_j]) \\context\ vector: c_i = \sum _{j=1}^{T_x}\alpha_{ij}h_j\\ \\decoder: s_i = lstm([s_{i-1}, c_i])

\small \alpha使用前往网络训练计算:

\small \alpha_{ij} = softmax(feedforward([s_{i-1},h_j]))

猜你喜欢

转载自blog.csdn.net/u013166817/article/details/83648327
nmt