《动手学深度学习》第二十四天---语言模型,循环神经网络

(一)语言模型

给定一个长度为T的词的序列w1,w2,…,wT,语言模型将计算该序列概率:P(w1,w2,…,wT)。语言模型(language model)可用于提升语音识别和机器翻译的性能,根据序列的概率选择输出的序列。
在这里插入图片描述
例如,一段含有4个词的文本序列的概率
在这里插入图片描述其中,P(w1)可以计算为w1在训练数据集中的词频(词出现的次数)与训练数据集的总词数之比。P(w2∣w1)可以计算为w1,w2两词相邻的频率与w1词频的比值,因为该比值即P(w1,w2)与P(w1)之比。以此类推。

当序列长度增加时,计算和存储多个词共同出现的概率的复杂度会呈指数级增加。n元语法(n-grams)通过马尔可夫假设(虽然并不一定成立)简化了语言模型的计算。
在这里插入图片描述
它是基于:math:n - 1阶马尔可夫链的概率语言模型。当n分别为1、2和3时,我们将其分别称作一元语法(unigram)、二元语法(bigram)和三元语法(trigram)。长度为4的序列w1,w2,w3,w4在一元语法、二元语法和三元语法中的概率分别为
在这里插入图片描述

(二)循环神经网络

考虑输入数据存在时间相关性的情况。假设Xt∈Rn×d是序列中时间步t的小批量输入Ht∈Rn×h是该时间步的隐藏变量。与多层感知机不同的是,这里我们保存上一时间步的隐藏变量Ht−1,并引入一个新的权重参数Whh∈Rh×h,该参数用来描述在当前时间步如何使用上一时间步的隐藏变量。具体来说,时间步t的隐藏变量的计算由当前时间步的输入和上一时间步的隐藏变量共同决定:
在这里插入图片描述
由上式中相邻时间步的隐藏变量Ht和Ht−1之间的关系可知,这里的隐藏变量能够捕捉截至当前时间步的序列的历史信息,就像是神经网络当前时间步的状态或记忆一样。
因此,该隐藏变量也称为隐藏状态。由于隐藏状态在当前时间步的定义使用了上一时间步的隐藏状态,上式的计算是循环的。使用循环计算的网络即循环神经网络(recurrent neural network)。
在时间步t,输出层的输出和多层感知机中的计算类似:
在这里插入图片描述
循环神经网络的参数包括隐藏层的权重Wxh∈Rd×h、Whh∈Rh×h和偏差 bh∈R1×h,以及输出层的权重Whq∈Rh×q和偏差bq∈R1×q。值得一提的是,即便在不同时间步,循环神经网络也始终使用这些模型参数。因此,循环神经网络模型参数的数量不随时间步的增加而增长
隐藏状态中XtWxh+Ht−1Whh的计算等价于Xt与Ht−1连结后的矩阵乘以Wxh与Whh连结后的矩阵。
举个例子

from mxnet import nd

X, W_xh = nd.random.normal(shape=(3, 1)), nd.random.normal(shape=(1, 4))
#  构造形状为(3,1)的矩阵X,和形状为(1,4)的权重W_xh
H, W_hh = nd.random.normal(shape=(3, 4)), nd.random.normal(shape=(4, 4))
#  构造形状为(3,4)的矩阵H和形状为(4,4)的权重W_hh
nd.dot(X, W_xh) + nd.dot(H, W_hh)  #  XWxh+HWhh

在这里插入图片描述

  M=nd.concat(X,H,dim=1)
    X,H,M

在这里插入图片描述

N=nd.concat(W_xh,W_hh,dim=0)
W_xh,W_hh,N

在这里插入图片描述nd.dot(M,N)
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值