斯坦福NLP课程 | 第6讲 – 循环神经网络与语言模型

作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI
教程地址:http://www.showmeai.tech/tutorials/36
本文地址:http://www.showmeai.tech/article-detail/240
免责声明:版权所有,转载请联系平台和作者并注明出处[0][1][2][3][4][5][6][7]

收藏ShowMeAI查看更多精彩内容[0]

循环神经网络与语言模型

ShowMeAI为斯坦福CS224n《自然语言处理与深度学习(Natural Language Processing with Deep Learning)》课程的全部课件,做了中文翻译和注释,并制作成了GIF动图![0]

语言模型、RNN、GRU与LSTM

可以在此处找到总结本讲座内容的深入教程。有关如何获取视频和课件等资料的信息,请参见文末。[0]

introduction

语言模型与RNN

(本篇内容也可以参考ShowMeAI的对吴恩达老师课程的总结文章深度学习教程 | 序列模型与RNN网络)[0][1]

Overview

概述

  • 介绍一个新的NLP任务 Language Modeling 语言模型
  • 介绍一个新的神经网络家族 Recurrent Neural Networks (RNNs)

1.语言模型

1.1 语言模型

语言模型

语言建模的任务是预测下一个单词是什么


更正式地说:给定一个单词序列斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型,计算下一个单词斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型的概率分布:

斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型

  • 其中,斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型可以是词汇表中的任意词斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型
  • 这样做的系统称为 Language Model 语言模型

1.2 语言模型

语言模型

  • 您还可以将语言模型视为评估一段文本是自然句子的概率(流畅度)

  • 例如,如果我们有一段文本斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型,则这段文本出现的概率(根据语言模型)为

斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型

  • 语言模型提供斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型

1.3 随处可见的语言模型

随处可见的语言模型

1.4 随处可见的语言模型

随处可见的语言模型

1.5 n-gram 语言模型

n-gram 语言模型

the students opened their __

  • 问题:如何学习语言模型?
  • 回答(深度学习之前的时期):学习一个 n-gram 语言模型

  • 定义:n-gram是一个由 斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型 个连续单词组成的块unigrams: the, students, opened, theirbigrams: the students, students opened, opened theirtrigrams: the students opened, students opened their4-grams: the students opened their

  • 想法:收集关于不同 n-gram 出现频率的统计数据,并使用这些数据预测下一个单词

1.6 n-gram 语言模型

n-gram 语言模型

  • 首先,我们做一个简化假设:斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型只依赖于前面的斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型

斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型


  • 问题:如何得到n-gram和(n-1)-gram的概率?
  • 答:通过在一些大型文本语料库上计算它们(统计近似)

斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型

1.7 n-gram 语言模型:示例

n-gram 语言模型:示例

假设我们正在学习一个 4-gram 的语言模型


  • 例如,假设在语料库中: students opened their 出现了斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型次students opened their books 出现了斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型

斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型

  • students opened their exams 出现了斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型

斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型


  • 我们应该忽视上下文中的 proctor 吗? 在本例中,上下文里出现了 proctor,所以 exams 在这里的上下文中应该是比 books 概率更大的。

1.8 n-gram语言模型的稀疏性问题

n-gram 语言模型的稀疏性问题

  • 问题1:如果students open their ww 从未出现在数据中,那么概率值为斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型
  • (Partial)解决方案:为每个 斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型 添加极小数 斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型 ,这叫做平滑。这使得词表中的每个单词都至少有很小的概率。

  • 问题2:如果students open their 从未出现在数据中,那么我们将无法计算任何单词 斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型 的概率值
  • (Partial)解决方案:将条件改为open their,也叫做后退处理。

  • Note/注意: 斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型 的增加使稀疏性问题变得更糟。一般情况下 斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型 不能大于斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型

1.9 n-gram语言模型的存储问题

n-gram 语言模型的存储问题

问题:需要存储你在语料库中看到的所有 n-grams 的计数

增加斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型或增加语料库会增加模型大小

1.10 n-gram 语言模型在实践中的应用

Try for yourself: https://nlpforhackers.io/language-models/

n-gram 语言模型在实践中的应用

  • 你可以在你的笔记本电脑上,在几秒钟内建立一个超过170万个单词库(Reuters)的简单的三元组语言模型 Reuters 是 商业和金融新闻的数据集

稀疏问题:

  • 概率分布的粒度不大。today the company和today he bank都是4/26,都只出现过四次

1.11 n-gram语言模型的生成文本

n-gram 语言模型的生成文本

  • 可以使用语言模型生成文本

  • 使用trigram运行以上生成过程时,会得到上图左侧的文本

  • 令人惊讶的是,它有语法但不连贯。如果我们想很好地建模语言,我们需要同时考虑三个以上的单词。但是增加斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型会恶化模型的稀疏性问题并增加模型的大小

1.12 如何搭建一个神经语言模型?

如何搭建一个神经语言模型?

  • 回想一下语言模型任务输入:单词序列斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型输出:下一个单词的概率分布

  • window-based neural model 在第三讲中被用于NER问题

1.13 固定窗口的神经语言模型

固定窗口的神经语言模型

  • 使用和NER问题中同样网络结构

1.14 固定窗口的神经语言模型

固定窗口的神经语言模型

1.15 固定窗口的神经语言模型

固定窗口的神经语言模型

超越 n-gram 语言模型的改进

  • 没有稀疏问题
  • 不需要观察到所有的n-grams

NNLM存在的问题

  • 固定窗口太小
  • 扩大窗口需要扩大权重矩阵斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型
  • 窗户再大也不够
  • 斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型乘以完全不同的权重。输入处理是不对称的

我们需要一个可以处理任意长度输入的神经架构

2.循环神经网络(RNN)

2.1 循环神经网络(RNN)

循环神经网络(RNN)

  • 核心思想:重用相同的权重矩阵斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型

2.2 RNN语言模型

RNN语言模型

2.3 RNN语言模型

RNN语言模型

  • RNN的优点可以处理任意长度的输入步骤 斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型 的计算(理论上)可以使用许多步骤前的信息模型大小不会随着输入的增加而增加在每个时间步上应用相同的权重,因此在处理输入时具有对称性

  • RNN的缺点循环串行计算速度慢在实践中,很难从许多步骤前返回信息

2.4 训练一个RNN语言模型

训练一个RNN语言模型

  • 获取更大的文本语料库,即单词序列
  • 输入RNN-LM;计算每个步骤 斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型 的输出分布 即预测到目前为止给定的每个单词的概率分布

  • 步骤斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型上的损失函数是预测概率分布斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型和真正的下一个词斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型之间的交叉熵(斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型的one-hot向量)

斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型


  • 平均它以获得整个训练集的整体损失

斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型

2.5 训练一个RNN语言模型

训练一个RNN语言模型

斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型

2.6 训练一个RNN语言模型

训练一个RNN语言模型

  • 然而:计算整个语料库的损失和梯度斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型太昂贵了

斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型


  • 在实践中,我们通常认为斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型是一个句子或一个文档
  • 回想一下:随机梯度下降允许我们计算小块数据的损失和梯度,并进行更新
  • 计算一个句子(实际上是一批句子)的损失斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型,计算梯度并更新权重。重复上述操作。

2.7 RNN的反向传播

RNN的反向传播

  • 问题:重复权重矩阵斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型的偏导数斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型
  • 答:重复权重的梯度是每次出现的梯度之和

斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型

2.8 多变量链式法则

Source: https://www.khanacademy.org/math/multivariable-calculus/multivariable-derivatives/differentiating-vector-valued-functions/a/multivariable-chain-rule-simple-version

多变量链式法则

  • 对于一个多元函数斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型和两个单变量函数斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型,链式法则如下:

斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型

2.9 RNN的反向传播:简单证明

RNN的反向传播:简单证明

  • 对于一个多元函数斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型和两个单变量函数斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型,链式法则如下:

斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型

2.10 RNN的反向传播

RNN的反向传播

  • 问题:如何计算?
  • 回答:反向传播的时间步长 斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型。累加梯度。这个算法叫做 “backpropagation through time”

2.11 RNN语言模型的生成文本

RNN语言模型的生成文本

  • 就像n-gram语言模型一样,你可以使用RNN语言模型通过重复采样来生成文本。采样输出是下一步的输入。

2.12 RNN语言模型的生成文本

Source: https://medium.com/@samim/obama-rnn-machine-generated-political-speeches-c8abd18a2ea0

Source: https://medium.com/deep-writing/harry-potter-written-by-artificial-intelligence-8a9431803da6

Source: https://gist.github.com/nylki/1efbaa36635956d35bcc

RNN语言模型的生成文本

Source: http://aiweirdness.com/post/160776374467/new-paint-colors-invented-by-neural-network

RNN语言模型的生成文本

补充说明

  • 相比n-gram更流畅,语法正确,但总体上仍然很不连贯
  • 在配方示例中,生成的文本不记得文本的主题是什么
  • 在哈利波特的例子中,甚至体现了人物的特点,引号的开闭没有问题 如果模型的输出在引号中,则可能某些神经元或隐藏状态正在跟踪

  • RNN是否可以和手工规则结合? 例如Beam Serach,但是可能很难做到

3.评估语言模型

3.1 评估语言模型

评估语言模型

  • 标准语言模型评估指标是 perplexity 困惑度
  • 这等于交叉熵损失的指数斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型

斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型

  • 困惑度越低越好

3.2 RNN极大地改善了困惑度

Source: https://research.fb.com/building-an-efficient-neural-language-model-over-a-billion-words/

RNN极大地改善了复杂度

3.3 为什么我们要关心语言模型?

为什么我们要关心语言模型?

  • 语言模型是一项基准测试任务,可帮助我们衡量我们在理解语言方面的进展 生成下一个单词需要语法、句法、逻辑、推理、现实世界知识等。

  • 语言建模是许多NLP任务的子组件,尤其是那些涉及生成文本或估计文本概率的任务 预测性打字、语音识别、手写识别、拼写/语法纠正、作者识别、机器翻译、摘要、对话等等

3.4 要点回顾

要点回顾

  • 语言模型:预测下一个单词的系统
  • 循环神经网络:神经网络家族 采用任意长度的顺序输入,并在每一步应用相同的权重,并可选择在每一步生成输出
  • 循环神经网络斯坦福NLP课程 | 第6讲 - 循环神经网络与语言模型语言模型
  • 我们已经证明,RNNs是构建LM的一个很好的方法。
  • 但RNNs的用处要大得多!

3.5 RNN可用于句子分类

RNN可用于句子分类

  • 如何计算句子编码
  • 基本方法:使用最终隐藏状态
  • 通常更好的方法:使用所有隐藏状态的元素最大值或平均值
  • Encoder的结构在NLP中非常常见

3.6 RNN语言模型可用于生成文本

RNN语言模型可用于生成文本

  • 这是条件语言模型的示例。我们使用语言模型组件,最关键的是,我们根据条件对其进行调整

4.视频教程

可以点击 B站 查看视频的【双语字幕】版本[0]

【双语字幕+资料下载】斯坦福CS224n | 深度学习与自然语言处理(2019·全20讲)

5.参考资料

  • 本次讲座的在线翻书,学习[0]
  • 《斯坦福CS224n深度学习与自然语言处理》课程学习指南[0]
  • 《斯坦福CS224n深度学习与自然语言处理》课程大作业解析[0]
  • 【双语字幕视频】斯坦福CS224n | 深度学习与自然语言处理(2019·全20讲)[0]
  • Stanford官网 | CS224n: Natural Language Processing with Deep Learning[0]

ShowMeAI 系列教程推荐[0]

  • 大昌科技实施 |推荐和广告计算解决方案[0]
  • 大昌科技实施 |计算机视觉解决方案[0]
  • 大昌科技实施 |自然语言处理行业解决方案[0]
  • 图解Python编程:从入门到精通系列教程[0]
  • 图形数据分析:从初学者到精通教程系列[0]
  • 图解AI数学基础:从入门到精通系列教程[0]
  • 图解大数据技术:从初学者到精通系列[0]
  • 图解机器学习算法:从初学者到精通教程系列[0]
  • 机器学习实战:教你玩机器学习系列[0]
  • 深度学习教程 |吴恩达特训·全套笔记解读[0]
  • 自然语言处理教程 | 斯坦福CS224n课程 · 课程带学与全套笔记解读[0]

NLP系列教程文章

  • NLP教程(1)- 词向量、SVD分解与Word2vec[0]
  • NLP教程(2)- GloVe及词向量的训练与评估[0]
  • NLP教程(3)- 神经网络与反向传播[0]
  • NLP教程(4)- 句法分析与依存解析[0]
  • NLP教程(5)- 语言模型、RNN、GRU与LSTM[0]
  • NLP教程(6)- 神经机器翻译、seq2seq与注意力机制[0]
  • NLP教程(7)- 问答系统[0]
  • NLP教程(8)- NLP中的卷积神经网络[0]
  • NLP教程(9)- 句法分析与树形递归神经网络[0]

斯坦福 CS224n 课程带学详解

  • 斯坦福NLP课程 | 第1讲 – NLP介绍与词向量初步[0]
  • 斯坦福NLP课程 | 第2讲 – 词向量进阶[0]
  • 斯坦福NLP课程 | 第3讲 – 神经网络知识回顾[0]
  • 斯坦福NLP课程 | 第4讲 – 神经网络反向传播与计算图[0]
  • 斯坦福NLP课程 | 第5讲 – 句法分析与依存解析[0]
  • 斯坦福NLP课程 | 第6讲 – 循环神经网络与语言模型[0]
  • 斯坦福NLP课程 | 第7讲 – 梯度消失问题与RNN变种[0]
  • 斯坦福NLP课程 | 第8讲 – 机器翻译、seq2seq与注意力机制[0]
  • 斯坦福NLP课程 | 第9讲 – cs224n课程大项目实用技巧与经验[0]
  • 斯坦福NLP课程 | 第10讲 – NLP中的问答系统[0]
  • 斯坦福NLP课程 | 第11讲 – NLP中的卷积神经网络[0]
  • 斯坦福NLP课程 | 第12讲 – 子词模型[0]
  • 斯坦福NLP课程 | 第13讲 – 基于上下文的表征与NLP预训练模型[0]
  • 斯坦福NLP课程 | 第14讲 – Transformers自注意力与生成模型[0]
  • 斯坦福NLP课程 | 第15讲 – NLP文本生成任务[0]
  • 斯坦福NLP课程 | 第16讲 – 指代消解问题与神经网络方法[0]
  • 斯坦福NLP课程 | 第17讲 – 多任务学习(以问答系统为例)[0]
  • 斯坦福NLP课程 | 第18讲 – 句法分析与树形递归神经网络[0]
  • 斯坦福NLP课程 | 第19讲 – AI安全偏见与公平[0]
  • 斯坦福NLP课程 | 第20讲 – NLP与深度学习的未来[0]

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2022年5月7日
下一篇 2022年5月7日

相关推荐