• [李宏毅老师深度学习视频] BERT介绍


    1、self-supervised

    什么是supervised和self-supervised?

    supervised(监督学习

    • 给多个文章,标注出是正面还是负面的,放入model里面,得到最后的结果

    self-supervised(自监督学习)

    • 给定一个文章,把文章分成俩份,x’与x",让x’放入model中训练,得到的y与x"越接近越好

    在这里插入图片描述

    2、Bert的俩个任务

    2.1、masking input

    什么是masking input?

    • 在一串文字中,随机mask一些数字,然后过一层Bert,将刚才mask的位置进行依次linear再softmax进行输出概率,得到概率最大的汉字,最后将得到的汉字与本身的汉字进行cross entropy,结果越小模型越好。

    其中,mask的方法可以是用一些特殊字符进行代替,也可以是随机一些汉字;对于Bert本身,就是transformer中的encoder部分
    链接:transformer的encoder解释

    在这里插入图片描述
    在这里插入图片描述

    2.2、next sentence prediction

    什么是next sentence prediction?

    • 给定俩个句子,用[sep]进行句子划分区别两个句子,过一层Bert以后,将cls进行liner再softmax,得到的yes或者no(句子1和句子2是否是相连接的句子)

    为什么是对cls进行linear而不是其他汉字呢?

    • 其实也可以用句子1和句子2中的汉字,但是这样会导致一个问题(假如采用的是句子2中的w3作为linear的输入,此时结果判断说句子1和句子2是承上启下的,那会不会是因为我们选择的输入是句子2里面的,所以说对结果有干扰呢?)为了避免此类问题,所以说用的cls。

    那cls和句子会不会一点关系都没有呢?

    • 其实不会,因为Bert的部分就让每个输入的汉字之间存在一定的联系(具体可以看Bert的架构)

    有研究人员表示:next sentence prediction部分并没有什么有用的价值

    在这里插入图片描述

    3、pre-train and fine-tune

    pre-train是什么?

    • Bert的部分就是pre-train部分,属于self-supervised learning

    fine-tune是什么?

    • 基于上游中训练好的Bert,进行一系列任务,叫做fine-tune。一般我们称要做的任务为下游任务

    在这里插入图片描述

    4、Bert在nlp中的四大案例

    4.1、分类问题

    输入:语句
    输出:分类

    例子:输入一句话,得到这句话是正面的还是负面的

    如何用Bert进行的呢?

    • 先给一个cls+句子进行Bert输入,然后对输出的cls部分进行linear和softmax,得到分类class。

    其中,原本用随机的embedding对句子进行编码,现在用Bert进行编码,效果大幅度好于随机。

    在这里插入图片描述

    4.2、同长输出

    输入:n个词的句子
    输出:n个词的句子

    例子:给定一个句子,输出每个词语的词性

    此时是将Bert输出的全部向量进行linear处理再softmax,进行class分类词性

    在这里插入图片描述

    4.3、两句子分类

    输入:俩个句子
    输出:一个分类结果

    例子:一个句子是:我请你去喝茶搞不搞?另一个句子是:我今天要上天与太阳肩并肩飞翔。这俩个句子明显就不是一类的,都放入model中进行分类,得到结果

    在这里插入图片描述

    如何操作呢?

    • 把俩个句子都输入,中间用[sep]隔开,过Bert后的cls输出结果进行linear和softmax,得到class结果

    在这里插入图片描述

    4.4、QA问题(仅限答案在已知文本中)

    输入:问题文本+答案文档(其中答案文档:答案在这个文档里面)
    输出:答案的具体定位

    操作:

    • 1、随机初始化俩个向量(橙、蓝)
    • 2、先让橙与答案的文本进行点积,过一个softmax得到最优的结果,记录当前的文字在全文的位置,记为s
    • 3、再让蓝与答案的文本进行点积,过一个softmax得到最优的结果,记录当前的文字在全文的位置,记为e
    • 4、s和e之间的文本,就是最后的答案定位区域

    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

    5、Bert的一些小问题解释

    从0开始训练Bert几乎是一个不可能的事情,因为需要花费太久太久了。

    谷歌做了一个30亿的数字训练的Bert(相当于3000倍的哈利波特全集)用TPU v3训练8天才得到结果!!!(简直太难了)

    在这里插入图片描述

    预训练用于seq2seq模型
    在这里插入图片描述

    不同的语句设计方式
    在这里插入图片描述

    6、why does Bert work?

    为什么Bert好用?- 因为相同意思的词向量在同一块区域中
    在这里插入图片描述

    对上述进行实际例子测试:用5个包含苹果句子(吃的苹果)和5个包含苹果句子(苹果手机)的例子进行测试

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    7、一些奇奇怪怪的Bert结果(玄学)

    • 7.1、用英文训练的模型,去做中文的问答问题,效果还不错????在这里插入图片描述

    • 7.2、效果对比图。在基于104种语言的训练模型,采用中英文交杂的文章进行fine-tune的时候,测试文章采用中文的结果居然极其的好,逼近人类的结果(93%)在这里插入图片描述

    • 7.3、反向思维。将中文和英文单词对应的词向量进行区域确定,然后得到一个中文词向量与英文词向量之间的差距矩阵,如果将一个英文的词向量进行一系列操作得到对应的中文词向量,似乎就可以解释上述问题。在这里插入图片描述

    • 7.4、真实样例【用词向量之间的平均距离算的】(虽然还是有瑕疵,但是肉眼看还是有些许正确的地方)在这里插入图片描述

  • 相关阅读:
    邮件营销:怎么正确地收集邮件地址?
    关于#游戏引擎#的问题:虚幻项目设置里,不开Hardware Ray Tracing支持硬件光线追踪光线追踪阴影(不开)ue光直接穿过封闭空间的模型,
    ignoreDependencyInterface与registerResolvableDependency
    IDEA新建SpringBoot项目时启动编译报错:Error:java: 无效的源发行版: 17
    Pytorch CPU版本安装教程
    html大作业【NBA篮球介绍 22个页面】学生网页设计源码
    广度优先搜索(BFS)
    ESP32网络开发实例-HTTP-GET请求
    gcc/c++ 版本不一致问题导致的
    【vue】axios封装拦截
  • 原文地址:https://blog.csdn.net/weixin_42198265/article/details/126551493