1. 初识BERT
- BERT是Google开发的自然语言处理开源框架,是自然语言处通用的解决方案(所谓通用,就是可以基于BERT框架,做些微调,便可应用于多种NLP问题)。
2. word2vec的局限性(为什么引入BERT)
- 基于word2vec训练好的词向量不会再改变,也就是说,若某个单词位于不同上下文语境中,该单词的此向量表达都是一样的,其缺陷一是没有考虑到单词在不同语境中的含义可能不同,其缺陷二是计算机不能识别文本中重要、有价值的部分。
3. Transformer
- 理解BERT的核心在于Transformer。
- 以机器翻译为例,输入“我是一名学生。”,Transformer对这句话的每个词进行编码(Embedding)形成向量,然后对编码后的向量解码成目标语言:“I am a student.”
- Transformer的关键在于self-attention。
4. Self-attention
- attention就是关注的意思,在NLP中意为让计算机关注有价值的文本信息。
- self-attention加了个反身代词,意为让计算机自己根据上下文关系识别文本关键信息(对word2vec的改进)。
- Self-attention步骤:
- Input:输入n个单词 x 1 . . . x n x_1...x_n x1...xn
- Embedding: 对这n个单词分别编码为行向量, x 1 ( . . . . . . ) , x 2 ( . . . . . . ) . . . x_1(......), x_2(......) ... x1(......),x2(......)...
- 利用第二步形成的每个单词的行向量,分别都乘以三个权重矩阵 W q , W k , W v W^q, W^k, W^v Wq,Wk,Wv,得到 q 1 . . . q n , k 1 . . . k n , v 1 . . . v n q_1...q_n, k_1...k_n, v_1...v_n q1...qn