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

数据集处理

相关推荐
小王不爱笑1322 小时前
IO 模型
开发语言·python
kishu_iOS&AI2 小时前
Conda 简要说明与常用指令
python·安全·conda
小陈工2 小时前
FastAPI性能优化实战:从每秒100请求到1000的踩坑记录
python·性能优化·django·flask·numpy·pandas·fastapi
知我Deja_Vu2 小时前
【避坑指南】ConcurrentHashMap 并发计数优化实战
java·开发语言·python
njidf2 小时前
用Python制作一个文字冒险游戏
jvm·数据库·python
呆呆小孩2 小时前
Anaconda 被误删抢救手册:从绝望到重生
python·conda
liliangcsdn2 小时前
LLM复杂数值的提取计算场景示例
人工智能·python
人工智能AI酱3 小时前
【AI深究】逻辑回归(Logistic Regression)全网最详细全流程详解与案例(附大量Python代码演示)| 数学原理、案例流程、代码演示及结果解读 | 决策边界、正则化、优缺点及工程建议
人工智能·python·算法·机器学习·ai·逻辑回归·正则化
WangLanguager3 小时前
逻辑回归(Logistic Regression)的详细介绍及Python代码示例
python·算法·逻辑回归