多模态特征如何融入到推荐
最近刚好读了2篇文章,对于多模态特征处理的核心问题:
- 多模态表征和推荐ID类特征的表征不在一个向量空间,如何有效融合;
- 其次多模态特征预训练的,如何有效评估以及融入推荐系统之后如何进行更新的问题
一、先解决怎么融合的问题:
- 将多模态表征聚类,使用聚类的id进行输入,模态特征退化成id类特征
- 直接使用多模态特征进行DIN
- 使用simscore(target和seq的相似度,作为seq序列的sideinfo)
1,3都能取得一定效果,简单反而能有一定收益,多模态表征和序列表征毕竟还是差异比较大,简单输入能早点参与模型参数更新;2的话由于多模态表征深度参与,但由于多模态表征无法进行联合更新,效果一般
有啥更好的方式:
- 多模态特征的分布表示(target和seq)计算分箱分布统计
- 直接接入,但taget,seq向量直接接个DIN模型,这个辅助模型用来对齐多模态表征和序列模型表征;可以理解这个辅助模型在当前行为样本上的微调,然后把中间参数、logits和序列模型联合训练
- simcore分数进行编码,通过一个可学习emb,学习数值型emb,然后和推荐系统进行联合训练
二、多模态特征更新
- 模态特征+微调网络(通过行为数据进行多轮的微调,毕竟多模态特征微调成本高,但一些MLP网络微调相对轻松容易)
- 微调网络相当于一个对齐网络(对齐多模态特征和行为序列特征表征),然后将微调网络(中间层参数以及logits)接入到正常序列模型进行联合训练
三、多模态特征预训练
- 定义好<正、负>样本,对于文本<正样本取搜索文本和购买商品标题> <负样本取mini-batch随机负样本>;对应图片<正样本取搜索图片和购买商品图片> <负样本取mini-batch随机负样本>; 正负样本的确定决定预训练多模态语义向量的质量
- loss直接使用对比loss,infoNCE loss
四、序列特征attention模块
- (target,seq,pos,gap) 四元组; 通过 Temporal Interest Module, TIM网络(说实话个人觉得这个网络效果不如显式的特征交叉,显式特征交叉表达信号强,交叉的浅训练充分,交叉阶数越大,训练越难,不容易收敛)
五、兴趣纠缠或者拉扯问题
- 多个emb,任务级别的emb,单个任务独享emb
- shared emb 处理共享信息,但最好是有共享参数的领域
- 各个任务emb参数尺寸尽量跟场景配合,部分场景小,搭配小的emb才能训练充分
参考:
标签:模态,融入,seq,训练,emb,特征,推荐,表征 From: https://www.cnblogs.com/adam86546853/p/18344746