炼丹秘术:给Embedding插上翅膀
在实践中,推荐系统利用Deep Learning去生成Embedding,然后通过Embedding在召回层进行召回是一种常用的方法,而且这种方法在效果和响应速度上也不比多路召回差。
同时,在局部敏感哈希方法快速近邻计算的加持下,Embedding表现亮眼,本文作为“炼丹知识点”系列的第6期,我们来聊一聊到底Embedding的相关知识点。
炼丹知识点:模型评估里的陷阱
炼丹知识点:那些决定模型上限的操作
炼丹知识点:模型的燃料,数据采样的秘密
炼丹知识点:深度模型的起跑线,初始化的意义
炼丹知识点:秘制Normalization
局部敏感哈希,英文locality-sensetive hashing,常简称为LSH。主要运用到高维海量数据的快速近似查找,近似查找便是比较数据点之间的距离或者是相似度。主要思想是,高维空间中,两点若距离很近,那么设计一种哈希函数对这两点进行哈希值计算,使得他们哈希值有很大的概率是一样的。同时若两点之间的距离较远,他们哈希值相同的概率会很小。
对于电商平台而言,商品搜索服务已经是人们日常购物中重中之重的服务了,商品的召回决定了搜索系统的质量。商品搜索需要从一个巨大的语料库中找到最相关的商品,同时还要保证个性化。系统的表现主要受到搜索query和召回商品相关性,还有训练和预估不一致的影响。这篇论文就提出了一种多粒度的深度语义召回系统,保证了训练预估一致性,并使用softmax cross-entropy loss作为训练目标,使得最终召回效果更好,模型收敛速度更快。
我们先看下淘宝商品搜索系统的全貌,每个环都是一个阶段:
我们可以看到retrieval阶段有亿级别的商品,通过我们的深度语义召回系统最终召回上万个相关商品。接下来开始介绍深度语义商品召回模型,我们有用户全集U={u1,u2,...,UN},还有query集合Q={q1, q2, ..., qN},同时还有商品集合I={i1, i2, ..., iM}。我们把用户历史行为序列参照时间区间分到3个子集,实时集合R = {i1, i2, ..., iT},短期集合 S = {i1, i2, ..., iT},长期集合L = {i1, i2, ..., iT},所以任务就是给定一个用户u的(R,S,L),以及query,返回top-K items:
用户塔:淘宝中的query多为中文,在切词后平均长度小于3,因此我们提出了多粒度的语义单元,从不同的语义粒度挖掘query含义,提升query的表达精度。给定一个query的切词q={w1, ..., wn}(e.g. {红色,连衣裙}),每个单词可以拆成字粒度w = {c1, ..., cm},同时我们还能拿到历史query qhis = {q1, ..., qk},所以我们可以得到6种粒度的表达:
Trm用的transformer,最后把6种粒度的embedding都concat在一起。
用户行为注意力机制: 用户历史点击购买的items,和每个item的side information,都可以通过embedding的方式将每个item都映射成固定长度的向量,这里我们用query与历史行为items做attention,找到相关items。对于实时集合,使用LSTM进行编码,然后套用个self-attention层,并在序列最前面加上0向量(以防历史行为没一个相关的),最后用一个attention操作获得最终embedding,如下公式所示:
对于短期行为使用多头self-attention,头部添加0向量,并计算attention:
对于长期行为(一个月内)而言,分别对点击,购买,加购集合进行mean pooling,再与query进行attention:
对长期行为的item的店铺,类目,品牌做同样的操作,最后把embeding进行sum pooling:
最后再把以上所有进行融合:
商品塔:商品塔只需要把itemID和标题进行融合得到最终embedding,如下式所示:
e表示商品embedding,wi表示标题切词,wt是转移矩阵。
综上整个模型如下所示:
论文分析到hing loss只能做local的比较,由此会产生预估与训练的diff,所以该文直接用softmax cross-entropy loss,定义如下:
实践中论文使用的sampled softmax。
因为存在很多噪音数据,导致query和商品完全不相关,所以论文在softmax函数引入了一个温度:
在样本上,需要构造强负例,本文提出的强负例构造方法是在样本空间中构造,给定训练样本(qu, i+, i-),i-是在样本池随机负采样,为了简化,i-在负样本池找到和qu点积最大的topN,并和i+进行融合成强负例,定义如下:
最终融合了强负例的softmax函数如下:
论文后面还有很多工程介绍,感兴趣可以参考原文。
炼丹秘术:给Embedding插上翅膀
炼丹秘术:给Embedding插上翅膀相关推荐
- feachall php_集合:给 PHP 数组插上翅膀
集合:给 PHP 数组插上翅膀 由 学院君 创建于2年前, 最后更新于 9个月前 版本号 #2 35657 views 7 likes 1 collects 简介 Illuminate\Support ...
- Spring Boot (六): 为 JPA 插上翅膀的 QueryDSL
在前面的文章中,我们介绍了 JPA 的基础使用方式,<Spring Boot (三): ORM 框架 JPA 与连接池 Hikari>,本篇文章,我们由入门至进阶的介绍一下为 JPA 插上 ...
- 北斗时钟系统(网络授时服务器)为数字化变电站插上翅膀
北斗时钟系统(网络授时服务器)为数字化变电站插上翅膀 北斗时钟系统(网络授时服务器)为数字化变电站插上翅膀 [摘要]本文介绍了电力系统目前所采用的时间同步方案技术的局限性以及存在的问题.在此基础上,提 ...
- 龙光地产补声东:数字化运营让业务插上翅膀|2021中国房地产数字峰会
关注ITValue,看企业级最新鲜.最价值报道! 编者按:首届50+地产数字化最高决策者齐聚的"中国房地产数字峰会"已经圆满落幕.这场由中国房地产业协会指导.中国房地产业协会数字 ...
- 让沉默的大数据为人工智能插上翅膀
让沉默的大数据为人工智能插上翅膀 运筹学能够让人工智能"学"会举一反三,从目前的解决具体问题发展为解决类型化的多种问题-- 应用广泛的人工智能.酷炫的黑科技,在不久前闭幕的重庆国际 ...
- 给科技插上翅膀,中兴以5G技术开启万物互联之旅
随着5G行业应用场景的不断扩展及人工智能的发展,5G即将迎来新一轮技术革新.从生活到生产,5G技术无所不在,从人与人连接,到人与物.物与物连接,中兴通讯正以5G技术开启万物互联之旅:如在产品领域推出5 ...
- 科技为汉字插上翅膀,动起来的汉字有多美
语言文字是文化形成的基础,而文化的特性决定了其社会发展的轨迹.汉语首先从一种具有社会等级性质的文字到实现书面语与口语的统一.经过长时间的文字进化,如今的汉语已经越来越国际化.正如歌词"全世界 ...
- 5G为数字化转型插上翅膀
5G建设不断迈上新台阶,助推各种网络.技术.应用融入生产生活 手里拿着形似游戏中的操作手柄,广西钢铁集团有限公司冷轧厂的90后技术员彭期文坐在5G创新工作室内.他手指轻触手柄按键,操控大屏幕上显示,智 ...
- 边缘计算+SDN:为物联网腾飞插上翅膀
不论是大航海时代还是互联网时代,都是因联接而改变了世界.当下,一个更大的联接浪潮正席卷而来--物联网,其将全球范围内的物体.IT系统和人有机地联接了起来,通过数据采集.分析.预测和优化等技术,实现了物 ...
最新文章
- 2019年人工智能的最大趋势和期望
- 卷积神经网络(CNN)反向传播算法
- 乐刻运动 app android,乐刻运动
- 在win server 2003上安装SQL Server 2008的步骤
- C++游戏入门书籍推荐
- 使用css弹性盒子模型
- 手机如何安装java软件_如何在手机上安装JAVA平台
- 全民主公2怎么在电脑上玩 全民主公2安卓模拟器玩法教程
- CF106C Buns动态规划解决多重背包
- Hyman分别测试法
- 人工智能产业链基本介绍,人工智能技术划为哪几部分?
- 用 XHR + curl.exe 制作 ddns 客户端札记
- 网络舆情如何有效分析评估解决的方法措施
- java和vue募捐网水滴筹项目捐款爱心系统筹款系统
- 提问:影视剪辑解说都是怎样配音的,软件合成还是自己配音?
- MIUI10刷入Magisk模块——记小白的第一次刷机
- 软件著作权上有作者名字吗
- 2022出海南亚:巴基斯坦电商市场现状及发展前景
- 文件夹加密 隐私加密 就用文件夹加密超级大师
- moviepy音视频剪辑:颜色相关变换函数blackwhite、colorx、fadein/out、gamma_corr、invert_colors、lum_contrast、mask_color详解
热门文章
- C语言 —— 贪吃蛇
- PLSQL 的简单命令之四
- pycharm 修改新建文件时的头部模板
- php html5 css样式,怎么在html页面写css样式表
- python处理完数据导入数据库_python操作数据库之批量导入
- python格式文件大小_在Python中调整NVSS FITS格式文件的大小并对其进行操作
- 秒后面的单位是什么_比光年还大的长度单位,你知道几个?
- hfss13.0安装教程
- 北斗导航 | 学习PPP和PPP-RTK
- mysql表中有重复的元组_MySQL查询找到重复的元组并显示计数?