CS224N Natural Language Processing with Deep Learning Lecture 13
课程主页:https://web.stanford.edu/class/archive/cs/cs224n/cs224n.1194/
视频地址:https://www.bilibili.com/video/av46216519?from=search&seid=13229282510647565239
这里回顾CS224N Lecture 13的课程内容,这一讲主要介绍了上下文词表示法和预训练。
备注:图片均来自课程课件。
Pre-trained word vectors
我们可以从随机词向量开始,然后对它们进行我们感兴趣的任务的训练,预训练可以产生一定的效果:
Tips for unknown words with word vectors
- 简单的方法
- 训练时间:词汇表是
- 将所有较稀有出现频率$(\le 5)$的单词映射到$<\text{UNK}>$,为其训练一个词向量
- 运行时:如果出现不在词汇表中的单词,那么用$<\text{UNK}>$表示
- 问题
- 无法区分$<\text{UNK}>$单词及其含义
- 解决手段
- 使用char-level模型处理$<\text{UNK}>$
Representations for a word
- 到目前为止,每个单词只有一种词向量表示
- 这有两个问题:
- 单词类型总是相同,无论单词出现的上下文如何
- 我们对单词的只有一种表示形式,但是单词具有不同的方面,包括语义,句法行为
Tag LM
- 想法:希望在上下文中了解单词的含义,但通常仅在带有小型任务标签的数据(例如NER)上学习任务RNN
- 为什么不做半监督方法,在大型的未标记语料库上训练NLM,而不仅仅是单词向量?
ULMfit
ULMfit是Universal Language Model Fine-tuning的缩写,其思路是使用了迁移学习:
- 在大型通用领域语料库上训练LM(使用biLM)
- 针对目标任务数据调整LM
- 微调目标任务的分类器
Transformer
Transformer在之前介绍的attention基础上建立,主要目的是加快运行速度:
下面分别介绍每个组件:
Dot-Product Attention
假设有查询$q$,键为$K$,值为$V$,我们得到的结果为
如果将所有$q$拼接成$Q$,那么得到矩阵形式:
其中右边的维度为:
softmax是关于行操作的。
Scaled Dot-Product Attention
该操作是对结果进行缩放:
Self-attention in the encoder
- 输入的单词向量是$Q,K,V$
- 换句话说:词向量本身彼此选择
Multi-head attention
- 简单的self-attention的问题:
- 单词彼此交互的方式唯一
- 解决方案:多头注意力
- 首先通过$W$矩阵将$Q,K,V$映射到许多低维空间
- 然后使用注意力机制,将输出拼接,最后通过线性层
Complete transformer block
- 每个块都有两个“子层”
- Multihead attention
- 2层前馈NN(带有ReLU)
- 每个子层还有如下细节:
- 残差连接和LayerNorm
- LayerNorm(x + Sublayer(x))
- Layernorm将每层更改为均值0和方差1
Encoder Input
单词编码加位置编码,因为attention没有位置信息。
Transformer Decoder
- 解码器中的2个子层有所变化
- 对先前生成的输出使用self-attention,利用mask:
- Encoder-Decoder Attention,其中Q来自先前的decoder,而K和V来自encoder
BERT
BERT是Bidirectional Encoder Representations from Transformers的缩写,其主要思路如下:
- 问题:语言模型仅使用上文或下文,但是语言理解是双向的。
- 为什么之前的LM是单向的?
- 原因1:需要方向性才能生成格式正确的概率分布。
- 原因2:单词可以在双向编码器中“看到自己”。
BERT的训练思路如下:
- 屏蔽掉$k$%(一般取$k=15$)的输入单词,然后预测被屏蔽的单词
- 屏蔽太少:训练价值太大
- 屏蔽太多:上下文不足
BERT model architecture and training
模型结构:
- Transformer编码器(与以前一样)
- Self-attention⇒没有局部偏见
- 长距离具有“平等机会”
- 每层单次乘法⇒GPU / TPU上的效率
训练:
- 在Wikipedia + BookCorpus上进行训练
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Doraemonzzz!
评论
ValineLivere