循环神经网络——RNN

循环神经网络

在之前NLP基础章节-语言模型中我们介绍了 n n n 元语法,其中单词 x t x_t xt 在时间步 t t t 的条件概率仅取决于前面 n n n 个单词,若是想要将之前单词的影响也加入那么模型参数数量会指数级增长。但是可能之前的单词存在重要的信息是无法舍弃的,于是我们可以参考NLP基础-序列模型中提到隐变量模型。 h t = f ( x 1 , ⋯   , x t − 1 ) . h_t = f(x_1,\cdots,x_{t-1}). ht=f(x1,⋯,xt−1).

这样模型需要同时预测 x t x_t xt 和更新 h t h_t ht,于是模型形式上就变成: h t = g ( h t − 1 , x t − 1 ) . h_t=g(h_{t-1},x_{t-1}). ht=g(ht−1,xt−1). x t = P ( x t ∣ h t ) . x_t=P(x_t|h_t). xt=P(xt∣ht).

无隐状态的神经网络

无隐状态的神经网络其实可以看做多层感知机(MLP),回顾一下MLP的模型,设隐藏层的激活函数为 ϕ \phi ϕ,小批量样本为 X X X,隐藏层的输出 H H H 计算如下:(隐藏层并不等于隐变量) H = ϕ ( X W x h + b h ) . H = \phi(XW_{xh}+b_h). H=ϕ(XWxh+bh). 接下来将隐藏层的输出 H H H 作为输出层的输入: O = ϕ ( H W h q + b q ) . O=\phi(HW_{hq}+b_{q}). O=ϕ(HWhq+bq).

这样的模型我们已经很熟悉了。接下来看隐状态的神经网络。

有隐状态的神经网络

与多层感知机不同的是,我们需要保存前一个时间步的隐藏变量 H t − 1 H_{t-1} Ht−1,并使用 W h h W_{hh} Whh 作为该隐变量的权重 H t = ϕ ( X t W x h + H t − 1 W h h + b h ) . H_t=\phi(X_tW_{xh}+H_{t-1}W_{hh}+b_h). Ht=ϕ(XtWxh+Ht−1Whh+bh). O t = H t W h q + b q . O_t=H_tW_{hq}+b_q. Ot=HtWhq+bq.

困惑度(Perplexity)

这里的困惑度是针对语言模型的质量的一个评分标准。一个好的语言模型能够用高度准确的词元来预测我们接下来会看到什么。 考虑一下由不同的语言模型给出的对"It is raining ..."("...下雨了")的续写:

  1. "It is raining outside"(外面下雨了);
  2. "It is raining banana tree"(香蕉树下雨了);
  3. "It is raining piouw;kcj pwepoiut"(piouw;kcj pwepoiut下雨了)。
    例1无疑是正确的,逻辑连贯符合情理的。而例2虽然正确拼写但句子没有逻辑没有意义。例3则根本没有正确的拼写。
    根据信息论知识,如果想要压缩文本,我们可以根据当前词元集预测的下一个词元。 一个更好的语言模型应该能让我们更准确地预测下一个词元。 因此,它应该允许我们在压缩序列时花费更少的比特。 所以我们可以通过一个序列中所有的 n n n 个词元的交叉熵损失的平均值来衡量:
    1 n ∑ t = 1 n − log ⁡ P ( x t ∣ x t − 1 , ⋯   , x 1 ) \frac 1n\sum_{t=1}^{n}-\log P(x_t|x_{t-1},\cdots,x_1) n1t=1∑n−logP(xt∣xt−1,⋯,x1)
    其中 P ( ) P() P() 由语言模型给出,而困惑度则是上式的指数:
    exp ⁡ ( − 1 n ∑ t = 1 n log ⁡ P ( x t ∣ x t − 1 , ⋯   , x 1 ) ) \exp(-\frac 1n\sum_{t=1}^{n}\log P(x_t|x_{t-1},\cdots,x_1)) exp(−n1t=1∑nlogP(xt∣xt−1,⋯,x1))
    困惑度的最好的理解是"下一个词元的实际选择数的调和平均数"。
相关推荐
第六五10 分钟前
DPC和DPC-KNN算法
人工智能·算法·机器学习
Xxtaoaooo12 分钟前
OCR文字识别前沿:PaddleOCR/DBNet++的端到端文本检测与识别
人工智能·ai·ocr·文本检测·dbnet++
taxunjishu13 分钟前
DeviceNet 转 MODBUS TCP:倍福 CX 系列 PLC 与 MES 系统在 SMT 回流焊温度曲线监控的通讯配置案例
运维·人工智能·物联网·自动化·区块链
小烤箱19 分钟前
自动驾驶工程师面试(定位、感知向)
人工智能·面试·自动驾驶
IT_陈寒22 分钟前
《Redis性能翻倍的7个冷门技巧,90%开发者都不知道!》
前端·人工智能·后端
龙俊杰的读书笔记35 分钟前
《小白学随机过程》第一章:随机过程——定义和形式 (附录1 探究随机变量)
人工智能·机器学习·概率论·随机过程和rl
长空任鸟飞_阿康1 小时前
在 Vue 3.5 中优雅地集成 wangEditor,并定制“AI 工具”下拉菜单(总结/润色/翻译)
前端·vue.js·人工智能
滑水滑成滑头1 小时前
**发散创新:多智能体系统的探索与实践**随着人工智能技术的飞速发展,多智能体系统作为当今研究的热点领域,正受到越来越多关注
java·网络·人工智能·python
盼小辉丶1 小时前
PyTorch实战(9)——从零开始实现Transformer
pytorch·深度学习·transformer
云布道师1 小时前
阿里云 OSS MetaQuery 全面升级——新增内容和语义的检索能力,助力 AI 应用快速落地
人工智能·阿里云·云计算