当前位置: 首页 > 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在做填空题和排序题这两件事情就达到基本要求了,其他的更多细节和技巧在实做中进行深入研究。

相关文章:

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

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

新数据结构(7)——Object

Object类是所有类的父类,在 Java 中,每个类都直接或间接地继承自Object类,也就是说所有类都是object类的子类可以使用Object里的方法。 equals()和hashCode()是Java中Object类所包含的两个关键方法,下面将介绍两个方法。 和equa…...

云计算基础

环境准备 配置虚拟机安装docker 前提安装 步骤命令效果图 安装docker-compose 前提安装 步骤效果图 安装gitea 步骤命令效果图 执行docker-compose命令浏览器初始gitea配置浏览器登录gitea创建组织创建仓库 Drone安装 步骤效果图 非自动化部署 nginx安装redis安装jdk安装…...

利用kali linux 进行自动化渗透测试

本方案旨在自动化创建渗透测试全流程 一、架构 1.智能信息收集体系 class IntelligentOSINT:def __init__(self, target):self.target targetself.intelligence_sources [OSINT_Platforms,DeepWeb_Crawlers, SocialMedia_Trackers,ML_Correlation_Engine]def advanced_col…...

【Vue中BUG解决】npm error path git

报错内容如下: 从错误信息可知,这是一个 ENOENT(No Entry,即找不到文件或目录)错误,并且与 git 相关。具体来说,npm 在尝试调用 git 时,无法找到 git 可执行文件,下面为…...

GPT-4o微调SFT及强化学习DPO数据集构建

假设,已经标注的训练数据集df包含了提示词、输入和输出三列。 构建微调SFT的数据集代码如下: data [] for x in df.values:prompt x[1]user_content x[2]assistant_content x[3]data.append({"messages": [{"role": "sys…...

element-plus 解决el-dialog背后的页面滚动问题,及其内容有下拉框出现错位问题

这个问题通常是因为 el‑dialog 默认会锁定 body 的滚动&#xff08;通过给 body 添加隐藏滚动条的样式&#xff09;&#xff0c;从而导致页面在打开对话框时跳转到顶部。解决方法是在使用 el‑dialog 时禁用锁定滚动功能。 <el-dialogv-model"dialogVisible":lo…...

MT6835 21位 磁编码器 SPI 平台无关通用驱动框架 STM32

MT6835 21位 磁编码器 SPI 平台无关通用驱动框架 STM32 1. 获取代码&#xff1a;2. 加入你的项目2.1 以 STM32 为例:2.2 以 ESP-IDF 为例: 3. 对接 API3.1 以 STM32 为例&#xff1a; 4. 更多函数说明5. 写入 EEPROM 示例 MT6835 Framework 纯C语言实现&#xff0c;跨平台&…...

vue REF 和 Reactive区别、特点、优势

REF 和 Reactive 是两种不同的编程范式。下面是它们之间的对比以及各自的优势劣势和特点&#xff1a; REF&#xff08;可变状态编程&#xff09;&#xff1a; 优势&#xff1a; 易于理解和学习&#xff1a;REF 编程模型更贴近传统的命令式编程&#xff0c;因此对于大多数开发…...

Elastic Cloud Serverless 现已在 Microsoft Azure 上提供技术预览版

作者&#xff1a;来自 Elastic Yuvi Gupta Elastic Cloud Serverless 提供了启动和扩展安全性、可观察性和搜索解决方案的最快方法 — 无需管理基础设施。 今天&#xff0c;我们很高兴地宣布 Microsoft Azure 上的 Elastic Cloud Serverless 技术预览版现已在美国东部地区推出。…...

Spring Boot + MyBatis Field ‘xxx‘ doesn‘t have a default value 问题排查与解决

目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 执行代码的时候,出现某个字段无法添加 ### Error updating database. Cause: java.sql.SQLException: Field e_f_id doesnt have a default value ### The error may exist in cn...

kafka的架构和工作原理

目录 Kafka 架构 Kafka 工作原理 Kafka 数据流 Kafka 核心特性 总结 Kafka 架构 1. 生产者(Producer) 2. 消费者(Consumer) 3. 主题(Topic) 4. 分区(Partition) 5. 副本(Replica) 6. 代理(Broker) 7. ZooKeeper(旧版本)/KRaft(新版本) Kafka 工作…...

游戏引擎学习第100天

仓库:https://gitee.com/mrxiao_com/2d_game_2 昨天的回顾 今天的工作重点是继续进行反射计算的实现。昨天&#xff0c;我们开始了反射和环境贴图的工作&#xff0c;成功地根据法线显示了反射效果。然而&#xff0c;我们还没有实现反射向量的计算&#xff0c;导致反射交点的代…...

机器学习:朴素贝叶斯分类器

贝叶斯决策论是概率框架下实施决策的基本方法,对分类任务来说,在所有相关概率都已知的理想情形下,贝叶斯决策论考虑如何基于这些概率和误判损失来选择最优的类别标记。 贝叶斯定理是贝叶斯决策论的基础&#xff0c;描述了如何根据新的证据更新先验概率&#xff0c;贝叶斯定理&…...

打开Visual Studio Code的时候发现未检测到适用于linux的windows子系统,那么该问题要如何解决?

两个月没有使用vscode编写代码&#xff0c;今天使用的时候发现了以上的问题导致我的vscode无法编写程序&#xff0c;接下来我将本人解决该问题的思路分享给大家。 首先我们要清楚WSL是适用于linux的window的子系统&#xff0c;是一个在Windows 10\11上能够运行原生Linux二进制可…...

力扣24题——两两交换链表中节点

#题目 #代码 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/ clas…...

android launcher拖动图标释放错位

由于为了设备流畅把所有动画效果设置为0.5&#xff0c;不设置为0是因为锁屏在开机时会有闪黑屏的现象。在此背景下&#xff0c;测试发现在拖动桌面图标时&#xff0c;在图标动画过程中错位时释放图标&#xff0c;则图标会留在错位的位置&#xff0c;不会自动对齐。 原因就是动…...

window ssh免密码输入

生成本地公钥 打开dos&#xff0c;使用以下命令手动生成一个公钥&#xff1a; ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (C:\Users\aero/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same pas…...

2024年博客之星年度评选—主题文章创作评审文章得分公布

博客之星活动地址&#xff1a;https://www.csdn.net/blogstar2024 创作影响力评审入围名单&#xff1a;https://blogdev.blog.csdn.net/article/details/145189549 目录 主题文章创作评审得分排名 主题文章创作说明 主题文章评选说明 创作影响力评审主题文章创作评审目前排名 博…...

vscode插件Remote - SSH使用教程

Remote - SSH 是一款非常实用的 Visual Studio Code (VSCode) 扩展插件,它允许开发者通过SSH连接到远程服务器,并像在本地一样进行代码编辑和调试。这意味着你可以直接在VS Code中打开位于远程机器上的文件夹,并利用本地安装的VS Code功能,如语法高亮、智能感知、Git集成等…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...