Self-Supervised Learning(2021补)

news2024/11/18 14:52:45

文章目录

  • 引子
  • X' mask input
  • Next Sentence Prediction
  • Downstream Tasks
  • GLUE
  • BERT的四个用法
    • 情感分析
    • POS标注
    • 自然语言推断Natural Language Inferencee (NLI)
    • 问答(抽取式)
  • BERT的衍生模型
  • Multi-lingual BERT
  • GPT的野望(略)

发现有这一课没记录,补一下。

引子

在这里插入图片描述

BERT:340M的参数
GPT-3:175B
Switch Transformer:1.6T(谷歌)

由于自监督学习没有用到标签,因此是属于无监督学习的一种,类似的还有Cycle GAN也是无监督学习,但是又和原始的无监督学习有区别,因此,将他们单独拿出来。
在这里插入图片描述

X’ mask input

在这里插入图片描述
输入原本为台湾大学,然后随机选择要mask的部分,mask有两种方式:
第一种是使用特殊的token
第二种是使用随机的字符
在这里插入图片描述

输入经过BERT(也就是Transformer Encoder),在mask的位置也会有相应的向量输出,然后将输出的向量经过Linear变化,再通过Softmax得到一个概率分布,分布大小与词库大小相同。

我们通过最小化预测值与真实值的交叉熵来训练BERT+Linear两个部分的参数
在这里插入图片描述

Next Sentence Prediction

将两个句子加上开始标记[CLS]和间隔标记[SEP],然后作为输入进入BERT,仅取开始标记位置的输出向量进入Linear变化,得到一个二分类问题。如果两个句子是相邻这输出Yes,否则输出No。
在这里插入图片描述

Robustly optimized BERT approach(RoBERTa)一文提出这个训练方式并不好,究其原因为负样本过多,随意从文章拿两个句子凑一块作为样本对,模型只要瞎猜不是相邻句子大概率就可以蒙对。

但是在SOP: Sentence order prediction这个用在ALBERT的任务中,BERT表现还不错。

Downstream Tasks

BERT两个典型的任务就是上面介绍的文章填空以及句子顺序判断,后者效果还不咋地,因此BERT看上去用途不广,但是实际上它作为预训练模型在下游任务上有很好的用途。我们只需要少量数据就可以完成相应任务。
在这里插入图片描述

注:预训练阶段属于Unsupervised,微调阶段又需要标签数据,因此整体属于Semisupervised

GLUE

General Language Understanding Evaluation(GLUE)是包含九个测试任务的任务集,它还有中文版。
• Corpus of Linguistic Acceptability (CoLA)
• Stanford Sentiment Treebank (SST-2)
• Microsoft Research Paraphrase Corpus (MRPC)
• Quora Question Pairs (QQP)
• Semantic Textual Similarity Benchmark (STS-B)
• Multi-Genre Natural Language Inference (MNLI)
• Question-answering NLI (QNLI)
• Recognizing Textual Entailment (RTE)
• Winograd NLI (WNLI)
通常将九个模型的得分表现进行平均作为评价模型好坏的根据。

下图中,黑色线表示人类基准,蓝色虚线是模型平均得分:
在这里插入图片描述

BERT的四个用法

根据输入输出的类型不同大概有四种,每种选一种代表性任务来举例。这里虽然是用文字来组成序列,当然也可以替换为语音等类似的东西。

情感分析

输入:序列
输出:分类
先在句子的前面加上[CLS]标记,句子经过BERT后,只关注[CLS]标记对应的输出,将该向量丢进Linear,然后用Softmax进行分类。两个模块初始化方式如下图所示:
在这里插入图片描述

训练时需要为模型提供带有标签的句子。

使用随机初始化与预训练初始化BERT效果如下图,一共四个任务:
在这里插入图片描述

POS标注

输入:序列
输出:序列

先在句子的前面加上[CLS]标记,句子经过BERT后,每个单词都会有一个输出向量,每个向量分别经过Linear和Softmax,最后得到词性的分类。

Isawasaw
NVDETN

自然语言推断Natural Language Inferencee (NLI)

输入:两个序列
输出:类别
premise:前提
hypothesis:假设
模型会推断是否能从前提推断出假设。例如下图中的前提和假设就是冲突关系。
在这里插入图片描述

这个任务可以用在以下场景:将某个文章和评论丢进模型,模型会输出二者赞成还是反对关系。
具体是操作过程如下图,只取[CLS]标记对应的向量进行分类。
在这里插入图片描述

问答(抽取式)

抽取式问答是从原文中找答案。例如:
In meteorology, precipitation is any product of the condensation of atmospheric water vapor that falls under g r a v i t y {\color{red}gravity} gravity. The main forms of precipitation include drizzle, rain, sleet, snow, g r a u p e l {\color{green}graupel} graupel and hail… Precipitation forms as smaller droplets coalesce via collision with other raindrops or ice crystals w i t h i n   a   c l o u d {\color{blue}within\ a \ cloud} within a cloud. Short, intense periods of rain in scattered locations are called “showers”.
What causes precipitation to fall?
g r a v i t y {\color{red}gravity} gravity
What is another main form of precipitation be-sides drizzle, rain, snow, sleet and hail?
g r a u p e l {\color{green}graupel} graupel
Where do water droplets collide with ice crystalsto form precipitation?
w i t h i n   a   c l o u d {\color{blue}within\ a \ cloud} within a cloud
输入为文章和问题的序列:
D = { d 1 , d 2 , ⋯   , d N } D=\{d_1,d_2,\cdots,d_N\} D={d1,d2,,dN}
Q = { q 1 , q 2 , ⋯   , q M } Q=\{q_1,q_2,\cdots,q_M\} Q={q1,q2,,qM}
在这里插入图片描述

输出为两个正整数 s , e s,e s,e表示答案在文章中的位置。则回答为:
A = { d s , ⋯   , d e } A=\{d_s,\cdots,d_e\} A={ds,,de}
上面文章执行结果为:
在这里插入图片描述

具体执行过程如下图:
在这里插入图片描述

橙色和蓝色向量与BERT输出向量长度相同(随机初始化),先用橙色向量与文章的输出进行内积,然后过Softmax(与注意力过程很像),可以求出起始词位置,例如这里是 s = 2 s=2 s=2
在这里插入图片描述

再用蓝色向量与文章的输出进行内积,然后过Softmax,可以求出结束词位置,这里 e = 3 e=3 e=3

这里需要注意,不能吃太长的序列,不然内积计算部分计算量非常大。

BERT的衍生模型

BERT的训练只是提供了Encoder端的预训练,那么如何训练一个Decoder,从而形成seq2seq 模型?
在这里插入图片描述

如上图所示就是将输入做一些破坏 变形,期待模型仍然能够复现输出未破坏的输入。

由于对输入的处理不一样,有很多方法,使用mask的方式就称为MASS
后来还衍生出:删除、乱序、旋转、填充等方法。
在这里插入图片描述

后来有人把所有方法一锅端,都用在BERT上面,就称为:BART

谷歌最后来了一个大总结,把所有方法进行了比较:
Transfer Text-to-Text Transformer (T5)(67页的paper),T5在Colossal Clean Crawled Corpus(C4)语料库(大小为7TB,单卡预处理就要一年)上进行训练。

为什么BERT能做填空之外的任务?
从下图中可以看到,BERT吃句子,突出每个token对应的向量,也就是embedding,图中红色框对应的embedding是对应【大】字的向量表示。
在这里插入图片描述

其实学过Word2Vec都知道,意思相近的token,其向量表示位置也相近:
在这里插入图片描述

对于一词多义的token而言,BERT会考虑上下文给出不同语境下的向量表示,例如我们收集很多带有【果】字的句子,丢进BERT,并查看他们之间的相似度:
在这里插入图片描述

最后用热图表示:
在这里插入图片描述

其中前面五句话中【果】与水果有关,后面五句话与手机有关。

原因在于如何根据上下文来生成对应的向量表征,BERT工作原理就是将要生成表征向量的单词盖住了,该单词的向量其实都是靠上下文的词生成的。
在这里插入图片描述

这和CBOW的原理一样,CBOW只是当时算力的限制,只用了两个Linear的模块,而BERT就有了DL的加持。
在这里插入图片描述

DNA中有四种碱基序列,分别为TACG,下面是一个用BERT根据DNA序列来预测DNA类别。
在这里插入图片描述

具体做法是先产生一个词汇表,并将碱基对应四个词汇,这4个词汇可以是随机的,对结果影响不大。

碱基
Awe
Tyou
Che
Gshe

这样就把DNA序列转化为词汇序列,然后加[CLS],丢入BERT,取[CLS]对应的向量进行Linear和Softmax,得到分类。
在这里插入图片描述

以这个思路分别在蛋白质,DNA,音乐分类任务进行实验得到以下结果:
在这里插入图片描述

这里结果的可解释性还需要进一步研究。

Multi-lingual BERT

使用不用语言来训练BERT就称为Multi-lingual BERT。
在这里插入图片描述

训练好的BERT在跨语言的相同任务上会有很好的表现。
例如下面的实验使用了英文的SQuAD语料库和汉语的DRCD,人类的F1标准为93.3
在这里插入图片描述
说明模型找到不同语言之间的Cross-lingual Alignment
在这里插入图片描述
为了找到不同语言的信息之间的差异,决定自己train一个BERT,这里有小插曲,小数据量(200k sentences for each lang)根本训练不起来,用了1000k sentences才得到比较好的结果:
y轴是:Mean Reciprocal Rank (MRR): Higher MRR, better alignment
先得到不同语言token的向量表示:
在这里插入图片描述
然后求平均并求二者的差异:
在这里插入图片描述
然后可以通过以下的方式进行不同语言的重现:

在这里插入图片描述

GPT的野望(略)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1120920.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

sql语句数据库查询:如果当前元素已经使用过,下拉框不显示该元素该如何查询?

写宿舍管理系统,做到宿管和楼栋关系时,新增一个宿管,一个宿管管理一栋楼,如果当前楼栋已选择,那么就不能再选,如图所示: 最开始使用的是: SELECT DISTINCT b.building_num,b.TYPE,b…

Linux系统编程05

在代码中启动多个进程 使用system库函数启动多个进程 传统的进程调用就是我们在命令框里输入运行某个进程,而我们可以依靠代码,实现让一个进程取启动另一个进程 在进程运行过程我们使用命令ps -elf看到正在运行的有三个进程 system的调用过程 首先./…

Zoho Creator推出全新的Canvas布局设计器功能

自2021年Zoho CRM的UI设计工具——Canvas画布功能发布以来,受到了广泛好评,它的出现为CRM的页面布局形式提供了更多选择和可能,让CRM用户彻底告别了“单调、死板、机械”的交互页面。 8月1日,Zoho Creator也推出了全新的Canvas画…

聊一聊如何在Vue中使用事件总线( Event Bus)进行组件间通信

事件总线模式允许不同的组件之间进行通信。它要求一个中央枢纽,组件可以通过它发送和接收事件,从而使组件之间的数据交换和交互更加顺畅。本文探讨了它的使用方法,以便开发人员能够充分利用它在Vue开发中的潜力。 跨通信是应用程序中组件之间…

jmeter如何测试websocket接口?

jmeter做接口测试,很多人都是做http协议的接口,就有很多人问websocket的接口怎么测试啊? 首先,我们要明白,websocket接口是什么接口。 然后,我们怎么用jmeter测试? jmeter要测试websocket接口…

B/S医院手术麻醉临床系统:围术期的认识

手术是治疗很多疾病最有效而且绕不开的措施。而从医生和患者确定了要进行手术治疗的时候,医院相关人员就会开始围着患者团团转,在术前、术中和术后,医生会告诉患者很多事情,患者也会了解很多就诊相关知识。 一、围术期的认识 围术…

qml之动态元素类型

文章目录 动画例子 应用动画例子 缓动曲线例子 动画分组例子 嵌套动画代码 状态和转换代码 动画 QMlL使用插值的方式控制属性的更改。动画是在指定的时间内一些列属性的持续变化。 常用的动画类型元素动画:PropertyAnimation:属性值改变播放动画NumberAnimation:qr…

【快速解决】在vs2022中配置SFML图形库

目录 SFML 图形库的安装步骤如下: 1.下载 SFML 在 SFML 的官网(下载对应操作系统版本的 SFML)。​编辑 2.解压文件 将下载的压缩包解压至任意位置,得到类似如下的目录结构: 3.配置 VS 打开 Visual Studio&#xff…

Linux ————使用常用的Linux命令

(一)Linux命令的特点 在Linux系统的早期版本中,由于不支持图形用户界面,命令行成为了主要的操作手段。对于那些在文本模式和终端模式下需要查看系统状态和监控系统操作的用户,熟悉常用的Linux命令是至关重要的。以下是…

自然语言处理---Transformer机制详解之Self attention机制详解

1 Self-attention的特点 self-attention是一种通过自身和自身进行关联的attention机制, 从而得到更好的representation来表达自身. self-attention是attention机制的一种特殊情况,在self-attention中, QKV, 序列中的每个单词(token)都和该序列中的其他所有单词(to…

RDB.js:适用于 Node.js 和 Typescript 的终极对象关系映射器

RDB.js 是适用于 Node.js 和 Typescript 的终极对象关系映射器,可与 Postgres、MS SQL、MySQL、Sybase SAP 和 SQLite 等流行数据库无缝集成。无论您是使用 TypeScript 还是 JavaScript(包括 CommonJS 和 ECMAScript)构建应用程序&#xff0c…

高效MMdetection(3.1.0)环境安装和训练自己数据集教程(实现于Linux(ubuntu),可在windows尝试)

很久没用mmdetection了,作为目标检测常见的几个深度学习框架,mmdetection用的人还是很多的,其中比较吸引人的一点就是mmdetection集成了非常多的算法,对于想做实验对比和算法学习的人来说,基于这个框架可以事半功倍。因…

“暂停加息,股市低迷:242只股票创新低,比特币突破2.8万美元后看涨趋势不可挡!“

11 月1日 FOMC 会议 美联储主席杰罗姆鲍威尔周五在纽约发表讲话,毫不意外地,他采取了更加鸽派的立场,因为在不确定的世界中,美国政府的过度杠杆化和可能即将到来的经济衰退已成为共识。 根据鲍威尔对未来加息的最低限度讨论&…

Datawhale学习笔记AI +新能源:电动汽车充电站充电量预测2

在飞浆平台上成功运行出pandas-profiling啦~ 首先一键安装 pip install ydata_profiling然后演示,可以生成一个网页对数据有一个比较好的理解 import numpy as np import pandas as pd from ydata_profiling import ProfileReporttrain_power pd.read_csv(/home/…

【神印王座】半神级别的伊莱克斯,有着什么故事,他又为何会陨落?

【侵权联系删除】【文/郑尔巴金】 你知道手握日月摘星辰,世间无我这般人,如果我想我早已成神,这背后到底藏着一个什么样的故事吗?伊莱克斯一个配角,为何能让人如此痴迷?在最近的国漫场里,有两部…

Windows Server 2019 搭建FTP站点

目录 1.添加IIS及FTP服务角色 2.创建FTP账户(用户名和密码)和组 3.设置共享文件夹的权限 4.添加及设置FTP站点 5.配置FTP防火墙支持 6.配置安全组策略 7.客户端测试 踩过的坑说明: 1.添加IIS及FTP服务角色 a.选择【开始】→【服务器…

【刷题篇】反转链表

文章目录 一、206.反转链表二、92.反转链表 ||三、25. K 个一组翻转链表 一、206.反转链表 class Solution { public://使用头插//三个指针也可以ListNode* reverseList(ListNode* head) {if(headnullptr)return nullptr;ListNode* curhead;ListNode* newheadnew ListNode(0);L…

推荐一款简单好用的Bug管理软件

软件开发的速度和质量是企业成功的关键因素,然而随着软件项目的复杂性增加,Bug的管理变得越来越困难。为了解决这个问题,Zoho公司推出了一款强大的Bug管理软件,帮助企业在一个地方记录和跟踪Bug,提高修复效率。 这款名…

spring tx:advice事务配置—— tx:advice中不允许出现属性 ‘transaction-manager‘

今天在配置java事务管理时出现了一些问题。 提示:只有这几个属性 经过查询资料发现是bean的配置少了一些。 可以在xml文件顶部添加: xmlns:tx"http://www.springframework.org/schema/tx" 下面也提供一份bean文件配置的模板: &a…

MongoDB URL链接 如何设置账号密码

个人博客,求关注。。 MongoDB URL链接 如何设置账号密码 假设你的账号是root,你的密码也是root,则 mongodb://username:passwordlocalhost:27017完美,再见。