Abstract
MULTI-VIEW-DNN联合了多个域做的丰富特征,使用multi-view DNN模型构建推荐,包括app、新闻、电影和TV,相比于最好的算法,老用户提升49%,新用户提升110%。并且可以轻松的涵盖大量用户,解决冷启动问题。
主要做user embedding的过程,通多用户在多个域的行为作为一个ivew,来表征用户,参与用户embedding过程。
Contribution
- 利用丰富的用户特征,建立多用途的用户推荐系统。
- 针对基于内容的推荐,提出了一种深度学习方法。并学习不同的技术扩展推荐系统。
- 结合不同领域的数据,提出了Multi-View DNN模型建立推荐系统。
- multi-view DNN模型解决用户冷启动问题。
- 基于四个真实的大规模数据集,通过严格的实验证明所提出的推荐系统的有效性。
Data Set
Type | DataSet | UserCnt | FeatureSize | Joint Users |
---|---|---|---|---|
User view | Search | 20M | 3.5M | / |
Item View | News Apps Movie/TV | 5M 1M 60K | 100K 50K 50K | 1.5M 210K 60K |
DSSM FOR USER MODELING IN RECOMMENDATION SYSTEMS
deep structured semantic model参考Learning deep structured semantic models for web search using clickthrough data。
结构图:
- 把条目映射成低维向量。
- 计算查询和文档的cosine相似度。
其中:
l 1 = W 1 x l_1 = W_1 x l1=W1x
l i = f ( W i l i − 1 + b i ) , i = 2 , . . . , N − 1 l_i = f(W_i l_{i-1} + b_i), i=2,..., N-1 li=f(Wili−1+bi),i=2,...,N−1
y = f ( W N l N − 1 + b N ) y = f(W_N l_{N-1} + b_N) y=f(WNlN−1+bN)
word hashing
通过word hashing层将word映射为稠密向量。以good为例。
- 添加首尾标记: #good#
- 拆分word为n-grams: #go, goo, ood, od#
- 通过多个小的n-grams的向量表示word。
这种方法即使有新词出现,也不会出现问题。
DSSM训练
对于一次搜索,如果点击了一个文档,认为他们是相关的。对于搜索查询集,DSSM去最大化被点击文档 D + D^+ D+的条件似然概率**。
P ( D + ∣ Q ) = e x p ( γ R ( Q , D + ) ) ∑ D ′ ∈ D e x p ( γ R ( Q , D ′ ) ) P(D^+|Q) = \frac{exp(\gamma R(Q, D^+))}{\sum_{D^\prime \in D} exp(\gamma R(Q,D^\prime))} P(D+∣Q)=∑D′∈Dexp(γR(Q,D′))exp(γR(Q,D+))
其中D是全集, γ \gamma γ是平滑因子。损失函数自然就是:
L ( W , b ) = − l o g ∏ ( Q , D + ) P ( D + ∣ Q ) L(W,b) = -log \prod_{(Q, D^+)} P(D^+|Q) L(W,b)=−log(Q,D+)∏P(D+∣Q)
MULTI-VIEW DEEP NEURAL NETWORK
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n3vFFq9l-1602238284044)(https://raw.githubusercontent.com/InsaneLife/MyPicture/master/dssm4.png)]
对于User view,计算User View和Item View之间的 P ( I V i ∣ U V ) P(IV_i|UV) P(IVi∣UV),然后最小化:
L ( W , b ) = − l o g ∏ ( U V , I V + ) P ( I V i + ∣ U V ) L(W,b) = -log \prod_{(UV, IV^+)} P(IV^+_i|UV) L(W,b)=−log(UV,IV+)∏P(IVi+∣UV)
其中P()定义为:
P ( I V + ∣ U V ) = e x p ( γ c o s ( U V , I V + ) ) ∑ I V ′ ∈ I V e x p ( γ c o s ( U V , I V ′ ) ) P(IV^+|UV) = \frac{exp(\gamma cos(UV, IV^+))}{\sum_{IV^\prime \in IV} exp(\gamma cos(UV,IV^\prime))} P(IV+∣UV)=∑IV′∈IVexp(γcos(UV,IV′))exp(γcos(UV,IV+))
Data input
对于第j行输入数据,它的主域 X u , j X_{u, j} Xu,j和一个激活View X a , j X_{a, j} Xa,j,其余的View输入 X i : i ≠ a X_{i:i \not= a} Xi:i=a都为0向量。
User features
- search queries:规范化,然后处理成unigram格式。
- clicked URLs:只保留主域名,如www.linkdin.com
News features
news article clicks:
- title( tri-gram)
- top-level category(binary features)
- named entities
App features
App download histories:
- App tile( tri-gram)
- category(binary)
Movie/TV feature
movie/TV view history
- title( tri-gram)
- description( tri-gram)
- genre(binary)
训练过程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qgf3AmpE-1602238284046)(https://raw.githubusercontent.com/InsaneLife/MyPicture/master/Multi-view%20DNN.png)]
训练目标:
原文公式:
p = a r g max W u , W 1 , . . . W v ∑ j = 1 N e x p ( γ a c o s ( Y u , Y a , j ) ) ∑ X ′ ∈ R d a e x p ( γ a c o s ( Y u , f a ( X ′ , W a ) ) p=arg\max_{W_u, W_1,... W_v} \sum^N_{j=1} \frac{exp(\gamma_a cos(Y_u, Y_{a, j}))}{\sum_{X^\prime \in R^{d_a}} exp(\gamma_a cos(Y_u,f_a(X^\prime, W_a))} p=argWu,W1,...Wvmaxj=1∑N∑X′∈Rdaexp(γacos(Yu,fa(X′,Wa))exp(γacos(Yu,Ya,j))
训练目标:
L ( W u , W 1 , . . . W v ) = ∑ j = 1 N e x p ( γ a c o s ( Y u , Y a , j ) ) ∑ X ′ ∈ R d a e x p ( γ a c o s ( Y u , f a ( X ′ , W a ) ) L(W_u, W_1,... W_v) = \sum^N_{j=1} \frac{exp(\gamma_a cos(Y_u, Y_{a, j}))}{\sum_{X^\prime \in R^{d_a}} exp(\gamma_a cos(Y_u,f_a(X^\prime, W_a))} L(Wu,W1,...Wv)=j=1∑N∑X′∈Rdaexp(γacos(Yu,fa(X′,Wa))exp(γacos(Yu,Ya,j))
最小化L()为目标得到 W u , W 1 , . . . W v W_u, W_1,... W_v Wu,W1,...Wv,即网络的参数矩阵。
MV-DNN优势
- 和DSSM相比,其query和doc的feature是一样长的维度,使用同样的预处理,限制了feature。而跨域信息feature往往不同,而且n-gram方法并不适用,所以MV-DNN结合其类别特征(如电影和app类别,地理位置等)。
- MV-DNN可以结合多个跨域信息,实现对user embedding。pair-wise training过程,user-item pairs。
降维方法
top features
对于user features,选取top-k最频繁的features。并通过TF-IDF过滤掉最常用的特征。
k-means
k-mean会指定k为类簇的个数,目标是最小化所有类簇点与中心点的距离只和。公式表达:
a
r
g
min
C
1
,
C
2
,
…
C
k
∑
i
=
1
N
min
C
j
∈
{
C
1
,
C
2
…
,
C
k
}
d
i
s
t
a
n
c
e
(
X
i
,
C
i
)
arg \min_{C_1,C_2,…C_k} \sum_{i=1}^N \min_{C_j \in {\{C_1, C_2…,C_k\}}} distance(X_i, C_i)
argC1,C2,…Ckmini=1∑NCj∈{C1,C2…,Ck}mindistance(Xi,Ci)
其中
X
i
X_i
Xi是数据点,
C
j
C_j
Cj是每个类簇的中心。通过K-means对相似的特征群分组为同一个cluster并生成新的特征,共生产k个新的特征。
应用:
对于输入数据矩阵X,shape=[size=n, dimension=k],划分为 X = [ f 1 , f 2 … , f k ] X=[f_1, f_2…, f_k] X=[f1,f2…,fk],然后将每个 f k f_k fk归一化,对 [ f 1 , f 2 … , f k ] [f_1, f_2…, f_k] [f1,f2…,fk]使用k-means聚类, f i f_i fi之间计算距离用cos相似度。然后就可以将特征降维到k维,对于每个新的特征向量 Y i , 1 ≤ i ≤ n , 1 ≤ C l s ( a ) ≤ k Y_i, 1\leq i \leq n, 1 \leq Cls(a) \leq k Yi,1≤i≤n,1≤Cls(a)≤k有:
Y i ( j ) = ∑ a : X i ( a ) > 0 & a m p ; a m p ; a m p ; a m p ; a m p ; a m p ; a m p ; a m p ; a m p ; a m p ; a m p ; a m p ; a m p ; a m p ; a m p ; C l s ( a ) = j f i ( a ) Y_i(j) = \sum_{a:X_i(a)>0 \& Cls(a)=j} f_i(a) Yi(j)=a:Xi(a)>0&Cls(a)=j∑fi(a)
比如原始维度是3.5M,设置k=10k,那么将为之后维度就是10k。
Local sensitive Hashing
通过一个随机的矩阵将数据映射到低纬向量空间上,并且保持原始空间上的pairwis cos距离在新的空间上仍然获得保留。
原始维度d,降维到k,那么映射矩阵
A
∈
R
d
×
k
A \in R^{d \times k}
A∈Rd×k,即A包含了k个映射,每个映射
A
i
A_i
Ai都将X映射为
Y
i
Y_i
Yi,输出为
Y
∈
R
k
Y \in R^k
Y∈Rk。计算
Y
i
Y_i
Yi的公式为:
Y
i
=
{
1
i
f
A
i
X
≥
0
0
e
l
s
e
Y_i = \left\{ \begin{aligned} 1 & & if A_i X \ge 0 \\ 0 & & else \end{aligned} \right.
Yi={10ifAiX≥0else
计算
X
1
,
X
2
X_1, X_2
X1,X2的cos相似度近似表示为:
c
o
s
(
H
(
Y
1
,
Y
2
)
k
π
)
cos(\frac{H(Y_1, Y_2)}{k} \pi)
cos(kH(Y1,Y2)π),其中
H
(
Y
1
,
Y
2
)
H(Y_1, Y_2)
H(Y1,Y2)表示汉明距离,论文选取的k=10000.
Reduce the Number of Training Examples
每个用户在每个域都有大量的日志数据,将每个用户在每个域只选取一个user-item对,具体为用户特征-用户在此域喜欢的所有item的平均分数。
CONCLUSION AND FUTURE WORK
本文提出了一种通用的结合丰富用户特征和item特征的推荐系统框架,通过结合多个域的丰富信息,是的推荐系统的质量极大提高,并且此方法通过降维的方法可扩展到大的数据集,同时对于老用户和新用户都适用推荐,在几个公开的大数据集上的表现都明显优于其他方法。
此框架可以应用于各个推荐系统,未来还需要:
- 纳入更多的用户特征。
- 增加DNN扩展性,以便不在使用特征降维的方法。
- 加入更多的域并深入分析它的表现。
- 如何将协同过滤方法和本文的基于内容的方法结合。
代码
DSSM & Multi-view DSSM代码 https://github.com/InsaneLife/dssm
Multi-view DSSM实现,参考GitHub:multi_view_dssm_v3
CSDN原文:http://blog.csdn.net/shine19930820/article/details/78810984
代码: https://github.com/liaha/dssm
keras实现
- https://github.com/airalcorn2/Deep-Semantic-Similarity-Model
- https://github.com/outstandingcandy/dssm
- https://github.com/sonyisme/keras-recommendation
Reference
- 原文:https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/frp1159-songA.pdf
- DSSM: Learning Deep Structured Semantic Models for Web Search using Clickthrough Data
- CDSSM (Conv + DSSM): A Latent Semantic Model with Convolutional-Pooling Structure for Information Retrieval
- LSTM-DSSM (RNN + DSSM):Semantic Modelling with Long-Short-Term Memory for Information Retrieval
- DSSM: Learning Deep Structured Semantic Models for Web Search using Clickthrough Data