文章目录
- 1. BERT 的基本原理是什么?
- 2. BERT 是怎么用 Transformer 的?
- 3. BERT的训练过程是怎样的
- 4. 为什么 BERT 比 ELMo 效果好?ELMo 和 BERT 的区别是什么?
- 5.BERT 有什么局限性?
- 6.BERT 的输入和输出分别是什么?
- 7.针对句子语义相似度/多标签分类/机器翻译翻译/文本生成的任务,利用 BERT 结构怎么做 fine-tuning?
- 8.BERT 应用于有空格丢失或者单词拼写错误等数据是否还是有效?有什么改进的方法?
- 9.BERT 的 embedding 向量如何得来的?
- 10.BERT 模型为什么要用 mask?它是如何做 mask 的?其 mask 相对于 CBOW 有什么异同点?
- 11.BERT 的两个预训练任务对应的损失函数是什么(用公式形式展示)?
- 12.词袋模型到 word2vec 改进了什么?word2vec 到 BERT 又改进了什么?
- 13. BERT 的三个 Embedding 直接相加会对语义有影响吗?
- 14. 为什么 BERT 在第一句前会加一个 [CLS] 标志?
- 15. 使用 BERT 预训练模型为什么最多只能输入 512 个词,最多只能两个句子合成一句?
- reference
1. BERT 的基本原理是什么?
BERT整体是一个自编码语言模型(Autoencoder LM),并且其设计了两个任务来预训练该模型。
- 第一个任务是采用 MaskLM 的方式来训练语言模型,通俗地说就是在输入一句话的时候,随机地选一些要预测的词,然后用一个特殊的符号[MASK]来代替它们,之后让模型根据所给的标签去学习这些地方该填的词。
- 第二个任务在双向语言模型的基础上额外增加了一个句子级别的连续性预测任务,即预测输入 BERT 的两段文本是否为连续的文本,引入这个任务可以更好地让模型学到连续的文本片段之间的关系。
BERT 相较于原来的 RNN、LSTM 可以做到并发执行,同时提取词在句子中的关系特征,并且能在多个不同层次提取关系特征,进而更全面反映句子语义。相较于 word2vec,其又能根据句子上下文获取词义,从而避免歧义出现。同时缺点也是显而易见的,模型参数太多,而且模型太大,少量数据训练时,容易过拟合。
2. BERT 是怎么用 Transformer 的?
BERT 只使用了 Transformer 的 Encoder 模块,原论文中,作者分别用 12 层和 24 层 Transformer Encoder 组装了两套 BERT 模型,分别是: