• Bert原理 | Bert油管视频学习法


    必须要懂的交叉熵:

    https://cloud.tencent.com/developer/article/1539723

     

    这部分其实就是 Transformer Encoder 部分 + BERT Embedding, 如果不熟悉 Transformer 的同学,恰好可以从此处来加深理解。

    这部分源码阅读建议可先大致浏览一下整体, 有一个大致的框架,明白各个类之间的依赖关系,然后从细节到整体逐渐理解,即从上图看,从右往左读,效果会更好。

    1. BERTEmbedding

    分为三大部分:

    • TokenEmbedding : 对 token 的编码,继承于 nn.Embedding, 默认初始化为 :N(0,1)
    • SegmentEmbedding: 对句子信息编码,继承于 nn.Embedding, 默认初始化为 :N(0,1)
    • PositionalEmbedding: 对位置信息编码, 可参见论文,生成的是一个固定的向量表示,不参与训练

    这里面需要注意的就是 PositionalEmbedding, 因为有些面试官会很抠细节,而我对这些我觉得对我没有啥帮助的东西,一般了解一下就放过了,细节没有抠清楚,事实证明,吃亏了。

    2. Transformer

    这里面的东西十分建议对照论文一起看,当然,如果很熟的话可以略过。 我在里面关键的地方都加上了注释,如果还是看不懂的话可以提 issue, 这里就不赘述了。

    我们说的contextualized word embedding 就是取中间这个部分的向量出来,这里是上文的所有信息。

    高烧退了

    丞退了

    这两个向量都是不同的 

    elmo直接用两个参数相加更新, 全都要

    h = a1*h1 + a2*h2

    bert抽取出来的[mask 词]的embedding 一定要够准,要不然linear classifier本来就是一个很弱的分类器,他认不出词语的

    BERT 其實就是 Transformer 中的 Encoder,只是有很多層

    bert情感分类问题:(只在开头做一个输出)

    bert序列标注问题

     

    bert在NLI问题(句子匹配,问句匹配)

     

    bert在信息抽取,阅读理解上面的应用

    橙色和蓝色的vector和黄色的其实是一个模型出来的,但是为了表示不同的主题(问句和文档),因此才划分成三种。

    最后用1(橙色和黄色)   2(黄色和蓝色)分别做一个人softmax的映射,找出1 2 对应的位置信息

    GPT的意思就是三个主要参数,和前面的做一个交互(self-attention),然后两个交互项目之间做一个weighted sum ,最后预测下一个词

    我们说的self-attention 其实外部看起来作用和biRNN 很像,都是一个sequence进出

    同时输出的每个每个信息都是带有上下文信息的

    注意QKV三个参数的不同表示

    这里是self-attention的计算方式(简单来说就是用Q去match其他的K,就是用新的值去表示两者之间的距离)

    为什么是这个值,是因为这个值类似余弦相似度的计算:

    为了让a的值适合训练一点,做一个softmax的计算,得到a head^

    z最后出来的序列是【b1,b2,b3,...bn】这里才是带有句子信息的新的表示

    对于a head ,他就类似一个weighted sum --》 得到b

     再来一次:

    【b1,b2,b3,...bn】以上的都是平行计算出来的(用矩阵)

    计算过程(矩阵平行计算的过程)

     

    总的流程如下

     

    multi head 的做法,其实就是从开头那里开始就乘多一个矩阵,一个参数变两个,整体的参数量多两倍


    bert的话只用到了encoder的这一层,注意区别

    https://www.youtube.com/watch?v=ugWDIIOHtPA

    (动图在37.10)很明显看出差别

    机器学习--machine learning 

    1/ encoder部门,先把 机器学习 表示成一个序列,然后预测出下一个词<BOS>.

    2/ 然后再结合《 机器学习  + BOS》 预测出下一个词machine 

    3/ 最后《 机器学习  + BOS + machine》 预测出下一个词learning


    batch norm 是对一个batch 来做normalization

    layer norm是对一个层来做,不考虑batch 数据分布(常和RNN一起来做)

    下面这个add就是把self attention处理过的信息【b1b2...bn】+[a1,a2...an]

    这个做法类似信息的highway

    masked的部分是表示要预测的部分。参考动图应该是《 机器学习  + BOS》 >>>>>> 【machine  +   **

  • 相关阅读:
    idea 常用功能
    405 跨域问题的解决
    哪些情况会报 404
    [LeetCode]题解(python):077-Combinations
    [LeetCode]题解(python):076-Minimum Window Substring
    [LeetCode]题解(python):075-Sort Colors
    [LeetCode]题解(python):074-Search a 2D Matrix
    [LeetCode]题解(python):073-Set Matrix Zeroes
    [LeetCode]题解(python):072-Edit Distance
    [LeetCode]题解(python):071-Simplify Path
  • 原文地址:https://www.cnblogs.com/tfknight/p/13267870.html
Copyright © 2020-2023  润新知