首页 > 技术文章 > RNN————循环神经网络

Jason66661010 2021-04-08 09:00 原文

RNN————循环神经网络(Recurrent Neural Network)

在零时刻通常使用零向量来初始化\(a^{<0>}\)

Teddy Roosevelt was a great President.

Teddy bears are on sale!

如果只给定前三个单词,是不可能确切地知道Teddy是否是人名的一部分,所以在某一时刻的预测需要该时刻之后的输入信息,因此需要双向循环神经网络

RNN的计算:

\[激活项:a^{<t>}=g_1(W_{aa}a^{<t-1>}+W_{ax}x^{<t>}+b_a)\\ \hat{y}^{<t>}=g_2(W_{ya}a^{<t>}+b_y) \]

RNN前向传播示意图:

image-20210323092756026

损失函数:

计算每个时间步的损失函数,再将所有的损失函数都加起来

RNN 反向传播示意图:

image-20210323093547835

RNN的不同结构:

多对一:情感分类(对一句话进行1~5的类别分类)

一对多:音乐生成

多对多:

​ 输入与输出长度相等:上面的例子

​ 输入与输出的长度不等:机器翻译(英语与法语一句话的长度不同,但是表达的意思是一样的)

image-20210323094613426

使用RNN生成语言模型

例子:Cats average 15 hours of sleep a day.

1.首先在句子的结尾加上\(<EOS>\)标志表示句子的结尾。

2.其次将句子中的单词使用one—hot向量进行表示,并与自己的语料数据库进行比对,如果句子中存在单词是语料库中没有的,那么将这个词使用UNK进行替换。

3.开始建立RNN模型。

​ 开始的第一个输入\(x^{<1>}\)零向量,而按照之前介绍的普通的初始化方法,\(a^{<0>}\)也为一个零向量,于是\(a^{<1>}\)要做的就是它会通过 softmax 进行一些预测来 计算出第一个词可能会是什么,其结果就是\(\widehat{y}^{<1>}\),这一步其实就是通过一个 softmax 层来预测字典中的任意单词会是第一个词的概率,比如说第一个词是

推荐阅读