美文网首页
【BERT】BERT

【BERT】BERT

作者: pub_bug | 来源:发表于2021-07-27 15:12 被阅读0次

    Transformer

    参考资料

    https://zhuanlan.zhihu.com/p/48508221

    http://jalammar.github.io/illustrated-transformer/

    也是一种Seq2Seq网络

    image.png

    这种RNN就不能并行运算

    self-attention机制进行并行计算,在输入和输出都相同

    传统的word2vect缺点:

    1)词向量训练好了,就不会变啊

    2) 一词多义 上下文不同 词义也不同

    整体架构

    更准确地讲,Transformer由且仅由self-Attenion和Feed Forward Neural Network组成。

    一个基于Transformer的可训练的神经网络可以通过堆叠Transformer的形式进行搭建,作者的实验是通过搭建编码器和解码器各6层,总共12层的Encoder-Decoder,并在机器翻译中取得了BLEU值得新高。

    1)并行计算要求

    2) 解决RNN中 对远距离的词记忆效果弱

    Transformer的编码部分是由6个编码器,同样解码有6个解码器组成

    image.jpeg

    每个编码器的结构是先做一个self-attention,得到attention z,然后用一个全连接FNN对z的降维;

    输入的序列,先流入第一层self-attention,计算出当前词与其他单词的

    image.jpeg

    两个公式:1)计算attetion 2)FNN 全连接层,两层第一层ReLU,第二层线性激活函数

    image.jpeg

    decoder中

    1. 1)Self-Attention:当前翻译和已经翻译的前文之间的关系;

    2. 2)Encoder-Decnoder Attention:当前翻译和编码的特征向量之间的关系。

    image.gif

    先做词嵌入,算出词向量 论文中:用的词向量维度dK=512

    输入如何编码? 输出结构是啥? attenion目的? 怎样组合在一起?

    【一、self-attention是什么?】

    举例:”The animal didn't cross the street because it was too tired”

    根据实际吃的数据,可以看他的上下文,从而确定词义

    self-attetion怎么计算?

    1)把每一个词编程词向量,文章用的是Xi是512维的,而乘出来后的q,k,v这些新向量是64维的。

    这样做的目的是可以持续计算多头

    image.png image.png

    当我得到Q、K、V三个矩阵时,便可以计算每个词与其他词的得分;这里用一个点积运算,可以求出某两个词的相关性;

    2)计算socre

    image.png

    3)-4)这里第三和第四步

    image.png

    softmax得分表示出每一个单词在此位置的分量,比如thinking在这个句子中对machine只占0.12

    5)将每个词的value*softmax得分,凭直观可以看出只关注那些我们注意的词,而drop-out那些无关的词(只需要乘以一个足够小的数)

    image.png

    6)把softmax*v加起来便可得到当前词对于整个序列而言的attetion

    image.png

    ======================================================================

    【附录】 关于计算attention进一步解释

    要把分值转换成一个概率,所以这里用到一个softmax,便可以得到一个词与其他词的分值,然后与其他词value做点积,便可得到self-attention的值

    image.png

    一个关于self-attention的流程

    image.png image.png

    这个的最后用softmax输出与z做一个点积运算 求sum,单个词的对其他词的attention,然后在乘以V(实际特征信息)

    image.jpeg

    【三、位置信息表达】

    词的位置会产生影响,所以add一个vector到输入的嵌入层,引入的这个vector要能够表达出整个序列词的顺序,还有不同词之间的distance信息;

    image.png

    【四、残差块】

    image.png image.png

    【Decoder】

    decoder多了一个encoder-decoder attetion层

    image.png
    1. self-attention略有不同
    image.png

    decoder如何处理encoder的编码结果

    1. 加入mask机制: decoder是做预测的,要根据之前的输出预测当前的,所以在把当前的mask掉;
    image.png image.gif

    Bert

    按照官网给出的Bert技术牛皮,一方面因为是unsupervised,另一方面是因为用于预训练NLP的深度双向系统

    与训练表示既可以是context-free 也可是 contexual

    context-free: word2vec 和 glove

    I made a bank deposit中 对bank的理解 bert会看bank的前后,而其他模型要么只看左边,要么只看右边

    pre-training & fine-tunings

    难的是对词的编码,就是transfomer的encoder部分;

    如何训练bert

    image.png image.png

    方法二:

    image.png

    end2end训练方式

    image.png

    相关文章

      网友评论

          本文标题:【BERT】BERT

          本文链接:https://www.haomeiwen.com/subject/enlomltx.html