1. 程式人生 > >【NLP】NMT之RNN結構

【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]))