如何用“加性边距”改善行业细分的Embedding模型?

如何用“加性边距”改善行业细分的Embedding模型?

背景

对于一家店铺(如石头科技),建立动态可增减的标准Q列表。对于一个输入消费者Q,需要快速识别,将其分类到一个现成的标准Q。

思考

这个任务跟人脸识别有相似性(对象分类但类别列表动态可变),考虑可否借鉴人脸识别领域的主流算法 ArcFace。

行业细分问题人脸识别问题
识别对象消费者Q人脸照片
识别目标标准Q注册人脸
嵌入(embedding)维度768、1024、1536等512
相似度度量余弦相似度余弦相似度
预训练模型BERT、Roformer等ImageNet 预训练
训练数据同行业跨公司的语料数据百万级照片起步

假设:只看单句。

形式化

基本思路是将消费者Q 和 标准 Q 通过 embedding 模型映射到特征空间,通过计算两两 embedding 的余弦相似度来度量语义距离。核心是下面虚线框中的 embedder 模型,假设从预训练的语言模型开始,如何用有限的数据进行微调,以使得 embedder 模型在对消费者 Q 进行嵌入和分类时得到更好的表现:

如何用“加性边距”改善行业细分的Embedding模型?

数据准备

假设我们有 N(如 53)个标准Q,同时使用数据增强的方式(例如使用ChatGPT)为每个标准Q扩增100个语义相似的文本。

标准Q的扩增,例如去掉实体主语(扫地机洗地机),给ChatGPT API下达指令,由ChatGPT进行数据增强:

如何用“加性边距”改善行业细分的Embedding模型?

Loss

那么我们可以使用 softmax / cross-entropy loss 对模型进行训练。Softmax能使不同类的特征分开,但不会分开太多:

如何用“加性边距”改善行业细分的Embedding模型?

Softmax仅要求分类正确,不要求类内紧凑和类间距离,这一点不适合标准Q识别任务,标准Q识别的关键是得到泛化能力强的feature,与分类能力不是完全等价的。

总结来说:

  1. Softmax训练的深度特征,会把整个超空间或者超球,按照分类个数进行划分,保证类别是可分的,这一点对多分类任务如MNIST和ImageNet非常合适,因为测试类别必定在训练类别中。
  2. 但Softmax并不要求类内紧凑和类间分离,这一点不适合行业细分任务,因为训练集的样本,相对测试集来说,非常微不足道,而我们不可能拿到所有消费者Q的训练样本。
  3. 所以需要改造Softmax,除了保证可分性外,还要做到特征向量类内尽可能紧凑,类间尽可能分离。

细看 Softmax

文本特征到Softmax之间的线性层,如果忽略偏差,则 Loss 如下式:

如何用“加性边距”改善行业细分的Embedding模型?

SphereFace — 把特征限制在超球上:

如何用“加性边距”改善行业细分的Embedding模型?

特征归一化

  1. 从最新方法来看,权值W和特征f(或x)归一化已经成为了标配,而且都给归一化特征乘以尺度因子s进行放大,目前主流都采用固定尺度因子s的方法;
  2. 权值和特征归一化使得CNN更加集中在优化夹角上,得到的深度人脸特征更加分离;
  3. 特征归一化后,特征向量都固定映射到半径为1的超球上,便于理解和优化;但这样也会压缩特征表达的空间;乘尺度因子s,相当于将超球的半径放大到s,超球变大,特征表达的空间也更大(简单理解:半径越大球的表面积越大);
  4. 特征归一化后,人脸识别计算特征向量相似度,L2距离和cos距离意义等价,计算量也相同,我们再也不用纠结到底用L2距离还会用cos距离(向量归一化之后,欧式距离与余弦距离意义等价)
如何用“加性边距”改善行业细分的Embedding模型?
如何用“加性边距”改善行业细分的Embedding模型?

用cos(x1,x2)表示两个向量之间的余弦相似度,余弦距离就是1-余弦相似度,L2距离就是sqrt(2(1-余弦相似度))

ArcFace 的加性边距

如何用“加性边距”改善行业细分的Embedding模型?
如何用“加性边距”改善行业细分的Embedding模型?
如何用“加性边距”改善行业细分的Embedding模型?

对于margin的理解

假设训练时将到某一固定损失值时,有margin的和无margin的e指数项是相等的,那么有margin的存在,

就相对的变小了,因此有margin的训练就会把类别 i 的输入特征和权重间的夹角

缩小了,margin把同类挤的更聚集了,和其它类间自然就更分离了。

参考文档

  1. ArcFace(https://arxiv.org/abs/1801.07698
  2. 参考实现:https://github.com/foamliu/InsightFace-PyTorch
  3. 人脸识别loss总结:https://zhuanlan.zhihu.com/p/488760708
  4. 人脸识别的LOSS(上):https://zhuanlan.zhihu.com/p/34404607
  5. 人脸识别的LOSS(下):https://zhuanlan.zhihu.com/p/34436551
咨询方案 预约演示                        
(0)
AI工程专家-liuyangfoamAI工程专家-liuyangfoam
上一篇 2024年6月7日 上午11:21
下一篇 2024年6月14日 上午11:08

相关推荐