企业招聘网站大全免费宁波设计网站公司

news/2025/10/7 6:06:19/文章来源:
企业招聘网站大全免费,宁波设计网站公司,大人和小孩做系列网站,公司网站后台怎么添加内容文 | 苏剑林编 | 智商掉了一地单位 | 追一科技思想朴素却不平凡的分类问题后处理技巧#xff0c;浅显易懂的讲解#xff0c;拿来吧你#xff01;顾名思义#xff0c;本文将会介绍一种用于分类问题的后处理技巧——CAN#xff08;Classification with Alternating Normaliz… 文 | 苏剑林编 | 智商掉了一地单位 | 追一科技思想朴素却不平凡的分类问题后处理技巧浅显易懂的讲解拿来吧你顾名思义本文将会介绍一种用于分类问题的后处理技巧——CANClassification with Alternating Normalization。经过笔者的实测CAN确实多数情况下能提升多分类问题的效果而且几乎没有增加预测成本因为它仅仅是对预测结果的简单重新归一化操作。有趣的是其实CAN的思想是非常朴素的朴素到每个人在生活中都应该用过同样的思想。然而CAN的论文却没有很好地说清楚这个思想只是纯粹形式化地介绍和实验这个方法。本文的分享中将会尽量将算法思想介绍清楚。论文标题When in Doubt: Improving Classification Performance with Alternating Normalization论文链接https://arxiv.org/abs/2109.13449思想例子假设有一个二分类问题模型对于输入给出的预测结果是那么我们就可以给出预测类别为接下来对于输入模型给出的预测结果是这时候处于最不确定的状态我们也不知道输出哪个类别好。但是假如我告诉你类别必然是0或1其中之一两个类别的出现概率各为0.5。在这两点先验信息之下由于前一个样本预测结果为1那么基于朴素的均匀思想我们是否更倾向于将后一个样本预测为0以得到一个满足第二点先验的预测结果这样的例子还有很多比如做10道选择题前9道你都比较有信心第10题完全不会只能瞎蒙然后你一看发现前9题选A、B、C的都有就是没有一个选D的那么第10题在蒙的时候你会不会更倾向于选D这些简单例子的背后有着跟CAN同样的思想它其实就是用先验分布来校正低置信度的预测结果使得新的预测结果的分布更接近先验分布。2 不确定性准确来说CAN是针对低置信度预测结果的后处理手段所以我们首先要有一个衡量预测结果不确定性的指标。常见的度量是“熵”[1]对于定义为然而虽然熵是一个常见选择但其实它得出的结果并不总是符合我们的直观理解。比如对于和直接套用公式得到但就我们的分类场景而言显然我们会认为比更不确定所以直接用熵还不够合理。一个简单的修正是只用前top-个概率值来算熵不失一般性假设是概率最高的个值那么其中。为了得到一个01范围内的结果我们取为最终的不确定性指标。算法步骤现在假设我们有个样本需要预测类别模型直接的预测结果是个概率分布假设测试样本和训练样本是同分布的那么完美的预测结果应该有其中是类别的先验分布我们可以直接从训练集估计。也就是说全体预测结果应该跟先验分布是一致的但受限于模型性能等原因实际的预测结果可能明显偏离上式这时候我们就可以人为修正这部分。具体来说我们选定一个阈值将指标小于的预测结果视为高置信度的而大于等于的则是低置信度的不失一般性我们假设前个结果属于高置信度的而剩下的个属于低置信度的。我们认为高置信度部分是更加可靠的所以它们不用修正并且可以用它们来作为“标准参考系”来修正低置信度部分。具体来说对于我们将与高置信度的一起执行一次 “行间标准化 这里的其中乘除法都是element-wise的。不难发现这个标准化的目的是使得所有新的的平均向量等于先验分布也就是促使式(3)的成立。然而这样标准化之后每个就未必满足归一化了所以我们还要执行一次 行内标准化 理论上这两步可以交替迭代几次不过实验结果显示一次的效果就挺好了。最后我们只保留最新的作为原来第个样本的预测结果其余的均弃之不用。注意这个过程需要我们遍历每个低置信度结果执行也就是说是逐个样本进行修正而不是一次性修正的每个都借助原始的高置信度结果组合来按照上述步骤迭代虽然迭代过程中对应的都会随之更新但那只是临时结果最后都是弃之不用的每次修正都是用原始的。参考实现这是笔者给出的参考实现代码# 预测结果计算修正前准确率 y_pred  model.predict(valid_generator.fortest(), stepslen(valid_generator), verboseTrue ) y_true  np.array([d[1] for d in valid_data]) acc_original  np.mean([y_pred.argmax(1)  y_true]) print(original acc: %s % acc_original)# 评价每个预测结果的不确定性 k  3 y_pred_topk  np.sort(y_pred, axis1)[:, -k:] y_pred_topk / y_pred_topk.sum(axis1, keepdimsTrue) y_pred_uncertainty  -(y_pred_topk * np.log(y_pred_topk)).sum(1) / np.log(k)# 选择阈值划分高、低置信度两部分 threshold  0.9 y_pred_confident  y_pred[y_pred_uncertainty  threshold] y_pred_unconfident  y_pred[y_pred_uncertainty  threshold] y_true_confident  y_true[y_pred_uncertainty  threshold] y_true_unconfident  y_true[y_pred_uncertainty  threshold]# 显示两部分各自的准确率 # 一般而言高置信度集准确率会远高于低置信度的 acc_confident  (y_pred_confident.argmax(1)  y_true_confident).mean() acc_unconfident  (y_pred_unconfident.argmax(1)  y_true_unconfident).mean() print(confident acc: %s % acc_confident) print(unconfident acc: %s % acc_unconfident)# 从训练集统计先验分布 prior  np.zeros(num_classes) for d in train_data:prior[d[1]]  1.prior / prior.sum()# 逐个修改低置信度样本并重新评价准确率 right, alpha, iters  0, 1, 1 for i, y in enumerate(y_pred_unconfident):Y  np.concatenate([y_pred_confident, y[None]], axis0)for j in range(iters):Y  Y**alphaY / Y.sum(axis0, keepdimsTrue)Y * prior[None]Y / Y.sum(axis1, keepdimsTrue)y  Y[-1]if y.argmax()  y_true_unconfident[i]:right  1# 输出修正后的准确率 acc_final  (acc_confident * len(y_pred_confident)  right) / len(y_pred) print(new unconfident acc: %s % (right / (i  1.))) print(final acc: %s % acc_final)实验结果那么这样的简单后处理究竟能带来多大的提升呢原论文给出的实验结果是相当可观的▲原论文的实验结果之一笔者也在CLUE上的两个中文文本分类任务上做了实验显示基本也有点提升但没那么可观验证集结果IFLYTEK(类别数:119)TNEWS(类别数:15)BERT60.06%56.80%BERT CAN60.52%56.86%RoBERTa60.64%58.06%RoBERTa CAN60.95%58.00%大体上来说类别数目越多效果提升越明显如果类别数目比较少那么可能提升比较微弱甚至会下降当然就算下降也是微弱的所以这算是一个“几乎免费的午餐”了。超参数选择方面上面给出的中文结果只迭代了1次的选择为3、的选择为0.9经过简单的调试发现这基本上已经是比较优的参数组合了。还有的读者可能想问前面说的“高置信度那部分结果更可靠”这个情况是否真的成立至少在笔者的两个中文实验上它是明显成立的比如IFLYTEK任务筛选出来的高置信度集准确率为0.63而低置信度集的准确率只有0.22TNEWS任务类似高置信度集准确率为0.58而低置信度集的准确率只有0.23。个人评价最后再来综合地思考和评价一下CAN。首先一个很自然的疑问是为什么不直接将所有低置信度结果跟高置信度结果拼在一起进行修正而是要逐个进行修正笔者不知道原论文作者有没有对比过但笔者确实实验过这个想法结果是批量修正有时跟逐个修正持平但有时也会下降。其实也可以理解CAN本意应该是借助先验分布结合高置信度结果来修正低置信度的在这个过程中如果掺入越多的低置信度结果那么最终的偏差可能就越大因此理论上逐个修正会比批量修正更为可靠。说到原论文读过CAN论文的读者应该能发现本文介绍与CAN原论文大致有三点不同不确定性指标的计算方法不同。按照原论文的描述它最终的不确定性指标计算方式应该是也就是说它也是top-个概率算熵的形式但是它没有对这个概率值重新归一化并且它将其压缩到01之间的因子是而不是因为它没有重新归一化所以只有除才能保证01之间。经过笔者测试原论文的这种方式计算出来的结果通常明显小于1这不利于我们对阈值的感知和调试。对CAN的介绍方式不同。原论文是纯粹数学化、矩阵化地陈述CAN的算法步骤而且没有介绍算法的思想来源这对理解CAN是相当不友好的。如果读者没有自行深入思考算法原理是很难理解为什么这样的后处理手段就能提升分类效果的而在彻底弄懂之后则会有一种故弄玄虚之感。CAN的算法流程略有不同。原论文在迭代过程中还引入了参数使得式(4)变为也就是对每个结果进行次方后再迭代。当然原论文也没有对此进行解释而在笔者看来该参数纯粹是为了调参而引入的参数多了总能把效果调到有所提升没有太多实际意义。而且笔者自己在实验中发现基本已经是最优选择了精调也很难获得是实质收益。文章小结本文介绍了一种名为CAN的简单后处理技巧它借助先验分布来将预测结果重新归一化几乎没有增加多少计算成本就能提高分类性能。经过笔者的实验CAN确实能给分类效果带来一定提升并且通常来说类别数越多效果越明显。后台回复关键词【入群】加入卖萌屋NLP/IR/Rec与求职讨论群后台回复关键词【顶会】获取ACL、CIKM等各大顶会论文集 [1]  苏剑林. (Dec. 1, 2015). 《“熵”不起从熵、最大熵原理到最大熵模型一》[Blog post]. Retrieved from https://kexue.fm/archives/3534

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/929997.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自学做网站可以嘛上海网站建设开发电话

JetCache自动化配置加载 JetCache的配置加载主要是在jetcache-autoconfigure模块中完成的,其中加载配置的核心类是JetCacheAutoConfiguration,主要是用于创建全局性的一些Bean,例如全局缓存配置类GlobalCacheConfig,AutoConfigur…

公司网站开发立项文档桂林十里画廊

初中物理中最重要的部分就是公式了,在这之中公式的换算可以说是一个难点,也是一个重点。力学部分一、速度公式火车过桥(洞)时通过的路程s=L桥+L车声音在空气中的传播速度为340m/s 光在空气中的传播速度为3108m/s二、密度公式(ρ水…

网站制作软件排行榜推广网站技巧

这些年我曾和很多程序员一起工作,他们之中的一些人非常厉害,而另一些人显得平庸。不久前因为和一些技术非常熟练的程序员工作感觉很愉快,我花了一些时间在考虑我佩服他们什么呢?什么原因让优秀的程序员那么优秀,糟糕的…

银川网站开发推广企业微信营销的方法7种

1. 题目 给你一个数组 nums ,数组中有 2n 个元素,按 [x1,x2,...,xn,y1,y2,...,yn] 的格式排列。 请你将数组按 [x1,y1,x2,y2,...,xn,yn] 格式重新排列,返回重排后的数组。 示例 1: 输入:nums [2,5,1,3,4,7], n 3 …

九江巿建设局网站周口学做网站

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 为方便和上一节的衔接,在正式开始学习前,先把本节的思维导图引入: 二、阻塞IO实验 1.硬件原理图分析 2.实验程序 #define I…

书店网站建设目标调研的方案网站图片悬浮代码

将at24c04模块连接到开发板i2c2总线上 i2ctool查看i2c2总线上都有哪些设备 UU表示设备地址的从设备被驱动占用,卸载对应的驱动后,UU就会变成从设备地址。at24c04模块设备地址 0x50和0x51是at24c04模块i2c芯片的设备地址。这个从芯片手册上也可以得知。A0 A1 A2表示的是模块对…

中国建设教育协会的是假网站吗城乡建设学校网站

‍‍‍‍1这篇文章是在上一篇文章之后写的,因为上篇文章写到了嵌入式找兼职的一些坑,下面有同学留言说要怎么找到兼职项目,所以这篇文章会写一些我的兼职经历还有总结建议,希望对大家如何找兼职有一些帮助。这篇文章是写第二次了&…

提示网站正在建设中常州小型网站建设

使用Jest测试Cesium源码 介绍环境Cesium安装Jest安装Jest模块包安装babel安装Jest的VSC插件 测试例子小结 介绍 在使用Cesium时,我们常常需要编写自己的业务代码,其中需要引用Cesium的源码,这样方便调试。此外,目前代码中直接使用…

随手记 | 关于AI最新趋势和未来发展方向探讨

随手记 | 关于AI最新趋势和未来发展方向探讨总的来说,我想要表达的是未来的发展速度越来越快了 还有自己不能像别人那样清晰且流程的表述出自己的观点,即使自己在AI的领域中已经有很深入的学习了,也许是贬低或是却是…

网站建设企业号助手企业网站排名提升软件智能优化

错误显示 前提条件 apt-get install opensslapt-get install openssl-dev 解决办法 在CMakeLists.txt文件中加入如下命令link_libraries(crypto) 参考链接 无法将openssl库链接到CLion C 程序c - 无法将openssl库链接到CLion C程序

奉贤免费网站建设app模板下载网站模板

选择自己发新年短信群发还是106短信平台,取决于您的需求和资源。 如果您需要发送的短信数量较少,或者您有特定的发送需求,例如需要发送一些包含敏感信息的短信,那么您可以选择自己发送。您可以使用手机或电脑上的短信应用程序来发…

大名做网站网页好看的网站设计

在k8s当中支持两种声明资源的方式: 1、 yaml格式:主要用于和管理资源对象 2、 json格式:主要用于在API接口之间进行消息传递 声明式管理方法(yaml)文件 1、 适合对资源的修改操作 2、 声明式管理依赖于yaml文件,所有的内容都在y…

linux系统服务器怎么做网站图书信息管理系统代码网站建设

指定顶部模块和重新排序源 文件夹默认情况下,Vivado Design Suite会自动确定设计的顶层添加到的源文件的层次结构和细化、合成和模拟的顺序项目这可以通过右键单击中的“层次更新”设置进行控制“源”窗口的菜单。请参阅中的“源”窗口中的“层次更新”命令Vivado …

上海网站建设中心深圳高端网站建设创新

8月24日-27日,第十七届全国知识图谱与语义计算大会(CCKS 2023)在沈阳召开。大会以“知识图谱赋能通用AI”为主题,探讨知识图谱对通用AI技术的支撑能力,探索知识图谱在跨平台、跨领域等AI任务中的作用和应用途径。 作为…

模板网站的建设方式与方法广州广告网站建设

一、 多租户定义 多租户定义: 多租户技术或称多重租赁技术,简称SaaS,是一种软件架构技术,是实现如何在多用户环境下(此处的多用户一般是面向企业用户)共用相同的系统或程序组件,并且可确保各用…

纪检监察网站建设方案用家用电脑建设网站

2013年手游行业的规模与收入均实现了大幅增长,发展势头强劲。然而,在手游快速发展的同一时候,因为监管、审核等方面存在着漏洞,手机游戏软件被破解后注入恶意代码、盗取用户財产、窃取用户设备信息的现象屡见不鲜。手游被破解后黑…

# Redis vs ElasticSearch 搜索性能对比

# Redis vs ElasticSearch 搜索性能对比Posted on 2025-10-07 05:00 吾以观复 阅读(0) 评论(0) 收藏 举报关联知识库:# Redis vs ElasticSearch 搜索性能对比Redis vs ElasticSearch 搜索性能对比 思维路线导读…

Redis部署策略

Redis部署策略Posted on 2025-10-07 05:00 吾以观复 阅读(0) 评论(0) 收藏 举报关联知识库:Redis部署策略Redis 部署策略

AI骚扰电话:技术发展的双刃剑效应

AI骚扰电话:技术发展的双刃剑效应Posted on 2025-10-07 05:00 吾以观复 阅读(0) 评论(0) 收藏 举报关联知识库:AI骚扰电话:技术发展的双刃剑效应AI骚扰电话:技术发展的双刃剑效应来源: 金错刀 - 霸榜315的「最…

早期白板编程案例

早期白板编程案例Posted on 2025-10-07 05:00 吾以观复 阅读(0) 评论(0) 收藏 举报关联知识库:早期白板编程案例早期白板编程案例:Max Howell 的 Google 面试争议 背景介绍 Max Howell 是 macOS 上著名的包管理…