day42部分题目

@z浙大疏锦行

  1. 我的问题是:从底层网络计算的机制来看,BiLSTM 和 BERT(也就是 Transformer 架构)在处理这种长文本的'长距离序列依赖'时,它们的核心工作方式有什么本质区别?为什么在这个任务上,BERT 获取全局语义的能力会碾压 BiLSTM?"

首先是 BiLSTM :它的本质依然是串行计算 。虽然它有输入、遗忘、输出三个门控机制,能极大地缓解梯度消失问题,但它依然需要'一个词一个词'地按顺序读。如果一篇文章有 500 个词,第 1 个词的信息要经过 500 步才能传递到最后。在这个漫长的传递过程中,信息必然会发生严重的衰减和丢失。

而 BERT(Transformer 架构)则完全不同 :它使用的是 Self-Attention(自注意力机制) 。它抛弃了按顺序读的模式,直接开启了**'上帝视角'。在计算时,句子里的 任意两个词**,无论隔得有多远,它们之间都能直接进行一次矩阵乘法(点积),距离瞬间缩短为 1 步(O(1) 的复杂度)。

所以,BERT 不仅自带强大的预训练迁移学习知识,更因为这种一步到位的全局注意力机制 ,让它在处理咱们项目里几百词的长文本时,能够完美捕捉首尾的语义关联,最终分类效果彻底碾压了受限于串行信息衰减的 BiLSTM。"

"老师,LSTM 就像串行传话,相隔 100 个词就需要 100 步的传递,极其容易造成长距离信息的遗忘。而 BERT 的 Self-Attention 相当于打破了时间序列的限制,让所有的词同时在一个全连接的图里进行矩阵点积打分。它使得任意两个词语的语义交互距离强制缩短为 1 步,这也是为什么在处理咱们天池那几十万条长文本新闻时,BERT 能一眼看穿全局语义,碾压了 BiLSTM。"

导师提问: "你的权重是怎么按 F1 分数分配的?具体的计算策略是什么?"

为什么你要费劲捕获这种长距离依赖?

你把 TextCNN、BiLSTM 和 BERT 这种异构网络强行集成在一起,理论上是不对的,它们提取特征的空间都不一样,你怎么能这样直接做模型预测呢?"

为什么一定要一样长?(显卡的"强迫症")

  1. 如果你在写代码时偷了个懒,没有用 pack_padded_sequence 把这些 0 给'压缩/屏蔽'掉,直接把带有大量 0 的矩阵强行喂给了 BiLSTM,这会对你的模型训练、以及最终算出来的特征向量,造成什么毁灭性的打击?"

"混合精度 FP16 中,GradScaler 是干什么用的?没有它行不行?" (展示你的显存和精度管理能力) :"不行。FP16 虽然能让训练吞吐量翻倍并节省显存,但它的动态范围比 FP32 窄很多。在反向传播时,很多极其微小的梯度在 FP16 下会被直接截断为 0,引发'梯度下溢'。GradScaler 的作用是在反向传播前,将 Loss 乘上一个非常大的缩放因子把梯度放大,等权重更新前再缩放回来,从而完美兼顾了速度与精度。"

  1. 所谓的"加权软投票"到底怎么用代码实现?
  1. 长尾优化与特征集成:设计类别加权交叉熵提升少数类敏感度;提取各模型在测试集输出的 Logits 矩阵,采用基于验证集 F1 分数的加权软投票(Soft Voting)策略实现降维融合。 做这个的意义是什么
  1. 同学,你已经有了很强的 BERT,为什么还要费力气把 CNN 和 RNN 融合进来?"
  1. "你提到用了 Soft Voting(软投票),它比普通的'少数服从多数'高级在哪里?"
  1. "为什么说硬投票会丢失置信度信息?你的加权软投票具体是怎么加权的?"
  1. 看你的代码只有单模型训练,你这个融合在工程上是怎么落地的?
  1. 怎么 微调 的
  1. "你提到了用 Linear Warmup 保护底层预训练权重,为什么要保护?不加 Warmup 会发生什么?"

防止"新人的鲁莽"破坏"老兵的经验", BERT 微调属于迁移学习 ,我们需要在保护'预训练知识'和学习'新任务特征'之间做平衡。

  1. 你的数据既然是脱敏的数字 ID,那你后面用的 BERT 预训练模型,它自带的中文词表(Vocab)不就完全失效了吗?你是怎么解决这个冲突的?
  1. "CNN 通常用来处理二维图像(比如花卉),你是怎么用它来处理一维的文本数据的?你的卷积核大小 2, 3, 4 到底代表什么物理含义?"

卷积之后你接了一个 Max Pooling(最大池化),而且窗口大小等于整个句子的长度。为什么要这么做?这会不会丢掉很多信息?

BiLSTM + Attention 的时序魔法

新闻文本长短不一,你在 Batch 训练时肯定要做 Padding(补齐 0)。这些 0 会对 LSTM 造成什么影响?

为什么用了 BiLSTM 还要加 Attention?你的 Attention 在遇到刚才说的 Padding 0 时,是怎么处理的?"

因为bilstm认为每个词的贡献是极其不合理的,所以使用了注意力机制,做了mask操作,告诉模型哪些是真实词,哪些是0,送入softmax时候,把补齐的0的分数换成极小的负数

你说数据存在严重的'长尾类别不平衡',你是怎么解决的?为什么最后评估模型用的是 Macro-F1 而不是 Accuracy(准确率)?

pack__sequence与mask

你具体是怎么在代码里部署 GradScaler 的?加在哪个位置了?"

反向传播之前增大梯度,更新参数之前再缩回去

也就是说,样本数越小,猜错的惩罚就越大,代价越高

不用过采样有两个原因 :

一是过采样少数类会引入重复样本,增加过拟合风险,尤其是在数据量已经有 20 万的情况下;二是加权损失在实现上更简洁,不改变数据分布,训练流程更稳定。两者本质上都是在调整类别的梯度贡献比例,但加权损失更优雅。

Label Smoothing 的原理是什么?在你的项目里解决了什么问题?

Label Smoothing 是把硬标签软化,正确类从 1 变成 0.9,其他类从 0 变成约 0.007。它在我的项目里解决两个问题:第一是防止过拟合,硬标签会驱动模型把 logit 推到极端值,softmax 输出趋近 one-hot,模型过度自信;第二是配合类别不平衡,少数类样本少,模型容易在这些类上过度拟合几个训练样本的模式,Label Smoothing 相当于正则化,让模型保持适度的不确定性。

考官心里很清楚:原生的 BERT 最多只能处理 512 个词。 而新闻类文本(尤其是咱们天池这个比赛)通常都很长,有的几千甚至上万个词。 他只要顺口问一句:"BERT 只能处理 512 个词,你的新闻那么长,剩下的词你直接扔掉了吗?"如果你答不上来,他就会怀疑你的 0.94 分是不是真的。

Logits(原始得分)直接相加 ,

你的硬件配置是怎样的?BERT 这么大,你是怎么跑通的?"

梯度累积解决了什么问题?和直接用大 batch 有什么区别?

"Transformer 为什么用 LayerNorm 而不是 BatchNorm?"

BERT 和 GPT 的本质区别是什么

CNN、RNN、Transformer 建模长距离依赖的能力有什么本质区别?

常用激活函数对比

注意力机制

soft(q*k的转置)*v

什么是 Embedding

数据集处理

相关推荐
kobe_OKOK_5 小时前
__getattr__和__getattribute__如何用
python
全栈弄潮儿6 小时前
Python实战第2期: 变量与数据类型
后端·python·agent
长沙三为智能科技6 小时前
家政小程序门店运营模块设计:会员、下单、派单、结算四段链路的落地拆解
python·小程序·内容运营
Cc.Y6 小时前
Java零基础入门:可变字符串与包装类:StringBuilder、StringBuffer 与 通讯录管理系统实战
java·开发语言·python
启观川6 小时前
数据结构与算法 -第 3 章 常用算法-动态规划
数据结构·笔记·python·算法
码爸6 小时前
排序算法介绍
python·算法·排序算法
笔墨登场说说6 小时前
flink bin/start-cluster.sh 帮我做成开机启动
开发语言·python
MoRanzhi12037 小时前
第 3 篇 · 数据清洗与特征工程:从问题判定到特征构建
python·pandas·数据清洗·特征工程·缺失值处理·异常值检测·特征编码
刘科领8 小时前
使用ollama & openweb-ui 本地搭建自己的AI
人工智能·python·ui·ai
专业程序开发源8 小时前
flask家电故障预测系统92491-计算机课程设计/毕业设计
vscode·python·sql·算法·flask·课程设计