一、前言
本文章作为学习2023年《李宏毅机器学习课程》的笔记,感谢台湾大学李宏毅教授的课程,respect!!!
读这篇文章必须先了解self-attention、Transformer,可参阅我其他文章。
二、大纲
- BERT简介
- self-supervised learning(自督导式学习)
- BERT原理
- BERT应用
- BERT为啥有效?
三、BERT简介
-
BERT (Bidirectional Encoder Representations from Transformers)
-
BERT 是由 Google AI 于 2018年10月 提出的预训练语言模型,其论文《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》在 arXiv 发布,引起了 NLP 领域的巨大关注。
-
BERT 的核心思想是基于 Transformer 结构,并采用 双向(Bidirectional) 预训练机制,极大提升了自然语言理解(NLU)任务的性能。
-
参数量对比
模型 | 参数量 |
---|---|
ELMO | 94M |
BERT | 340M |
GPT-2 | 1542M |
Megatron | 8B |
T5 | 11B |
Turing NLG | 17B |
GPT-3 | 175B |
Switch Transformer | 1.6T |
四、self-supervised learning(自督导式学习)
阐述BERT前先讲一下self-supervised learning(自督导式学习)。
什么是self-supervised learning(自督导式学习)?
想必大家都知道supervised learning,通俗来讲就是有输入和对应输出的成对训练资料。
self-supervised 的意思则是只有输入的资料,没有对应输出的资料的情况,就用输入划拨一部分当做输出,如下图:
有点晦涩。
打个比喻:
古诗填空题大家语文考试时候都做过吧,你要反复背诵,一会儿捂住前半句通过后半句默写前半句,一会儿捂住后半句通过前半句默写后半句,直到完全掌握。
Model比做你的大脑,输入x是完整的诗句“锄禾日当午,汗滴禾下土”,x’和x’‘就是x分出来的前半句和后半句,你大脑背诵时候就是要让你输出的答案y和x’'一样。
这就是self-supervised的精髓了,从训练资料中裂分进行训练的过程,呼应了self这个词。
五、BERT原理
哇靠,BERT就是这么干的。
1、填空题
说明:
上图自底向上看:
- 黑色方块就是要填空的地方,把它遮住;
- BERT用的结构就是Transformer Encoder,没啥好说的;
- 遮住的部分输出的向量经过Linear和softmax得到y;
- 利用cross entropy去minimize和遮住部分的正确答案的loss。
那至于怎么遮住的方法有两种:
1、找个特殊字符代表遮住这件事情;
2、随机找个文字作为输入;
2、排序题
填空题是学会了,那如果是两句诗的让你排序呢?
① “谁知盘中餐,粒粒皆辛苦”
② “锄禾日当午,汗滴禾下土”
请排序,正确答案那当然是②→① 。
你的大脑怎么知道这件事,当然是我背过知道顺序,所以Model还得知道语序。
于是有了第二招→排序。
输入就是多个不同句子,句子间隔用特殊字符表示。
输出很直观,就是该不该接在一块,Yes/No。
3、小结
这就是全部了!
干了填空题和排序题这两件事!
大名鼎鼎的BERT仅此而已,牛逼的是人家用的训练资料有3.3B词汇,约等于1435套四大名著。
六、BERT应用
BERT是个预训练模型,就像是个插座一样,你想用电风扇、电饭煲都行,所以说它是个基座。
例如:评论情感分析
基座是BERT的pretrain模型,已经会了填空和句子排序。
自定义部分插个linear、softmax适应不同任务就行。
其他的应用案例就也是这种思想,不赘述。
七、BERT为什么有效?
BERT知道上下文语义,同样的词在不同的语境下不同,这是能够辨别出来的,同样是“果”字在不同句子环境下输出的向量也不一样。
个人理解:
从空间角度,BERT做的我个人认为它是在进行空间归类,同样的词可以根据语境归类至不同矩阵空间,只要知道这种空间联系就能进行空间转换,一个神奇的例子就是用中英文转换:
八、小结
掌握BERT在做填空题和排序题这两件事情就达到基本要求了,其他的更多细节和技巧在实做中进行深入研究。