学习笔记2

作者: 芜风 | 来源:发表于2020-02-14 17:53 被阅读0次

Task1的地址为https://www.jianshu.com/p/5a9dc55ead34

(本笔记是根据伯禹教育和DataWhale提供的资料进行学习时的记录和感受,其中有一些主观看法,若发现文字或理解上的错误,欢迎指出,共同交流)

文本预处理

文本是一类序列数据,一篇文章可以看作是字符或单词的序列。

文本预处理的步骤有:读入文本、分词、建立字典、将词转换为索引。

语言模型

本节介绍了n元语法,并介绍了语言模型数据集的两种采样方法。

一段自然语言文本可以看作是一个离散时间序列,给定一个长度为T的词的序列w_1,w_2,…,w_T,语言模型的目标就是评估该序列是否合理,即计算该序列的概率P(w_1, w_2, \ldots, w_T)

假设序列w_1,w_2,…,w_T中的每个词是依次生成的,我们有公式①

       \begin{align*}P(w_1, w_2, \ldots, w_T)&= \prod_{t=1}^T P(w_t \mid w_1, \ldots, w_{t-1})\\&= P(w_1)P(w_2 \mid w_1) \cdots P(w_T \mid w_1w_2\cdots w_{T-1})\end{align*}      ①

语言模型的参数就是词的概率以及给定前几个词情况下的条件概率。设训练数据集为一个大型文本语料库,如维基百科的所有条目,词的概率可以通过该词在训练数据集中的相对词频来计算,例如,计算w1概率的公式②如下:

                                                        \hat P(w_1) = \frac{n(w_1)}{n}                                                        ②

其中n(w_1)为语料库中以w1作为第一个词的文本的数量,n为语料库中文本的总数量。

类似的,给定w1情况下,计算w2的条件概率公式③如下:

                                                \hat P(w_2 \mid w_1) = \frac{n(w_1, w_2)}{n(w_1)}                                               ③

其中n(w_1,w_2)为语料库中以w1作为第一个词,w2作为第二个词的文本的数量。

序列长度增加,计算和存储多个词共同出现的概率的复杂度会呈指数级增加。n元语法通过马尔可夫假设简化模型,马尔科夫假设是指一个词的出现只与前面n个词相关,即n阶马尔可夫链,如果n=1,那么有P(w_3∣w_1,w_2)=P(w_3∣w_2)

基于n−1阶马尔可夫链,我们可以将语言模型改写为公式④

                       P(w_1, w_2, \ldots, w_T) = \prod_{t=1}^T P(w_t \mid w_{t-(n-1)}, \ldots, w_{t-1})                    ④

以上也叫n元语法,它是基于n−1阶马尔可夫链的概率语言模型。

当n分别为1、2和3时,我们将其分别称作一元语法、二元语法和三元语法。当n较小时,n元语法往往并不准确。例如,在一元语法中,由三个词组成的句子“你走先”和“你先走”的概率是一样的。然而,当n较大时,n元语法需要计算并存储大量的词频和多词相邻频率。

n元语法的缺陷有:

1. 参数空间过大

2. 数据稀疏

循环神经网络基础

如果需要基于当前的输入与过去的输入序列,预测序列的下一个字符,可以使用循环神经网络(RNN)。RNN引入了隐藏变量H,可令H_t表示H在时间步t的值。H_t的计算基于X_tH_{t-1},而H_t记录了到当前字符为止的序列信息,因此可利用H_t对序列的下一个字符进行预测。

下面是RNN的构建,假设\boldsymbol{X}_t \in \mathbb{R}^{n \times d}是时间步t的小批量输入,\boldsymbol{H}_t  \in \mathbb{R}^{n \times h}是该时间步的隐藏变量,则有公式⑤:

                                    \boldsymbol{H}_t = \phi(\boldsymbol{X}_t \boldsymbol{W}_{xh} + \boldsymbol{H}_{t-1} \boldsymbol{W}_{hh}  + \boldsymbol{b}_h)                                     ⑤

其中,\boldsymbol{W}_{xh} \in \mathbb{R}^{d \times h}\boldsymbol{W}_{hh} \in \mathbb{R}^{h \times h}\boldsymbol{b}_{h} \in \mathbb{R}^{1 \times h}\phi函数是非线性激活函数。由于引入了\boldsymbol{H}_{t-1} \boldsymbol{W}_{hh}H_t能够捕捉截至当前时间步的序列的历史信息,就像是神经网络当前时间步的状态或记忆一样。由于H_t的计算基于H_{t-1},索引上式的计算是循环的,使用循环计算的网络即循环神经网络。

在时间步t,输出层的输出为公式⑥:

                                                      \boldsymbol{O}_t = \boldsymbol{H}_t \boldsymbol{W}_{hq} + \boldsymbol{b}_q                                                    ⑥

相关文章

网友评论

    本文标题:学习笔记2

    本文链接:https://www.haomeiwen.com/subject/ykrjfhtx.html