> For the complete documentation index, see [llms.txt](https://baozoulin.gitbook.io/neural-networks-and-deep-learning/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://baozoulin.gitbook.io/neural-networks-and-deep-learning/di-wu-men-ke-xu-lie-mo-xing-sequence-models/di-wu-men-kexulie-mo-578b28-sequence-models/recurrent-neural-networks/16-yu-yan-mo-xinghe-xu-liesheng-cheng-ff08-language-model-and-sequence-generation.md).

# 1.6 语言模型和序列生成（Language model and sequence generation）

在语音识别中，某句语音有两种翻译：

* **the apple and pair salad**
* **the apple and pear salad**

语言模型会计算出这两句话各自的出现概率：

* $$P( \text{The apple and pair salad}) = 3.2 \times 10^{-13}$$
* $$P\left(\text{The apple and pear salad} \right) = 5.7 \times 10^{-10}$$

选择概率最大的语句作为正确的翻译

概率计算的表达式为：

$$
P(y^{<1>},y^{<2>},\cdots,y^{\<T\_y>})
$$

如何使用RNN构建语言模型：

首先需要一个足够大的训练集，训练集由大量的单词语句语料库（corpus）构成。然后，对corpus的每句话进行切分词（tokenize），建立vocabulary，对每个单词进行one-hot编码。例如下面这句话：

**The Egyptian Mau is a bread of cat.**

每句话结束末尾，需要加&#x4E0A;**< EOS >**&#x4F5C;为语句结束符。若语句中有词汇表中没有的单词，&#x7528;**< UNK >**&#x8868;示。假设单词“Mau”不在词汇表中，则上面这句话可表示为：

**The Egyptian < UNK > is a bread of cat. < EOS >**

准备好训练集并对语料库进行切分词等处理之后，接下来构建相应的RNN模型：

![](/files/-Le0ccWxoYEeT8r833DU)

$$x^{<1>}$$和$$a^{<0>}$$均为零向量。Softmax输出层$$\hat y^{<1>}$$表示出现该语句第一个单词的概率，softmax输出层$$\hat y^{<2>}$$表示在第一个单词基础上出现第二个单词的概率，即条件概率，以此类推，最后是出&#x73B0;**< EOS >**&#x7684;条件概率

单个元素的softmax loss function为：

$$
L^{<t>}(\hat y^{<t>},y^{<t>})=-\sum\_iy\_i^{<t>}log\ \hat y\_i^{<t>}
$$

> 这是softmax Loss Function ，注意与1.4 binary classification 的 Loss Function区别

该样本所有元素的Loss function为：

$$
L(\hat y,y)=\sum\_tL^{<t>}(\hat y^{<t>},y^{<t>})
$$

对语料库的每条语句进行RNN模型训练，最终得到的模型可以根据给出语句的前几个单词预测其余部分，将语句补充完整。例如给&#x51FA;**“Cats average 15”**，RNN模型可能预测完整的语句&#x662F;**“Cats average 15 hours of sleep a day.”**

整个语句出现的概率等于语句中所有元素出现的条件概率乘积。例如某个语句包含$$y^{<1>},y^{<2>},y^{<3>}$$，则整个语句出现的概率为：

$$
P(y^{<1>},y^{<2>},y^{<3>})=P(y^{<1>})\cdot P(y^{<2>}|y^{<1>})\cdot P(y^{<3>}|y^{<1>},y^{<2>})
$$
