心法利器[60] | 以搜代分的生效机理

本文深入探讨了以搜代分的算法思想,将其应用于解决文本分类中的少样本和不平衡问题。通过将分类问题转化为相似度问题,以搜代分能在样本不足的情况下建立谨慎的分类边界,尤其适用于语义空间分散的场景。尽管这种方法在数据量增大后可能受限于样本覆盖度,但在早期阶段能提供较好的基线效果,并具有一定的可控性。文章建议在少样本和类别空间分散时考虑使用以搜代分,并在数据充足时逐步过渡到常规分类模型。
摘要由CSDN通过智能技术生成

心法利器

本栏目主要和大家一起讨论近期自己学习的心得和体会,与大家一起成长。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有

2022年新一版的文章合集已经发布,累计已经60w字了,获取方式看这里:CS的陋室60w字原创算法经验分享-2022版

往期回顾

有些新关注或者平时看得比较少的伙伴可能不清楚以搜代分是什么东西,可以先看看这篇文章,理解理解这个方案是怎么解决文本分类问题的:心法利器[58] | 从长尾问题到以搜代分的机理探索

最近,我一直在想,以搜代分方案会在一些现实场景有效的原因是什么,尤其是带有下面场景的问题:

  • 少样本,或者正负样本非常不均衡的情况,尤其是少样本的类用这个方式,似乎精准度会有提升。

  • 语义空间较为分散的场景,例如百科、客服等场景。

那么,其背后的原因是什么,以搜代分的分类机理是什么样的,这个分类机理带来的优势和劣势又是什么,能为我们进行方案选择提供什么建议,这就是这篇文章想要聊的。

一般分类问题的意义

一般地,所谓的分类问题,简单的归结为二分类问题,不太严谨但具有一定普遍性地说,就是要找到一个表征函数,能对给定的输入算出一个得分,得分大于一个阈值(一般是0.5)则是正类,小于则是负类,从物理意义上,其实就是找到一条边界,这个边界能够划分给定输入的类目,形象的,可以用这张图来表示:

ae0ebac9b76bca7ceaacd07df7b1ae8a.png

其实,这里有一个关键的假设,就是我们的样本足够能够描述出这条边界,可实际上,我们遇到的情况很可能是这样的:

681feff53a57d1f5e0887fb17bb8c62f.png

这种空间的核心问题是,样本给出的语义空间,没有覆盖所有情况,很多空间其实样本并没有描述,别说是模型,甚至我们自己都没法说出来,空白的部分,例如图上的红色部分,然而实际情况我们确实会遇到,样本和特征的信息不足以支撑最终预测决策的情况。而这种情况,其实就对应了比较常见的小样本问题,我们的训练数据非常稀缺,其实是无法给到模型足够的信息让他做决策的,这些情况只能靠模型猜,而这种猜并不可控。

再来说一种情况,就是这样的:

d924127f1826ecf2ac7e8bfbfee0df6d.png

可以看到,正类样本零散地分布在整个领域里的很多部分,这种问题的难度在于,很难用简单的一两条边界就把类给划分出来。当然,类似这种问题其实可以通过核函数(支持向量机里的经典操作)或者是更复杂的表征层,进行映射,但实际上,这里都要进行非常复杂的转化也是需要一定量的样本支撑的,而且这种空间映射需要的样本更多,可以看成是给模型一些勇气和信心吧,另一方面,结合上面的问题,一两个样本其实不足以让模型清晰地描绘出一条分类的边界出来,极端的,模型可能会认为这是噪音,直接忽略了。

所以其实可以看到,表面上,分类模型一般情况有一些很美好的假设,虽然我们会有这样或者那样的方式来解决,但是可能并不一定很好。

以搜代分的意义

以搜代分的本质,其实就是《统计学习方法》中的地一个分类问题,即KNN中K=1的这种特殊情况,而这点的巧妙在于,把单一样本的分类问题,转化为了两条样本的相似度问题,只要相似度,特别的NLP场景就是语义相似度,能够表征的足够准确,那确实给定输入所对应的类目,切实就可以和与之最接近的训练样本一致。

而以搜代分其实就非常好解决我上面提到的两种情况,直接看图吧:

38363e481ca1c6334b40ae40a65472ca.png

可以看到,这种模式对于空白部分,有了一些定义,这些定义能一定程度描述到空白的位置,当然,这种方式比较激进,有一个相对保守的策略,就是对比较弱势的正类做判断,如果匹配到与之接近的正类了,那就认为给定输入为正,否则为负,此时的空间大概就是这样的:

b4b12697b78ea3856f4fe01d9e916d68.png

这种方式的优点是,对正类的判别非常谨慎,边界感很强且敏感性很高,非常适合开放域的搜索或者对话场景的意图识别,有一些特定的场景技能,其实都可以用这种方式,例如“鬼故事”、“讲笑话”这种小意图。

另一种就是,某一类的空间非常零散的情况,就可以考虑这个方案,最终分出来就是这么个情况:

92edda6dc96651b226226b4f21786cc6.png

同样,可以非常轻易解决分散在各个语义空间下的正样本,而且,也不是说完全没有泛化能力,因为本身是有根据距离来约束的,所以只需要和这个query足够接近就能认为是正类,这个效果就会比较合理,也比较谨慎吧。当然了,这里可以看到,还有一个比较有用的功能,就是可控性,一旦我需要调整某些边界,我只需要挑出一些样本或者添加一下样本就好了。

以搜代分的进一步讨论

以搜代分将分类问题转化为相似度问题后,对分类的样本需求少了,多得是对语义相似度方案的要求,当然这里其实可以直接用一些开源的语义表征模型,例如simcse之类的,或者常规的文本相似度模型,如BM25、cqr、ctr之类的,可得性还比较高。回到分类问题,我们对样本的要求真就很低了,极端的每个类型可能一两个样本就能很快解决很多问题了,核心原因还是,严谨的分类边界,通过语义相似度来描述出来了,一个样本,就能画一条分类边界。

然而,当样本的数据好了,比较多之后,常规的文本分类方案,就会开始优于这种以搜代分的方案了,主要原因在于,分类的边界真的开始清晰了,来看看这个例子:

4f4aaa5adc7b66b9e7a4c9264391799d.png

当样本多到这个程度了,其实样本边界就会很明确。而另一种情况,就是样本空间分散的问题,在样本逐渐比较多的时候,上面聊的“需要给模型做空间映射”的勇气和信心,样本量本质就是信心,这个通过损失函数就会体现,损失本质上其实就是让模型朝着更有利于分类的方向去的,当数量多到让损失函数足够重视了,那空间的映射就能训的出来。

而这里,其实也可以看到,以搜代分本身是有些缺陷的,类似上面那个问题,样本足够多了,边界足够明确了,此时依旧用语义相似度做边界,就很开始很依赖样本的覆盖度,如果样本对某个位置的覆盖程度不够,很可能会出现漏召回了,说白了其实就是泛化能力可能会受到影响,这个其实直接影响的是这个方案的上线,这一般是个过度方案,前期能启一个不错的baseline,但是后期地位要开始往下调整,这里我说的比较谨慎,具体原因是因为本身还有一个可控性功能,其实所谓的黑白名单,本质其实还是以搜代分,保留以搜代分,一定程度是为了起到黑白名单的作用,大家应该很容易想明白这个点。

以搜代分的评价和使用建议

回到最初的出发点,我们去研究这个方案的机理,其实是为了在日后的使用中,我们能更好的选择和使用。那么,以搜代分的评价如下:

  • 对少样本的场景,甚至是一个样本其实就能画出一个谨慎的分类边界。

  • 分类边界的影响面较小,而且灵活性很高,如果分类的空间很分散,这个方案应该可以使用。

  • 有一定的可控性,增减样本能快速让分类结果直接得到体现。

  • 但是上限不是很高,后期可能要逐渐过渡到分类模型了。

至于使用建议上,有这几点吧:

  • 少样本的情况下,尤其是特定一个类较少的情况下,把它当做正类直接使用,准确率会比较高,召回率随着样本增加可以慢慢提。

  • 语义空间零散的,例如一些名词类的场景,其实是可以广泛使用的,其本质是词典匹配的升级版。

  • 这个方案的下限,主要还是在样本的覆盖率(说到底,没提供足够的信息,啥方案都搞不来,这个是硬伤),另一个就是相似度模型。

  • 后期数据足够后,可以逐步过渡到分类模型,但是可以适当保留,做可控性的控制,黑白名单等。

小结

从这点看来,以搜代分在一些场景会是一个不错的方案,大家可以酌情使用。

现在回头看,感觉自己写以搜代分这件事其实挺零散的,散布在很多文章里,而且多少都需要一些背景知识,大家看起来可能有些困难,后面我整理一下,弄篇比较概括的文章吧,敬请期待。

73a5b64f713af30586a2d7f5066cfa5d.png

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值