
你的问题没打完但我猜你是想问**那么宏F1在这个两个标签的场景下到底怎么算** 我直接讲。Table 2 里的宏F1怎么算因为来源识别只有两个标签文本来源、语气来源所以宏F1就是宏F1 语气标签的F1 文本标签的F1÷ 2就这么简单。两个标签各算一个F1然后取平均每个标签权重一样各占50%。用论文里的真实数字验证以ToxiAlert为例标签F1语气来源Para行83.30文本来源Tex行75.66宏F1 (83.30 75.66) ÷ 2 79.48表格里ToxiAlert的Macro F1写的就是79.48完全吻合。再验证一个GPT-4o标签F1语气来源Para行0.32文本来源Tex行27.30宏F1 (0.32 27.30) ÷ 2 13.81表格里GPT-4o的Macro F1就是13.81分毫不差。为什么宏F1在Para行和Tex行写的是同一个数字因为宏F1是两个标签的综合分不是某个单独标签的分。不管你从语气标签的角度看还是从文本标签的角度看这个综合分都是同一个所以两行数字一样。就像你语文90分、数学80分平均分85分。这个85分既不是语文分也不是数学分是两科的综合写在语文那一行或数学那一行都一样。微F1呢微F1不是取平均而是把两个标签的所有预测混在一起算把语气标签的所有预测 文本标签的所有预测全部倒在一起 当成一个大的二分类问题直接算一个总的精确率和召回率再算F1。因为语气标签和文本标签的样本数一样多每条音频都有这两个标签所以在这个特定场景下微F1和宏F1数值很接近ToxiAlert宏F179.48微F179.34几乎一样。所以你的意思是 对于文本猜测和语音猜测他们其实各有一个f 然后宏f就是把他们取平均值 微f就是按比例求解 但是奈何文本和语音这两个标签数量的数据应该差不多 所以值很接近 是这样吗 但是为什么不给那七个标签求一个宏f和微f你的理解完全正确我逐一确认然后回答你第二个问题。第一个问题你的理解对吗你的说法判断文本标签和语气标签各有一个F1✅ 对宏F1 两个F1取平均✅ 对微F1 按样本比例混合计算✅ 对两个标签数据量差不多所以宏F和微F很接近✅ 对因为每条音频都同时有文本来源和语气来源两个标签两个标签的样本数完全一样都是测试集的总条数所以按比例混合和直接取平均结果几乎一样。ToxiAlert的宏F179.48微F179.34差0.14就是这个原因。第二个问题为什么Table 1的7个标签不求宏F1和微F1先纠正一个点Table 1其实求了宏F1。看Table 1的列头有一列就叫Macro-F1那个就是7个类别的宏F1。但Table 1没有报微F1原因是一个数学事实在单标签多分类任务中微F1 准确率ACC两者完全相等。为什么Table 1的7个类别是互斥的一条音频只能属于一个类别。在这种情况下预测对了 → 这个样本贡献一个TP真正例预测错了 → 这个样本贡献一个FP假正例预测成了错的类别 一个FN假负例真实类别没被预测出来把所有类别混在一起算微F1时微精确率 总TP ÷ (总TP 总FP) 猜对的 ÷ 总数 ACC 微召回率 总TP ÷ (总TP 总FN) 猜对的 ÷ 总数 ACC 微F1 ACC所以微F1和ACC是同一个数报了ACC就等于报了微F1没必要重复写。那Table 2为什么两个都报因为Table 2是多标签任务一条音频可以同时有文本来源是和语气来源是两个标签。在多标签任务中一个样本可能一个标签猜对、另一个猜错这时候微F1就不等于ACC了所以需要单独报。一张表总结Table 17类毒性分类Table 2来源识别任务类型单标签多分类8选1多标签2个独立标签宏F1✅ 报了Macro-F1列✅ 报了微F1❌ 没报因为ACC重复了✅ 报了多标签中≠ACCACC✅ 报了✅ 报了全对率不需要只有一个标签✅ 报了两个标签都对才算对所以不不完全对需要加一个前提。宏F1和微F1是多个标签/多个类别时才有的概念是用来把多个F1综合成一个总分的方法。分情况说情况1只有一个标签比如单纯判断有毒/没毒只有一个F1不存在宏和微的区别因为宏F1 这一个F1 ÷ 1 这一个F1 微F1 这一个标签的F1 这一个F1宏微F1本身三个是同一个数没必要区分。情况2有多个标签/多个类别比如Table 2的2个来源标签、Table 1的7个毒性类别每个标签/类别各有一个F1这时候才需要回答怎么把多个F1合成一个总分于是才有了两种方法方法怎么做宏F1每个F1取平均大家权重一样微F1所有样本混在一起算样本多的标签权重一句话总结单个标签 → 只有一个F1没有宏微之分多个标签 → 每个标签一个F1然后才有宏F1和微F1两种综合方式。宏和微不是每个标签自带的属性而是多个F1摆在面前时你选择怎么把它们合并成一个数的两种策略。单标签多分类拆开三个词你就懂了词意思单标签一条数据只能贴一个标签不能同时贴多个多分类可选的类别有很多个不止两个任务让模型从多个类别里选一个合起来就是一条数据只能属于一个类别但类别有好几个让模型选一个。用论文里的例子对比着讲Table 17类毒性分类 单标签多分类一条音频只能是7类中的一种要么是讽刺要么是恐怖要么是性…… 不能既是讽刺又是恐怖只能选一个。就像你考试做单选题ABCD四个选项只能选一个选了A就不能选B。这就是单标签多分类。Table 2来源识别 多标签分类不是单标签一条音频可以同时贴两个标签文本来源是语气来源是 文字本身就有毒同时语气也很恶毒就像多选题可以同时选A和B。这就不叫单标签了叫多标签。再补一个容易混淆的单标签二分类类型特点例子单标签二分类一个标签只有2个选项有毒/没毒单标签多分类一个标签有≥3个选项讽刺/恐怖/性/...7选一多标签分类可以同时贴多个标签文本来源语气来源可以同时为是Table 1的7类毒性就是单标签多分类因为类别多7个但一条音频只能归到其中一类。那么现在要总结这三个表的表达意图表1说明模型在分类任务上做的好 给出好多分类它能达到比目前模型都好的效果表2说明模型在非语言部分的识别能力 非常强 在文本上的毒性识别能力也不弱表3结合着重想要提升或者测试的几类数据来看 模型的表现能力也非常好每张表的 出牌意图Table 1先证明 我分类比你准—— 入场券这张表想表达连最基本的毒性分类我们都比所有人强。为什么要先放这张因为这是基本功。你说你模型好那先在最常规的任务7 类毒性分类上跑个分看看。如果连基本功都不行后面说什么都没用。这张表的作用是拿到入场券告诉评委 我们不是花架子基础实力过硬。你看结果ToxiAlert 的 ACC 80.04%比第二名 GPT-4o 的 61.89% 高了近 20 个百分点几乎每一类都是最高。这就把 基础实力强 这个印象立住了。Table 2 Figure 3核心王牌 ——我能做到你做不到的事这是整篇论文最想突出的部分也是真正的创新点。前面说过这篇论文的核心卖点是 毒性可能来自语气不一定来自文字。但光说没用得证明别人做不到看 Qwen2 在 语气来源 标签上的 F1 只有 3.79GPT-4o 只有 0.32几乎等于瞎猜。说明现有大模型根本识别不出 靠语气传递的毒性。我们能做到ToxiAlert 在语气来源上 F183.30文本来源上 F175.66两个都很强。全对率也高两个标签同时猜对的比例 80.21%别人只有 50% 多。Figure 3热力图是把 Table 2 的数据可视化让评委一眼看到在 讽刺 纯语气 这个最难的场景ToxiAlert 91.56%Qwen2 只有 4.98%。这种视觉冲击比数字更有说服力。这两张图 / 表想告诉评委我们不是在已有任务上做得更好一点而是打开了一个新维度 —— 别人根本看不到的 语气毒性我们能精准识别。继看懂表格以及内部的基础数据之后 继续向后看内容12对于实验的判断描述和如何完整的正确的做实验两个部分1.实验基本情况描述分两个任务1.判断类别 2.判断来源说明要在表格中出现的实验参数和原因2.实验细节采用 wav2vec2-large-960h 作为音频编码器 使用的显卡 以及学习框架因为本人实在是啥也不会的 所以在这里甚至又恶补了一下关于显卡 训练模型 神经网络的知识 我知道自己的博客每天会有一些浏览量但是我不太清楚有没有人像我一样小白 所以我把这些基础性的问题粘贴在这里 不仅是为了自己复习 也希望能为同时在这方面学习的你带来一些便利一、显卡是干啥的为啥要用显卡先搞清楚CPU和显卡的区别你电脑里有两个计算核心CPU中央处理器GPU显卡/图形处理器核心数量几个到几十个几千个擅长复杂的、需要动脑筋的任务简单的、大量重复的任务比喻几个资深教授几千个小学生深度学习为啥非要用显卡训练神经网络的时候绝大部分计算是简单但巨量的乘法和加法。比如一个神经元 输入1×权重1 输入2×权重2 ... 输入1000×权重1000这就是一堆乘法加加法非常简单但一个模型有几百万甚至几十亿个这样的计算要反复算几百万次。这种任务交给CPU几个教授教授虽然聪明但人少算得慢 交给GPU几千个小学生虽然每个小学生只会算乘法但人多力量大几千人同时算快几百倍。举个具体的例子训练这篇论文的模型可能需要算几百万次迭代。如果用CPU算可能要跑几个月用A100显卡算可能几天就跑完了。所以不是想用显卡是不用显卡根本跑不动等你训练完论文都截止了。为啥用A100A100是英伟达的顶级科研显卡专门为AI训练设计的显存大80G、计算快。这篇论文的模型需要处理音频数据量大普通显卡显存不够所以用A100。二、PyTorch训练框架是干啥的先想一个问题如果你想自己写一个神经网络你需要写代码实现每一层的计算卷积、全连接、激活函数写代码实现反向传播自动求导写代码实现优化器梯度下降写代码把数据搬到显卡上计算写代码保存/加载模型处理各种bug……这些东西每一个都极其复杂尤其是反向传播的求导公式手动写几十层网络的导数能把人写疯。PyTorch就是帮你把这些脏活累活都干了的工具包你只需要写model nn.Sequential( nn.Linear(100, 50), # 第一层 nn.ReLU(), # 激活函数 nn.Linear(50, 7) # 输出层 )PyTorch自动帮你✅ 实现每一层的计算✅ 自动求导反向传播不用你手写✅ 自动把计算放到显卡上跑✅ 提供优化器Adam、SGD等一行代码调用✅ 保存/加载模型类比一下不用PyTorch用PyTorch像从零件开始组装一辆车发动机、变速箱、轮子全自己造像买一辆整车踩油门就走每个轮子都要自己画图纸、铸钢、组装框架把所有通用零件都造好了你只需要说我要几层、多大为啥选PyTorch不选别的深度学习框架有好几个PyTorch、TensorFlow、JAX等PyTorch是目前学术界最主流的因为写法接近普通Python好懂好调试生态好教程多预训练模型多这篇论文用PyTorch就是因为它是AI论文的标准配置一句话总结显卡GPU 几千个小学生同时算乘法加法让训练速度从几个月变成几天不用它根本跑不动PyTorch 把神经网络的底层脏活累活都封装好的工具包你只需要说我要几层网络它帮你实现计算、求导、优化、上显卡不用从零造轮子。好我用一条数据从头到尾走一遍完整流程每一步发生什么、出了问题怎么改全部用具体数字演示。你跟着走一遍就懂了。场景设定就用最简单的情况一个神经元判断一段音频有毒没毒。它只看两个线索线索1脏话程度0到10分线索2语气凶狠程度0到10分输出有毒1或没毒0第一步网络刚出生初始化神经网络刚创建的时候所有权重都是随机瞎给的就像一个刚出生的婴儿啥也不懂。假设随机出来的权重是脏话程度的权重 w1 0.1几乎不重视 语气凶狠的权重 w2 0.8比较重视 偏置 b 0.5 判断规则总分 0.5 就说有毒否则没毒这时候它的判断逻辑是总分 脏话×0.1 语气×0.8 0.5你看它几乎不看脏话主要看语气。这明显不对但刚出生就是这样随机的。第二步第一条数据进来前向传播拿来一条训练数据脏话程度 9骂得很脏语气凶狠 2语气很平静正确答案有毒数据从输入进去往输出层走这就叫前向传播总分 9×0.1 2×0.8 0.5 0.9 1.6 0.5 3.03.0 0.5所以它说有毒。哎这次蒙对了。但它是蒙的因为它根本不重视脏话只是刚好语气的分加上偏置够了。第三步第二条数据进来出问题了再拿一条脏话程度 10极度肮脏语气凶狠 1语气非常平静像是在念稿子骂人正确答案有毒前向传播算一下总分 10×0.1 1×0.8 0.5 1.0 0.8 0.5 2.32.3 0.5又说有毒。又蒙对了运气不错。再来一条脏话程度 0完全没脏话语气凶狠 9语气很凶但只是在朗诵正确答案没毒语气凶但内容没问题总分 0×0.1 9×0.8 0.5 0 7.2 0.5 7.77.7 0.5它说有毒。错了正确答案是没毒。这就是出问题的地方——它太看重语气了语气一凶就说有毒不管内容是什么。第四步算错了多少损失不能只知道错了得知道错得多离谱这样才知道该改多少。算一个损失值Loss预测是7.7很确信有毒正确答案是0没毒差距 7.7 - 0 7.7错得很离谱损失很大损失越大说明错得越狠需要调整的幅度越大。第五步反向传播调整权重知道错了就从输出层往回走算出每个权重应该往哪个方向调、调多少这就叫反向传播。具体怎么算的不用管是微积分求导你只需要知道结果w2语气的权重太大了导致语气一凶就误判 →把w2调小从0.8降到0.3w1脏话的权重太小了脏话这么重要的线索居然不看 →把w1调大从0.1升到0.6b偏置也微调一下调整后w1 0.6开始重视脏话了 w2 0.3不再那么看重语气了 b 0.2这就是一次完整的学习看到数据 → 预测 → 发现错了 → 调整权重。第六步再试那条错的数据用调整后的权重重新算刚才那条错的数据脏话0语气9正确答案没毒总分 0×0.6 9×0.3 0.2 0 2.7 0.2 2.9还是0.5还在说有毒。但比之前的7.7好多了方向对了只是一次调整不够。没关系再来一轮。又算损失又反向传播又调权重。w2继续降降到0.1。再算总分 0×0.6 9×0.1 0.2 1.1还是0.5。再来一轮w2降到0.05b降到0.1总分 0×0.6 9×0.05 0.1 0.55接近0.5了。再来一轮总分 0.45 0.5 → 说没毒 ✅ 对了你看经过几轮调整它终于学会了语气凶不等于有毒还要看脏话。第七步重复几百万次上面只是一条数据、一个神经元。真实情况是有几万条训练数据每条都走一遍前向→算损失→反向→调权重有几百万个权重需要同时调整不是只有2个有好几层不是只有一个神经元全部数据跑完一轮叫一个epoch要跑几十个epoch跑的过程中权重一直在微调慢慢地该重视的线索权重变大不该重视的线索权重变小层与层之间的配合越来越默契最后模型在训练数据上判断越来越准就学会了。第八步训练完了拿来用推理训练结束后权重固定下来不再变了。这时候拿一条从没见过的新音频进来前向传播算一遍 → 输出结果 → 完事不需要反向传播不需要调权重因为已经学会了。这就叫推理Inference。整个流程一张图【初始化】权重随机瞎给模型啥也不会 ↓ 【前向传播】数据进来层层计算得到预测 ↓ 【算损失】预测和正确答案比看差多少 ↓ 【反向传播】根据差多少算出每个权重该怎么调 ↓ 【更新权重】把权重改掉一点点 ↓ 【重复】拿下一条数据回到前向传播 ↓ 重复几百万次 【训练完成】权重固定模型学会了 ↓ 【推理】新数据进来只做前向传播输出结果回到这篇论文这篇论文的模型也是这个流程只是规模大得多输入不是2个线索是wav2vec2提取的768个声音特征不是1个神经元是三层、每层几百个神经元不是1个输出是两个输出头7分类2标签不是几百条数据是3万多条音频但本质完全一样随机初始化 → 前向算预测 → 算损失 → 反向调权重 → 重复到学会为止。你说的圣经网络应该是神经网络我按这个讲。先给一个总定位这三个是包含关系从小到大神经元一个打工人 ↓ 很多个组成 神经层一个部门 ↓ 很多层叠起来 神经网络整家公司它们各自负责流程中的不同环节我逐个讲。一、神经元最小的判断单元负责什么负责对一组输入做一次加权打分输出一个数。它是整个网络里最小的单位干的活就一件拿到上一层传来的几个数各自乘上自己的权重加起来过一下激活函数输出一个结果。怎么工作的用之前的例子一个神经元判断这段音频像不像讽刺输入上一层传来的3个数 - 语调上扬程度 8 - 语速快慢 6 - 文字正面程度 9文字越正面越可能是反讽 这个神经元自己的权重 - 语调上扬 × 0.7 - 语速快慢 × 0.2 - 文字正面 × 0.5 - 偏置 -1 计算 总分 8×0.7 6×0.2 9×0.5 (-1) 5.6 1.2 4.5 - 1 10.3 过激活函数 → 输出 0.98表示很像讽刺一个神经元就干这么一件事算分、输出。它不关心全局只关心自己手里这几个输入怎么组合。在整个流程中的位置前向传播时它接收输入算分把结果传给下一层反向传播时它接收从后面传回来的调整指令更新自己的权重每个神经元有自己独立的一套权重训练时各调各的。二、神经层一组神经元并排干活负责什么负责把上一层的输入从一个角度全面分析一遍输出一组结果。一层里有很多个神经元比如256个它们看的是同样的输入但每个神经元有不同的权重所以关注的角度不一样。怎么工作的还是用音频毒性的例子假设第一层有4个神经元输入wav2vec2传来的声音特征一堆数 神经元A权重配置1专门关注语调有没有上扬 → 输出像讽刺的程度 神经元B权重配置2专门关注音量有没有突然变大 → 输出像威胁的程度 神经元C权重配置3专门关注语速有没有变快 → 输出像愤怒的程度 神经元D权重配置4专门关注有没有停顿异常 → 输出像紧张的程度4个神经元看同样的输入但因为权重不同各自提取不同的特征最后输出4个数组成一个新的特征向量传给下一层。一层干的活就是从输入里同时提取多种不同角度的特征。一个神经元只能看一个角度一层就能同时看很多角度。在整个流程中的位置前向传播时一层的所有神经元同时算分输出一组数整体传给下一层反向传播时一层的所有神经元同时接收调整指令各自更新自己的权重一层里的神经元之间不互相通信各算各的只是并排工作。三、神经网络多层叠起来的完整系统负责什么负责把一个复杂任务拆成几步层层加工最后输出最终答案。一层只能做一次特征提取但复杂任务需要多步推理。比如判断是不是讽刺第一层先提取基础特征语调、音量、语速第二层把基础特征组合起来语调上扬文字正面 可能是反讽第三层综合所有信息做最终判断这就需要多层叠起来每一层的输出是下一层的输入层层加工越来越抽象。怎么工作的音频输入 ↓ 第1层基础特征层256个神经元各自提取一个基础声音特征 → 输出256个数语调、音量、语速、停顿…… ↓ 第2层组合特征层128个神经元把基础特征组合起来 → 输出128个数像讽刺、像威胁、像愤怒…… ↓ 第3层综合判断层64个神经元做高级抽象 → 输出64个数整体情绪模式、毒性模式…… ↓ 输出层7个神经元7类毒性 2个神经元来源标签 → 最终结果数据从第一层流到最后一层每一层都在上一层的基础上做更高级的加工这就是前向传播的完整路径。在整个流程中的位置神经网络就是整个系统本身训练时前向传播算预测 → 算损失 → 反向传播从输出层往回逐层传调整信号 → 每一层的每个神经元更新权重 → 重复推理时数据从前往后流一遍输出结果完事三者协作的完整流程用公司类比角色公司类比在前向传播中干啥在反向传播中干啥神经元一个员工拿到上级给的资料按自己的经验打分交上去收到这次哪里错了的反馈调整自己的判断经验神经层一个部门所有员工同时分析同一份资料从不同角度出结论汇总成部门意见交上去部门所有员工同时收到反馈各自调整神经网络整家公司资料从基层部门层层上报每级加工一次最后老板拍板出结果从老板那里开始往下传哪里错了每层每个员工都调整自己的经验一句话总结神经元 一个打工人负责一次加权打分神经层 一个部门一堆打工人从不同角度同时分析输出一组特征神经网络 整家公司多个部门层层上报把简单输入一步步加工成最终判断。三者是从小到大的包含关系单个神经元干不了复杂的事一层只能提取一次特征多层叠起来才能解决复杂问题。13.对于表格中的数据内容进行论述分类别级别和标签级别进行对比论述经过与最高指标模型相比 t依旧在各方面取得碾压性的成果