【自然语言处理】:实验4答案,预训练语言模型实现与应用

代码和报告均为本人自己实现(实验满分),只展示主要任务实验结果,如果需要详细的实验报告或者代码可以私聊博主,接实验技术指导1对1

实验要求布置请看http://t.csdnimg.cn/1sh7s

运行模型,测试模型在有 100% / 50% / 10% training data(通过随机 sample 原 training set 一部分的数据,10%代表低资源的设定)的情况下模型在 dev set 上的效果

BERT 模型

这里使用原代码 100%数据运行 200 轮训练,结果如下

从图中可以看出在 200 轮训练完成后在 dev set 上的 F1 结果是 0.5472,AUC 结
果为 0.5049

然后我运行 test.py 进行 testset 的文件输出,这里设置的是预测准确率大于0.2 的实体关系对才会被输出,最终提交到网站上结果如下所示

 通过查看训练过程我发现,在训练到 130 轮的时候的结果已经和 200 轮的结果是差不多的,F1 的值和 AUC 值都是很小的差距了,所以在后面只使用原数据的 50% 和 10%进行训练的时候我都调整为 130 轮进行训练。修改读取数据时候的代码即可实现随机从原数据抽出 50%和 10%进行训练测试

BERT 模型使用原数据 50%进行训练,结果如下 

从结果来看和使用 100%数据训练 130 轮的时候在 devset 测试出的 F1 值和 AUC 差距很小,大约是 0.03 左右,我猜测造成这样的原因是因为模型鲁棒性, BERT等预训练模型已经在大规模数据上进行了预训练,在训练过程中已经获得了对各种语言和任务的普遍表示能力。这种普适性可能使得模型对于即使使用只有原来一半数据量的时候,泛化能力也相对较好。

 BERT 模型使用原数据 10%进行训练,结果如下

从结果来看出在 bert 模型上只使用原数据 10%进行训练的时候,模型性能显著下降,在 devset 测试出的 F1 值只有 0.254038,AUC 值为 0.11,明显能看出结果变差了很多,我猜测造成这样主要原因是因为数据缺失,因为 BERT 模型是在大型语料库上进行训练的,这使得它可以捕捉到广泛的语言特性和模式。这里只使用了原始数据的 10%,可能会失去一些重要的数据,导致模型在测试时表现不佳。

RoBERTa 模型

这里使用 RoBERTa 模型 100%数据运行 200 轮训练,结果如下

从结果 devset 的 F1 值和 AUC 值来看都要比 BERT 模型 200 轮的结果要更高
Bert 模型 200 轮在 devset 上的结果:F1 值 0.5472 AUC 值 0.5049
RoBerta 模型 200 轮在 devset 上的结果:F1 值 0.5606 AUC 值 0.5284
F1 值提高了 0.0134,AUC 值提高了 0.0235
我认为性能提升的主要原因就是 RoBERTa 采用了更长的训练时间和更大的数据集来进行预训练,这有助于模型更好地学习语言的表示。这使得 RoBERTa 在一些任务上能够更好地捕捉语义和上下文信息。然后我运行 test.py 文件把结果提交到网站上,结果如图所示

 对比使用 bert 模型输出的结果,score 提升 0.017 左右,显然确实性能有提升。

RoBERTa 模型使用原数据 50%进行训练,结果如下 

从 devset 上的测试结果来看,F1 和 AUC 显著下降,对比于 100%数据训练下 

 F1 值只有原来的 69%达到 0.3806,AUC 值只有原来的 58%达到 0.3042。再对比于 同样 50%数据训练下的 bert 模型,RoBERTa 模型训练出的结果也低很多,说明 RoBERTa 模型受数据大小对于结果的影响相比于 bert 模型更大

RoBERTa 模型使用原数据 10%进行训练,结果如下 

这里发现结果相对于 50%数据训练下的结果反而不大了,F1 值为 0.23,AUC 值为 0.1342。这个时候和 bert 模型在 10%数据训练下的结果几乎一样,我认为造成这样的主要原因是数据量不足 10% 的数据实在太少,以至于两个模型都无法充分利用其潜在的能力。在这种情况下,两个模型可能都没有充分学习到任务的特征,导致它们在 devset 上表现相似。

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

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

相关文章

真Unity3D编辑器Editor二次开发

IMGUI Editor Label 改变颜色 分享一个很神奇的颜色 一开始这么写&#xff0c;以为不行的&#xff0c; private void OnGUI()(){GUILayout.Label("<colorred>name:</color>ffdasilufoi");//。。。。 } 结果这么写又好了&#xff0c; private GUIStyle m…

python播放PCM 音频文件

python播放PCM 音频文件 一&#xff1a;pyaudio安装二&#xff1a;Python播放PCM音频文件 一&#xff1a;pyaudio安装 CtrlR输入cmd打开控制台执行如下命令 pip install PyAudio二&#xff1a;Python播放PCM音频文件 import pyaudio# 初始化播放器 p pyaudio.PyAudio() str…

基于qt的图书管理系统----03核心界面设计

参考b站&#xff1a;视频连接 源码github&#xff1a;github 目录 1 添加软件图标2 打包程序3 三个管理界面设计4 代码编写4.1 加载界面4.2 点击按钮切换界面4.3 组团添加样式4.4 搭建表头4.5 表格相关操作 从别人那里下载的项目会有这个文件&#xff0c;里边是别人配置的路径…

Java核心-核心类与API(2)

话接上回&#xff0c;继续核心类与API的学习&#xff0c;这次介绍StringBuffer/StringBuilder/StringJoiner类。StringBuffer和StringBuilder是我们学习的重点&#xff0c;建议对比学习&#xff0c;做好区分。 一、StringBuffer类 1、概述 1&#xff09;问题 由于 String 类…

直接插入排序+希尔排序+冒泡排序+快速排序+选择排序+堆排序+归并排序+基于统计的排序

插入排序&#xff1a;直接插入排序、希尔排序 交换排序&#xff1a;冒泡排序、快速排序 选择排序&#xff1a;简单选择排序、堆排序 其他&#xff1a;归并排序、基于统计的排序 一、直接插入排序 #include<stdio.h> #include<stdlib.h> /* 直接插入排序&#…

flet 音乐播放组件 audio的几点注意的地方

最近做一个flet的播放器&#xff0c;遇到很多坑。这里记录一下。 audio, 要使用的话&#xff0c;必须放在page.overlay里面才能播放。 audio1 Audio(srcf"{tracks_list[i]}", autoplayFalse)page.overlay.append(audio1)page.update() #更新overlay的内容audio1.p…

Apache Calcite 动态数据管理框架入门介绍

原文地址&#xff1a; Apache Calcite 动态数据管理框架介绍 背景 随着数据规模的不断增长和数据源的多样化&#xff0c;开发人员需要面对各种挑战&#xff0c;如何高效地管理、查询和分析海量数据成为了一个迫切的问题。 在这样的背景下&#xff0c;出现了许多优秀的开源组…

RSA加密原理

2024.2.23 密钥对的生成过程 1、随机找两个质数 P 和 Q &#xff0c;P 与 Q 越大&#xff0c;越安全 本例取 P 67 &#xff0c;Q 71 计算他们的乘积 N P * Q 4757 转化为二进为 1001010010101&#xff0c;该加密算法即为 13 位&#xff0c;实际使用中的算法是往往是 …

前瞻性规划:解决数据中心机房通用性问题

随着技术的快速发展&#xff0c;数据中心机房的建设面临着不断变化的挑战。在机房规划和设计阶段&#xff0c;缺乏对用户需求的深入分析和对未来发展趋势的考量&#xff0c;往往会导致机房通用性不足&#xff0c;从而影响其长期使用效率和稳定性。本文将探讨数据中心机房建设中…

架构设计:缓存技术的应用与挑战

引言 在当今大数据时代&#xff0c;系统性能优化成为了架构设计中的重要一环。在高并发、大流量的应用场景下&#xff0c;如何提高系统的响应速度和吞吐量成为了亟待解决的问题。缓存技术作为一种常见的性能优化手段&#xff0c;能够显著提升系统的性能和稳定性。然而&#xf…

《凤凰架构》-全局事务章节读书笔记

二阶段提交协议&#xff1a; 准备阶段&#xff1a;又叫作投票阶段&#xff0c;在这一阶段&#xff0c;协调者询问事务的所有参与者是否准备好提交&#xff0c;参与者如果已经准备好提交则回复 Prepared&#xff0c;否则回复 Non-Prepared。这里所说的准备操作跟人类语言中通常…

Ansible概述和常用模块

目录 一、ansible概述 &#xff08;一&#xff09;基础知识 &#xff08;二&#xff09;特性 二、部署ansible &#xff08;一&#xff09;管理端安装 &#xff08;二&#xff09;ansible 目录结构 &#xff08;三&#xff09;配置主机清单 &#xff08;四&#xff09;…

Leetcode2583. 二叉树中的第 K 大层和

Every day a Leetcode 题目来源&#xff1a;2583. 二叉树中的第 K 大层和 解法1&#xff1a;层序遍历 排序 先使用层序遍历计算出树的每一层的节点值的和&#xff0c;保存在数组 levelSum 中。然后将数组进行排序&#xff0c;返回第 k 大的值。需要考虑数组长度小于 k 的边…

状态空间模型的离散化方法

介绍 状态空间模型通常是用来描述动态系统随时间变化的数学模型&#xff0c;它由状态方程和观测方程组成。对于连续时间的状态空间模型&#xff0c;我们有时需要将其离散化&#xff0c;以便在数字计算机上进行处理。常见的离散化方法有&#xff1a; 欧拉方法&#xff08;Forw…

【Linux】 yum命令使用

yum命令 yum&#xff08; Yellow dog Updater, Modified&#xff09; 是一个在 Fedora、CentOS 及其它一些基于 RPM 的 Linux 发行版中使用的包管理器。它允许用户自动安装、更新、配置和删除软件包。yum 由 Python 写成&#xff0c;基于 RPM&#xff08;Red Hat Package Mana…

【Mongo】mongodump/mongoexport/mongoimport 操作

一.mongodump 导出/导入 导出 1、进入容器 docker exec -it 容器id bash 2、导出 mongodump -h 127.0.0.1:27017 --authenticationDatabaseadmin -u admin -p xxx --archive/root/data.gz --gzip -d zb -c PUSH_MESSAGE_BACKUP -h 表示 host -d/--db 表示 databa…

EasyRecovery2024永久免费版手机数据恢复软件功能全面介绍

一、功能概述 EasyRecovery手机数据恢复软件是一款专为移动设备设计的数据恢复工具。它能够有效地从智能手机、平板电脑等移动设备中恢复因各种原因丢失的数据&#xff0c;包括但不限于误删除、格式化、系统崩溃、病毒感染等。 EasyRecovery-mac最新版本下载:https://wm.maked…

【Java程序设计】【C00267】基于Springboot的在线考试系统(有论文)

基于Springboot的在线考试系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 本系统是基于Springboot的在线考试系统&#xff1b;本系统主要分为管理员、教师和学生三种角色&#xff1b; 管理员登录系统后&#xff0c;可以对首页&#x…

悄悄话花费的时间(C语言)【二叉树各结点统计求和】

题目描述 给定一个二叉树&#xff0c;每个节点上站着一个人&#xff0c;节点数字表示父节点到该节点传递悄悄话需要花费的时间。 初始时&#xff0c;根节点所在位置的人有一个悄悄话想要传递给其他人&#xff0c;求二叉树所有节点上的人都接收到悄悄话花费的时间。 输入描述 …

前端数据可视化:ECharts使用

可视化介绍 ​  ​  应对现在数据可视化的趋势&#xff0c;越来越多企业需要在很多场景(营销数据&#xff0c;生产数据&#xff0c;用户数据)下使用&#xff0c;可视化图表来展示体现数据&#xff0c;让数据更加直观&#xff0c;数据特点更加突出。   ​  数据可视化主要目…