上节概述课的笔记懒得记了,所以就合并到这一节后续补上。
# 预训练语言模型
# 基本任务
预训练语言模型的目的是解决语言模型任务,在给定一部分前文的情况下,评估一段文本的生成概率,可以简化为预测下一个词,即计算
2003 年,JMLR 上的 Neural Language Modeling 文章可以算是预训练模型的奠基之作。
# Two Mainstrems of PLMs
- Feature-based approachs
- Fine-tuning approachs
# feature-based
# word2vec
- CBOW
- Skip-gram
word2vec 的一个问题是无法解决多义词问题,比如 bank 同时具有银行和堤岸两个含义,但是在空间中只能有一个点。因此学出来的结果不与任何一个词义相似。
# context2vec
一种 end2end 的方法以解决累积误差的问题。
其核心思想是将词的静态表示转化为基于上下文的动态表示。
# ELMo
NAACL 2018 best paper.
ELMo 让社区发现了 GPU 的含金量。
# Semi-supervised Sequence Learning
第一篇提出预训练 - 微调想法的文章,但作者的想法是让神经网络有更好的初始化。
在此之前,长距离模型如 RNN 等都很有可能收敛到局部最小值,其原因就是初始化不好。从而才有了 Kaiming Init.
# ULMFIT
2018ACL. 正式提出 pre-training fine-tuning 范式的工作。实际提出的是三阶段范式:
- LM pre-training
- LM fine-tuning
- Calssifier fine-tuning
# Transformer
使用 nvidia-smi
查询时,只要 GPU 中有一个核在一直工作,则使用率就是 100%
. 因此要将显存拉满才可以。
key-value memory network: 可以让同类型的知识更加聚集。
# subword embedding
# GPT
Scaling law 的出现。
GPT-2 发现,在 1.5B 量级下,即使没有 SFT, model 也会有很好的表现,表现在 QA, summarization 等任务上。
# BERT
NAACL 2019 best paper. 所以说 NAACL 的 best paper 很有含金量?
BERT 是预训练模型真正火起来的时候。直到 ChatGPT 出现之前,学术和工业界始终在进行 BERT 的改进。
BERT 使用双向上下文,而 GPT 使用单向上下文。双向信息更符合人类的习惯。
# Masked LM
80 % Mask, 10 % 替换为随机词,10 % 不变。并没有根本解决问题。这样在 pre-training 阶段会有信息泄露,从而降低模型的学习难度。
BERT 参数规模增加时效果提升不明显。
# Next Semtemce Prediction
ChatGPT 出现之后这个方法就不再用了。
模型不需要进行句子之间信息的判断。从词语级别判断词语是否属于同一 topic 就足够了。
目前训 LLM 的一些问题:
- 数据配比
- 训练顺序
- 架构下的隐藏参数
A-100 训 Bert-Base 大概只需要一两天,8 卡 v-100 需要四五天左右。
数据的使用
目前的数据已经不太够用了,仍然能获得数据的只有两个方面:
- 合成数据
- 具身数据
# PLMs after BERT
ChatGPT 之前面向 BERT 的一些尝试。
# RoBERTa
一种将 BERT 训练得更好的工程方法。
# Dynamic Masking
# XLNet
# ELECTRA
把 GAN 用到 NLP 中。