Pytorch深度学习——循环神经网络RNN

循环神经网络RNN

RNN是一类用于处理序列数据的神经网络,在深度学习方面,图像识别、语音识别主要运用卷积神经网络(CNN),而文字语言处理主要运用循环神经网络(RNN)。

语言模型

语言模型(language model)是自然语言处理的重要技术,可用于提升语音识别和机器翻译的性能。自然语言处理中最常见的数据是文本数据。

例如,在语音识别中,给定一段“厨房里食油用完了”的语音,有可能会输出“厨房里食油用完了”和“厨房里石油用完了”这两个读音完全一样的文本序列。如果语言模型判断出前者的概率大于后者的概率,我们就可以根据相同读音的语音输出“厨房里食油用完了”的文本序列。

假设一段长度为TT的文本中的词依次为w1,w2,,wTw_1,w_2,…,w_T那么在离散的时间序列中,wtw_t可看作在时间步(time step)的输出或标签。给定一个长度为T的词的序列w1,w2,,wTw_1,w_2,…,w_T
语言模型将计算该序列的概率:

亦即词w1,w2,,wTw_1,w_2,…,w_T组合输出一个文本的概率Pytorch深度学习——循环神经网络RNN

语言模型的计算

例如,假设序列w1,w2,,wTw_1,w_2,…,w_T中的每个次是一次生成的,则一段含有4个词的文本序列的概率为:Pytorch深度学习——循环神经网络RNN

nn元语法

当序列长度增加时,计算和存储多个词共同出现的概率的复杂度会呈指数级增加。nn元语法通过马尔可夫假设(虽然并不一定成立)简化了语言模型的计算。这里的马尔可夫假设是指一个词的出现只与前面nn个词相关,即nn阶马尔可夫链(Markov chain of order nn)。
如果基于n1n−1阶马尔可夫链,我们可以将语言模型改写为
Pytorch深度学习——循环神经网络RNN

RNN

Pytorch深度学习——循环神经网络RNNPytorch深度学习——循环神经网络RNN