bert-base-chinese模型的完整训练、推理和一些思考

news2024/12/27 12:31:00

前言

使用google-bert/bert-base-chinese模型进行中文文本分类任务,使用THUCNews中文数据集进行训练,训练完成后,可以导出模型,进行预测。

项目详细介绍和数据下载

数据集下载地址

Github完整代码

现记录训练过程中的一些感悟

1、训练时遇到的两个核心参数warmup_stepsweight_decay

代码片段如下
在这里插入图片描述

需要弄明白一些基础概念

epoch:指模型在训练过程中遍历完整个训练数据集一次。

step:指模型在训练过程中处理完一个batch的数据并完成一次梯度更新。

batch_size: 指在一次step中模型用于训练的数据量。

假设 训练数据集有 n 个样本,每个epoch的step计算方式
s t e p = n b a t c h _ s i z e step = \frac{n}{batch\_size} step=batch_sizen
训练过程的总步数为
s t e p s = s t e p × n u m _ t r a i n _ e p o c h s steps = step \times num\_train\_epochs steps=step×num_train_epochs

warmup_steps:主要目的是为了平稳地提升学习率,让模型在训练初期不会因为太高的学习率而跳过或远离全局最优解。

常见做法是将其设置为总训练步数的5%到10%的值。

此训练过程中warmup steps下限的计算方式如下,训练数据18w
w a r m u p _ s t e p s = 180000 32 × 5 × 5 % = 1406 warmup\_steps = \frac{180000}{32} \times 5 \times 5\% = 1406 warmup_steps=32180000×5×5%=1406

减少 warmup_steps 可能会导致模型更快地达到较高的学习率,从而错过或远离全局最优解。

weight_decay:是用于正则化模型权重的,实际上是 L2 正则化的一种形式

weight_decay的作用是在损失函数中添加一个惩罚项,该惩罚项与权重的平方成正比,这有助于抑制权重的大小,从而防止模型过拟合

weight_decay设置得过低,可能不足以防止过拟合;设置得过高,则可能导致模型欠拟合,即模型过于简单,无法很好地捕捉数据中的模式

2、通过tensorboard --logdir=./logs可视化训练过程

训练过程截图如下:

2.1、训练阶段

可以明显的看到训练时的学习率先逐渐上升之后在下降,这是我们想要的趋势。训练的损失值逐步下降,这也是我们希望的。但是当我们在分析评估数据数据集的损失时,我们会发现此时模型应该是过拟合了。

在这里插入图片描述

2.2、推理阶段

随着训练过程的增加,模型在评估数据集上的损失也是逐步减少,当在step=11250时,评估数据集上的损失开始逐渐增加,而训练数据的损失还在减少,那么可以肯定模型已经过拟合了。

模型已经充分的挖掘训练数据集中的语义特征,过分的学习到数据中的一些细枝末节。从而在新数据集上的表现越来越差。这种在训练数据集上表现优秀,在评估或测试数据集上表现较差现象,即模型出现了过拟合。

在这里插入图片描述

3、模型混淆矩阵的分析

混淆矩阵结果如下
在这里插入图片描述
指标如下

Accuracy0.9434
Precision0.9438
Recall0.9434

具体多分类任务指标和混淆矩阵分析参考这里非常详细。

4、如何解决模型过拟合的现象

【待更新】疯狂参数调节优化中…

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

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

相关文章

Android之ProGuard使用

目录 1. 启用 ProGuard2.创建 ProGuard 配置文件3.配置 ProGuard 规则4.常见的 ProGuard 规则5.构建项目6.检查混淆结果7.调试和修复问题 ProGuard 是一种代码混淆和优化工具,通常用于减小 APK 文件大小并保护源代码不被反编译。 1. 启用 ProGuard 在 Android 项目…

Vue.js 3.x 必修课|011|组件属性:提高代码复用性和可维护性(必读+实操)

欢迎关注公众号:CodeFit。 你还没有订阅吗?快动动你的手指,点击订阅《Vue 3.x 必修课| 2024》:http://t.csdnimg.cn/hHRrM,目前持续更新中~🚀🚀🚀 精品内容🥇🥇🥇,物超所值🔥🔥🔥(9.9 元!20+篇内容!)。 Vue3 作为现代前端框架的佼佼者,其组件系…

“想提高网站排名?前端代码优化就是关键!“(SEO)

什么是SEO 搜索引擎优化(Search engine optimization,简称SEO),指为了提升网页在搜索引擎自然搜索结果中(非商业性推广结果)的收录数量以及排序位置而做的优化行为,是为了从搜索引擎中获得更多的…

2024年,最新前端趋势

随着技术的不断发展,前端开发领域在2024年迎来了新的趋势和挑战。对于开发者来说,紧跟这些趋势不仅能提升技术水平,还能在激烈的市场竞争中脱颖而出。今天,我想向大家介绍一款在这波趋势中脱颖而出的开发神器——MemFire Cloud。这…

【视频讲解】滚动回归Rolling Regression、ARIMAX时间序列预测Python、R实现应用

原文链接: https://tecdat.cn/?p37338 原文出处:拓端数据部落公众号 分析师:Jixin Zhong 本文将通过视频讲解,展示如何用滚动回归预测,并结合一个R语言多元时间序列滚动预测:ARIMA、回归、ARIMAX模型分…

Unity游戏开发

Unity游戏开发 系列文章的目录: 第一章:Hello,Unity! “好读书,不求甚解;每有会意,便欣然忘食。” 本文目录: Unity游戏开发 Unity游戏开发前言今天我们来体验一下unity开发创建第一…

树莓派neo4j在noe4j中将csv文件添加节点

参考前序教程:Raspberry Pi上使用pip来安装py2neo,pip install py2neoerror: externally-managed-environment-CSDN博客 再次进入时 激活虚拟环境: 进入您创建的虚拟环境目录: cd venv然后激活环境: source bin/activa…

【学习笔记】Day 12

一、进度概述 1、《地震勘探原理》第五章 二、详情 个人感觉第五,六,八章的解释更倾向于地质学那边负责的,但是多了解相关原理,肯定是有利于 DL-FWI 的相关研究的,所以这里只是做一个粗略的归纳,相关内容详…

原来这就是KEEPALIVED(高可用集群大讲解)

keepalived可用来解决haproxy挂掉后集群无法使用的问题 一.高可用集群 1.1 集群类型 LB:Load Balance 负载均衡 (lvs和haproxy解决的) LVS/HAProxy/nginx(http/upstream, stream/upstream) HA:High Av…

LTspice 仿真电容阻抗频率特性曲线

一、仿真原理图如图所示,有一个电压源和10uf的电容C1。 二、信号源参数: 三、电容参数,其中包含了耐压值6.3V,ESR,ESL。 四、执行参数为 .ac dec 1000 1 1000Meg,扫频模式。 五、开始仿真,然后设置曲线为下…

【网盘源码】百度云盘手动cookie获取,添加到扫码系统管理平台v3.0版本。

大家好,今天来给大家介绍如何购买适合自己的网盘系统! 角色定位 技术小白 特点: 对技术了解有限,想快速搭建网盘平台。 目的: 单一卖自己的网盘业务,不想投入太多精力在技术维护上。 推荐: 租赁…

基于 Fluent 和深度学习算法驱动的流体力学计算与应用

在深度学习与流体力学融合的背景下,科研边界不断拓展,创新成果层出不穷。从物理模型融合到复杂流动模拟,从数据驱动研究到流场智能分析,深度学习正以前所未有的力量重塑流体力学领域。 目前在 Nature和Science杂志上发表的深度学…

【C++】多源BFS问题和拓扑排序

目录 多源BFS介绍 单源BFS和多源BFS的区别 SO如何解决多源BFS问题 多源之核心 矩阵 算法思路 代码实现 飞地的数量 算法思路 代码实现 地图中的最高点 算法思路 代码实现 地图分析 算法思路 代码实现 拓扑排序介绍 有向无环图 ​编辑 如何解决这类问题 课…

【基础解读】神奇宝贝多分类——Logistic Classification

Classification的三步走 交叉熵损失函数 逻辑回归与线性回归的三步走对比 CE和SE对比 Discriminative与Generative对比 多分类问题 逻辑回顾的限制 特征转换

OneAPI配置自己的令牌并实现python调用

1、登录OneAPI账户(初始账户密码为 账号:root 密码:123456) 2、第一次登录会提示修改密码 3、点击网页渠道 可以配置自己大模型的渠道 4、OneAPI支持多家厂商进行渠道配置,选择不同厂商就可以调用对应大模型 5、渠…

基于Linux对 【进程地址空间】的详细讲解

研究背景: ● kernel 2.6.32 ● 32位平台 –❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀-正文开始-❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀– 在学习操作系统中想必大家肯定都见过下面这…

如何防止员工私自拷贝公司内部文件?安企神帮你解决泄密之忧

在企业运营中,保护公司的机密信息至关重要。员工私自拷贝公司内部文件不仅可能导致商业秘密泄露,还可能损害公司的声誉和经济利益。下面我们将介绍一些有效的方法来防止这种情况的发生,并以“安企神”软件为例进行详细说明。 1. 明确规章制度…

怎么调试python脚本

打开pycharm community 2019.1软件,创建一个项目。 创建一个py后缀的文件作为示范,文件名自己定义。 编写代码,然后右键点击进行运行,查看一下是否有问题。 点击右上角的虫子图标,然后下面会有控制面板出来&#xff0c…

财务会计与管理会计(四)

文章目录 月度数据统计分析OFFSET函数在图表分析中的应用 多种费用组合分析图SUMPRODUCT函数 省公司全年数据分析模板INDIRECT、OFFSET函数 多公司分季度数据筛选VLOOKUP、IFERROR函数的应用 淘宝后台数据分析OFFSET函数在跨表取数中的应用 燃气消耗台账数据统计分析图SUMPRODU…

进程的结束

回顾上节: 父子进程的关系 子进程是父进程的副本 子进程获得父进程的数据段,堆,栈,正文段共享 在fork之后,一般情况下那个会先运行是不确定的,取决于操作系统 练习: 用进程实现文件拷贝 …