• GPT/Bert/Attention等一些总结


    这篇文章讲得还不错:

    https://blog.csdn.net/weixin_42446330/article/details/86710838

    《Encoder-Decoder框架、Attention、Transformer、ELMO、GPT、Bert学习总结》

    里面有一些点可以注意:

    • 引入类似SoftMax的计算方式对第一阶段的得分进行数值转换,一方面可以进行归一化,将原始计算分值整理成所有元素权重之和为1的概率分布;另一方面也可以通过SoftMax的内在机制更加突出重要元素的权重。即一般采用如下公式计算:

    然后为了防止其结果过大,会除以一个尺度标度 \sqrt{d_k} ,其中 d_k 为一个query和key向量的维度。

    关于这个scale,可以参考这篇文章:

    https://blog.csdn.net/ltochange/article/details/119957892

    简单的说是为了让attention得到的权值更加均匀一点。

    在数量级较大时,softmax将几乎全部的概率分布都分配给了最大值对应的标签。

    如果本身就想获得差距较大的attention值,可以不用scaled。例如在这里:https://blog.csdn.net/ltochange/article/details/119816832

    论文提出了两点改进:(1)提出带有方向与相对位置信息的atteniton机制;(2)丢弃了原有Transformer self-attention的scale factor,scale factor的引入是为了得到分布相对均匀的attention权重,但是在NER中,并不需要关注所有词。

    ELMO

    ELMO采用了典型的两阶段过程:

    • 利用语言模型进行预训练;
    • 在做下游任务时,从预训练网络中提取对应单词的网络各层的Word Embedding作为新特征补充到下游任务中。

    优点:

    • 引入上下文动态调整单词的embedding后解决了多义词问题;
    • 适用范围是非常广的,普适性强

    缺点:

    • LSTM抽取特征能力弱于Transformer
    • 拼接方式双向融合特征融合能力偏弱

    GPT模型

    GPT是“Generative Pre-Training”的简称,从名字看其含义是指的生成式的预训练。GPT也采用两阶段过程:

    • 利用语言模型进行预训练;
    • 通过Fine-tuning的模式解决下游任务;

    与ELMO区别:

    • 特征抽取器不是用的RNN,而是用的Transformer
    • 采用的是单向的语言模型

    优点:

    • 引入Transformer任务性能提升非常明显

    缺点:

    • 单项语言模型只采用Context-before这个单词的上文来进行预测,而抛开了下文,白白丢掉了很多信息

    Bert模型:

    Bert采用和GPT完全相同的两阶段模型:

    • 首先是语言模型预训练;
    • 其次是使用Fine-Tuning模式解决下游任务。

    与GPT区别:

    最主要不同在于在预训练阶段采用了类似ELMO的双向语言模型
    另外一点是语言模型的数据规模要比GPT大
    优点:

    在各种类型的NLP任务中达到目前最好的效果,某些任务性能有极大的提升

    Bert最关键两点:

    一点是特征抽取器采用Transformer;
    第二点是预训练的时候采用双向语言模型。

    创新点:

    • Masked 语言模型:
    • ①随机选择语料中15%的单词,用[Mask]掩码代替原始单词,
      ②然后要求模型去正确预测被抠掉的单词。
      ③15%的被上天选中要执行[mask]替身这项光荣任务的单词中,只有80%真正被替换成[mask]标记
      ④10%被狸猫换太子随机替换成另外一个单词,10%情况这个单词还待在原地不做改动。

    • Next Sentence Prediction:
    • ①一种是选择语料中真正顺序相连的两个句子;
      ②另外一种是第二个句子从语料库中抛色子,随机选择一个拼到第一个句子后面。

    这篇文章里面提到的几篇参考文章:

    参考:深度学习中的注意力模型(2017版)

    参考:深度学习:transformer模型放弃幻想,全面拥抱Transformer:自然语言处理三大特征抽取器(CNN/RNN/TF)比较

    参考:从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史 

  • 相关阅读:
    Qt中的 Size Hints 和 Size Policies
    __declspec,__cdecl,__stdcall区别和作用
    深入理解DLL文件
    TCP/IP TIME_WAIT状态原理
    Linux 网络编程 高级套接字
    OpenCV 图像处理学习笔记(一)
    C++运算符重载的规则
    WinSock异步IO模型之Select
    ASSER、VERIFY、TRACE详解
    VC++ 网络编程总结(二)
  • 原文地址:https://www.cnblogs.com/charlesblc/p/15927916.html
Copyright © 2020-2023  润新知