第十八周:机器学习

目录

摘要

abstract

一、BERT

1、应用场景

任务一:单句子分类任务 

任务二:单句子标注任务

任务三:句子对分类任务

任务四:问答系统

2、pre-train model

3、fine tune微调 

input&output 

how to fine tune

二、总结 


摘要

本周学习了BERT的基本使用场景、预训练模型的结构及其改进,以及微调的输入输出和微调的方式。在学习Bert的过程中,对seq2seq model进行了复习。Bert主要应用在GLUE任务中,它可以完成单句子分类任务、单句子标注任务、句子对分类任务和问答任务,这四种下游任务是基于不同的输入输出,其中不同任务的task specific layer也是不相同的。 

abstract

This week, we have learned the basic usage scenarios of BERT, the structure of the pre-trained model and its improvement, as well as the inputs and outputs of fine-tuning and the ways of fine-tuning. In the process of learning Bert, the seq2seq model was reviewed.Bert is mainly used in GLUE tasks, which can accomplish single-sentence classification tasks, single-sentence labeling tasks, sentence-pair classification tasks, and question-and-answer tasks, which are four downstream tasks based on different inputs and outputs, where the task-specific layer of the different tasks are also different .  

一、BERT

1、应用场景

GLUE任务

其中各个任务的得分结果如下:

 

如何在GLUE中使用BERT?

任务一:单句子分类任务 

 

在上图任务中,BERT属于是一种semi-supervision的学习模型 

典型的任务有文本二分类、情感分析等

举例:Bert进行文本分类

# 使用bert进行文本分类
from transformers import BertForSequenceClassification, BertTokenizer
import torchtokenizer = BertTokenizer.from_pretrained('E:\/bert\/bert-base-uncased')
model = BertForSequenceClassification.from_pretrained('E:\/bert\/bert-base-uncased')text = "This movie was amazing!"
inputs = tokenizer(text, return_tensors='pt')
outputs = model(**inputs)
predictions = torch.argmax(outputs.logits, dim=1)
print(predictions)

 预测结果如下:

任务二:单句子标注任务

输入一个句子,输出为一个长度相同的句子,类似于self-attention中的任务。输入的句子在bert中被分割为一个个token,每一个token都有一个对应的向量,每个向量分别去做对应的linear transform,最终每个词都得到相应的类别(也就是词性)。

需要有一部分已标注的资料,在bert中的pre-train中设定好了一组较好的初始化参数。 

典型的任务有词性标注、实体识别

举例:使用Bert标记器对文本进行标记 

# 使用BERT标记器对文本进行标记
from transformers import BertTokenizertokenizer = BertTokenizer.from_pretrained('E:\/bert\/bert-base-uncased')
text = "BERT preprocessing is essential."
tokens = tokenizer.tokenize(text)print(tokens)

标记结果如下:

任务三:句子对分类任务

输入两个句子,输出一个类别,一般都是判断给定两个句子的相似程度来得到对立、赞成、中立的态度。 输入两个分隔开来的句子,在bert中处理之后会生成一组长度相同的向量,我们只取[CLS]中的向量来进行linear transform,最终得到一个类别(两个句子是否是矛盾对立的)

典型的任务有评论立场分析、自然语言推断

任务四:问答系统

  

输入被[SEP]分隔开的问题和文章,有两个随机初始化的向量。首先,将橙色的向量与输入文章的bert处理后的向量进行inner product,最后经过softmax函数后比较大小,得到的最大值的向量位置记为初始位置s;接着,相同操作,将蓝色的向量与输入文章的bert处理后的向量进行inner product,最后经过softmax函数后比较大小,得到的最大值的向量位置记为长度e。

简而言之,就是答案在文章当中,然后通过确定其起始位置和答案长度来确定输出。

典型的任务有QA 

2、pre-train model

pre-train model:将每一个输入的token转化为embedding的向量 

在之前的预训练模型中,一个输入对应一个vector(提前已经设定好了不同输入所确定的vector)

问题:token转化为vector的时候没办法结合上下文考虑

解决:将pre-train model看作是encoder

 

3、fine tune微调 

fine-tune:在pre-train model的基础上,加一个task-specific layer,这样的话该模型可以用于不同的NLP的任务上。 

input&output 

上面展示了NLP tasks的基本要求,下面给出其输入输出的形式 

输入要么是一个长句子,分析其情感立场等;要么是多个需要分隔开的句子,QA任务或者是蕴含任务等,各个句子之间需要[SEP]分隔。 

 

输出的情况较多,比如直接经过task specific layer得到一个类别(情感分析),或者在bert中输出的每个token都得到一个类别(词性标注),或者QA任务,得到的输出是来自输入的一部分,又或者是一些看作为seq2seq的任务。

将上述NLP的任务看成是seq2seq model,分为encoder和decoder两部分,如下:

将输入序列放入Bert中去,最终经过task specific layer得到输出。其中Bert model相当于encoder,task specific layer相当于decoder。

问题:task specific layer没有经过pre-train,所以最终效果可能不好

解决:如下所示

输入序列在经过Bert model之后分为了一个个token,每个token经过各自的task specific layer得到的token会重新作为输入,这样的话,task specific layer也就等同于有了pre-train一样(Bert model中有pre-train)。

how to fine tune

问题:如果fine tune整个model,那么每个任务不同会导致训练完后的model不一样。每个model的参数不同且很多,存储不易

解决:局部微调,仅仅fine tune adaptor 

 

在pre-train model中引入adaptor,这样的话,model大体上是相同的,只有Apt一小部分是不同的。所以改进后的参数量的存储变少了很多。 

 

现在很多预训练模型中都是使用了Transformer的结构,研究者在Transformer结构中插入Adaptor层,通过训练微调Adaptor,而不去修改其他已经训练好的参数。

我们在BERT中,是把模型最后一层的输出feature作为了各个token的embedding,但不同层学到的是不同的feature,不同的任务可能需要不同的侧重,所以可以对不同层的feature进行加权。如下所示,考虑到了各层的输出feature:

参考文章:一文彻底搞懂Bert(代码+手撕)-CSDN博客

二、总结 

本周主要对bert的应用场景进行了分析,以及预训练模型个微调技术。下周继续学习bert,并且加入代码实践。 

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

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

相关文章

从0开始搭建一个生产级SpringBoot2.0.X项目(十二)SpringBoot接口SpringSecurity JWT鉴权

前言 最近有个想法想整理一个内容比较完整springboot项目初始化Demo。 SpringBoot接口权限控制 SpringSecurity 接口使用 Bearer token类型 JWT 鉴权 一、pom文件新增依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>s…

LightRAG成功跑通:Ollama+Qwen2.5+bge-large-zh-v1.5

目录 LightRAG跑通1.安装环境2.示例跑通&#xff1a;&#xff08;1&#xff09;准备样例数据&#xff08;2&#xff09;源码修改&#xff08;3&#xff09;中文示例跑通 4.Neo4j可视化图谱5.问题解决&#xff1a;跑通后感受&#xff1a; LightRAG跑通 继GraphRAG之后&#xff…

qt QMovie详解

1、概述 QMovie 是 Qt 框架中用于处理动画文件的类。它支持多种动画格式&#xff0c;包括 GIF 和一些常见的视频格式&#xff08;尽管对视频格式的支持依赖于底层平台&#xff09;。QMovie 类主要用于在 QLabel 或 QGraphicsView 等控件中显示动画。通过加载动画文件&#xff…

二叉树的练习题(上)

1. 前序遍历 题目解析: 题目: . - 力扣&#xff08;LeetCode&#xff09; 解题步骤: 题目给定的返回值是一个链表,也就是我们每一次前序遍历都要把遍历结果保存到顺序表里面进行返回. 前序遍历: 根结点 -> 左子树 -> 右子树 我们的遍历过程如图 就相当于所有的结点 …

LabVIEW高效数据采集与信号处理系统

开发一个基于LabVIEW软件的数据采集与信号处理系统&#xff0c;实现高效的数据采集和信号处理。系统通过优化数据流处理过程和直观的图形化界面&#xff0c;提高了操作效率和数据准确性&#xff0c;特别适合工业和科研应用。 ​ 项目背景 在现代工业和科研领域&#xff0c;数…

ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源 或者超时失效

数据治理过程中&#xff0c;有字段长度不够&#xff0c;扩展字段&#xff0c;报&#xff1a;ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源 或者超时失效 ALTER TABLE LAPD_RSJ_CXJMYLBXCBXX MODIFY HKXZ VARCHAR2(10);错误表示当前会话在试图访问的资源&#xff08;通常…

上海亚商投顾:创业板指冲高回落 全市场成交超2.5万亿

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 市场全天冲高回落&#xff0c;创业板指尾盘跌超1%&#xff0c;北证50一度涨超7%&#xff0c;盘中再创历史新高…

多维视角下的知识管理:Spring Boot应用

2 开发技术 2.1 VUE框架 Vue.js&#xff08;读音 /vjuː/, 类似于 view&#xff09; 是一套构建用户界面的渐进式框架。 Vue 只关注视图层&#xff0c; 采用自底向上增量开发的设计。 Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。 2.2 Mysql数据库 …

x-cmd pkg | gum - 轻松构建美观实用的终端界面,解锁命令行新玩法

目录 简介快速上手安装使用 功能特点竞品和相关作品进一步探索 简介 gum 是由 Charm 团队于 2022 年使用 Go 开发的终端 UI 组件工具箱&#xff0c;能帮用户在终端中快速构建交互式 TUI 界面&#xff08;如表单、菜单、提示框等&#xff09;&#xff0c;简化命令行应用程序的开…

前端学习Day13 CSS盒子的定位(固定定位篇“附练习”)

一、固定定位 固定定位 &#xff08;position:fixed&#xff09;其实是绝对定位的子类别&#xff0c;一个设置了 position:fixed 的元素是相对于视窗固定的&#xff0c;就算页面文档发生了滚动&#xff0c;它也会一直待在相同的地方。 ⚠️&#xff1a;固定定位会脱离文档流。…

基于python多准则决策分析的汽车推荐算法设计与实现

摘要 随着汽车市场的快速发展和消费者需求的多样化&#xff0c;汽车选择变得愈加复杂。为了帮助消费者在众多汽车选项中做出明智的决策&#xff0c;基于多准则决策分析&#xff08;MCDA&#xff09;的汽车推荐算法应运而生。本研究旨在设计和实现一种基于 Python 的汽车推荐系…

基于SpringBoot的“校园交友网站”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“校园交友网站”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 网站首页界面图 用户注册界面图 线下活动界面图 交…

SD-WAN技术怎样与运营商网络无缝集成

随着企业对网络性能和灵活性的要求不断提升&#xff0c;SD-WAN&#xff08;软件定义广域网&#xff09;技术成为优化企业网络架构的重要解决方案。SD-WAN不仅能提升网络的灵活性和可管理性&#xff0c;还能提供更高的性能。要实现SD-WAN的高效部署&#xff0c;必须与运营商的网…

Node.js——fs模块-路径补充说明

1、相对路径&#xff1a; ./座右铭.txt 当前目录下的座右铭.txt座右铭.txt 等效于上面的写法../座右铭.txt 当前目录的上一级目录中的座右铭.txt 2、绝对路径 D&#xff1a;/Program File Windows系统下的绝对路径/usr/bin Linux系统…

SparkSQL的自定义函数

目录 一、关于自定义函数 1、自定义函数分为&#xff1a; 2、pyspark中自定义函数的三种写法&#xff1a; 二、 regeister方式自定义函数&#xff08;SQL和DSL中使用&#xff09; 三、udf注册方式定义UDF函数&#xff08;DSL中使用&#xff09; 一、关于自定义函数 1、自…

实践决定认识

“不登高山&#xff0c;不知天之高也;不临深溪&#xff0c;不知地之厚也。”这句话说明: A.人的意识具有创造性【无关题义】 B.人的认识是独立于实践之外的【错误&#xff0c;实践决定认识】 C.实践在认识过程中具有决定作用【正确】 D.人的一切知识都是从直接经验中获得的 这里…

十一,D O M 获取

1、DOM初相识 1.1、DOM简介 文档对象模型&#xff08;Document Object Model &#xff0c;简称DOM&#xff09;&#xff0c;它就是一些系列编程接口&#xff0c;有了这些接口&#xff0c;就可以改变页面内容&#xff0c;结构和样式 名称描述DOM文档对象模型(Document Object…

SpringBoot04-SpringBoot配置文件

4.Springboot配置文件 4.1配置文件 SpringBoot使用一个全局的配置文件 &#xff0c; 配置文件名称是固定的 application.properties 语法结构 &#xff1a;keyvalue server.port8081application.yaml 语法结构 &#xff1a;key:空格value server:port: 80814.2yaml概述 YAML…

scratch计算台阶 2024年9月scratch四级真题 中国电子学会 图形化编程 scratch四级真题和答案解析

目录 scratch计算台阶 一、题目要求 1、准备工作 2、功能实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 5、p…

什么是量子计算机?

量子计算机是一种利用量子力学原理进行计算的新型计算机。 一、工作原理 传统计算机使用二进制位&#xff08;比特&#xff09;来存储和处理信息&#xff0c;每个比特只能处于 0 或 1 两种状态之一。而量子计算机使用量子比特&#xff0c;量子比特可以同时处于 0 和 1 的叠加…