Upload
andrey-danilchenko
View
156
Download
0
Embed Size (px)
Citation preview
Рекомендательные системы Лекция №6: Sequence recommenders
Андрей Данильченко
НИУ ИТМО, 20 декабря 2014
Station-based model
L S;Θ( ) = logP i | s;t,Θ( )(i,t )∈PS
∑PS∈S∑
Правдоподобие плейлиста станции:
Для станции:
P i | s;t,Θ( ) =exp(rsi;t )exp(rsj;t )
j∑
rsi;t = bi + qiTvs
Как учесть контекст?
rsi;t = bi + qiT vs + vs
slot (t ) +1Ps(t,w)
qjj∈Ps
( t ,w )∑
#
$
%%%
&
'
(((
Введем временные слоты (например, 8 равных слотов в день). Тогда к вектору трека добавится еще параметры — вектора этого трека для каждого слота:
rsi;t = bi + qiT vs + vs
slot (t )( )Кроме того, учтем треки из маленького временного окна (например, 30 минут) : t −w,[ t)
Как учесть негативный фидбек?
Будем обучать правдоподобие так:
L S;Θ( ) = logP i | s, t,Θ( )(i,t )∈PS
∑PS∈S∑ +
+ log 1−P i | s, t,Θ( )( )(i,t )∈NS
∑NS∈S∑
Stationless model
L S;Θ( ) = logP i s;t,Θ( )(i,t )∈PS
∑PS∈S∑
Правдоподобие плейлиста станции:
Для станции:
P i s;t,Θ( ) =exp(rsi;t )exp(rsj;t )
j∑
rsi;t = bi + qi1( )( )
T 1Ps
qj2( )
j∈Ps
∑ +1Ps(t,w)
qj3( )
j∈Ps( t ,w )∑
$
%
&&&
'
(
)))
Обучение
η∂ logP i s;t( )
∂θ=η
∂rsi;t∂θ
− P j s;t( )∂rsj;t∂θj
∑$
%&&
'
())
Простой SGD с шагом:
По всем item-ам!
Importance sampling
w i | S( ) =exp rsi;t( ) P i | S( )exp rsj;t( ) P j | S( )
j∈J∑
Будем сэмплировать множество item-ов J из P i | S( )
Тогда вероятность можно заменить на P i | s;t( )
Шаг SGD перепишется как
η∂ logP i s;t( )
∂θ≈η
∂rsi;t∂θ
− w j | S( )∂rsj;t∂θj∈J
∑&
'((
)
*++
Как выбрать размер J?
Хочется, чтобы с ходом обучения J росло. Тогда определим такое правило:
P j | s;t( )j∈J∑ > P i | s;t( )⇔ exp rsj;t( )
j∈J∑ > exp rsi;t( )
Будем сэмплировать item-ы в J, пока оно выполнено.
Item2item with multinomial units
P j | i( ) =exp − yi − yj
2+ bj( )
exp − yi − yk2+ bk( )
k∑
Вероятность j быть похожим на i
Как и раньше обучаем log-likelihood:
L = logP j | i( )i, j( )∈D∑
Обучение
Это приводит нас к шагу SGD
Δθ =η∂ logP j | i( )
∂θ=
=η∂∂θ
− yi − yj2+ bj( )+ P k | i( ) ∂
∂θ− yi − yk
2+ bk( )
k∑
%
&'
(
)*
И снова при подсчете шага нужно пройтись по всем item-ам…
Importance sampling Как и раньше будем сэмплировать множество J . Тогда вероятности заменятся на:
w k | i( ) =exp − yi − yk
2+ bk( ) P k |D( )
exp − yi − yj2+ bj( ) P j |D( )
j∈J∑
А обновление примет вид:
Δθ =η∂∂θ
− yi − yj2+ bj( )+ w k | i( ) ∂
∂θ− yi − yk
2+ bk( )
k∈J∑
&
'(
)
*+
Fast retrieval Наилучший похожий item может быть найден как
maxj≠i
P j | i( )⇔maxj≠i
− yi − yj2+ bj( )
Но это не евклидово пространство!
Fast retrieval Наилучший похожий item может быть найден как
maxj≠i
P j | i( )⇔maxj≠i
− yi − yj2+ bj( )
Но это не евклидово пространство! Тогда давайте построим сведение:
y j = yjT , Mb − bj "#
$%
T
yi = yiT , 0]!"
T
maxj≠i
P j | i( )⇔maxj≠i
yi − y j2
Single-point model
P p[i] | p[i−1]( ) = e− X p[ i ]( )−X p[ i−1]( )
2
2
e− X s( )−X p[ i−1]( )
2
2
s∈S∑
=e−Δ p[ i ],p[ i−1]( )
2
Z(p[i−1])
Вероятность следующего трека:
Вероятность плейлиста:
P p( ) = Pi=1
kp
∏ p[i] | p[i−1]( ) = e−Δ p[ i ],p[ i−1]( )2
Z(p[i−1])i=1
kp
∏
Обучение
X = argmaxX∈ℜ|S|×d
e−Δ( p[ i ],p[ i−1] )2
Z p[i−1]( )i=1
kp
∑p∈D∑
L D;X( ) = −Δ(p[i], p[i−1])2 − logZ p[i−1]( )i=1
kp
∑p∈D∑
Максимизируем log-likelihood:
Функционал:
Dual-point model Вероятность плейлиста:
P p( ) = Pi=1
kp
∏ p[i] | p[i−1]( ) = e−Δ2 p[ i ],p[ i−1]( )2
Z2 (p[i−1])i=1
kp
∏
V,U( ) = argmaxV ,U∈ℜ|S|×d
e−Δ2 ( p[ i ],p[ i−1] )2
Z2 p[i−1]( )i=1
kp
∑p∈D∑
Функционал:
где Δ2 s, "s( ) = V s( )−U "s( )U s( ) — входной вектор трека s
V s( ) — выходной вектор трека s
Регуляризация
X = argmaxX∈ℜ|S|×d
L D | X( )−λ XF
2
(V,U) = argmaxV ,U∈ℜ|S|×d
L D |V,U( )−λ VF
2+ U
F
2( )−−ν Δ2 s, s( )2
s∈S∑
Single-point model:
Dual-point model:
Обучение модели
L D |U,V( ) = Tabl sa, sb( )b=1
|S|
∑a=1
|S|
∑ −Ω V,U( )
l sa, sb( ) = −Δ2 sa, sb( )2 − logZ2 sa( )
U sp( ) =U sp( )+ τN Tpb∂l sp, sb( )∂U sp( )
−∂Ω V,U( )∂U sp( )b=1
|S|
∑%
&''
(
)**
V sq( ) =V sq( )+ τN Tpb∂l sp, sb( )∂U sq( )
−∂Ω V,U( )∂U sq( )b=1
|S|
∑%
&''
(
)**
Для каждого трека p обновляем его выходной вектор:
И входные вектора по всем его связям q:
Landmark heuristic
L D |U,V( ) = Tabl sa, sb( )sb∈Ca
∑a=1
|S|
∑ −Ω V,U( )
Сократим множество «входов» в переходах:
Случайно выберем некоторое количество треков (около 50). Это наши «ориентиры».
При составлении сначала добавим в него существующие связи. Затем будем дополнять случайными точками из ориентиров до тех пор, пока
Ca
Car
N< r
Расширения модели
Учет популярности:
P p i[ ] | p i−1[ ]( ) =exp −Δ2 p[i], p[i−1]( )
2+ bi( )
−Δ2 sj, p[i−1]( )
2+ bj
j∑
Персонализация:
P p i[ ] | p i−1[ ],u( ) =exp −Δ2 p[i], p[i−1]( )
2+ A p[i]( )
TB u( )( )
−Δ2 sj, p[i−1]( )
2+ A sj( )
TB u( )
j∑
Учет тэгов
Введем априорное распределение на вектора треков:
P X s( ) |T s( )( ) = N 1T s( )
M t( )t∈T (s)∑ , 1
2λId
#
$%%
&
'((
Это хорошо обобщает регуляризацию, если тэгов нет, то
P X s( ) |T s( )( ) = N 0, 12λ
Id!
"#
$
%&
Генерация плейлистов
P p i[ ] | p i−1[ ], p 0[ ]( ) =exp −αΔ p[i], p[i−1]( )
2+βbi −γΔ p[i], p[0]( )
2( )Z p[i−1], p[0],α,β,γ( )
В общем виде можно задать так:
User-dynamic embedding
P p i[ ] | p i−1[ ],u(t )( ) =exp −Δ2 p[i], p[i−1]( )
2+Δ p[i],u(t )( )
2+ bi
(t )( )Z p[i],u(t )( )
Пользователь тоже может быть представлен вектором:
Запретим вектору пользователя двигаться слишком быстро:
X u(t )( ) ~ N X u(t−1)( ), 12νuser
Id"
#$
%
&'
Удачи! Андрей Данильченко группа разработки рекомендательных систем, Яндекс [email protected]
http://www.4ducks.ru/itmo-rs-2014-lecture-6.html