循环神经网络

循环神经网络

文本预处理

文本预处理通常包括四个步骤:

  1. 读入文本。
  2. 分词:
    对每个句子进行分词,也就是将一个句子划分成若干个词(token),转换为一个词的序列。
  3. 建立字典,将每个词映射到一个唯一的索引:
    将字符串转换为数字,需要先构建一个字典,将每个词映射到一个唯一的索引编号。
  4. 将文本从词的序列转换为索引的序列,方便输入模型:
    使用字典,将原文本中的句子从单词序列转换为索引序列。

语言模型

一段自然语言文本可以看作是一个离散时间序列,假设一段长度为 T T T的文本中词依次为 w 1 , w 2 , … , w T w_1, w_2,\ldots,w_T w1,w2,,wT,那么在离散的时间序列中, w t ( 1 ≤ t ≤ T ) w_t(1\leq t \leq T) wt(1tT)可看作在时间步 t t t的输出或者标签。语言模型的目标就是评估该序列是否合理,即计算该序列的概率:
P ( w 1 , w 2 , … , w T ) . P(w_1, w_2,\ldots,w_T). P(w1,w2,,wT).

语言模型的计算

假设序列 w 1 , w 2 , … , w T w_1, w_2,\ldots,w_T w1,w2,,wT中的每个词是依次生成的,我们有
P ( w 1 , w 2 , … , w T ) = ∏ t = 1 T P ( w t ∣ w 1 , … , w t − 1 ) . P(w_1, w_2,\dots,w_T)=\prod_{t=1}^T P(w_t \mid w_1, \ldots, w_{t-1}). P(w1,w2,,wT)=t=1TP(wtw1,,wt1).
为了计算语言模型,我们需要计算词的概率,以及一个词在给定前几个词的情况下的条件概率,即语言模型参数。词的概率可以通过该词在训练数据集中的相对词频来计算,例如, w 1 w_1 w1的概率可以计算为:
P ^ ( w 1 ) = n ( w 1 ) n \hat{P}(w_1)=\frac{n(w_1)}{n} P^(w1)=nn(w1)
其中 n ( w 1 ) n(w_1) n(w1)为语料库中以 w 1 w_1 w1作为第一个词的文本的数量, n n n为语料库中文本的总数量。
类似的,给定 w 1 w_1 w1情况下, w 2 w_2 w2的条件概率可以计算为:
P ^ ( w 2 ∣ w 1 ) = n ( w 1 , w 2 ) n ( w 1 ) \hat{P}(w_2\mid w_1)=\frac{n(w_1,w_2)}{n(w_1)} P^(w2w1)=n(w1)n(w1,w2)
其中 $n(w_1,w_2) $为语料库中以 w 1 w_1 w1作为第一个词, w 2 w_2 w2作为第二个词的文本的数量。

n n n元语法

当序列长度增加时,计算和存储多个词共同出现的概率的复杂度会呈指数级增加。 n n n元语法通过马尔可夫假设(虽然并不一定成立)简化了语言模型的计算。这里的马尔可夫假设是指一个词的出现只与前面 n n n个词相关,即 n n n阶马尔可夫链。如果 n = 1 n=1 n=1,那么有 P ( w 3 ∣ w 1 , w 2 ) = P ( w 3 ∣ w 2 ) P(w3∣w1,w2)=P(w3∣w2) P(w3w1,w2)=P(w3w2)。如果基于n−1阶马尔可夫链,我们可以将语言模型改写为:
P ( w 1 , w 2 , … , w T ) = ∏ t = 1 T P ( w t ∣ w t − ( n − 1 ) , … , w t − 1 ) . P(w_1, w_2,\dots,w_T)=\prod_{t=1}^T P(w_t \mid w_{t-(n-1)}, \ldots, w_{t-1}). P(w1,w2,,wT)=t=1TP(wtwt(n1),,wt1).
这就是 n n n元语法,它是基于 n−1 阶马尔可夫链的概率语言模型。显然,当n较小时,n元语法往往并不准确;当n较大时,n元语法需要计算并存储大量的词频和多词相邻频率。
n n n元语法存在以下两点缺陷:

  1. 参数空间过大;
  2. 数据稀疏。

循环神经网络

我们的目的是基于当前的输入与过去的输入序列,预测序列的下一个字符。循环神经网络引入一个隐藏变量 H H H,用 H t H_t Ht表示 H H H在时间步 t t t的值。 H t H_t Ht的计算基于 X t X_t Xt H t − 1 H_{t−1} Ht1,可以认为 H t H_t Ht记录了到当前字符为止的序列信息,利用 H t H_t Ht对序列的下一个字符进行预测。
含隐藏状态的循环神经网络

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值