参考网址:
(主要看这个的,他的推导过程更详细)
https://zhuanlan.zhihu.com/p/82022962
这篇稍微总结了一些,看看利于理解
https://zhuanlan.zhihu.com/p/53194407
商品推荐的其它神经网络算法:
https://cloud.tencent.com/developer/news/322989
http://cjc.ict.ac.cn/online/onlinepaper/42-8-7-201981695203.pdf
item2vec商品推荐
1基本思想
item2vec 是一种学习 item embedding 的成熟方案,是一个只有一个隐层的深度学习模型。输入端是用户的商品购买序列, 输出端是与输入端的 target item 邻近的多个item,基本思想是用户输入某个商品后,使用embedding后的物品为输入向量,从而训练出一个向量空间,在此空间中,类似的物品的值相近,item2vec可以从已经训练好的模型中选取出与该商品最相似的前几个商品,实现从word2vec到item2vec。
2应用场景
一般像电商网站的“看了也看”、“买了也买”、“相似物品”模块比较适合应用Item2Vec算法,因为缺少用户信息,另外用户也可能是未登陆状态。
3基本概念
万物皆可Embedding,简单来说,embedding 就是用一个低维的向量(向量就是一组数值。)表示一个物体,可以是一个词,或是一个商品,或是一个电影等等。这个 embedding 向量的性质是能使距离相近的向量对应的物体有相近的含义,比如 Embedding(苹果) 和 Embedding(水果) 之间的距离就会很接近,但 Embedding(苹果) 和 Embedding(宝马) 的距离就会远一些。
图 3.1
除此之外Embedding甚至还具有数学运算的关系,比如:
Embedding(西班牙)-Embedding(马德里)≈ Embedding(法国) - Embedding(巴黎)
图 3.2
Item2vec就是使用embedding后的物品为输入向量,从而训练出一个向量空间,在此空间中,类似的物品的值相近,比如在向量空间中,西瓜的向量可为0.56,香瓜为0.66,而手表则为0.77。在此向量空间中,西瓜与手表之间的距离大于西瓜与香瓜,所以西瓜与香瓜更为相似。
图 3.3
4商品推荐模型item2vec
Item2vec脱胎于自然语言处理的word2vec。既然我们要训练一个物品的语义表达,那么训练样本显然是一个物品的集合。
图3.4 word2vec 的两种模型结构 CBOW 和 Skip-gram
(1)那么为了产生模型的正样本,我们选一个长度为2的滑动窗口,从序列左边滑倒右边,每滑一次,窗口中的词就形成了我们的一个正样本。有了训练样本之后我们就可以着手定义优化目标了,既然每个词w(t),都决定了相邻词w(j),基于极大似然,我们希望所有样本的条件概率p(w(j)|w(t))之积最大,因为我们希望推荐的商品是用户最可能购买的,这里我们使用log probability。我们的目标函数有了:
(2)接下来的问题是怎么定义p(w(j)|w(i)),作为一个多分类问题,最简单最直接的方法当然是直接用softmax函数,我们又希望用向量v(w),表示每个词w,用词之间的距离表示语义的接近程度,那么我们的条件概率的定义就可以很直观的写出。
(3)根据word2vec的神经网络架构图输入向量表达和输出向量表达,输入向量表达就是input layer到hidden layer的权重矩阵,而输出向量表达就是hidden layer到output layer的权重矩阵。
图 3.5
(4)根据 p(w(t+j)|w(t)) 的定义,我们可以把两个vector的乘积再套上一个softmax的形式转换成上面的神经网络架构,在训练过程中通过梯度下降的方式求解模型参数。当模型训练好后,我们上面所说的输入向量矩阵中每一行对应的权重向量就是我们所需要的词向量v(w),于是这个权重矩阵自然转换成了item2vec的lookup table(我们所需的词向量表)。
图 3.6从word2vec到item2vec
有了词向量表后,我们就可以对输入的商品进行相似度的查找。
5实验过程:
实验过程(部分截图)
图 3.7
实验结果
输入拖鞋:
图3.8 输入拖鞋的实验结果
输入是背包:
图 3.9
- 结果分析:
在上图中输入模型的词是背包,在词向量空间中,跟它相似的有双肩包、电脑包、帆布背包等,按推荐指数降序排序。