-
Notifications
You must be signed in to change notification settings - Fork 291
/
rnn.md
38 lines (19 loc) · 1.53 KB
/
rnn.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
RNN的思想是利用序列信息。在经典的神经网络中,我们认为所有的输入和输出是相互独立的。 但是对于许多其他任务这个想法是很不好的。如果你需要预测一个句子中的下一个字,知道前边的字会是很有帮助的。理论上RNN可以利用任意长度的序列的信息,但是实际只能处理很有限的前几步信息。下边是一个典型的RNN图示:
![](/assets/rnnb1.png)
上图是一个展开的RNN,也就是说如果我们要处理一个含有5个字的序列,这个网络就要展开成5层的神经网络,一层处理一个字。图中的各个符号解释如下:
$$x_t$$是第t步的输入,$$x_1$$可能是一个one-hot编码的的字。
$$s_t$$是第t步的隐藏状态,是网络的记忆功能。$$s_t$$是通过前边的隐藏状态和当前输入步计算得出:$$st=f(Uxt+Ws_{t-1})$$, f通常是tanh或者ReLU
$$o_t$$是第t步的输出,$$ot=softmax(Vs_t)$$
RNN的数学描述:
$$s_t=tanh(Uxt+Ws_{t-1})$$
$$ot=softmax(Vs_t)$$
$$L(y,o)=-1/N\sum_{n}^{} y_nlogo_n$$
RNN在很多NLP任务中表现的非常出色。
### RNN通用来生成文本
通过给定一段文本,通过一定的训练,可以生成相似的文本。
### 机器翻译
![](/assets/rnnb2.png)根据原语言的输入序列,预测目标语言的序列达到翻译的目的。
### 语音识别
输入一段音频序列,预测出一个序列的音频。
### 生成文本描述
![](/assets/rnnb3.png)和CNN一块,CNN识别图像内容,RNN生成图像的描述。