基于bert继续预训练

BERT 1.Further train (Continue train) 预训练的模型 由于从头开始(from scratch)训练需要巨大的计算资源,因此Google提供了预训练的模型(的checkpoint),目前包括英语、汉语和多语言3类模型,而英语又包括4个版本: BERT-Base, Uncased 12层,768个隐单元,12个Attention head,110M参数 BERT-Large, Uncased 24层,1024个隐单元,16个head,340M参数 BERT-Base, Cas 阅读详情


前言

在目前的各项NLP任务中,如果要在特定任务或者领域应用文本分类,数据分布一定是有一些差距的。这时候可以考虑进行深度预训练。进行继续预训练,有利于提升任务的性能。

一、继续预训练是什么?

根据基于bert模型的下游NLP任务的特定语料,对模型进行领域的继续训练。主要类型如下:

Within-task pre-training:Bert在训练语料上进行预训练

In-domain pre-training:在同一领域上的语料进行预训练

Cross-domain pre-training:在不同领域上的语料进行预训练
 

二、代码

1.引入库

代码如下(示例):

import numpy as np
import pandas as pd
import warnings
warnings.filterwarnings('ignore')
from transformers import (AutoModelForMaskedLM,AutoTokenizer, LineByLineTextDataset,                           DataCollatorForLanguageModeling,                           Trainer, TrainingArguments)

2.读入数据

代码如下(示例):

train_data = pd.read_csv('data/train/train.csv', sep='\t') 
test_data = pd.read_csv('data/test/test.csv', sep='\t') 
train_data['text'] = train_data['title'] + '.' + train_data['abstract'] 
test_data['text'] = test_data['title'] + '.' + test_data['abstract'] 
data = pd.concat([train_data, test_data]) 
data['text'] = data['text'].apply(lambda x: x.replace('\n', ''))  
text = '\n'.join(data.text.tolist())

3.构建数据集

代码如下(示例):

model_name = 'roberta-base'
model = AutoModelForMaskedLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
tokenizer.save_pretrained('./paper_roberta_base')

train_dataset = LineByLineTextDataset(
    tokenizer=tokenizer,
    file_path="text.txt",  # mention train text file here
    block_size=256)

valid_dataset = LineByLineTextDataset(
    tokenizer=tokenizer,
    file_path="text.txt",  # mention valid text file here
    block_size=256)

data_collator = DataCollatorForLanguageModeling(
    tokenizer=tokenizer, mlm=True, mlm_probability=0.15)

4.开始训练

training_args = TrainingArguments(
    output_dir="./paper_roberta_base_chk",  # select model path for checkpoint
    overwrite_output_dir=True,
    num_train_epochs=5,
    per_device_train_batch_size=16,
    per_device_eval_batch_size=16,
    gradient_accumulation_steps=2,
    evaluation_strategy='steps',
    save_total_limit=2,
    eval_steps=200,
    metric_for_best_model='eval_loss',
    greater_is_better=False,
    load_best_model_at_end=True,
    prediction_loss_only=True,
    report_to="none")

trainer = Trainer(
    model=model,
    args=training_args,
    data_collator=data_collator,
    train_dataset=train_dataset,
    eval_dataset=valid_dataset)

trainer.train()
trainer.save_model(f'./paper_roberta_base')

总结

面对一些NLP比赛,可以考虑进行深度预训练。

什么是 继续预训练、SFT(监督微调)和RLHF 典型流程**: 通用预训练模型 → 继续预训练 → SFT → RLHF → 部署应用。 例如,GPT-4的训练流程大致为: - 先在海量文本数据中预训练基础模型; - 继续用多模态数据增强训练; - 通过SFT适应对话任务; - 最终通过RLHF优化回答质量和安全性。 阅读详情

相关推荐

继续预训练PyTorch:不要停下来!持续优化你的模型

这时,继续预训练BERT模型,以适应特定任务的数据和特点,就成为了一种有效的策略。当进行预训练时,你可以选择不同的预训练任务,比如掩码语言建模(Masked Language Modeling,MLM)和下一句预测(Next Sentence Prediction,NSP)。上述代码中,我们首先导入必要的库,并加载了BERT的预训练模型和标记器。当继续预训练BERT模型时,你可能需要使用更大的训练数据集,并且增加训练迭代次数,以便模型能够更好地学习特定任务的特征。祝你在NLP领域取得更好的成果!

Bsv___的博客 372

大模型对比:继续预训练 VS 微调

特定任务的数据集特定领域或类型。

qq_40206371的博客 7878

【深度学习新浪潮】什么是持续预训练?

持续预训练是在通用预训练模型(如BERT、GPT)的基础上,使用领域专属无标注语料(如医学文献、法律条文)延续预训练目标(如掩码语言建模),以增强模型领域知识储备的过程。其本质是通过“针对性加餐”让模型在保留通用能力的同时,理解领域术语、语法和逻辑关系,为后续微调奠定基础。核心优势领域专业性:通过领域语料补充,模型可精准捕捉专业场景的语言规律(如医学中的“病灶”“半衰期”)。任务泛化性:相比直接微调,持续预训练能提升模型在同类领域任务中的适应性,减少对标注数据的依赖。效率优化。

专注:太空算力、AI infra、异构调度、大模型成本工程 279

学习LLMs之Continue Pretraining

Continue Pretraining 继续预训练,其实是一种“迁移学习”方法,它利用已有的通用预训练模型,再根据某一特定领域的数据进行继续训练。这个过程不仅让模型保留了原先的知识,还能让它学到一些领域特定的知识,从而提高其在该领域的表现。在预训练阶段注入知识,微调是在特定任务训练,使预训练模型的通用知识和特定任务的要求结合,让模型在特定任务上表现更好。指令微调的好处:更好理解人类意图,好对话+提高下游任务性能+低成本在别人基础上微调,更高效。推荐做法:预训练(一般指的是继续预训练) + 微调 相结合。

m0_46737848的博客 1430

BERT模型的微调与继续预训练:实践与应用

本文探讨了如何使用SetFitTrainer进行BERT模型的微调和零样本分类,以及如何在特定领域数据上继续预训练BERT模型以提升模型性能。通过实例展示了微调过程中的关键步骤和参数设置,以及继续预训练的重要性。

weixin_36427956的博客 535

20 CVPR Learning 3D Semantic Scene Graphs From 3D Indoor Reconstructions 学习笔记

3RScan是大规模真实世界的室内场景,特点是对478个自然改变的室内环境在不同的时间帧进行了1482 RGB-D scans,每一个scene都包括了一些位置被改变的物体。它和ScanNet数据集的区别主要在于ScanNet中的每一个采样环境都不相同,但是3RScan中存在采样环境相同但物体的位置不同的场景。Scene Graph Annotations 则是在3RScan的基础上给物体加入了场景图需要的关系、物体特征和类别标注,同时对3RScan进行了扩展,以此形成了场景图数据。

weixin_43508459的博客 1835

BERT继续预训练:让你的模型真正“懂”你的领域数据!

什么是继续预训练?在通用预训练模型的基础上,用领域内无标注数据进一步执行掩码语言建模,使模型适应该领域的词汇和表达方式。为什么有效?调整了模型的词表示,使其更贴近领域分布,从而为下游任务提供更好的特征。什么时候需要?领域词汇与通用语料差异较大(如医疗、法律、金融)。有大量领域内无标注数据(即使没有标签,也可以用来继续预训练)。希望构建企业级专属模型,复用于多个任务。如何实现?选择合适的预训练模型(如BERT、RoBERTa)。准备领域文本数据,进行MLM训练。

闵浮龙的博客 412

Mac和VScode配置fortran

macOS系统 vscode fortran gfortran 终端

weixin_43047707的博客 2410

BERT继续预训练任务之loss为nan

BERT继续预训练任务之loss为nan

qq_28935065的博客 1822

从XSA到Linux应用:Petalinux与Vitis的嵌入式开发全流程解析

本文详细解析了从XSA文件到Linux应用的嵌入式开发全流程,重点介绍了Petalinux与Vitis工具链的使用技巧和实战经验。通过XSA硬件描述、Petalinux工程搭建、系统镜像优化及Vitis开发配置等关键步骤,帮助开发者高效完成ZYNQ平台开发,解决常见问题并提升开发效率。

weixin_29195217的博客 192

ROS应用之如何配置RTOS满足机器人系统中的实时要求

实时操作系统(RTOS)基本概念实时操作系统(RTOS)是设计用于实时应用的操作系统,其主要目标是在确定的时间内完成任务。RTOS的任务调度算法和优先级控制机制能够确保高优先级任务按时完成。精确的传感器数据采集:传感器数据需要在规定时间内采集并传输给控制系统。快速响应外部事件:对于控制系统,需要确保指令在最短的时间内得到响应。任务的调度周期:任务的周期可以通过公式计算,其中 ftask 是任务的调度频率。优先级分配。

weixin_68094467的博客 1008

在bert上使用领域的数据集继续预训练

1、下载bert或者roberta的源码以及开源的预训练模型 https://github.com/brightmart/roberta_zh 2、准备好自己的领域数据 格式是:一行一句话,多个文本之间使用空行隔开 为了解决这个问题,很自然的想法就是词作为一个整体要么都 Mask 要么都不 Mask,这就是所谓的 Whole Word Masking。 这是一个很简单的想法,对于 BERT 的代码修改也非常少,只是修改一些 Mask 的那段代码。对于英文来说,分词是一个(相对)简单的问题。 哈工大

samoyan的博客,记录技术成长~ 3617

Python经典编程习题100例:第32例:相反顺序输出列表

不要自卑,去提升实力 互联网行业谁技术牛谁是爹 如果文章可以带给你能量,那是最好的事!请相信自己 加油o~ 本人初学Python,只为熟悉语法编写,大神请勿理会 点击下面链接 Python经典编程100例习题汇总 题目描述: 按相反的顺序输出列表的值。 解题思路: > 利用reverse函数逆序 代码: arr=['f','g','e','b'] print(arr) arr.reverse() print(arr) ...

优快云 精品推荐 1416

【自然语言处理】【Pytorch】使用领域语料继续预训练BERT

import pandas as pd import os import random import numpy as np import torch import torch.nn as nn from tqdm import tqdm from transformers import AdamW, BertTokenizer, BertForMaskedLM from torch.utils.data import DataLoader, Dataset from typing import Tuple

bqw的博客 3319

【无人机编队】基于matlab虚拟leader无人机编队仿真【含Matlab源码 3279期】

虚拟leader无人机编队仿真 完整代码,包运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 837

【SAP ME 3】JAVA 调用SAP PO WebService

Java调用SAP PO/PI WebService接口

探索 Java 编程的技巧、最佳实践和解决方案。本博客提供针对 Java 开发者的实用指南,涵盖从基础到高级话题,旨在提升编程效率和技能。 847

bert系列模型继续预训练(Pytorch)

1、前言 在数据脱敏比赛或者某些锤类领域中,使用该领域的文本继续预训练,往往可以取得一个更好的结果。这篇文章主要讲怎么继续预训练。 2、两种训练框架 (1)采用transformer中Trainer 可根据实际情况,通过 model.resize_token_embeddings(len(tokenizer)) 重新定义词表的大小。 输入data格式为:以每行一个文本为单位进行mask,具体mask策略在DataCollatorForLanguageModeling中,可根据需要自行修改。 (2)采用涂涂乐

daniellibin的博客 3456

PCB仿真软件:Altium Designer_(6).PCB布线设计:自动布线与手工布线

通过以上步骤,我们完成了一个简单的PCB设计案例。在这个过程中,我们使用了自动布线和手工布线的综合策略,确保布线质量符合设计要求。创建PCB项目:在Altium Designer中创建一个新的PCB项目。导入原理图:将原理图文件导入到PCB项目中。设置布线规则:通过设置必要的布线规则,如线宽、间距等。启动自动布线:使用自动布线器进行初步布线。手工优化布线:通过手工布线工具优化关键信号的布线路径。保存和导出PCB文件:保存PCB文件并导出Gerber文件,用于生产。

kkchenjj的博客 2522

继续预训练BERT实战(pytorch版)

这里写自定义目录标题如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 根据相关领域,进一步预训练BERT可大大提高模型的性能。基于此,进行了BERT继续预训练实战。 1、 环境准备 Python=3.6 Torch=1.7.1 Cuda=11 Transformers=3.0.2(不能太新,太新会爆很多问

huangddh的博客 1541

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

文本分类场景下微调BERT

论文《How to Fine-Tune BERT for Text Classification?》是2019年发表的一篇论文。这篇文章做了一些实验来分析了如何在文本分类场景下微调BERT,是网上讨论如何微调BERT时经常提到的论文。

beingstrong的博客 2003

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【NLP】调研|医疗领域预训练语言模型设计方法

本文基于调研的 14 篇医疗预训练语言模型的论文,总结了目前设计医疗领 域预训练语言模型的方法,这些方法主要可以分为三类:1)基于医疗领域数据 进行继续预训练;2)基于医疗领域数据从头进行预训练;3)基于医疗领域设计 的自监督任务进行预训练。1继续预训练 BioBERT通过BERT初始化权重,基于生物医学领域语料库进行继续预训练;BlueBE...

fengdu78的博客 2086

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

在Bert上利用多域数据继续预训练+多域分类器:Multi-Task Deep Neural Networks for Natural Language Understanding

用于自然语言理解的多任务深度神经网络Abstract1 Introduction2 Tasks3 The Proposed MT-DNN Model3.1 The Training Procedure4 ExperimentsSNLISciTail Abstract 在本文中,我们提出了一个多任务深度神经网络(MT-DNN),用于跨多个自然语言理解(NLU)任务的学习反应。MT-DNN不仅利用了大量的跨任务数据,而且还得益于正则化的效果,这种效果导致更一般的表示,以帮助适应

g534441921的博客 2444

bert 中文 代码 谷歌_pytorch中文语言模型bert预训练代码

ACL2020 Best Paper有一篇论文提名奖,《Don’t Stop Pretraining: Adapt Language Models to Domains and Tasks》。这篇论文做了很多语言模型预训练的实验,系统的分析了语言模型预训练对子任务的效果提升情况。有几个主要结论:在目标领域的数据集上继续预训练(DAPT)可以提升效果;目标领域的语料与RoBERTa的原始预训练语料越...

weixin_39600447的博客 646

深入解析BERT预训练:从核心原理到领域自适应实践

预训练是自然语言处理中模型获得通用语言理解能力的关键阶段,其核心在于通过大规模无标注文本让模型学习语言的深层规律。其原理通常基于自监督学习,通过设计巧妙的预训练任务(如掩码语言建模)使模型自动从文本结构中学习表征。这一技术的价值在于,它能显著降低下游任务的数据需求和训练成本,实现“一次预训练,多次微调”的高效范式。在应用场景上,预训练模型已广泛应用于文本分类、问答系统、命名实体识别等多个NLP领域。本文聚焦于BERT的预训练机制,详细拆解其数据准备、动态掩码、损失计算等关键环节,并探讨如何通过领域自适应继续

weixin_33708633的博客 304

MindSpore学习实践——BERT 对话情绪识别

昇思MindSpore打卡营第四期——|基于MindSpore的BERT模型的情感分析

LuoHangSF的博客 2104

文本分类上分微调技巧实战

目录 引言 How to Fine-Tune BERT for Text Classification 论文 微调策略 ITPT:继续预训练 学术论文分类挑战赛微调 huggingface工具介绍 bert模型介绍 数据创建 模型定义 模型训练与评估 模型改进 How to Fine-Tune BERT for Text Classification 论文 微调策略 处理长文...

yanqianglifei的专栏 1098
下一篇: FGM对抗训练
Mr.奇
博客等级 码龄6年 4粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值