机器学习:Bert and its family

在这里插入图片描述

Bert

在这里插入图片描述
先用无监督的语料去训练通用模型,然后再针对小任务进行专项训练学习。

在这里插入图片描述

  • ELMo
  • Bert
  • ERNIE
  • Grover
  • Bert&PALS

Outline

在这里插入图片描述

Pre-train Model

在这里插入图片描述

首先介绍预训练模型,预训练模型的作用是将一些token表示成一个vector

在这里插入图片描述
比如:

  • Word2vec
  • Glove

但是对于英文,有太多的英文单词,这个时候应该对单个字符进行编码:

  • FastText
    在这里插入图片描述

对于中文,可以对部首偏旁,或者把中文字当做图片送人网络中得到输出:
在这里插入图片描述
上述方法的问题不会考虑每个句子意思中相同字会有不同的意思,产生相同的token:
在这里插入图片描述
contextualized word embedding
在这里插入图片描述
类似于sequence2sequence模型的encoder一样。
在这里插入图片描述
在这里插入图片描述
同样的token,给出不一样的embedding,上述句子都有苹果两字。

  • Bigger Model在这里插入图片描述
  • Smaller Model
    在这里插入图片描述
    重点关注ALBERT,将模型变小的技术:
    在这里插入图片描述
    网络架构设计:
    在这里插入图片描述
    让模型能读很长的内容,不仅是一篇文章,有可能是一本书。
  • Transformer-XL
  • Reformer
  • Longformer

self-attention的计算复杂度是 O ( n 2 ) O(n^2) O(n2)

How to fine-tune

如何进行预训练
在这里插入图片描述
在这里插入图片描述

  • 输入:
    一个句子还是两个句子,[sep]进行分割。
    在这里插入图片描述
  • 输出部分:
    输出一个class,加入一个[cls],产生跟整个句子有关的embedding
    在这里插入图片描述
    如果没有cls,就是把所有的embedding合起来送入模型,得到一个输出。
    在这里插入图片描述
    第二种就是给每个token一个class,相当于每个embedding一个class
    在这里插入图片描述
    Extraction-based QA
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    General Sequence
    如何用在生成文本呢?
    在这里插入图片描述
    上述结构encoder得不到好的使用

在这里插入图片描述
将预训练模型当做encoder使用,每次产生一个word后,送入模型继续生成,直到产生eos结束符。

在这里插入图片描述
微调有两种方法:

  • 第一种:预训练模型不动,对其产生的embedding 针对具体任务进行训练,只对上层模型微调;
  • 第二种:预训练模型和具体任务模型联合到一起训练,消耗会大一些;
    第二种方法会比对第一种方法获得的效果要更好一点,但是训练整个模型会遇到的一些问题:
    在这里插入图片描述
  • 训练完了之后预训练模型也发生了改变,相当于每个任务都会有一个不同的预训练模型,每个模型都比较大,这样非常的浪费。

针对上述问题,解决方法:

  • Adapter:只训练少量的参数结构APT

在这里插入图片描述
在这里插入图片描述
fine-tune的时候只会调APT结构的参数,但是是插入到transformer结构中,加深了网络:
在这里插入图片描述

  • Weighted Features
    综合每一层的embedding,送到具体的任务中学习,权重参数可以学出来。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    模型的loss,泛化能力。start-point到end-point,两点间距离越宽,凹的越浅说明泛化能力越一般;两点间距离越近,凹得越深说明泛化能力越好。

How to pre-train

如何进行预训练:

在这里插入图片描述

翻译任务

  • Context Vector(Cove)
    在这里插入图片描述
    把输入的句子A送入encoder,然后decoder得到句子B,需要大量的pair对data

Self-supervised Learning

在这里插入图片描述
self-supervised的input和output是自己产生出来的。

Predict Next Token

给定输入,预测下一个token

在这里插入图片描述
有了w1预测w2,用w1, w2预测w3, 然后用w1,w2,w3预测w4, 但是不能用右边的数据用来预测左边的数据:
在这里插入图片描述
在这里插入图片描述
基础架构网络使用的是LSTM:

  • LM
  • ELMo
  • ULMFiT

后续一些算法将LSTM换成Self-attention
在这里插入图片描述

  • GPT
  • Megatron
  • Turing NLG

注意:控制Attention的范围

在这里插入图片描述
可以用来生成文章: talktotransformer.com

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

在这里插入图片描述
如果只考虑左边的出现关系,为什么不考虑右边文本呢?

Predict Next Token-Bidrectional

左右两边产生的context,二者联合起来作为最终表示:
在这里插入图片描述

但是问题是左边只能看到左边的,无法看到右边的结束,右边只能看到右边的,无法看到左边的开始。

Masking input

在这里插入图片描述

随机的盖住某个词,是看到了完整的句子才来预测这个词是什么。
这种思想往前推,跟以前的cbow非常像:
在这里插入图片描述
Bert与cbow的区别就是左右两边的长度可以无限,而不是有个window窗口长度。

随机mask是否够好呢?有几种mask方法:

  • wwm
  • ERNIE
  • SpanBert
  • SBO
    在这里插入图片描述
    盖住一整个句子或者盖住好几个词。或者先把Entity找出来,然后把这些词盖住:
    在这里插入图片描述
    在这里插入图片描述
    盖住的长度按照上述图的出现概率。
    在这里插入图片描述
    盖住的左右两边的embedding来预测,以及输入的index来恢复中间的哪个词。
    SBO的设计期待左右两边的token embedding能够包含左右两边的embeeding信息。

XLNet

结构不是使用的Transformer,而是使用Transformer-XL

在这里插入图片描述

随机把顺序打乱,用各式各样不同的信息训练一个token。

Bert的训练语料比较规整:
在这里插入图片描述
Bert不擅长做Generative任务,因为bert训练的时候给的是整个句子,而generative只是给一部分,然后由左得右预测下一个token
在这里插入图片描述

MASS/BART

在这里插入图片描述
要对w1,w2, w3,w4进行一些破坏,不然model学不到任何东西,破坏的方法:
在这里插入图片描述
在这里插入图片描述

  • mask(随机mask)
  • delete(直接删掉)
  • permutation(打乱)
  • rotation(改变起始位置)
  • Text Infilling (插入一个别的误导,少掉一个mask)

结果是:
在这里插入图片描述

UniLM

在这里插入图片描述
在这里插入图片描述
UniLM进行多项训练

Replace or Not

  • ELECTRA,避开了需要训练和生成的东西,判断哪个位置是否被置换,训练非常简单,另外每个输出都被用到。
    *在这里插入图片描述
    置换的词不好弄,如果是随便置换肯定很容易知道。所以有了下面的结果,用一个小的bert预测的结果作为替换的结果,小的bert效果不要太好,不然预测的结果跟真实的一样,得不到替换的效果,因为替换的结果是一模一样的。
    在这里插入图片描述
    在这里插入图片描述
    只需要四分之一的计算量,就能达到XLNet的效果。

Sentence Level

在这里插入图片描述
需要整个句子的embedding。
在这里插入图片描述

  • 使用skip thought,如果两个句子的预测结果比较像,那么两个输入句子也比较像。
  • quick thought,如果两个句子的输出是相连的,让相似的句子距离越近越好。
    上述方法避开做生成的任务。

原始的Bert其实还有一项任务NSP,预测两个句子是否是相接的还是不相接的。两个句子中间用sep符号分割。
在这里插入图片描述

  • nsp:效果表现不好
  • Roberta:效果一般
  • sop: 正向是相接,反向是不相接,被用在ALBERT
  • structBert:Alice,
    在这里插入图片描述

T5 Comparison

在这里插入图片描述
5个T就叫T5
4个C就叫C4

ERNIE

希望在train的时候加入knowledge

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


Multi-lingual BERT

多语言BERT
在这里插入图片描述

在这里插入图片描述
使用多种语言训练一个Bert模型
在这里插入图片描述
104种语言进行训练,可以做到Zero-shot的阅读理解。
在这里插入图片描述
在英文语料上进行训练,但在中文的QA任务上,效果还不错

在这里插入图片描述
在这里插入图片描述
中文翻译成英文,然后进行英文训练,发现结果并没有直接用中文训练的模型。
在这里插入图片描述

  • NER
  • Pire:词性标注

NER任务和词性标注任务都符合上述规律,用一种语言进行训练,然后在另外一种语音上进行任务处理。

是不是可以用来处理甲骨文?
在这里插入图片描述

Cross-lingual Alignment

中文的兔子embedding与英文的兔子embedding是比较接近的,模型可能去掉了语音的特性,而只考虑意思。

在这里插入图片描述
在这里插入图片描述
year排在第一名,month排在第三名,对应的分数是rank的倒数

在这里插入图片描述
在这里插入图片描述
资料量要非常大才能有比较好的结果,从BERT200k和BERT1000k中结果可以看到。
对传统的算法GloVe和Word2Vec也进行同样的实验,发现Bert效果还是要优于之前的算法。
在这里插入图片描述

How alinment happens

在这里插入图片描述
在这里插入图片描述
用fake-english代替真的english,然后去训练,跨语言的能力不需要中介语音的存在。

在这里插入图片描述
bert是知道语言的信息的,但是不是很在意语言类型。

在这里插入图片描述
每串文字代表一种语言,语言还是有一些差距的。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
黄色是英文编码,蓝色是中文编码,二者融合起来,通过α进行控制:
在这里插入图片描述

在英文上进行fine-tune,然后在中文上进行测试,让embedding更像中文,在测试阶段,加上蓝色向量会提升效果。

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

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

相关文章

微服务契约测试框架-Pact

契约测试 契约测试的思想就是将原本的 Consumer 与 Provider 间同步的集成测试,通过契约进行解耦,变成 Consumer 与 Provider 端两个各自独立的、异步的单元测试。 契约测试的优点: 契约测试与单元测试以及其它测试之间没有重复&#xff0c…

Google Earth Engine谷歌地球引擎提取多波段长期反射率数据后绘制折线图并导出为Excel

本文介绍在谷歌地球引擎GEE中,提取多年遥感影像多个不同波段的反射率数据,在GEE内绘制各波段的长时间序列走势曲线图,并将各波段的反射率数据与其对应的成像日期一起导出为.csv文件的方法。 本文是谷歌地球引擎(Google Earth Engi…

图为科技T501赋能工业机器人 革新传统工业流程

工业机器人已成为一个国家制造技术与科技水平的重要衡量标准,在2019年,中国工业机器人的组装量与产量均位居了全球首位。 当前,工业机器人被广泛用于电子、物流、化工等多个领域之中,是一种通过电子科技和机械关节制作出来的智能机…

浏览器端代理proxy 解决跨域

一.环境:使用expresshttp-proxy-middleware 直接上代码 // include dependencies const express require( express);//node内置的path模块导入 const path require("path")const { createProxyMiddleware } require( http-proxy-middleware); // 需要代理后端服…

行为型设计模式之策略模式【设计模式系列】

系列文章目录 C技能系列 Linux通信架构系列 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 设计模式系列 期待你的关注哦!!! 现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everythi…

【万字长文】SpringBoot整合SpringSecurity+JWT+Redis完整教程(提供Gitee源码)

前言:最近在学习SpringSecurity的过程中,参考了很多网上的教程,同时也参考了一些目前主流的开源框架,于是结合自己的思路写了一个SpringBoot整合SpringSecurityJWTRedis完整的项目,从0到1写完感觉还是收获到不少的&…

K8s Service网络详解(二)

K8s Service网络详解(二) Kube Proxy调度模式Kube-proxy IptablesKube-proxy IPVS Service SelectorPod DNS种常见的 DNS 服务Kube-DNSCoreDNSCorefile 配置 DNS 记录DNS 记录 ServiceDNS 记录 PodDNS 配置策略 Pod 的主机名设置优先级 Ingress Kube Pro…

Appium+python自动化(二十五)-获取控件ID(超详解)

简介 在前边的第二十二篇文章里,已经分享了通过获取控件的坐标点来获取点击事件的所需要的点击位置,那么还有没有其他方法来获取控件点击事件所需要的点击位置呢?答案是:Yes!因为在不同的大小屏幕的手机上获取控件的坐…

ModStartCMS v6.9.0 后台多标签改进,主题色自动切换修复

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议,免费且不限制商业使用。 功能特性 丰富的模块市…

Redis学习2--使用java操作Redis

1、java操作Redis库的比较 Redis有各种语言的客户端可以来操作redis数据库,其中java语言主要有Jedis与lettuce ,Spring Data Redis封装了上边两个客户端,优缺点如下: 2、使用Jedis操作Redis Jedis使用的基本步骤: 引…

企业服务器数据库被360后缀勒索病毒攻击后采取的措施

近期,360后缀勒索病毒的攻击事件频发,造成很多企业的服务器数据库遭受严重损失。360后缀勒索病毒是Beijingcrypt勒索家族中的一种病毒,该病毒的加密形式较为复杂,目前网络上没有解密工具,只有通过专业的技术人员对其进…

原生html—摆脱ps、excel 在线绘制财务表格加水印(html绘制表格js加水印)

文章目录 ⭐前言⭐html标签💖table表格的属性💖实现财务报表 ⭐结束 ⭐前言 大家好,我是yma16,本文分享原生html——绘制表格报表加水印。 背景:解决没有ps的情况下使用前端html制作表格报表。 html介绍 HTML&#xf…

【Android知识笔记】UI体系(一)

Activity的显示原理 setContentView 首先开发者Activity的onCreate方法中通常调用的setContentView会委托给Window的setContentView方法: 接下来看Window的创建过程: 可见Window的实现类是PhoneWindow,而PhoneWindow是在Activity创建过程中执行attach Context的时候创建的…

Kotlin多平台最佳架构指南

在这篇文章中,我们将对 Kotlin 多平台移动端的最佳架构进行深入探讨。在2023年,作为 Android 开发者,我们会倾向于采用 MVVM 架构,因为它简单、灵活且易于测试。而作为 iOS 开发者,我们可能会选择 MVC、Viper 等架构。…

QT基于TCP协议实现数据传输以及波形绘制

这个玩意我做了两个,一个是安卓app,一个是Windows程序。代码并非全部都是由我从无到有实现,只是实现了我想要的功能。多亏了巨人的肩膀,开源万岁!!! 我把程序放到GitHub上,需要的可…

Vue项目如何生成树形目录结构

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、有兴趣的可以关注一手。 前言 项目的目录结构清晰、可以帮助我们更快理顺项目的整体构成。在写文档之类的时候也比较方便。生成树形目录的方式有多种,我这里简单介绍其中一种较为简单的实现 过…

学习数学助手Schooltech Math Resource Studio 7.0 Crack

数学资源工作室 数学工作表生成器:快速轻松地创建数学工作表 使用易于使用的数学工作表生成器软件创建可打印的数学练习工作表。通过练习、谜题、问题等提高数学技能。 瞄准学习需求并激励学生 Math Resource Studio 是个性化数学教学的理想软件解决方案&#xff0c…

【SDOF振荡器的非线性-非弹性多轴时间响应分析】用于SDOF振荡器非线性非弹性时程分析的鲁棒性分析研究(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 💥1 概述 进行SDOF振荡器的非线性非弹性时程分析的鲁棒性分析研究,旨在探究该方法对不同系统参数和分析条件变化的稳定性和可靠性。以下是一…

几百本常用计算机开发语言电子书链接

GitHub - XiangLinPro/IT_book: 本项目收藏这些年来看过或者听过的一些不错的常用的上千本书籍,没准你想找的书就在这里呢,包含了互联网行业大多数书籍和面试经验题目等等。有人工智能系列(常用深度学习框架TensorFlow、pytorch、keras。NLP、…

用HTML写一个简单的静态购物网站

实现代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>购物网站</title> &l…