huggingface的transformers训练bert

目录

理论

实践


理论

https://arxiv.org/abs/1810.04805

BERT(Bidirectional Encoder Representations from Transformers)是一种自然语言处理(NLP)模型,由Google在2018年提出。它是基于Transformer模型的预训练方法,通过在大规模的无标注文本上进行预训练,学习到了丰富的语言表示。

BERT的主要特点是双向性预训练-微调框架。在传统的语言模型中,只使用了单向的上下文信息,而BERT利用了双向Transformer编码器来同时考虑上下文的信息,使得模型能够更好地理解句子中的语义和关系。BERT采用了Transformer的多层编码器结构,其中包含了自注意力机制(self-attention mechanism),能够有效地捕捉句子中不同位置的依赖关系。

单向的Transformer一般被称为Transformer decoder,其每一个token(符号)只会attend到目前往左的token。而双向的Transformer则被称为Transformer encoder,其每一个token会attend到所有的token。

BERT模型通过两个阶段的训练来获得语言表示。首先,它在大规模无标注的文本上进行预训练,使用两个任务:掩码语言建模(Masked Language Modeling,MLM)和下一句预测(Next Sentence Prediction,NSP)。

MLM任务中,随机掩盖输入句子的一些词汇,模型需要预测这些被掩盖的词汇。MLM任务的目的是让模型通过上下文来推断被掩盖的词汇,从而学习到丰富的语言表示。在预训练阶段,BERT模型会使用大规模的无标注文本进行训练,其中包括了来自维基百科、新闻文章、书籍等的文本数据。模型在这些大规模数据上进行预训练,通过尝试预测被掩盖词汇的方法来学习词汇的上下文关系和语义。在MLM任务中,模型的输入句子经过编码器(Transformer)进行编码,然后通过一个全连接层(输出层)来预测被掩盖的词汇。对于被掩盖的位置,模型会生成一个概率分布,以表示每个可能的词汇是被掩盖位置的预测。通常情况下,模型会根据预训练过程中的目标函数(如交叉熵损失)来优化预测结果。通过进行MLM任务的预训练,BERT模型能够学习到词汇的上下文信息和语义表示,从而在下游任务中具有更好的表现。在微调阶段,模型会使用有标签的数据进行进一步的训练,以适应特定任务的要求,并通过微调来提升模型在特定任务上的性能。对比gpt,中间的词只能和前面的词做attention而不能和后面的词做attention,所以没法做到上下文综合理解。

在NSP任务中,模型接收两个句子作为输入,要判断这两个句子是否是原文中的连续句子。

在预训练完成后,BERT模型可以用于各种下游任务的微调,如文本分类、命名实体识别、问答等。在微调阶段,模型会在特定任务的标注数据上进行进一步的训练,以适应具体任务的要求。只需要添加一个额外的输出层进行fine-tune,就可以在各种各样的下游任务中取得state-of-the-art的表现。在这过程中并不需要对BERT进行任务特定的结构修改。

RoBERTa(Robustly Optimized BERT Approach)是由Facebook AI于2019年提出的一种语言模型,它是在BERT模型的基础上进行改进和优化的。RoBERTa的目标是通过更大规模的数据和更长的训练时间来获得更强大的语言表示能力。相比于BERT,RoBERTa采用了一系列的训练技巧和策略,如动态掩码、更长的训练序列、更大的批量大小等,以提升模型的性能。RoBERTa在多项自然语言处理任务上取得了显著的性能提升,并成为了当前领域内的重要基准模型之一。

实践

https://github.com/huggingface/transformers/tree/main/examples/pytorch/language-modeling

安装:

git clone https://github.com/huggingface/transformers
cd transformers
pip install .
pip install -r requirements.txt
python run_clm.py \--model_name_or_path openai-community/gpt2 \--dataset_name wikitext \--dataset_config_name wikitext-2-raw-v1 \--per_device_train_batch_size 8 \--per_device_eval_batch_size 8 \--do_train \--do_eval \--output_dir /tmp/test-clm

RobertaForMaskedLM = RobertaModel + RobertaLMHead

RobertaModel = RobertaEmbeddings + RobertaEncoder + RobertaPooler

RobertaEmbeddings = nn.Embedding(word,position,token_type) + nn.LayerNorm + nn.Dropout

RobertaEncoder = nn.ModuleList([RobertaLayer(config))

RobertaLayer = RobertaAttention + RobertaIntermediate + RobertaOutput

RobertaAttention = RobertaSelfAttention + RobertaSelfOutput

基本上就是x--》q,k,v-->q*k-->mask-->softmax-->*v

RobertaIntermediate = Fc + activate

RobertaOutput = Linear + dropout + layernorm

RobertaPooler = Linear + 激活函数Tanh

RobertaLMHead = Linear + gelu + layernorm +linear

总结:

RobertaForMaskedLM = RobertaModel + RobertaLMHead

        RobertaModel = RobertaEmbeddings + RobertaEncoder + RobertaPooler

            RobertaEmbeddings = nn.Embedding(word,position,token_type) + nn.LayerNorm + nn.Dropout

            RobertaEncoder = nn.ModuleList([RobertaLayer(config))

                    RobertaLayer = RobertaAttention + RobertaIntermediate + RobertaOutput * 12

                              RobertaAttention = RobertaSelfAttention + RobertaSelfOutput

                              RobertaIntermediate = Fc + activate

              ​​​​​​​                RobertaOutput = Linear + dropout + layernorm

          ​​​​​​​   RobertaPooler = Linear + 激活函数Tanh

       RobertaLMHead = Linear + gelu + layernorm +linear

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

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

相关文章

STM32 AD单通道函数设计

单片机学习! 目录 文章目录 前言 一、ADC配置步骤 二、详细步骤 2.1 开启RCC时钟 2.2 配置GPIO 2.3 配置多路开关 2.4 配置ADC转换器 2.5 开启ADC电源 2.6 ADC进行校准 2.6.1 复位校准 2.6.2 等待复位校准完成 2.6.3 开始校准 2.6.4 等待校准完成 三、启动AD转换函数…

selenium自动化登录模块HTMLTestRunner测试报告

1.下载HTMLTestRunner.py放到python的Lib目录下,python3之后的,文件要修改以下内容: 第94行,将import StringIO修改成import io 第539行,将self.outputBuffer StringIO.StringIO()修改成self.outputBuffer io.Strin…

WordPress站点如何实现发布文章即主动推送到神马搜索引擎?

平时boke112百科很少关注到神马搜索引擎,近日有站长留言想要实现WordPress站点发布文章就主动推送到神马搜索引擎,而且推送成功就自动添加一个自定义字段,以防重复推送。 登录进入神马站长平台后才知道神马也有一个API推送功能,不…

GitHub Copilot+ESP开发实战-串口

上篇文章讲了GitHub Copilot在应用中可能遇到的问题,接下来小启就简单介绍下GitHub Copilot在ESP32开发中C语言实现串口功能,感兴趣的可以看看。 一、向Copilot提问: 1. ESP32用C语言实现串口初始化; 2.配置uart为1&#xff0c…

思腾合力受邀出席文化和旅游虚拟现实应用推广交流活动并作主题演讲

3月21日,由文化和旅游部产业发展司主办,中国信息通信研究院、北京市石景山区文化和旅游局、中国动漫集团有限公司承办的“数字赋能文旅场景建设行动——文化和旅游虚拟现实应用推广交流活动”在北京首钢一高炉SoReal科幻乐园成功举办。 思腾合力CMO徐莉受…

python文学名著分享系统的设计与实现flask-django-nodejs-php

在此基础上,结合现有文学名著分享体系的特点,运用新技术,构建了以python为基础的文学名著分享信息化管理体系。首先,以需求为依据,根据需求分析结果进行了系统的设计,并将其划分为管理员和用户二种角色和多…

【Node.js从基础到高级运用】十五、单元测试与集成测试

引言 在Node.js开发过程中,测试是确保代码质量和功能正确性的关键步骤。单元测试和集成测试是最常见的测试类型。下面我们将使用Jest框架来进行测试。 单元测试 单元测试是指对软件中的最小可测试单元进行检查和验证。在Node.js中,这通常指的是函数或者…

【python开发】安装配置启动+数据库管理+表管理+数据行管理+python操作Mysql及相关安全的问题

Mysql入门 一、安装&启动1、安装2、测试3、设置和修改root密码 二、数据库管理1、内置客户端操作(1)查看当前所有的数据库(show databases);(2)创建数据库:create database learn(数据库名)…

python食品安全信息管理系统flask-django-nodejs-php

。 食品安全信息管理系统是在安卓操作系统下的应用平台。为防止出现兼容性及稳定性问题,编辑器选择的是Hbuildex,安卓APP与后台服务端之间的数据存储主要通过MySQL。用户在使用应用时产生的数据通过 python等语言传递给数据库。通过此方式促进食品安全信…

Oh My Bug || PHPmyAdmin导入csv文件时,502报错

解决: 在宝塔面板文件配置中加入一下代码 location / { proxy_pass http://localhost:888; } location /backend-api { rewrite ^/backend-api(.*)$ $1 break; proxy_pass http://你的ip地址; }

jeect-boot queryFieldBySql接口RCE漏洞(CVE-2023-4450)复现

jeect-boot积木报表由于未授权的 API /jmreport/queryFieldBySql 使用了 freemarker 解析 SQL 语句从而导致了 RCE 漏洞的产生。 1.漏洞级别 高危 2.漏洞搜索 fofa app"Jeecg-Boot 企业级快速开发平台"3.影响范围 JimuReport < 1.6.14.漏洞复现 这个漏洞的…

Grass手机注册使用教程,利用闲置手机WiFi带宽赚钱

文章目录 Grass是什么&#xff1f; 项目介绍Grasss手机使用步骤第一步&#xff1a;下载狐猴浏览器第二步&#xff1a;注册账户&#xff08;已注册直接跳过&#xff09;第三步&#xff1a;安装Grass Chrome插件1、推荐离线安装2、在线安装 第四步&#xff1a;登录第五步&#xf…

操作简单的城市内涝一维二维耦合模拟软件

原文链接&#xff1a;操作简单的城市内涝一维二维耦合模拟软件https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247598401&idx3&sn0c4c86b3a5d09a75b8f07e6fad81aa9c&chksmfa8200a6cdf589b0970a6854869e8e3a9f132fe40a19977863c091cbcf6d9786f067e0c5651…

基于python+vue拍卖行系统的设计与实现flask-django-nodejs-php

拍卖行系统的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品&#xff0c;体验高科技时代带给人们的方便&#xff0c;同时也能让用户体会到与以往常规产品不同的体验风格。 与安卓&#xff0c;iOS相比较起来&#xff0c;拍卖行…

DashScope - 阿里模型服务灵积

文章目录 关于 DashScope快速上手代码调用http 请求示例Python 调用 关于 DashScope 官方主页&#xff1a;https://dashscope.aliyun.comPYPI : https://pypi.org/project/dashscope/支持模型&#xff1a;https://dashscope.console.aliyun.com/model DashScope灵积模型服务建…

阿里云2核4G服务器租用价格和性能测评

阿里云2核4G服务器租用优惠价格&#xff0c;轻量2核4G服务器165元一年、u1服务器2核4G5M带宽199元一年、云服务器e实例30元3个月&#xff0c;活动链接 aliyunfuwuqi.com/go/aliyun 活动链接如下图&#xff1a; 阿里云2核4G服务器优惠价格 轻量应用服务器2核2G4M带宽、60GB高效…

C++ —— 日期计算器

1. 头文件 #pragma once #include <iostream> using namespace std;class Date { public:Date(int year 1, int month 1, int day 1);int GetMonthDay();bool operator>(const Date& d) const;bool operator>(const Date& d)const;bool operator<(c…

vue 消息左右滚动(前后无缝衔接)

演示效果 封装的组件 <!--* Author:* Date: 2024-03-21 19:21:58* LastEditTime: 2024-03-21 20:31:50* LastEditors: Please set LastEditors* Description: 消息左右滚动 --> <template><divid"textScroll"class"text-scroll"mousemove&…

DXP学习2- 绘制电气图【实验】

目录 一、实验目的 二、实验原理 1、创建一个新的项目文件。 2、新建原理图文件 3、设置原理图选项 4、放置元器件 5、其他电路元素的放置 6、对所有电路元素属性参数值的修改 三、实验设备 四、实验内容 1、绘制实验图2-1 元器件所在位置&#xff1a; 1&#xff0c;…