斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI
  • 教程地址:www.showmeai.tech/tutorials/3…
  • 本文地址:www.showmeai.tech/article-det…
  • 声明:版权一切,转载请联系渠道与作者并注明出处
  • 收藏ShowMeAI检查更多精彩内容

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)
ShowMeAI为斯坦福CS224n《自然言语处理与深度学习(Natural Language Processing with Deep Learning)》课程的全部课件,做了中文翻译和注释,并制造成了GIF动图!视频和课件等资料的获取办法见文末


引言

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

授课方案

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • Reflections on word representations / 词向量常识回忆
  • Pre-ELMo and ELMO / ELMo模型
  • ULMfit and onward / ULMfit模型
  • Transformer architectures / Transformer结构
  • BERT / BERT

1.词向量常识回忆

1.1 词向量表征

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 现在咱们能够获得一个单词的表明
    • 咱们开端时学过的单词向量
      • Word2vec,GloVe,fastText

1.2 预练习的词向量

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • POS和NER两种表征体系
  • 11个词窗,100个隐层神经元,在12w词上练习7周

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 咱们能够随机初始化词向量,并依据咱们自己的下流使命练习它们
  • 但在绝大多数情况下,运用预练习词向量是有协助的,由于它们自身是自带信息的 (咱们能够在更大体量的预练习语料上练习得到它们)

1.3 不知道词的词向量运用主张

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 简略且常见的处理方案:
  • 练习时:词汇表 {wordsoccurring,say,≥5times}∪{<UNK>}\{\text { words occurring, say, } \geq 5 \text { times }\} \cup\{<\text{UNK}>\}
    • 一切稀有的词 (数据会集呈现次数小于 5) 都映射为 <UNK><\text{UNK}>,为其练习一个词向量
  • 运行时:运用 <UNK><\text{UNK}> 替代词汇表之外的词 OOV
  • 问题
    • 没有办法区分不同 UNK words,无论是身份仍是含义

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

处理方案

  1. 运用字符级模型学习词向量
  • 特别是在 QA 中,match on word identity 是很重要的,即便词向量词汇表以外的单词
  1. 测验这些主张 (from Dhingra, Liu, Salakhutdinov, Cohen 2017)
  • 假如测验时的 <UNK><\text{UNK}> 单词不在你的词汇表中,可是呈现在你运用的无监督词嵌入中,测验时直接运用这个向量
  • 此外,你能够将其视为新的单词,并为其分配一个随机向量,将它们增加到你的词汇表
  • 协助很大或许或许能帮点忙
  • 你能够试试另一件事
    • 将它们分解为词类 (如不知道号码,大写等等),每种都对应一个 <UNK-class><\text{UNK-class}>

1.4 单词的表明

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

存在两个大问题

  • 关于一个 word type 总是是用相同的表明,不考虑这个 word token 呈现的上下文
    • 咱们能够进行十分细粒度的词义消歧
  • 咱们对一个词只要一种表明,可是单词有不同的方面,包括语义,句法行为,以及表达 / 含义

1.5 咱们一向都有处理这个问题的办法吗?

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 在NLM中,咱们直接将单词向量 (可能只在语料库上练习) 插入LSTM层
  • 那些LSTM层被练习来猜测下一个单词
  • 但这些言语模型在每一个方位生成特定于上下文的词表明

1.6 #论文解读#

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • Semi-supervised sequence tagging with bidirectional language models
  • 想法:想要获得单词在上下文的意思,但规范的 RNN 学习使命只在 task-labeled 的小数据上 (如 NER )
  • 为什么不经过半监督学习的办法在大型无标签数据集上练习 NLM,而不仅仅词向量

1.7 标签言语模型 (Tag LM )

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 过程3:在序列符号模型中同时运用单词嵌入和 LM 嵌入
  • 过程2:为输入序列中的每个符号预备单词嵌入和 LM 嵌入
  • 过程1:预练习词嵌入和言语模型
  • 与上文无关的单词嵌入 + RNN model 得到的 hidden states 作为特征输入

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

hk,l=[h→k,1;h←k,1;hkLM]\mathbf{h}_{k, l}=\left[\overrightarrow{\mathbf{h}}_{k, 1} ; \overleftarrow{\mathbf{h}}_{k, 1} ; \mathbf{h}_{k}^{L M}\right]
  • Char CNN / RNN + Token Embedding 作为 bi-LSTM 的输入
  • 得到的 hidden states 与 Pre-trained bi-LM (冻住的) 的 hidden states 连接起来输入到第二层的 bi-LSTM 中

1.8 命名实体辨认 (NER)

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 一个十分重要的NLP子使命:查找分类文本中的实体

1.9 CoNLL 2003命名实体辨认 (en news testb)

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

1.10 #论文解读#

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 言语模型在 Billion word benchmark 的8亿个练习单词上练习

言语模型调查成果

  • 在监督数据集上练习的言语模型并不会获益
  • 双向言语模型仅有助于 forward 过程,提高约 0.2
  • 具有巨大的言语模型规划 (困惑度 30) 比较小的模型 (困惑度 48) 提高约 0.3

使命特定的BiLSTM调查成果

  • 仅运用LM嵌入来猜测并不是很好:88.17 F1
    • 远低于仅在符号数据上运用 BiLSTM 符号器

1.11 #论文解读#

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • arxiv.org/pdf/1708.00…
  • 也有一种思路:运用练习好的序列模型,为其他NLP模型供给上下文
  • 思路:机器翻译是为了保存意思,所以这或许是个好方针?
  • 运用 seq2seq + attention NMT system 中的 Encoder,即 2 层 bi-LSTM,作为上下文供给者
  • 所得到的 CoVe 向量在各种使命上都优于 GloVe 向量
  • 可是,成果并不像其他幻灯片中描述的更简略的 NLM 练习那么好,所以好像被放弃了
    • 或许NMT仅仅比言语建模更难?
    • 或许有一天这个想法会回来?

2.ELMo模型

2.1 #论文解读#ELMo

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • Deep contextualized word representations. NAACL 2018.
  • word token vectors or contextual word vectors 的爆发版别
  • 运用长上下文而不是上下文窗口学习 word token 向量 (这儿,整个语句可能更长)
  • 学习深度 Bi-NLM,并在猜测中运用它的一切层

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 练习一个双向言语模型 (LM)
  • 方针是作用 OK 但不要太大的言语模型 (LM)
    • 运用 2 个 biLSTM 层
    • (仅) 运用字符CNN构建初始单词表明
      • 2048 个 char n-gram filters 和 2 个 highway layers,512 维的 projection
    • 4096 dim hidden/cell LSTM状况,运用 512 dim 的对下一个输入的投影
    • 运用残差连接
    • 绑定 token 的输入和输出的参数 (softmax),并将这些参数绑定到正向和反向言语模型 (LM) 之间

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • ELMo 学习 biLM 表明的特定使命组合
  • 这是一个创新,TagLM 中仅仅运用堆叠 LSTM 的顶层,ELMo 以为 BiLSTM 一切层都是有用的
Rk={xkLM,h→k,jLM,h←k,jLM∣j=1,…,L}={hk,jLM∣j=0,…,L}\begin{aligned} R_{k} &=\left\{\mathbf{x}_{k}^{L M}, \overrightarrow{\mathbf{h}}_{k, j}^{L M}, \overleftarrow{\mathbf{h}}_{k, j}^{L M} \mid j=1, \ldots, L\right\} \\ &=\left\{\mathbf{h}_{k, j}^{L M} \mid j=0, \ldots, L\right\} \end{aligned}
ELMoktask=E(Rk;task)=task∑j=0Lsjtaskhk,jLM\mathbf{E} \mathbf{L} \mathbf{M} \mathbf{o}_{k}^{t a s k}=E\left(R_{k} ; \Theta^{t a s k}\right)=\gamma^{t a s k} \sum_{j=0}^{L} s_{j}^{t a s k} \mathbf{h}_{k, j}^{L M}
  • task\gamma^{task} 衡量 ELMo 对使命的总体有用性,是为特定使命学习的大局比例因子

  • stask\mathbf{s}^{task} 是 softmax 归一化的混合模型权重,是 BiLSTM 的加权平均值的权重,对不同的使命是不同的,由于不同的使命对不同层的 BiLSTM 的

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 首要运行 biLM 获取每个单词的表明
  • 然后,让 (无论什么) 终究使命模型运用它们
    • 冻住 ELMo 的权重,用于监督模型
    • 将 ELMo 权重连接到特定于使命的模型中
      • 细节取决于使命
        • 像 TagLM 相同连接到中间层是典型的
        • 能够在生产输出时供给更多的表明,例如在问答体系中

2.2 ELMo在序列符号器中的运用

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

2.3 CoNLL 2003命名实体辨认 (en news testb)

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

2.4 ELMo成果:适用于一切使命

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

2.5 ELMo :层权重

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 这两个 biLSTM NLM 层有不同的用途 / 含义
    • 低层更适合初级语法,例如
      • 词性标示(part-of-speech tagging)、句法依靠(syntactic dependency)、NER
    • 高层更适合更高级别的语义
      • 情绪、语义人物符号、问答体系、SNLI
  • 这好像很风趣,但它是怎么经过两层以上的网络来完成的看起来更风趣

3.ULMfit模型

3.1 ULMfit

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • Howard and Ruder (2018) Universal Language Model Fine-tuning for Text Classification.
    • 搬运 NLM 常识的一般思路是相同的
    • 这儿运用于文本分类

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 在大型通用范畴的无监督语料库上运用 biLM 练习
    • 在方针使命数据上调整 LM
    • 对特定使命将分类器进行微调
  • 运用合理巨细的 1 GPU 言语模型,并不是真的很大
  • **在LM调优中要留意许多 **
    • 不同的每层学习速度
    • 歪斜三角形学习率 (STLR) 方案
  • 学习分类器时逐渐分层冻结和STLR
  • 运用 [hT,maxpool⁡(h),meanpool⁡(h)]\left[h_{T}, \operatorname{maxpool}(\mathbf{h}), \operatorname{meanpool}(\mathbf{h})\right] 进行分类
  • 运用大型的预练习言语模型,是一种提高功能的十分有效的办法

3.2 ULMfit功能

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 文本分类器错误率

3.3 ULMfit搬迁学习

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 搬迁学习

3.4 让咱们扩展规划

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

弥补阐明

  • 假如运用监督数据进行练习文本分类器,需求许多的数据才能学习好

3.5 GPT-2言语模型(cherry-picked)输出

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

弥补阐明

  • 文本生成的样例

3.6 GPT-2言语模型(cherry-picked)输出

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

4.Transformer结构

4.1 Transformer介绍

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 一切这些模型都是以Transformer为主结构的,咱们应该学习一下Transformer吧

弥补阐明

  • Transformer 不仅很强壮,而且允许扩展到更大的尺度

4.2 Transformers 动机

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 咱们想要并行化,可是RNNs本质上是顺序的
  • 尽管有 GRUs 和 LSTMs,RNNs 仍然需求留意机制来处理长期依靠关系——不然状况之间的 path length 路径长度 会随着序列增长
  • 但假如留意力让咱们进入任何一个状况……或许咱们能够只用留意力而不需求RNN?

4.3 Transformer 概览

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • Attention is all you need. 2017. Aswani, Shazeer, Parmar, Uszkoreit, Jones, Gomez, Kaiser, Polosukhin
  • 序列到序列编码解码模型,但它对错循环非串行结构
  • 使命:平行语料库的机器翻译
  • 猜测每个翻译单词
  • 终究本钱/误差函数是 softmax 分类器根底上的规范交叉熵误差

4.4 Transformer 根底

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 自学 transformer
    • 首要引荐资源
      • nlp.seas.harvard.edu/2018/04/03/…
      • The Annotated Transformer by Sasha Rush
    • 一个运用PyTorch的Jupyter笔记本,解说了一切!
  • 现在:咱们界说 Transformer 网络的根本构建块:榜首,新的留意力层

4.5 点乘留意力 Dot-Product Attention

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 输入:关于一个输出而言的查询 qq 和一组键-值对 (k−vk-v)
  • Query,keys,values,and output 都是向量
  • 输出值的加权和
  • 权重的每个值是由查询和相关键的内积核算成果
  • Query 和 keys 有相同维数 dkd_k,value 的维数为 dvd_v
A(q,K,V)=∑ieq⋅ki∑jeq⋅kjviA(q, K, V)=\sum_{i} \frac{e^{q \cdot k_{i}}}{\sum_{j} e^{q \cdot k_{j}}} v_{i}

4.6 点乘留意力矩阵表明法

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 当咱们有多个查询 qq 时,咱们将它们叠加在一个矩阵 QQ
A(Q,K,V)=softmax⁡(QKT)VA(Q, K, V)=\operatorname{softmax}\left(Q K^{T}\right) V

4.7 缩放点乘留意力

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 问题dkd_k 变大时,qTkq^Tk方差增大 → 一些 softmax 中的值的方差将会变大 → softmax 得到的是峰值 → 因此梯度变小了
  • 处理方案:经过 query / key 向量的长度进行缩放
A(Q,K,V)=softmax⁡(QKTdk)VA(Q, K, V)=\operatorname{softmax}\left(\frac{Q K^{T}}{\sqrt{d_{k}}}\right) V

4.8 编码器中的自留意力

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 输入单词向量是 queries,keys and values
  • 换句话说:这个词向量自己挑选互相
  • 词向量堆栈= Q = K = V
  • 咱们会经过解码器了解为什么咱们在界说中将他们分开

4.9 多头留意力

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 简略 self-attention 的问题
    • 单词只要一种彼此交互的办法
  • 处理方案多头留意力
  • 首要,经过矩阵 WWQQKKVV 映射到 h=8h = 8 的许多低维空间
  • 然后,运用留意力,然后连接输出,经过线性层
MultiHead(Q,K,V)=Concat(head1,…,headh)\text {MultiHead}(\boldsymbol{Q}, \boldsymbol{K}, \boldsymbol{V})=\text {Concat(head}_{1}, \ldots, \text { head }_{h})
whereheadi=Attention(QWiQ,KWiK,VWiV)\text {where head}_{i}=\text {Attention}\left(Q W_{i}^{Q}, K W_{i}^{K}, V W_{i}^{V}\right)

4.10 完好的transformer模块

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 每个 Block 都有两个 子层
    • 多头 attention
    • 两层的前馈神经网络,运用 ReLU
  • 这两个子层都
    • 残差连接以及层归一化
    • LayerNorm(x+Sublayer(x))
    • 层归一化将输入转化为均值是 00,方差是 11,每一层和每一个练习点 (而且增加了两个参数)
l=1H∑i=1Haill=1H∑i=1H(ail−l)2hi=f(gii(ai−i)+bi)\mu^{l}=\frac{1}{H} \sum_{i=1}^{H} a_{i}^{l} \quad \sigma^{l}=\sqrt{\frac{1}{H} \sum_{i=1}^{H}\left(a_{i}^{l}-\mu^{l}\right)^{2}} \quad h_{i}=f\left(\frac{g_{i}}{\sigma_{i}}\left(a_{i}-\mu_{i}\right)+b_{i}\right)
  • Layer Normalization by Ba, Kiros and Hinton,
  • arxiv.org/pdf/1607.06…

4.11 编码器输入

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 实践的词表明是 byte-pair 编码
  • 还增加了一个 positional encoding 方位编码,相同的词语在不同的方位有不同的全体表征
{PE(pos,2i)=sin⁡(pos/100002i/dmodel)PE(pos,2i+1)=cos⁡(pos/100002i/dmodel)\begin{aligned} \begin{cases} PE(pos, 2i)=\sin \left(pos / 10000^{2 i / d_{model}}\right) \\ PE(\text {pos}, 2 i+1)=\cos \left(pos / 10000^{2 i / d_{model}}\right) \end{cases} \end{aligned}

4.12 完好编码器Encoder

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • encoder 中,每个 Block 都是来自前一层的 QQKKVV
  • Blocks 被重复 6 次 (垂直方向)
  • 在每个阶段,你能够经过多头留意力看到语句中的各个地方,累积信息并将其推送到下一层。在任一方向上的序列逐渐推送信息来核算感兴趣的值
  • 十分长于学习言语结构

4.13 第5层的留意力可视化

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 词语开端以合理的办法关注其他词语
  • 不同的色彩对应不同的留意力头

4.14 留意力可视化

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • Implicit anaphora resolution
  • 关于代词,留意力头学会了怎么找到其指代物
  • 在第五层中,从 head 5 和 6 的单词 its 中分离出来的留意力。请留意,这个词的留意力是十分明显的。

4.15 Transformer解码器

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • decoder 中有两个稍加改动的子层
  • 对之前生成的输出进行 Masked decoder self-attention
  • Encoder-Decoder Attention,queries 来自于前一个 decoder 层,keys 和 values 来自于 encoder 的输出
  • Blocks 相同重复 6 次

4.16 Transformer的技巧与主张

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

细节(论文/之后的讲座)

  • Byte-pair encodings
  • Checkpoint averaging
  • Adam 优化器操控学习速率变化
  • 练习时,在每一层增加残差之前进行 Dropout
  • 标签平滑
  • 带有束查找和长度赏罚的自回归解码
  • 由于 transformer 正在延伸,但他们很难优化而且不像LSTMs那样开箱即用,他们还不能很好与其他使命的构件一起工作

4.17 Transformer机器翻译实验成果

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

4.18 Transformer解析使命实验成果

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

5.BERT模型

5.1 #论文解读# BERT

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • BERT (Bidirectional Encoder Representations from Transformers): Pre-training of Deep Bidirectional Transformers for Language Understanding
  • BERT:用于言语了解的预练习深度双向 transformers

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 问题:言语模型只运用左上下文或右上下文,但言语了解是双向的
  • 为什么LMs是单向的?
    • 原因1:方向性关于生成格式良好的概率分布是有必要的 [咱们不在乎这个]
    • 原因2:双向编码器中单词能够 看到自己

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 单向 与 双向 上下文比照

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 处理方案:掩盖 k%k \% 的输入单词,然后猜测 masked words
  • 不再是传统的核算生成语句的概率的言语模型,方针是填空
    • 总是运用 k=15%k = 15 \%
  • Masking 太少:练习太昂贵
  • Masking 太多:没有满足的上下文

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • GPT 是经典的单项的言语模型
  • ELMo 是双向的,可是两个模型是完全独立练习的,仅仅将输出连接在一起,并没有运用双向的 context
  • BERT 运用 mask 的办法进行整个上下文的猜测,运用了双向的上下文信息

5.2 BERT 练习使命:猜测下一句

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 学习语句之间的关系,判断语句 B 是语句 A 的后一个语句仍是一个随机的语句。

5.3 BERT 句对编码

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • token embeddings 是 word pieces (paly, ##ingpaly, ##ing)
  • 运用学习好的分段嵌入表明每个语句
  • 方位嵌入与其他 Transformer 体系结构类似
  • 将以上三种 embedding 相加,作为终究输入的表明

5.4 BERT 模型结构与练习

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • Transformer encoder (和之前的相同)
  • 自留意力 ⇒ 没有方位偏差
    • 长距离上下文 机会均等
  • 每层乘法 ⇒ GPU / TPU上高效
  • 在 Wikipedia + BookCorpus 上练习
  • 练习两种模型尺度
    • BERT-Base: 12-layer, 768-hidden, 12-head
    • BERT-Large: 24-layer, 1024-hidden, 16-head
  • Trained on 4×4 or 8×8 TPU slice for 4 days

5.5 BERT 模型微调

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 只学习一个建立在顶层的分类器,微调的每个使命

5.6 BERT GLUE多使命成果

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • GLUE benchmark 是由自然言语推理使命,还有语句相似度和情感
  • MultiNLI
    • Premise: Hills and mountains are especially sanctified in Jainism.
    • Hypothesis: Jainism hates nature.
    • Label: Contradiction
  • CoLa
    • Sentence: The wagon rumbled down the road. Label: Acceptable
    • Sentence: The car honked down the road. Label: Unacceptable

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

5.7 CoNLL 2003命名实体辨认 (en news testb)

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

5.8 BERT在SQuAD问答上的体现

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

5.9 BERT预练习使命作用

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

5.10 BERT参数量级对作用影响

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • 从 119M 到 340M 的参数量改进了许多
  • 随参数量提高还在提高

5.11 引荐阅读

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)

  • The Annotated Transformer 代码解析
    • github.com/rsennrich/s…
    • github.com/opennmt/ope…
  • jalammar 的一系列可视化简略教程
    • Visualizing A Neural Machine Translation Model (Mechanics of Seq2seq Models With Attention)
    • The Illustrated Transformer

6.视频教程

能够点击 B站 检查视频的【双语字幕】版别

7.参考资料

  • 本讲带学的在线阅翻页版别
  • 《斯坦福CS224n深度学习与自然言语处理》课程学习指南
  • 《斯坦福CS224n深度学习与自然言语处理》课程大作业解析
  • 双语字幕视频】斯坦福CS224n | 深度学习与自然言语处理(2019全20讲)
  • Stanford官网 | CS224n: Natural Language Processing with Deep Learning

ShowMeAI系列教程引荐

  • 大厂技术完成 | 引荐与广告核算处理方案
  • 大厂技术完成 | 核算机视觉处理方案
  • 大厂技术完成 | 自然言语处理职业处理方案
  • 图解Python编程:从入门到通晓系列教程
  • 图解数据剖析:从入门到通晓系列教程
  • 图解AI数学根底:从入门到通晓系列教程
  • 图解大数据技术:从入门到通晓系列教程
  • 图解机器学习算法:从入门到通晓系列教程
  • 机器学习实战:手把手教你玩转机器学习系列
  • 深度学习教程 | 吴恩达专项课程 全套笔记解读
  • 自然言语处理教程 | 斯坦福CS224n课程 课程带学与全套笔记解读

NLP系列教程文章

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

斯坦福 CS224n 课程带学详解

  • 斯坦福NLP课程 | 第1讲 – NLP介绍与词向量开始
  • 斯坦福NLP课程 | 第2讲 – 词向量进阶
  • 斯坦福NLP课程 | 第3讲 – 神经网络常识回忆
  • 斯坦福NLP课程 | 第4讲 – 神经网络反向传达与核算图
  • 斯坦福NLP课程 | 第5讲 – 句法剖析与依存解析
  • 斯坦福NLP课程 | 第6讲 – 循环神经网络与言语模型
  • 斯坦福NLP课程 | 第7讲 – 梯度消失问题与RNN变种
  • 斯坦福NLP课程 | 第8讲 – 机器翻译、seq2seq与留意力机制
  • 斯坦福NLP课程 | 第9讲 – cs224n课程大项目实用技巧与经历
  • 斯坦福NLP课程 | 第10讲 – NLP中的问答体系
  • 斯坦福NLP课程 | 第11讲 – NLP中的卷积神经网络
  • 斯坦福NLP课程 | 第12讲 – 子词模型
  • 斯坦福NLP课程 | 第13讲 – 依据上下文的表征与NLP预练习模型
  • 斯坦福NLP课程 | 第14讲 – Transformers自留意力与生成模型
  • 斯坦福NLP课程 | 第15讲 – NLP文本生成使命
  • 斯坦福NLP课程 | 第16讲 – 指代消解问题与神经网络办法
  • 斯坦福NLP课程 | 第17讲 – 多使命学习(以问答体系为例)
  • 斯坦福NLP课程 | 第18讲 – 句法剖析与树形递归神经网络
  • 斯坦福NLP课程 | 第19讲 – AI安全偏见与公正
  • 斯坦福NLP课程 | 第20讲 – NLP与深度学习的未来

斯坦福NLP课程 | 第13讲 - 基于上下文的表征与NLP预训练模型(ELMo, transformer)