news 2026/9/2 0:10:01

bert文本情感分类

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
bert文本情感分类

项目名称:基于BERT架构的外卖评论情感分析系统

1.深入对比了传统RNN/LSTMTransformer架构的优劣

1)RNN的缺陷:RNN是串行计算的,必须处理完上一个词才能处理下一个词,无法并行的计算,导致训练速度慢。其次存在严重的梯度消失/爆炸问题,导致很难捕捉长文本,有长距离依赖的问题

2)LSTM的优势与局限:引入了门控机制(遗忘门、输入门、输出门),缓解了RNN的长距离依赖的问题。但本质上还是串行的结构,计算效率依然不高

3)Self-attention(自注意力机制):自注意力机制就是让模型在处理一个词的时候,自动的去“环顾四周”,看看周围的词和这个词本身的相关联程度,从而更好的理解语句。

高度并行化:矩阵运算一次性处理所有的词,极大提升训练速度

完美的全局感受野:文本中任意两个词之间的距离都是O(1),模型可以直接“看到”句子中相隔很远的两个词,彻底解决了长距离依赖的问题

2.Bert的原理是什么

原理:原理就是多层Transformer架构中的Encouder的堆叠,得益于Self-attention的机制,可以同时看到一个词左右两边所有上下文,做到“通读全文”.

规模参数:12层Encoder,维数为768,参数量在1.1个亿左右

3.Bert为什么好用?

Bert在海量无标注文本上做了预训练任务,就是把句子中15%的词进行mask,让模型结合上下文去猜这些词是什么,类似“完形填空”。

4.并接入全连接层进行下游任务微调

全连接层:self.cls_head = nn.Linear(768, num_class)

BERT 的输出是什么:当你把一句外卖评论(比如“这外卖太难吃了”)输入给 BERT 后,BERT 会经过层层计算,最后在[CLS]这个标志位上输出一个768 维的向量也就是你代码里的pooler_out池化层,这个层也可以选择取平均值等等,128*768 -> 1*768(假设有128个token)这里取得是第一个token)。最后用全连接层得到二分类的结果

什么是下游任务?

上游任务就是bert去提取文本的特征,下游任务就是具体的任务,比如情感分类

微调?

同时,在训练的时候,我不仅训练了这个分类头,还让反向传播的梯度微微更新了 BERT 的底层参数,这就是微调,这样能让模型更贴合外卖评论的语境。

5.为什么使用AdamW

普通的 Adam 在引入 L2 正则化时,权重衰减会和梯度更新耦合在一起。AdamW 将权重衰减解耦,对于 Transformer 这种参数量巨大的模型,AdamW 能提供更好的泛化性能。

6.为什么epochs只有5

因为我们是基于 BERT 的预训练权重进行微调,模型已经具备了很好的特征提取能力,所以不需要从头开始收敛。通常微调任务在 3-5 个 epoch 左右就能达到最优效果,如果 epoch 设置过大,反而容易在训练集上过拟合

7.【重中之重】BERT 最后的输出有几种不同的方式?

BERT 处理输出主要有以下几种常用方式:

  1. 取 Pooler Output 池化输出层(你代码中使用的方式):

    1.原理:BERT 在输入序列的最前面会强制加一个特殊的[CLS]标志位。Pooler Output就是拿这个[CLS]token 在最后一层的隐藏状态(Hidden State),再经过一个线性层(Dense)和 Tanh 激活函数后得到的向量(维度通常是 768)。它被设计用来表示整个句子的全局语义。
  2. 取 Last Hidden State 并做平均池化(Mean Pooling):

    • 原理:不只用[CLS],而是把最后一层所有 token(字/词)的隐藏状态拿出来,按序列长度维度求平均值。

  3. 取 [CLS] 的 Last Hidden State(不经过 Tanh 层):

    • 原理:直接拿第一位的[CLS]向量去接分类头,跳过官方预设的池化层。

“在我的情感分类任务中,我主要使用的是Pooler Output。通常情况下,对于简单的句级分类任务,直接用[CLS]Pooler Output就能达到很好的效果(比如 90% 以上的准确率)。但在一些更复杂的文本相似度或长文本任务中,学术界研究表明,对所有 token 做 Mean Pooling 往往能保留更平滑的全局信息准确率可能会比单独用[CLS]高出 1到2个百分点这也是我未来可以进一步优化和对比的方向。”

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 17:27:34

ESP32 开发板动态数字与 GIF 图显示实现技术分享(课程作业)

一、开发背景与目标在 ESP32 开发板基础显示功能学习完成后,本次开发聚焦于实现两大核心功能:一是基于软件定时器的动态数字(时间)实时显示,二是 GIF 动图在开发板上的循环播放,进一步掌握 ESP32 外设驱动、…

作者头像 李华
网站建设 2026/7/14 17:27:45

ssm+java2026年毕设社区人员疫情信息管理系统【源码+论文】

本系统(程序源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、选题背景关于社区疫情防控管理问题的研究,现有研究主要以大型城市整体防控策略、医疗资源调配、流行病学模型分析为主&…

作者头像 李华
网站建设 2026/7/14 17:27:46

python: Bridge Pattern

我们可以让 “业务流程” 和 “实体属性” 各自独立扩展(比如新增 “回收” 流程,或新增 “铂金” 材质,无需修改原有代码)。项目结构:# encoding: utf-8 # 版权所有 2026 ©涂聚文有限公司™ # 许可信息查看&am…

作者头像 李华
网站建设 2026/7/14 17:27:48

YOLOv1论文研读

YOLOv1最大的创新点在于它提出并实现了将目标检测定义回归问题,它不再像之前的模型一样基于分类器方法,而是通过与检测性能直接对应的损失函数进行训练,从而实现了一个端到端的统一网络,做到只需“看一眼”就能直接从完整图像中输…

作者头像 李华
网站建设 2026/7/14 17:27:47

Ubuntu 22.04系统国内镜像源配置指南

备份原配置文件 在修改前需备份原文件,防止配置错误导致系统异常: sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak编辑源文件 使用文本编辑器(如vi或nano)修改源文件: sudo vi /etc/apt/sources.list国内镜…

作者头像 李华