基于bert的分类笔记
文章目录
- 一、基于prompt的文本分类
- 二、什么是样本不均衡问题
- 三、样本不均衡会导致什么问题
- 三、如何解决样本不均衡问题
- 四、基于bert的文本分类模型是咋做的
- 五、bert模型中的[CLS]、[UNK]、[SEP]是什么意思?
- 六、bert跟下游任务的关系可以是pipeline,也可以是end-to-end
- 七、如何提高模型的鲁棒性
一、基于prompt的文本分类
二、什么是样本不均衡问题
样本不均衡问题就是指在做文本分类时发现,训练数据中的样本类别分布差异极大,有的类别占比超过90%,有的类别占比连0.01%都不到。
三、样本不均衡会导致什么问题
由于模型训练的本质是最小化损失函数,当某个类别的样本数量非常庞大,损失函数的值大部分被样本数量较大的类别所影响,导致的结果就是模型分类会倾向于样本量较大的类别。
三、如何解决样本不均衡问题
- 模型层面:通过加权Loss,包括基于类别Loss、Focal Loss和GHM Loss三种加权Loss函数
- 数据层面:通过人为控制正负样本的比例,可以使用欠采样或过采样两种方法。
a. 过采样:重复正例数据,实际上没有为模型引入更多数据,过分强调正例数据,会放大正比例噪音对模型的影响。由于随机过采样采取简单复制样本的策略来增加少数类样本,因此存在过拟合风险,最好搭配使用正则化模型。可以通过数据增强的方法(包括回译技术、替换技术、随机噪声引入技术等方法),避免每次重复同样的正例数据。也可以通过从文本生成的角度来增加正样本,例如:基于BERT的有条件生成任务和基于SIMBERT来生成相似文本任务。
b. 欠采样:如果直接丢弃有点浪费的话,那就每次迭代模型训练时,使用不同的一小部分。如下图所示:
There are several ways to deal with imbalanced data, including:
• Randomly oversample the minority class.
• Randomly undersample the majority class.
• Gather more labeled data from the underrepresented classes.
四、基于bert的文本分类模型是咋做的
基于BERT的文本分类模型就是在原始的BERT模型后再加上一个分类层即可
五、bert模型中的[CLS]、[UNK]、[SEP]是什么意思?
BERT 的输入可以包含一个句子对 (句子 A 和句子 B),也可以是单个句子。此外还增加了一些有特殊作用的标志位:
[CLS] 标志放在第一个句子的首位,经过 BERT 得到的的表征向量 C 可以用于后续的分类任务。[CLS]就是classification的意思,可以理解为用于下游的分类任务。对于文本分类任务,BERT模型在文本前插入一个[CLS]符号,并将该符号对应的输出向量作为整篇文本的语义表示,用于文本分类。可以理解为:与文本中已有的其它字/词相比,这个无明显语义信息的符号会更“公平”地融合文本中各个字/词的语义信息。
[SEP] 标志用于分开两个输入句子,例如输入句子 A 和 B,要在句子 A、B 之间增加 [SEP] 标志。
[UNK]标志指的是未知字符
[MASK] 标志用于遮盖句子中的一些单词,将单词用 [MASK] 遮盖之后,再利用 BERT 输出的 [MASK] 向量预测单词是什么。
六、bert跟下游任务的关系可以是pipeline,也可以是end-to-end
一般我们就用训练集出一个模型,然后可以在其他的代码里读取这个模型来使用。其他的代码就是所谓的下游任务(比如·什么分类、NER什么的)。BERT只是出一个词向量,这个向量不接任务你也看不出什么东西。这种分开训的就叫pipeline,如果bert和下游任务一起训就叫end-to-end
七、如何提高模型的鲁棒性
- 对抗训练
通过在原始输入上增加对抗扰动,得到对抗样本,再利用对抗样本进行训练,从而提高模型的表现。由于自然语言文本是离散的,一般会把对抗扰动添加到嵌入层上。为了最大化对抗样本的扰动能力,利用梯度上升的方式生成对抗样本。为了避免扰动过大,会将梯度做归一化处理。 - 知识蒸馏
知识蒸馏这个概念最早由Hinton在2015年提出。一开始,知识蒸馏通往往应用在模型压缩方面,利用训练好的复杂模型(teacher model)输出作为监督信号去训练另一个简单模型(student model),从而将teacher学习到的知识迁移到student。Tommaso在18年提出,如果student和teacher的模型完全相同,蒸馏后则会对模型的表现有一定程度上的提升。 - L1和L2正则化
L1正则化可以得到稀疏解,L2正则化可以得到平滑解。 - Dropout
- 数据增强
- Early stopping
- 交叉验证
- Batch Normalization
- 选择合适的网络结构
通过减少网络层数、神经元个数、全连接层数等降低网络容量 - 多模型融合
Baggging &Boosting,将弱分类器融合之后形成一个强分类器,而且融合之后的效果会比最好的弱分类器更好,三个臭皮匠顶一个诸葛亮。
参考文献:
- https://m.thepaper.cn/baijiahao_13867755
- https://www.1024sou.com/article/321102.html
- https://www.ylkz.life/deeplearning/p10979382/
- https://blog.csdn.net/weixin_43797818/article/details/107352565
- https://blog.csdn.net/weixin_43977748/article/details/118071000
- https://zhuanlan.zhihu.com/p/422538072
- https://jishuin.proginn.com/p/763bfbd5e037 (加权loss讲得很详细)
- https://mp.weixin.qq.com/s?__biz=MzIyNTY1MDUwNQ==&mid=2247484242&idx=1&sn=c439a0761a617cac3c496e841ccd1324&chksm=e87d3174df0ab8628ce4822107ab0008fd0355e23246c90c18be09eb343b51d3cd2b1b8b23d4&scene=21#wechat_redirect
- https://blog.csdn.net/u013250861/article/details/114241270
- https://zhuanlan.zhihu.com/p/67099007
基于bert的分类笔记相关推荐
- 基于Bert文本分类进行行业识别
NLP学习之Bert文本分类 行业识别--基于Bert 项目介绍 数据集: 数据迭代器: 项目结构: 总入口: 模型搭建和配置 配置类: config 模型搭建:model 数据预处理: 数据预处理 ...
- 【文本分类】基于BERT预训练模型的灾害推文分类方法、基于BERT和RNN的新闻文本分类对比
·阅读摘要: 两篇论文,第一篇发表于<图学学报>,<图学学报>是核心期刊:第二篇发表于<北京印刷学院学报>,<北京印刷学院学报>没有任何标签. ·参考文 ...
- 《机器学习实战》笔记(04):基于概率论的分类方法 - 朴素贝叶斯分类
基于概率论的分类方法:朴素贝叶斯分类 Naive Bayesian classification 这大节内容源于带你理解朴素贝叶斯分类算法,并非源于<机器学习实战>.个人认为<机器学 ...
- 自然语言处理NLP星空智能对话机器人系列:深入理解Transformer自然语言处理 基于BERT模型微调实现句子分类
自然语言处理NLP星空智能对话机器人系列:深入理解Transformer自然语言处理 基于BERT模型微调实现句子分类 目录 基于BERT模型微调实现句子分类案例实战 Installing the H ...
- 基于 BERT 实现的情感分析(文本分类)----概念与应用
文章目录 基于 BERT 的情感分析(文本分类) 基本概念理解 简便的编码方式: One-Hot 编码 突破: Word2Vec编码方式 新的开始: Attention 与 Transformer 模 ...
- 基于 BERT 掩码语言的指代消解--论文笔记
BERT Masked Language Modeling for Co-reference Resolution 基于 BERT 掩码语言的指代消解 [原文地址](https://www.aclwe ...
- 复盘:基于attention的多任务多模态情绪情感识别,基于BERT实现文本情感分类(pytorch实战)
复盘:基于attention机制的多任务多模态情绪情感识别(pytorch实战),基于BERT实现文本情感分类 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对 ...
- Machine Learning in Action 读书笔记---第4章 基于概率论的分类方法:朴素贝叶斯
Machine Learning in Action 读书笔记 第4章 基于概率论的分类方法:朴素贝叶斯 文章目录 Machine Learning in Action 读书笔记 一.基于贝叶斯决策理 ...
- 我的实践:pytorch框架下基于BERT实现文本情感分类
当前,在BERT等预训练模型的基础上进行微调已经成了NLP任务的一个定式了.为了了解BERT怎么用,在这次实践中,我实现了一个最简单的NLP任务,即文本情感分类. 文章目录 1.基于BERT进行情感分 ...
最新文章
- Activity缓存方法。
- 隔空投送找不到_嗑技热点对标苹果AirDrop,安卓终于也能隔空投送
- 写了多年代码,你会 StackOverflow 吗
- invoke 按钮点击_h5+ app内点击按钮实现复制功能 实现方法
- html的id不能有.吗,html – 哪些DOM元素不能接受id?
- 前端笔记-vue cli中v-bind动态数据实时更新
- matlab table中的文字转string_el-table 滚动条美化
- 【Java】JDK1.8新特性Date类----日期/时间改进
- 理解C++ dynamic_cast
- python怎么存为动图_Python将视频或者动态图gif逐帧保存为图片的方法
- java 第几周_java获取第几周
- 3月11日Linux课程笔记
- 常用的字符串对象方法
- Atitit.编程语言的基础句型and汉语英文比较
- Visual SourceSafe 2005(Vss2005)使用经验总结
- Exception: java.io.IOException: Keystore was tampered with, or password was incorrect
- Navicat Premium11.0.16 for mac 破解
- 开发过程中swagger-ui快速集成详解
- Python教程:去除背景,我保证不动她一根头发(附多种方式)
- HTML5 FileReader