什么是BERT
BERT全称:Bidirectional Encoder Representations from Transformers,(来自“变形金刚” 的双向编码器),一种基于Transformer的用于NLP预训练机器学习技术。2018年由Google创建并发布[1]。
2019 年,谷歌宣布已开始在其搜索引擎中使用BERT[2]。
2020 年的一项文献调查得出的结论是,“在一年多一点的时间里,BERT 已成为 NLP 实验中无处不在的基线”,共有 150 多篇研究出版物分析和改进了该模型[3]。
BERT 使用掩码语言建模(MLM) 和 下一句预测两个无监督预测任务进行预训练。
BERT论文笔记
GitHub地址:GitHub - google-research/bert: TensorFlow code and pre-trained models for BERT
论文地址:https://arxiv.org/pdf/1810.04805.pdf
他们的贡献:
- 证明了双向预训练对语言表征量的重要性。
- 展示了预训练表征量能消除许多重型工程任务特定架构的需求。
- BERT推进了11项NLP任务的最高水平。
BERT_BASE:L=12,hidden=768,heads=12,parameters=110M
BERT_LARGE:L=24,hidden=1024,heads=16,parameters=340M
BERT模型理解
(Bert_Base)
sentence = "my dog is cute, he likes playing"
大致流程:
- 准备数据
- 把数据准备成BERT模型的输入形式: Embedding input = Token+Segment+Position
- 把input扔给Bert (12层Transformer encoder,最终输出是768)
- 输出向量(最终输出是768)
宝藏讲解https://leemeng.tw/attack_on_bert_transfer_learning_in_nlp.html
另一个宝藏讲解https://www.cnblogs.com/gczr/p/12393925.html
- Embedding input:
(1,11,768) = (batch_size,max_len,embedding)
bert base uncased vocab size:30522
BERT的优势
- BERT拥有一个深而窄的神经网络。因此,它可以在无需大幅架构修改的前提下进行双向训练;
- 是无监督学习,因此不需要人工干预和标注,让低成本地训练超大规模语料成为可能;
- BERT模型能够联合神经网络所有层中的上下文来进行训练。这样训练出来的模型在处理问答或语言推理任务时,能够结合上下文理解语义,并且实现更精准的文本预测生成;
- BERT只需要微调就可以适应很多类型的NLP任务,降低了企业的训练成本;
- BERT支持包括中文在内的60种语言;
- 研究人员也不需要从头开始训练自己的模型,只需要利用BERT针对特定任务进行修改,在单个云TPU上运行几小时甚至几十分钟,就能获得不错的分数;
- 是词嵌入的一种方法,作用是将自然语言转化为词向量。
BERT的 fine-tune
可以对这些进行调参
- Batch Size:16 or 32;
- Learning Rate: 5e-5, 3e-5, 2e-5;
- Epochs:2, 3, 4;
BERT的下游任务
- 句子对分类任务:
- 预测第二个句子相对于第一个句子是包含,矛盾还是中立的;
- 确定询问的两个问题在语义上是否等效;
- 二分类任务。正例是(问题,句子)对,它们确实包含正确答案,而负例是同一段中的(问题,句子),不包含答案;
- 用1到5的分数来标注,表示这两个句子在语义上有多相似;
- 从在线新闻源中提取的句子对组成,并带有人工标注,以说明句子对中的句子在语义上是否等效。
- 识别文本蕴含(Recognizing Textual Entailment)
- 常识推理
- 单句子分类任务
- 从电影评论中提取的句子以及带有其情绪的人类标注
- 预测英语句子在语言上是否“可以接受”
- 问答任务
- 给定一个问题以及Wikipedia中包含答案的段落,任务是预测段落中的答案文本范围
- 实体识别任务
- 识别文本中具有特定意义的实体,主要包括人名、地名、机构名、专有名词等,以及时间、数量、货币、比例数值等文字
[1] Devlin, J., Chang, M., Lee, K., & Toutanova, K. (2018). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. arXiv. https://doi.org/10.48550/arXiv.1810.04805
[2] BERT (language model). (2022, August 31). In Wikipedia. https://en.wikipedia.org/wiki/BERT_(language_model)
[3] Rogers, Anna; Kovaleva, Olga; Rumshisky, Anna (2020). "A Primer in BERTology: What We Know About How BERT Works". Transactions of the Association for Computational Linguistics. 8: 842–866. arXiv:2002.12327. doi:10.1162/tacl_a_00349. S2CID 211532403