迁移学习案例_中文文本分类案例

1. 通过微调方式进行迁移学习的两种类型

类型一:直接加载预训练模型进行输入文本的特征表示,后接自定义网络进行微调输出结果;

类型二:使用指定任务类型的微调脚本微调预圳练模型,后接带有输出头的预定义网络输出结果,说明:所有类型的实战演示,都将针对中文文本进行;

2. 迁移学习-中文分类

即中文句子分类。

任务介绍 :直接加载预训练模型进行输入文本的特征表示,后接自定义网络进行微调输出结果;

数据介绍:数据文件有三个train.csv,test.csv,validation.csv,数据样式都是一样的。(都只有2列数据:标签、文本);

通过huggingface的datasets工具,加载信息文件;使用datasets中的load_dataset()方法来读取数据,如:csv文件;之前是 先构建数据源对象DataSet,再构建数据加载器DataLoader;此方法好处是:在这里datasets这个第三方库的load_dataset方法读取文件,直接得到一个DataSet对象,即此第三方库可帮忙完成第三方库的构建;load_dataset("csv", data_files=my_files, split="train")第一个参数是当前要读取的文件类型,后面data_files文件路径跟的是什么样的文件类型、这里就指明什么样的文件:如果后面是csv则此处是csv、如果是txt则是txt、如果是json则是json;

2.1 数据预处理

2.2 自定义下游任务网络模型

自定义单层的全连接网络作为微调网络。根据实际经验,自定义的微调网络参数总数应大于0.5倍的训练数据量,小于10倍的训练数据量,这样有助于模型在合理的时间范围内收敛。

定义下游任务模型:定义一个类继承 nn.Module,init方法、forward方法;init方法:直接实例化一个linear层:输入特征768(因为BertModel只是一个特征提取器,不具备任何任务输出特征头,所以bert后的结果还是867维的向量)、输出特征2(因为整个文本做二分类,所以输出特征是2)。forwar方法:input_ids, attention_mask, token_type_ids三个参数即前面处理过的3个输入,这3个输入不是直接给上面的 nn.Linear的,而是先经过预训练模型(前面加载的预训练模型bert_model),得到bert模型编码后的结果因为预训练模型不参与训练,所以需要将参数冻结,使用with torch.no_grad():进行冻结 ,只对其代码范围内的bert模型这块起作用(即未对齐这行),全连接层没有在代码范围内,所以对其不起作用 (pooler_output = bert_output.pooler_output这行不要写进去,bert_output"pooler_output" 代表每个样本的CLS - -token对应的隐藏层输出结果,代表整个句子的语意)但是上面的全连接层要进行模型的训练**;(为了不让预训练模型的参数进行更新,这里需要使用 with torch.no_grad():得到预训练后的结果,再送给全连接层,得到预测的结果)。

2.3 模型训练

2.4 模型评估

模型训练:

模型评估:

相关推荐
高洁012 天前
未来三年,AI 落地的五个确定性判断一
人工智能·深度学习·机器学习·transformer·知识图谱
江畔柳前堤3 天前
字节跳动·大模型应用知识手册
前端·人工智能·深度学习·opencv·目标检测·重构·transformer
高洁013 天前
AI智能体:会自己张罗事的软件实体
人工智能·深度学习·transformer·知识图谱·tornado
tiger8654 天前
大语言模型面试和题解,梳理中国主流开源 LLM 系列的发展脉络、技术路线与工程取舍
人工智能·gpt·深度学习·算法·自然语言处理·面试·transformer
程序猿编码5 天前
零依赖纯手写:C++ 实现完整神经网络,张量反向传播全打通
c++·神经网络·transformer·大模型推理
高洁016 天前
大模型的幻觉怎么治
人工智能·深度学习·django·transformer·tornado
大江东去浪淘尽千古风流人物6 天前
【RoboDojo】机器人操作通用策略统一评估基准:42仿真+18现实任务×异构并行深度解析
机器人·transformer·具身智能·机器人学习·视觉表示·patch policy·robodojo
高洁017 天前
孪生不止在工厂:能源、医疗与农业
人工智能·深度学习·transformer·知识图谱·tornado
布吉岛的石头7 天前
Java 程序员第 48 阶段15:Transformer 架构总览与自注意力直觉,注意力权重可视化:用 Java 打印注意力矩阵理解模型在看什么
人工智能·深度学习·transformer
richard_first7 天前
第3章 PTQ:不用重新训练也能量化 LLM
人工智能·深度学习·语言模型·自然语言处理·transformer