task02打卡 语言模型与循环神经网络

语言模型

语⾔模型(language model)是⾃然语⾔处理的重要技术。⾃然语⾔处理中最常⻅的数据是⽂本数据。我们可以把⼀段⾃然语⾔⽂本看作⼀段离散的时间序列。假设⼀段⻓度为T的⽂本中的词依次为\(w_1, w_2, \dots, w_T\),那么在离散的时间序列中,\(w_t ( 1 \leqslant t \leqslant T)\)可看作在时间步(time step)t的输出或标签。给定⼀个⻓度为\(t\)的词的序列\(w_1, w_2, \dots, w_T\),语⾔模型将计算该序列的概率:

\[ P (w_1, w_2, \dots, w_T) \]

语言模型计算

假设\(w_1, w_2, \dots, w_T\)依次生成一句话,可以得到\[P\left(w_{1}, w_{2}, \ldots, w_{T}\right)=\prod_{t=1}^{T} P\left(w_{t} | w_{1}, \ldots, w_{t-1}\right)\]

\(P(w_1)\) 可以是某语料库中\(w_1\)的词频占所有词频的比例, \(P(w_2|w_1)\)可以表示为该语料库中\(w_1, w_2\)相邻的词频占\(w_1\)的词频的比例即\(P(w_1, w_2)/P(w_1)\) ,以此类推。

序列长度增加时计算过于复杂,由此引入\(n\)元语法的概念。

\(n\)元语法

\(n\)元语法通过⻢尔可夫假设(虽然并不⼀定成⽴)简化了语⾔模型的计算。⼀个词的出现只与前⾯\(n\)个词相关,即\(n\)阶⻢尔可夫链(Markov chain of order \(n\))。 \(n\) 元语法基于\(n-1\)阶马尔科夫链,模型为\(P\left(w_{1}, w_{2}, \ldots, w_{T}\right) \approx \prod_{t=1}^{T} P\left(w_{t} | w_{t-(n-1)}, \ldots, w_{t-1}\right)\)。 n分别为1、2和3时,我们将其分别称作⼀元语法(unigram)、⼆元语法(bigram)和三元语法(trigram)。

循环神经网络

循环神经⽹络。它并⾮刚性地记忆所有固定⻓度的序列,而是通过隐藏状态来存储之前时间步的信息。时间步t的隐藏变量的计算由当前时间步的输⼊和上⼀时间步的隐藏变量共同决定:

\[\boldsymbol{H}_{t}=\phi\left(\boldsymbol{X}_{t} \boldsymbol{W}_{x h}+\boldsymbol{H}_{t-1} \boldsymbol{W}_{h h}+\boldsymbol{b}_{h}\right)\]

隐藏变量能够捕捉截⾄当前时间步的序列的历史信息,就像是神经⽹络当前时间步的状态或记忆⼀样。

简言之,每一次循环都会用到上一次循环中的信息。

猜你喜欢

转载自www.cnblogs.com/amber-cui/p/12304292.html