【LLM】预训练||两句话明白儿的底层原理

news2024/11/30 0:39:00

预训练鼻祖阶段:目前认为是Bert时期

从字面上看,预训练模型(pre-training model)是先通过一批语料进行训练模型,然后在这个初步训练好的模型基础上,再继续训练或者另作他用。这样的理解基本上是对的,预训练模型的训练和使用分别对应两个阶段:预训练阶段(pre-training)和 微调(fune-tuning)阶段。

预训练阶段一般会在超大规模的语料上,采用无监督(unsupervised)或者弱监督(weak-supervised)的方式训练模型,期望模型能够获得语言相关的知识,比如句法,语法知识等等。经过超大规模语料的”洗礼”,预训练模型往往会是一个Super模型,一方面体现在它具备足够多的语言知识,一方面是因为它的参数规模很大。

微调阶段是利用预训练好的模型,去定制化地训练某些任务,使得预训练模型”更懂”这个任务。例如,利用预训练好的模型继续训练文本分类任务,将会获得比较好的一个分类结果,直观地想,预训练模型已经懂得了语言的知识,在这些知识基础上去学习文本分类任务将会事半功倍。利用预训练模型去微调的一些任务(例如前述文本分类)被称为下游任务(down-stream)。

以BERT为例,BERT是在海量数据中进行训练的,预训练阶段包含两个任务:MLM(Masked Language Model)和NSP (Next Sentence Prediction)。前者类似”完形填空”(Cloze),在一句中扣出一个单词,然后利用这句话的其他单词去预测被扣出的这个单词;后者是给定两句话,判断这两句话在原文中是否是相邻的关系。

BERT预训练完成之后,后边可以接入多种类型的下游任务,例如文本分类,序列标注,阅读理解等等,通过在这些任务上进行微调,可以获得比较好的实验结果。

MLM和NSP看了下面两篇博客基本是能够理解大概原理了

Bert预训练-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/KK_1657654189/article/details/122204640

这篇博客图文并茂~⭐⭐⭐⭐⭐

BERT预训练的任务MLM和NSP - 知乎 (zhihu.com)icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/562352255

这篇博客讲得简洁~ ⭐⭐⭐


总结:

预测遮挡单词(MLM)是一个多分类问题
预测下一个句子(NSP)是一个二分类问题
合并任务的目标函数就是两个任务目标函数之和
采用梯度下降方法更新合并任务模型参数


一张图整明白 MLM与NSP //我自己整理的版本,知识的搬运工,hh

① 一张图明白MLM(本质多分类问题

具体过程:

假如现在我们遮挡住了cat这个单词

那么我们会用mask标记这个被遮挡的单词,紧接着它就会被embedding层标记为Xm向量,输出记为Um向量,我们知道,Transformer的映射是多对一,所以Um向量会依赖所有的X向量,也就是说它会知道整句话的内容,那么就可以用它来预测被遮挡的单词是什么,将这个Um作为特征向量送入softmax分类器输出一个概率分布p,根据这个p值来判断被遮挡的词是什么。

 

这里,我们的希望的p值是越接近mask的one-hot编码越好

我们将被遮挡单词的ont-hot向量记为e,将CrossEntropy(e,p)作为损失函数,用反向传播算出损失函数关于模型的梯度,然后作梯度下降来更新模型参数,bert预训练不需要人工标注数据,它用被遮挡的单词作为标签,可以自动生成标签,这样训练数据就可以想要多少就有多少,从而训练出一个很大的模型。

② 一张图明白NSP(本质二分类问题

一个样本的两个句子用[SEP]隔开,第一个句子的句首加上[CLS],第二个句子的句尾加上[SEP]。

样本一:[CLS] the man went to [MASK] store [SEP] he bought a gallon [MASK] milk [SEP],

标签:IsNext。

样本二:[CLS] the man [MASK] to the store [SEP] penguin [MASK] are flight ##less birds [SEP],

标签:NotNext。

向量C虽然在CLS的位置上,但它包含的是输入的两句话的全部信息,把C作为特征向量输入分类器Binary,得到一个介于0-1之间的值f,其中,1是代表两句话true,0代表两句话毫无关联,依旧用将CrossEntropy(e,f)作为损失函数,用反向传播算出损失函数关于模型的梯度,然后作梯度下降来更新模型参数。

这样作预训练是因为:

相邻的两句话通常有关联,这样作二分类可以强化这种关联,让embedding层包含这种关联,而且encoder层中的self-attention层的作用恰好就是找相关性

bert将上述所讲的这两种任务结合起来训练Transformer,假如有两个单词被遮挡,就需要三个任务,也就是说三个损失函数,第一个损失函数是二分类(判断标签是true还是false),第二三个损失函数就是预测这两个单词,目标函数就是三个损失函数的加和,用反向传播算出损失函数关于模型的梯度,然后作梯度下降来更新模型参数


Reference //这些链接最多花1h...,值得值得

语言模型BERT理解_bert语义理解_AI 菌的博客-CSDN博客

NLP预训练系列之一:预训练发展概述(上) - 知乎 (zhihu.com)

理解NLP中的屏蔽语言模型(MLM)和因果语言模型(CLM)_mlm模型-CSDN客

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

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

相关文章

学习笔记|两组率卡方检验和Fisher确切法|适用条件|规范表达|《小白爱上SPSS》课程:SPSS第十五讲 | 两组率卡方检验和Fisher确切法怎么做?

目录 学习目的软件版本原始文档两组率卡方检验和Fisher确切法适用条件简述一、实战案例读数据: 二、统计策略三、SPSS操作四、结果解读第一,分组统计描述结果第二,卡方检验。 五、规范报告1、规范表格2、规范文字 学习目的 SPSS第十五讲 | 两…

Scala语言用Selenium库写一个爬虫模版

首先,我将使用Scala编写一个使用Selenium库下载yuanfudao内容的下载器程序。 然后我们需要在项目的build.sbt文件中添加selenium的依赖项。以下是添加Selenium依赖项的代码: libraryDependencies "org.openqa.selenium" % "selenium-ja…

Web APIs——节点操作

1、DOM节点 DOM节点:DOM树里每一个内容都称之为节点 节点类型: 元素节点 所有的标签 比如body、div属性节点 所有的属性 比如 href文本节点 所有的文本其他 2、查找节点 关闭二维码案例: 点击关闭按钮,关闭的是二维码的盒子&#…

Maven系列第10篇:设计你自己的maven插件【高手必备】

Maven默认提供了很多插件,功能也非常强大,但是如果我们想自己开发一些插件,比如自定义一款自动打包并且发布到服务器然后重启服务器的插件;或者定义一款插件自动打包自动运行打包好的构件。各种好玩的东西只要你能想到&#xff0c…

Python中表单的处理

目录 1. 表单的基本概念 2. 使用Flask处理表单 3. 表单验证 4. 数据存储 5. 使用数据库存储表单数据 6. 安全性考虑 总结 当我们谈论Web开发时,表单处理是一个不可避免的话题。表单是Web应用程序中用户输入数据的界面,而处理这些数据则是后端开发…

从零开始制作一个割草机器人

项目背景 为啥要做一个割草机器人呢?(个人因素:我梦想就是做一款人形机器人保护人类,解放人类) 基础准备:我们公司本身做过高精度,基于高精度的技术扩展到农机自动化驾驶。目前可以实现AB线拖…

【qemu逃逸】BlizzardCTF2017-strng

前言 虚拟机用户名:ubuntu 密码:passw0rd 一道入门题,看下启动脚本: ./qemu-system-x86_64 \-m 1G \-device strng \-hda my-disk.img \-hdb my-seed.img \-nographic \-L pc-bios/ \-enable-kvm \-device e1000,netdevnet0 \…

微信自动回复有什么好处?怎么设置?

微信自动回复有什么好处? 首先,它可以帮助我们节省时间和精力。当我们无法立即回复消息时,自动回复可以及时告知对方我们的状况,避免对方的焦虑和不便。 其次,自动回复可以增强沟通效率。无论是工作还是个人生活中&a…

sqlsugar查询数据库下的所有表,批量修改表名字

查询数据库中的所有表 using SqlSugar;namespace 批量修改数据库表名 {internal class Program{static void Main(string[] args){SqlSugarClient sqlSugarClient new SqlSugarClient(new ConnectionConfig(){ConnectionString "Data Source(localdb)\\MSSQLLocalDB;In…

SSD-1B:Segmind的加速稳定扩散模型

Segmind 稳定扩散模型 (SSD-1B) 是稳定扩散 XL (SDXL) 缩小 50% 的精简版本,可提供 60% 的加速,同时保持高质量的文本到图像生成功能。 它已经过各种数据集的训练,包括 Grit 和 Midjourney scrap 数据,以增强其根据文本提示创建各…

Find My卡片|苹果Find My技术与卡片结合,智能防丢,全球定位

钱包是许多人正常生活必备的物品,如果丢失钱包,不仅是钱的损失,还因为丢失了证件和银行卡,导致我们需要话费大量时间去补办,造成生活的不便。如今防丢卡片的出现将减少这类问题的发生。 在智能化加持下,防丢…

Python库Requests的爬虫程序爬取视频通用模版

这是一个使用Python库Requests的爬虫程序,用于爬取网上的视频。代码必须使用以下代码:爬虫IP主机为duoip,爬虫IP端口为8000。 import requests proxy_host "duoip" proxy_port 8000 url "目标网站" headers {"U…

BI数据可视化报表开发教程,手把手教你做报表

在奥威BI数据可视化平台上,BI数据可视化报表有两种做法。一种是使用报表模板,极速开发报表;一种是从零开始一步一步,个性化开发报表。这两种报表开发在效率上会拉开一定距离,操作繁琐程度不一,但总体来看都…

DG双击后没有反应的解决办法

在Win 97 x64 上安装 DG 相关文件后使用正常, 但是换了一台电脑,注册运行使用后一次之后,再双击 图标没有反应,现将处理方法介绍如下: 【方法1:更名法】 找到“当前用户”目录,可以看到系统隐…

功率放大器功能及用途介绍

功率放大器是一种用于将输入信号的电压放大到更高水平的电子设备。它在各个领域中发挥着重要作用,包括音频、通信、测量和控制等应用。下面Aigtek安泰电子将详细介绍功率放大器的功能及其主要用途。 图:ATA-3000系列功率放大器 功率放大器的功能介绍&…

产品运营是做什么的?新手运营必读篇

产品运营是产品取得成功,实现产品的商业目标的重要支撑。产品运营岗位的专业能力要求庞杂,在岗或准备入坑人员应该如何巩固自身的知识/技能树? 本文将介绍产品运营相关的知识,希望能帮助你找到提升竞争力的思路! 产品…

在分布式系统中实现数据一致性:发件箱模式

在分布式系统的错综复杂的编织中,尤其是在微服务架构内,可靠的消息传递和数据一致性的挑战无处不在且要求极高。发件箱模式,常被引用于微服务的独特领域内,从一个关键场景中浮现出来,确保本地数据库事务的原子性和发布…

vue+canvas实现横跨整个页面的动态的波浪线(贝塞尔曲线)

本来写这个特效 我打算用css实现的,结果是一波三折,我太难了,最终没能用css实现,转战了canvas来实现。来吧先看效果图 当然这个图的波浪高度、频率、位置、速度都是可调的,请根据自己的需求调整,如果你讲波浪什么的调大一下 还有有摆动的效果哦。 以下是完整代码 <…

SAP 获取GOS附件清单及URL数据方法

很久没有更新了&#xff0c;断更了快两个月了&#xff0c;最近准备软考考试&#xff0c;刚考完不知道这次能不能通过 回归正题 SAP中很多业务中都是可以上传附件或者是上传URL的路径的&#xff0c;上传附件长时间会占用SAP的空间&#xff0c;使用GOS大多数都是采用上传URL的方式…

【好书推荐】AI时代架构师修炼之道:ChatGPT让架构师插上翅膀

目录 前言 ChatGPT对架构师工作的帮助 快速理解和分析需求 提供代码建议和解决方案 辅助系统设计和优化 提高团队协作效率 如何使用ChatGPT提高架构师工作效率 了解用户需求和分析问题 编码实践和问题解决 系统设计和优化建议 团队协作和沟通效率提升 知识管理和文…