以下是精彩内容整理:
赋能电商
搜索推荐
深度学习的优势在什么地方?
第一是特征的抽取能力,以图像领域为例,我们很早之前做图像分类,我们的做法是拿到一幅图像,然后手工做它的feature,做好特征之后,再用分类器完成整个图像的分类,而Deep learning技术来了之后,输入的仍然是图像,但是只需要做好几个标签,而提取Feature或者抽象的过程是由Deep learning帮你完成的;
第二是特征组合能力,因为Deep learning有更复杂的网络结构,而且有很多的非线性部分,所以它的特征组合能力是比较强的。
针对以上的特点,我们利用Deep learning技术。首先在我们的主搜上做了一些应用,我们在这个场景下,设计了一套训练框架,而针对的是最原始的行为数据,而最原始的行为数据应该就是用户的点击购买以及时序行为,然后自动的学习特征产生的对用户商品和query的精确描述,从而提升GMV。
我们的项目叫representation learning,简称就是RepL。用户搜索的过程,可以抽象成一个用户然后在搜索框里面输入一条query,然后产生一次点击或者购买,而之前排序方法大多是基于手工的Feature,比方说用户的年龄、购买力。
网络架构
我们采用的方案是输入全部是ID,对所有的用户进行编码,即输入的是一个one-hot的向量,也就是说输入的实际上是一个没有实际意义的一个ID数据。在搜索的场景下,可能很容易会有一亿的商品、两亿的用户,我输入的就是这样一个超高维的一个稀疏向量。我们要对向量做一个简单的处理,会把它做一个编码,但是输出仍然是一个非常稀疏的结构。编码后的向量输入一个sparse的全连阶层,这一层过后,会紧接着有两层全连接。把用户、商品和query的全连阶层输出concat在一起,然后又通过了两层全连接。而学习的目标就是用户是否点击和购买了这个商品。
编码
coding解决的是输入的超维问题,我们通过coding把输入的ID做降维,我们有三种的编码方式:
首先是随机编码,比方说是一个2亿维的输入,红色位置是1,其他位置都是0的,然后通过一个random的projection过程,把2亿维编程1000万维。但是降维向量与2亿维向量的区别在于,它是有多个位置可以有值的,这就是随机编码的过程。
其次是挂靠编码,挂靠编码跟搜索关系比较紧密,搜索里面有i2i,用户同时购买了A商品和商品,那么B商品的编码和A商品的编码应该尽可能的让它们公用一部分key,就说它们两个编码的结果是相似的。
第三是分词编码,例如红色连衣裙,首先把它分词,分成红色和连衣裙两部分,再针对这两部分编码。
Sparse full connection layer
输入虽然也是有多个键值,但它还是非常稀疏,比方说它有2千万维,但是其中可能只有10个或者20个是有值的,其他大部分都是0,全部计算矩阵计算量是非常大的,我们只计算有值的部分。通过这个简单的处理,将原来多机多卡才能解决的问题,变成了一个单机单卡,然后参数规模就变成了原来的二十分之一,而且模型的收敛性是更好的。
Multi-task
模型上线后,我们发现一个问题,一个搜索过程是存在海选和精排的两个过程的,什么叫海选呢?比方说我要搜连衣裙,淘宝库里有2亿的连衣裙,不可能把这2亿连衣裙全部展现给用户,所以我首先要做一个海选,比如把2亿的连衣裙变成了一个5千的量级,再对5千的商品做精排。但是我们发现模型上线之后,一些优质商品在海选阶段都被去除了,我们针对这种情况就做了一个多任务的结构,将海选分与我们之前点击和购买的loss,两个loss同时作用于整个网络,相当于用一个网络完成了两个功能,同时输出海选分和精排分。
Online learning
我们与搜索的同学一起,针对双十一大促场景做了针对性优化。双十一当天的情况是瞬息万变的,如果不能实时的调整排序策略,这对用户体验是比较大的伤害,为了解决这个问题,我们首先引用了一些手工的实时feature,另外我们最后一层网络是实时更新的,按秒量级的更新模型,实时feature和实时更新模型共同来保证双十一的效果。
时序模型
我们对于点击序列也做了一些工作,深度学习当中有一个对时序建模比较好的工具叫ST&M,我们把用户的行为想象成是一个点击序列,通过用户之前的点击序列来预测用户下一次的点击。
综上所述,通过deep learning算法,主搜的成交额、转化率、成交笔数在日常和双十一都有非常显著的提升,更值得一提是冷门商品提升更加的明显。
推荐场景
我们与推荐同学一起,在淘宝的详情页看了又看做了尝试。看了又看是手淘所有推荐场景中非常重要的一个大场景,它每天的引导成交额是破亿的,其特点是它有一个主商品,而且只能推荐同店中的其他商品,这就导致它的侯选集实际上是比较小的,所以说优化难度一直以来是比较大的。推荐行为跟搜索差别在什么地方?在Deep learning看来,搜索和推荐的唯一区别可能就是搜索多了一个query,就是搜索词,而推荐是没有的。所以我整个的建模过程就是输入一个用户ID和商品ID,然后我就会预测这个用户要点或者不点这个商品。模型上线之后我们就会发现,无论是客单价还有千次展现的成交金额,都有一个比较好的提升。
我们这套框架可以很好的用在搜索推荐,甚至于用在广告的场景,因此我们就想把RepL做一些产品化的东西。我们首先用全量的电商数据,基本上包含手机淘宝或者PC淘宝所有的点击和购买,用这些数据训练一个模型,产生的是用户和商品的特征。然后把用户和商品的特征输出到各个场景,我们就可以采用常规的机器学习的方法对目标进行优化。这个计算复杂度高的Deep learning只需要训练一次,所以说它极大的节省了训练资源。同时,它能输出用户和商品的特征,降低了技术门槛,并不是每个人都需要去搞复杂的Deep learning,你只做LR或者GPDT就可以利用特征把Deep learning的结果用起来。我们利用这套框架目前对接了主搜索,天猫搜索,店铺内搜索,以及推荐方面又接了详情页,看了又看,天猫国际,当然,目前我们也是在推广阶段,后面可能会有更多的业务和场景接入。
模型压缩与加速
深度学习的网络现在是越来越大,计算复杂度也越来越高,严重影响了在手机等智能设备上的应用。
下面是GoogleNet和一个34层的残差网络,你可能觉得这两个网络好像都比较复杂,实际上在图像领域,基本上是一个中等的网络规模。首先我们要解决模型的大小,第二是模型的计算问题。我们尝试了一个二值网络,会把Deep learning所有的参数限制为1或负1,这样用1BIT就可以存储原来32BIT需要存储的东西,它的存储空间是变成了原来的32分之一。同时,整个网络的计算完全没有了乘法,只有加减,这样计算速度也非常有明显加快。如公式所示,我们把它看成了一个优化问题,F(W)就是原始神经网络的优化目标,可以是你的图像分类,可以是你的CTR,然后后面有一个约束,参数必须是1跟负1。
为了解决这个问题,我们利用了ADMM算法,他是解决分布式优化常用的算法。利用上述解法,完成网络的binary化。无论是图像、视频场景,还是电商的多种场景,总体来讲效果还是不错的。这是我们在图像上做的一些结果,ImageNet是一个标准的图像分类集,可以看到网络基本无损。这是另外一个标准的检测公开集,可以看到我们的算法也基本可以做到无损。速度方面,无论是手机还是各种嵌入式的平台上,做到了20倍左右的加速,PC机上正在做优化。我们一直觉得,模型压缩虽然现在还没有太多的大的落地场景,但这是非常有前景的一个方向,通过我们的努力使得Deep learning网络在嵌入设备上成为了可能。
辽玥:阿里巴巴iDST 算法专家,毕业于中科院,拥有工学博士学位,iDST深度学习组负责人。致力于深度学习技术在商品搜索、推荐、销量预测、图像搜索等电商场景的应用和研究。
本文为云栖社区原创内容,未经允许不得转载,如需转载请发送邮件至yqeditor@list.alibaba-inc.com;如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:yqgroup@service.aliyun.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。