当前位置: 首页 > news >正文

机器学习(李宏毅)——BERT

一、前言

本文章作为学习2023年《李宏毅机器学习课程》的笔记,感谢台湾大学李宏毅教授的课程,respect!!!
读这篇文章必须先了解self-attention、Transformer,可参阅我其他文章。

二、大纲

  • BERT简介
  • self-supervised learning(自督导式学习)
  • BERT原理
  • BERT应用
  • BERT为啥有效?

三、BERT简介

  • BERT (Bidirectional Encoder Representations from Transformers)

  • BERT 是由 Google AI 于 2018年10月 提出的预训练语言模型,其论文《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》在 arXiv 发布,引起了 NLP 领域的巨大关注。

  • BERT 的核心思想是基于 Transformer 结构,并采用 双向(Bidirectional) 预训练机制,极大提升了自然语言理解(NLU)任务的性能。

  • 参数量对比

在这里插入图片描述

模型参数量
ELMO94M
BERT340M
GPT-21542M
Megatron8B
T511B
Turing NLG17B
GPT-3175B
Switch Transformer1.6T

四、self-supervised learning(自督导式学习)

阐述BERT前先讲一下self-supervised learning(自督导式学习)。

什么是self-supervised learning(自督导式学习)?
想必大家都知道supervised learning,通俗来讲就是有输入和对应输出的成对训练资料。
在这里插入图片描述
self-supervised 的意思则是只有输入的资料,没有对应输出的资料的情况,就用输入划拨一部分当做输出,如下图:
在这里插入图片描述
有点晦涩。
打个比喻
古诗填空题大家语文考试时候都做过吧,你要反复背诵,一会儿捂住前半句通过后半句默写前半句,一会儿捂住后半句通过前半句默写后半句,直到完全掌握。
Model比做你的大脑,输入x是完整的诗句“锄禾日当午,汗滴禾下土”,x’和x’‘就是x分出来的前半句和后半句,你大脑背诵时候就是要让你输出的答案y和x’'一样。
这就是self-supervised的精髓了,从训练资料中裂分进行训练的过程,呼应了self这个词。

五、BERT原理

哇靠,BERT就是这么干的。

1、填空题
在这里插入图片描述
说明:
上图自底向上看:

  • 黑色方块就是要填空的地方,把它遮住;
  • BERT用的结构就是Transformer Encoder,没啥好说的;
  • 遮住的部分输出的向量经过Linear和softmax得到y;
  • 利用cross entropy去minimize和遮住部分的正确答案的loss。

那至于怎么遮住的方法有两种:
1、找个特殊字符代表遮住这件事情;
2、随机找个文字作为输入;
在这里插入图片描述

2、排序题
填空题是学会了,那如果是两句诗的让你排序呢?
① “谁知盘中餐,粒粒皆辛苦”
② “锄禾日当午,汗滴禾下土”
请排序,正确答案那当然是②→① 。
你的大脑怎么知道这件事,当然是我背过知道顺序,所以Model还得知道语序。

于是有了第二招→排序。
在这里插入图片描述
输入就是多个不同句子,句子间隔用特殊字符表示。
输出很直观,就是该不该接在一块,Yes/No。

3、小结
这就是全部了!
干了填空题和排序题这两件事!
大名鼎鼎的BERT仅此而已,牛逼的是人家用的训练资料有3.3B词汇,约等于1435套四大名著。

六、BERT应用

BERT是个预训练模型,就像是个插座一样,你想用电风扇、电饭煲都行,所以说它是个基座。
例如:评论情感分析
在这里插入图片描述
基座是BERT的pretrain模型,已经会了填空和句子排序。
自定义部分插个linear、softmax适应不同任务就行。

其他的应用案例就也是这种思想,不赘述。

七、BERT为什么有效?

在这里插入图片描述
BERT知道上下文语义,同样的词在不同的语境下不同,这是能够辨别出来的,同样是“果”字在不同句子环境下输出的向量也不一样。

个人理解:
从空间角度,BERT做的我个人认为它是在进行空间归类,同样的词可以根据语境归类至不同矩阵空间,只要知道这种空间联系就能进行空间转换,一个神奇的例子就是用中英文转换:
在这里插入图片描述

八、小结

掌握BERT在做填空题和排序题这两件事情就达到基本要求了,其他的更多细节和技巧在实做中进行深入研究。

http://www.lryc.cn/news/535820.html

相关文章:

  • 新数据结构(7)——Object
  • 云计算基础
  • 利用kali linux 进行自动化渗透测试
  • 【Vue中BUG解决】npm error path git
  • GPT-4o微调SFT及强化学习DPO数据集构建
  • element-plus 解决el-dialog背后的页面滚动问题,及其内容有下拉框出现错位问题
  • MT6835 21位 磁编码器 SPI 平台无关通用驱动框架 STM32
  • vue REF 和 Reactive区别、特点、优势
  • Elastic Cloud Serverless 现已在 Microsoft Azure 上提供技术预览版
  • Spring Boot + MyBatis Field ‘xxx‘ doesn‘t have a default value 问题排查与解决
  • kafka的架构和工作原理
  • 游戏引擎学习第100天
  • 机器学习:朴素贝叶斯分类器
  • 打开Visual Studio Code的时候发现未检测到适用于linux的windows子系统,那么该问题要如何解决?
  • 力扣24题——两两交换链表中节点
  • android launcher拖动图标释放错位
  • window ssh免密码输入
  • 2024年博客之星年度评选—主题文章创作评审文章得分公布
  • vscode插件Remote - SSH使用教程
  • 自学人工智能大模型,满足7B模型的训练和微调以及推理,预算3万,如何选购电脑
  • github不翻墙就可以访问
  • 十大知识领域中涉及到的工具与技术(三)
  • 在nodejs中使用RabbitMQ(三)Routing、Topics、Headers
  • 设计模式全解(含代码实例)
  • springboot019-爬虫基于网页开发和数据抓取技术的在线新闻聚合平台的设计与实现
  • #渗透测试#批量漏洞挖掘#LiveBos UploadFile 任意文件上传漏洞
  • 【分布式架构理论3】分布式调用(1):负载均衡
  • 如何安装和运行Zonos:详细步骤指南
  • docker学习---第3步:docker实操大模型
  • 记录第一次在windows环境编译libuvc库 踩的坑