博客
关于我
莫烦nlp-BERT双向语言模型
阅读量:652 次
发布时间:2019-03-15

本文共 1450 字,大约阅读时间需要 4 分钟。

BERT模型基础概述

BERT(Bidirectional Entity Recognition Transformer)是一种双向的预训练语言模型,其核心目标是增强语言模型对上下文关系的理解。在语言处理领域,BERT通过其双向机制,将单词的前后信息结合起来训练模型,这种方法与传统单向的GPT(Generative Pre trained Transformer)有着本质的不同。

BERT的核心特点

BERT的主要贡献在于将Transformer结构用于双向语言模型的训练。与GPT等单向模型相比,BERT在训练时引入了两个关键任务:

  • 填空任务(Masked Language Model, MLM):在输入句子中随机替换部分词语为一个特殊标记[MASK],让模型学习如何补充这些被遮挡的位置。
  • 判断句子关系(Next Sentence Prediction, NSP):判断输入句子与随后的句子是否存在语义或上下文关系。
  • BERT的训练方法

    BERT的训练相较于GPT,加入了更多细节处理,主要体现在以下几个方面:

  • 遮挡处理(Masking)

    • 在训练过程中,会随机选择输入句子的一部分词语进行遮挡处理。
    • 为了避免模型将[MASK]视为普通词语,研究者采用了三种方法:
      • 80%情况下替换为[MASK]标记;
      • 10%情况下随机替换为其他词语;
      • 10%情况下保留原词。
  • 二分类任务

    • 在训练数据中,随机拼接两句话(确保两句话无语义关系)进行正常预测,以制造负样本。
    • 判断上下文关系时,输入模型两个句子并输出True/False标签。
  • BERT的架构与训练

    BERT基于Transformer编码器,具有以下特点:

  • 双向信息融合:通过对输入序列的双向传播,BERT能够同时捕捉句子中的前后信息。

  • 位置嵌入

    • 使用学习可调的位置嵌入(与传统的固定嵌入不同)。-嵌入方式包括:
      pos = np.arange(max_len)[:, None]pe = pos / np.power(10000, 2. * np.arange(model_dim)[None, :] / model_dim)pe[:, 0::2] = np.sin(pe[:, 0::2])pe[:, 1::2] = np.cos(pe[:, 1::2])pe = pe[None, :, :]

    -嵌入结果与词嵌入叠加后输入编码器。

  • 任务-head

    • 提供两个任务头:
      • 用于填空任务的MLM(Masked Language Model Head)。
      • 用于句子关系判断的NSP(Next Sentence Prediction Head)。
    • 因此,在模型训练后,可以直接针对不同任务进行微调,避免任务间干扰。
  • BERT训练流程总结

  • 数据准备:使用与GPT相同的数据集(如MRPC),进行横向对比'.
  • 训练步数:BERT通常需要10000步才能收敛。
  • 优化策略
    • 通过mask和NSP任务生成大量标注数据。
    • 重温损失函数设计,将无标注任务转化为有标注任务'.
  • 效率问题:每次训练只能预测15%的词,这与GPT的100%预测率相比,约低效了2/3。
  • 实际应用建议

    在实际应用中,选择合适的预训练任务模型需要综合考虑上游任务需求:

    • 如果需要通用语言理解,应重点训练语言模型。
    • 如果是定制任务,可以只微调相关头参数。

    通过以上优化,BERT在理解语言的上下文关系方面展现出独特优势,但其训练设计也需要合理选择和调整,以减少计算开销并提升实际效果。

    转载地址:http://uzymz.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现数除以二divideByTwo算法(附完整源码)
    查看>>
    Objective-C实现整个字符串转换为小写字母算法(附完整源码)
    查看>>
    Objective-C实现整数N以内的质数算法(附完整源码)
    查看>>
    Objective-C实现文件传输(附完整源码)
    查看>>
    Objective-C实现文件分割(附完整源码)
    查看>>
    Objective-C实现文件拷贝(附完整源码)
    查看>>
    Objective-C实现文件断点传输(附完整源码)
    查看>>
    Objective-C实现文件的删除、复制与重命名操作实例(附完整源码)
    查看>>
    Objective-C实现无序表查找算法(附完整源码)
    查看>>
    Objective-C实现无锁链表(附完整源码)
    查看>>
    Objective-C实现无锁链表(附完整源码)
    查看>>
    Objective-C实现时间戳转为年月日时分秒(附完整源码)
    查看>>
    Objective-C实现是否为 Pythagoreantriplet 毕氏三元数组算法(附完整源码)
    查看>>
    Objective-C实现显示响应算法(附完整源码)
    查看>>
    Objective-C实现晚捆绑测试实例(附完整源码)
    查看>>
    Objective-C实现普通矩阵A和B的乘积(附完整源码)
    查看>>
    Objective-C实现更新数字指定偏移量上的值updateBit算法(附完整源码)
    查看>>
    Objective-C实现最优二叉搜索树算法(附完整源码)
    查看>>
    Objective-C实现最大和连续子序列算法(附完整源码)
    查看>>
    Objective-C实现最大最小距离算法(附完整源码)
    查看>>