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

【博学谷学习记录】超强总结,用心分享丨人工智能 自然语言处理 BERT、GPT、ELMO对比学习简记

目录

    • 三模型架构
    • BERT
    • GPT
    • ELMO
    • 三者差异点

三模型架构

![在这里插入图.csdnimg.cn/c03e5bd0d73544bb99ee615a8ca08f2c.png)

BERT

优点

  • 在11个NLP任务上取得SOAT成绩.
  • 利用了Transformer的并行化能力以及长语句捕捉语义依赖和结构依赖.
  • BERT实现了双向Transformer并为后续的微调任务留出足够的空间.

缺点

  • BERT模型太大, 太慢.
  • BERT模型中的中文模型是以字为基本token单位的, 无法利用词向量, 无法识别生僻词.
  • BERT模型中的MLM任务, [MASK]标记在训练阶段出现, 预测阶段不出现, 这种偏差会对模型有一定影响.
  • BERT模型的MLM任务, 每个batch只有15%的token参与了训练, 造成大量文本数据的"无用", 收敛速度慢, 需要的算力和算时都大大提高.

文本截断处理方式
第一种方式就是只保留前面510个token.
第二种方式就是只保留后面510个token.
第三种方式就是前后分别保留一部分token, 总数是510.

BERT预训练模型所接收的最大sequence长度是512

bert + 迁移学习 简单练习代码
步骤:

微调脚本

# 使用python运行微调脚本
# --model_name_or_path: 选择具体的模型或者变体
# --task_name: 它将代表对应的任务类型, 如MRPC代表句子对二分类任务
# --do_train: 使用微调脚本进行训练
# --do_eval: 使用微调脚本进行验证
# --max_seq_length: 输入句子的最大长度, 超过则截断, 不足则补齐
# --learning_rate: 学习率
# --num_train_epochs: 训练轮数
# --output_dir $SAVE_DIR: 训练后的模型保存路径
# --overwrite_output_dir: 再次训练时将清空之前的保存路径内容重新写入# 该命令已在虚拟机执行,再次执行会覆盖缓存的模型python run_glue.py \--model_name_or_path bert-base-chinese \--task_name sst2 \--do_train \--do_eval \--max_seq_length 128 \--learning_rate 2e-5 \--num_train_epochs 1.0 \--output_dir bert-base-chinese-sst2-finetuning
import torch
# 0 找到自己预训练模型的路径
mymodelname = '/Users/lizhipeng/PycharmProjects/newProject/fasttext/transformers/examples/pytorch/text-classification/bert-base-chinese-sst2-finetuning'
print(mymodelname)# 1 本地加载预训练模型的tokenizer
tokenizer = AutoTokenizer.from_pretrained(mymodelname)# 2 本地加载 预训练模型 带分类模型头
model = AutoModelForSequenceClassification.from_pretrained(mymodelname)text = "早餐不好,服务不到位,晚餐无西餐,早餐晚餐相同,房间条件不好"
index = tokenizer.encode(text)
tokens_tensor = torch.tensor([index])# 使用评估模式
with torch.no_grad():# 使用模型预测获得结果result = model(tokens_tensor)print(result[0])predicted_label = torch.argmax(result[0]).item()
print('预测标签为>', predicted_label)text1 = "房间应该超出30平米,是HK同级酒店中少有的大;重装之后,设备也不错."
index = tokenizer.encode(text1)
tokens_tensor = torch.tensor([index])# 使用评估模式
with torch.no_grad():# 使用模型预测获得结果result = model(tokens_tensor)print(result[0])predicted_label = torch.argmax(result[0]).item()
print('预测标签为>', predicted_label)

输出:
输入文本为: 早餐不好,服务不到位,晚餐无西餐,早餐晚餐相同,房间条件不好
预测标签为: 0
输入文本为: 房间应该超出30平米,是HK同级酒店中少有的大;重装之后,设备也不错.
预测标签为: 1

GPT

优点

GPT使用了Transformer提取特征, 使得模型能力大幅提升.

缺点

GPT只使用了单向Decoder, 无法融合未来的信息.

ELMO

优点

-ELMo根据上下文动态调整word embedding, 可以解决多义词的问题.

缺点

  • ELMo使用LSTM提取特征的能力弱于Transformer
  • ELMo使用向量拼接的方式融合上下文特征的能力弱于Transformer

三者差异点

关于特征提取器

  • ELMo采用两部分双层双向LSTM进行特征提取, 然后再进行特征拼接来融合语义信息.
  • GPT和BERT采用Transformer进行特征提取.
  • 很多NLP任务表明Transformer的特征提取能力强于LSTM, 对于ELMo而言, 采用1层静态token embedding + 2层LSTM, 提取特征的能力有限.

单/双向语言模型

  • 三者之中, 只有GPT采用单向语言模型, 而ELMo和BERT都采用双向语言模型.
  • ELMo虽然被认为采用了双向语言模型, 但实际上是左右两个单向语言模型分别提取特征, 然后进行特征拼接, 这种融合特征的能力比BERT一体化的融合特征方式弱.
  • 三者之中, 只有ELMo没有采用Transformer. GPT和BERT都源于Transformer架构, GPT的单向语言模型采用了经过修改后的Decoder模块, Decoder采用了look-ahead mask, 只能看到context before上文信息, 未来的信息都被mask掉了. 而BERT的双向语言模型采用了Encoder模块, Encoder只采用了padding mask, 可以同时看到context before上文信息, 以及context after下文信息.

心得:模型已浅知,内化成自己掌握的知识还需多学多看

相关文章:

【博学谷学习记录】超强总结,用心分享丨人工智能 自然语言处理 BERT、GPT、ELMO对比学习简记

目录三模型架构BERTGPTELMO三者差异点三模型架构 BERT 优点 在11个NLP任务上取得SOAT成绩.利用了Transformer的并行化能力以及长语句捕捉语义依赖和结构依赖.BERT实现了双向Transformer并为后续的微调任务留出足够的空间. 缺点 BERT模型太大, 太慢.BERT模型中的中文模型是以…...

【嵌入式Bluetooth应用开发笔记】第四篇:初探蓝牙HOST及应用开发(持续更新ing)

概念 蓝牙HOST(Bluetooth Host)是指能够连接到其他蓝牙设备并控制它们的设备。在蓝牙技术中,通常有两种类型的设备:蓝牙HOST和蓝牙SLAVE。蓝牙HOST通常是指拥有控制权的设备,它可以主动连接其他蓝牙设备并向其发送命令。相反,蓝牙SLAVE则是指被动连接的设备,它接受来自…...

GORM 基础 -- CRUD 接口

1、Create 1.1 创建纪录 user : User{Name: "Jinzhu", Age: 18, Birthday: time.Now()}result : db.Create(&user) // pass pointer of data to Createuser.ID // 回填插入数据的主键 result.Error // 返回的 error 信息 result.RowsAffect…...

为什么0代码自动化测试越来越受欢迎?一文2000字解析

目录 01、什么是零代码自动化测试 02、为什么零代码自动化测试越来越受欢迎 03、有代码和零代码自动化有什么区别 04、零代码自动化测试可以帮助你做什么 05、零代码自动化测试方法:NLP(自然语言处理) 06、为什么我们需要零代码自动化测…...

cleanmymac最新2023版 mac清理软件CleanMyMac X4.12.5 中文版功能介绍

CleanMyMac X4.12.5 中文版只需两个简单步骤就可以把系统里那些乱七八糟的无用文件统统清理掉,节省宝贵的磁盘空间。cleanmymac x个人认为X代表界面上的最大升级,功能方面有更多增加,与最新macOS系统更加兼容,流畅地与系统性能更加…...

pyhon部署注意事项

前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python:一种编程语言&…...

宣城x移动云,打造“城市级物联感知平台”

随着新一代信息技术与城市现代化的深度融合,智慧城市建设的重要性也愈发凸显。而在智慧城市建设中,物联网感知体系扮演着中枢神经系统的角色。 安徽宣城紧抓长三角城市群一体化发展机遇,为构建“数字宣城”建设发展新模式,携手移…...

英伟达Jetson NX套件刷机,配置Ubuntu20。

0. 前言 人并没有眼见得那么光鲜亮丽,博客也是。 今天推荐一本书《一百个人的十年》,没错就是我们的那十年(60年代)。写得很真实,牛棚猪圈,确实如此。 1. SdkManager安装 官网下载。 打开终端 执行命令sud…...

Vue计算属性

计算属性 ​ 计算属性的重点突出在属性两个字上(属性是名词),首先它是个属性其次这个属性有计算的能力(计算是动词),这里的计算就是个函数;简单点说,它就是一个能够将计算结果缓存起来的属性(将行为转化成了静态的属性),仅此而已…...

代码随想录刷题-字符串-反转字符串

文章目录反转字符串习题双指针swap 的两种方式反转字符串 本节对应代码随想录中:代码随想录,讲解视频:字符串基础操作! | LeetCode:344.反转字符串_哔哩哔哩_bilibili 习题 题目链接:344. 反转字符串 - …...

14-链表练习-剑指 Offer II 021. 删除链表的倒数第 n 个结点

题目 给定一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5] 示例 2: 输入:head [1], n 1 输出:[] 示例 3&…...

用Java解决华为OD机试考题,真的高效,真的强,来吧,清单奉上,祝你上岸

华为 OD 机试题最新(Java)清单(机试题库还在逐日更新) 题库目录 直接在本页使用 CtrlF,输入题目名称就可以进行检索。 序号文章分值1【华为OD机试真题JAVA】快递装载问题_国服第二切图仔的博客-CSDN博客1002【华为…...

【Stable Diffusion】Stable Diffusion免安装在线部署教程

一、开启Google Colab网址 官网:https://colab.research.google.com/ 点击添加代码: 二、执行如下代码指令 !pip install --upgrade fastapi0.90.1 !git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui !git clone https://github.…...

Jetson设备如何接调试串口工具查看内核打印信息

方便小白使用如下教程。 一、认识USB转串口调试工具转接小板 和硬件连接方式 如图,是一款USB TO TTL转换板,这款小板支持3种供电模式:对外输出5V、对外输出3.3V和由外部供电。正面有一个跳帽,跳帽跳到3V3,小板由US…...

一直被低估的美图,正悄悄成为AIGC领跑者

【潮汐商业评论/原创】 也许多年之后再回望历史,2023年将被视为标志性的一年。它不仅是疫情之后的复苏之年,更是人工智能在中国乃至全球迎来爆发的一年。 从来没有这样的景象——在2023年的前3个月,全球互联网被AIGC话题“刷屏”&#xff0…...

JAVA开发与运维(JavaWeb测试环境搭建)

本例子测试环境搭建在腾讯云平台之上。 系统架构: 微服务EurekaApollogateWayredisrocketMqOSSsparkETLmysqlpgsqlclickHouseSLB. 首先需要申请的云资源。 业务用途CPUMEMDisk数量云产品规格服务器应用服务(部署微服务)4核8G500G1CVMS6.L…...

python 的range函数你需要知道三件事

python 的range函数你需要知道三件事python 的range() 函数你需要知道三件事一、range函数的功能和语法二、range函数转化为数组三、range函数与for语句的应用python 的range() 函数你需要知道三件事 一、range函数的功能和语法 **1、range函数的功能:**range&…...

穿越周期的进击,科沃斯“敢”于变革

文|智能相对论 作者|佘凯文 什么样的扫地机器人才是一款好的扫地机器人? 回答这个问题我们首先要明白扫地机器人的产品逻辑究竟是什么。简单来说,就是替代人们完成一定环境内的清洁工作,它能完成的“清洁程度”越深则代表其产品力越强。 …...

不使用IF语句对一组数进行排序的分析和实现

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、不使用IF语句的两数排序方法二、不使用IF的多数排序讨论1、三数比较和排序2、多个数据比较和排序总结前言 这个题目源于已经完成了不使用IF语句对两个数的比…...

在大厂做了5年测试,3月被无情辞退,想给摸鱼的兄弟提个醒

先简单交代一下背景吧,某不知名 985 的本硕,17 年毕业加入字节,以“人员优化”的名义无情被裁员,之后跳槽到了有赞,一直从事软件测试的工作。之前没有实习经历,算是5年的工作经验吧。 这5年之间完成了一次…...

收藏必看!2026 网安行业深度解析,人才缺口巨大,五大高薪技术方向详解

2026年网络安全行业迎来黄金发展期,全球人才缺口达480万,岗位年增37%,薪资普遍高于IT行业20%以上。热门方向包括AI安全、零信任架构、数据安全合规、云安全和工业互联网安全。入行可通过四大阶段系统学习:基础入门、技术进阶、高阶…...

婚宴座位规划中的优化算法:量子与经典方法对比

1. 婚宴座位规划中的优化算法对决:量子与经典方法谁更胜一筹?筹备婚礼时,最令人头疼的任务之一就是安排座位。去年我为自己婚礼设计座位表时,尝试了各种方法——从手工调整Excel表格到使用专业活动策划软件,结果都不尽…...

Bonsai工具库:函数式编程与代码设计模式实战解析

1. 项目概述:当代码遇见禅意最近在GitHub上闲逛,发现一个挺有意思的项目,叫sauravpanda/bonsai。光看名字,你可能以为这是个园艺或者艺术相关的仓库,但实际上,它是一个非常精巧的编程工具库。这个项目名“B…...

CSS如何实现一致的圆角半径设计_通过CSS变量存储border-radius

能,但需注意变量作用域、fallback机制及单位完整性;推荐:root定义基础值并用var(--radius-md, 8px),避免嵌套覆盖与无单位变量,旧浏览器需前置静态值。border-radius 用 CSS 变量统一管理,真能省事?能&…...

基于eBPF的系统调用监控:原理、部署与性能调优实战

1. 项目概述:一个“无人值守”的系统调用监控器最近在折腾系统性能分析和安全监控,发现了一个挺有意思的开源项目:syscalldev/nohuman。这个名字直译过来是“无人”,听起来有点神秘,但其实它的核心功能非常直接——一个…...

Ctool架构深度解析:模块化开发工具集的高效实现方案

Ctool架构深度解析:模块化开发工具集的高效实现方案 【免费下载链接】Ctool 程序开发常用工具 chrome / edge / firefox / utools / windows / linux / mac 项目地址: https://gitcode.com/gh_mirrors/ct/Ctool 在程序开发过程中,开发者经常需要在…...

SpringCloud微服务里,用Zuul网关聚合Swagger文档的完整配置流程(含踩坑记录)

SpringCloud微服务架构下Zuul网关聚合Swagger文档的实战指南 在微服务架构中,API文档的管理一直是个令人头疼的问题。想象一下,当你的系统由十几个甚至几十个微服务组成时,开发人员要记住每个服务的接口地址和文档路径几乎是不可能的任务。更…...

KMS_VL_ALL_AIO架构解析:Windows与Office智能激活的技术方案

KMS_VL_ALL_AIO架构解析:Windows与Office智能激活的技术方案 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO KMS_VL_ALL_AIO是一款基于KMS协议实现的Windows和Office智能激活解决方案…...

GPU内核优化:R3框架与分层自动调优实践

1. GPU内核优化的挑战与机遇在现代高性能计算和人工智能领域,GPU已经成为不可或缺的计算引擎。然而,随着硬件架构的快速迭代,保持应用程序的高性能表现变得越来越具有挑战性。传统的手工优化方法需要开发者投入数月时间,在算法设计…...

收藏!小白程序员快速入门大模型:多模态LLMs学习指南

多模态大模型(MLLMs)通过整合图像、文本、语音等,实现跨模态理解和生成。文章介绍了MLLMs的基本概念、架构,包括多模态编码器、连接器与LLM,并区分了双编码器架构和基于LLM的架构。同时,文章探讨了VLM前沿动…...