团队名称:gpushare.com-比赛
团队成员(两只第一次组队打比赛的菜鸡):
wanfq:西安交通大学本科生,研究方向为对话系统
dingdingtom:中山大学本科生,研究方向为对话系统、强化学习
初赛:11 / 2771 (0.337)
复赛:5 / 2771 (0.3789)
决赛:4 / 2771 (季军 + 技术创新奖)
本次比赛是电商领域的搜索赛题,初赛为召回任务,需要提交搜索query和商品document的向量表示;复赛为精排任务,需要提交初赛向量表示,query和document的tokenize后的ids,以及tf 1.12版本的模型,返回搜索query与召回的top-k商品document对应的得分,作为排序依据(有时间限制和模型大小限制)。
向量召回的模型结构如图所示
主要分为领域数据训练和召回任务微调两步
精排模型的模型结构如图所示:
我们的方法其实比较常规,很多可能有效的方案有提出过,但因为时间和偷懒没尝试;
所有代码能在一台机器上跑就不要分几台,且尽量避免写绝对路径,否则最后交代码调整文件路径会很恐怖;
时间分配要更合理,数据清洗与数据增强时间,构造baseline时间,调参时间,写trick时间,跑多个预训练模型时间,融合模型时间,提交文件时间,都要合理安排;
所有操作一定要确保可复现,特别是数据构造部分;
多写脚本,代替手动运行,避免浪费时间;
多讨论,多请教,多看论文,避免闭门造车与拍脑袋瞎想。
本队采用的技术方案较为常规,这部分为一些本队没有采用的来自其它队伍的fancy方法,这些方法中大部分我们也考虑过,但没有尝试,希望未来能吸取教训。
训练bart生成模型,使用document生成query构造伪标签(还可以生成时随机替换一些阿拉伯数字、拼音),同时使用一定规则修正生成的伪标签query
反向翻译(不确定是否有效)
把query中长度小于4的拿出来,加入词表构建新词
把document分词后随机抽几个拼接作为新doc(不确定是否有效)
降维时可以使用无监督PCA作为降维矩阵初始化
训练交互式精排模型去蒸馏非交互式召回模型
难负例构造:使用训练好的召回模型+faiss召回,取相似度中等水平(30左右)的document作为难负例
infoNCE loss的温度:可以首先设定一个比较小的,然后慢慢变大,但不能太大
集成使用提交的线上得分作为系数加权求和embedding(不确定是否有效)
可以使用ES引擎先召回query对应top-k doc,然后经过规则过滤(字面相似度高,向量余弦相似度不低)出过滤doc,然后把query和这些doc的向量表示按照一定规则相加,作为新query向量表示
不能直接取均值,而是使用stacking的方法,把多个模型的输出向量使用一个训练后的FFN网络融合。




原文作者:ChallengeHub;如有侵权,请联系管理员删除。