Upload
andrey-danilchenko
View
185
Download
1
Embed Size (px)
Citation preview
Рекомендательные системы Лекция №5: Deep learning
Андрей Данильченко
НИУ ИТМО, 13 декабря 2014
Как построить модель естественного языка?
Language probabilistic model
p(w1T ) = p(wt |w1
t−1)t=1
T
∏
Текст — это последовательность слов. Тогда можно записать:
Если использовать только последние n слов, то получим n-gram model:
p(wt |w1t−1) ≈ p(wt |wt−n+1
t−1 )
где — последовательность слов w1T w1,w2…wT( )
Как обучать такие модели?
• Введем вектора слов • Выразим вероятность следующего слова через
вектора предыдущих • Обучим вектора и параметры модели,
максимизируя правдоподобие
Feedforward NN language model
Что происходит в сети?
x = C wt−1( ),C wt−2( ),!,C wt−n+1( )( )C
H
U
W y = b+Wx +U tanh d +Hx( )
p wt |wt−1,!,wt−n+1( ) =exp ywt( )exp yi( )
i∑
Backprop для NNLM
1.
2.
3.
4.
x(k) =C wt−k( )x = x(1), x(2),!, x(n−1)( )o = d +Hxa = tanh(o)
yj = bj + aUj
yj = yj + xWj
если есть прямые связи
Forward:
pj = exp yj( )s = s+ pj
pj =pjs
1.
2.
3. (если есть прямые связи)
4.
5.
6.
Backward: ∂L∂yj
= δ j == wt( )− pj
bj = bj +ε∂L∂yj
∂L∂x
=∂L∂x
+∂L∂yj
Wj;
∂L∂a
=∂L∂a
+∂L∂yj
U j;
Wj =Wj +ε∂L∂yj
x
Uj =Uj +ε∂L∂yj
a
∂L∂ok
= 1− ak2( ) ∂L∂ak
; ∂L∂x
=∂L∂x
+ "H ∂L∂o
d = d +ε ∂L∂o; H = H +ε
∂L∂o
"x
C(wt−k ) =C(wt−k )+ε∂L∂x(k)
│ Сама NNLM — обучение │ с учителем.
│ Вектора слов — обучение │ без учителя!
8
Recurrent NN Language Model
x t( ) = w t( )+ s t −1( )
sj t( ) =σ xi t( )ujii∑"
#$
%
&'
yk t( ) = g sj t( )vkjj∑"
#$$
%
&''
где g — softmax.
Input layer:
Context layer:
Output layer:
А можно проще?
10
Continuous bag of words
wt−1wt−2wt−3 wt+1 wt+2 wt+3
wt
input
projection
output
Hierarchical softmax
Обычный softmax — слой размера . Но вместо линейного слоя можно использовать дерево! Таким образом, вместо связей получается .
V
Vlog2 V!" #$
Одно из самых удачных представлений: коды Хаффмана.
Skip-gram model
wt−1wt−2wt−3 wt+1 wt+2 wt+3
wt
input
projection
output
Behind the model…
Цель сети: максимизировать логарифм вероятности 1T
log p wt+ j |wt( )−c≤ j≤c, j≠0∑
t=1
T
∑
Простая skip-gram модель задает эту вероятность как
p wO |wI( ) =exp !vwO
TvwI( )exp !vw
TvwI( )w=1
V∑
где — «выходной» вектор слова !vwO — «входной» вектор слова vwI
Behind the model (2)…
Для skip-gram с иерархическим softmax это можно переписать как
p wO |wI( ) =σ !vn(w, j )vwI( )
j=1
L(w)−1
∏
σ − "vn(w, j )vwI( )j=1
L(w)−1
∏
если n w, j +1( ) = ch n w, j( )( )
иначе
где L w( ) длина пути в дереве для слова w
n w, j( ) j-й узел в пути от корня к , то есть w n w,1( ) = rootn(w,L(w)) = w
ch n( ) произвольный узел-ребенок n
Negative sampling
logσ !vwOTvwI( )+ EwI ~Pn w( ) logσ − !vwi
TvwI( )#$
%&
i=1
k
∑
Будем обучать модель с таким objective (вместо H-SM):
Negative sampling
logσ !vwOTvwI( )+ EwI ~Pn w( ) logσ − !vwi
TvwI( )#$
%&
i=1
k
∑
Будем обучать модель с таким objective (вместо H-SM):
положительные примеры
Negative sampling
logσ !vwOTvwI( )+ EwI ~Pn w( ) logσ − !vwi
TvwI( )#$
%&
i=1
k
∑
Будем обучать модель с таким objective (вместо H-SM):
выберем k примеров по популярности
Negative sampling
logσ !vwOTvwI( )+ EwI ~Pn w( ) logσ − !vwi
TvwI( )#$
%&
i=1
k
∑
Будем обучать модель с таким objective (вместо H-SM):
будем обучать их как негативные
Subsampling of frequent words
p wi( ) =1− tf wi( )
Выкинем слова из обучающего множества с вероятностью:
где — частота слова f wi( )
— параметр (обычно ) t ~10−5
Semantic relationships = vector operations
X = vector "biggest"( )− vector "big"( )+vector "small"( )
X = vector "red"( )− vector "green"( )+vector "vert"( )
X ≈ "smallest"
X ≈ "rouge"
тут примерное равенство означает ближайший к X элемент V
Модели NLP можно применять к любым естественным языкам. Это могут быть любые последовательности, создаваемые человеком. Например, плейлисты.
│ Казалось бы, причем тут │ рекомендации?..
22
Как получить вектора более длинных сущностей?
23
Phrase vectors
В качестве слов в CBOW и Skip-Gram можно передавать все, что хочется. Например, частотные фразы. Выделение частотных фраз можно сделать так:
score wi,wj( ) =count wiwj( )−δ
count wi( )× count wj( )
Теперь добавим результаты к словам и запустим word2vec!
doc2vec: document vector clustering Chinese Restaurant Process
• выбираем стол с ближайшей суммой векторов (по косинусам) • с вероятностью n/(n+1) садимся за него, иначе за новый • или садимся за него, если sim(v,C) > 1/(n+1)
Вектор документа — сумма векторов наиболее репрезентативного кластера (например, по tf-idf).
Paragraph vector: distributed memory
wt−1wt−2d wt+1 wt+2
wt
input
projection
output
Paragraph vector: distributed BoW
input
projection
output
wt−1wt−2 wt+2wt+1wt
d
В качестве документа может выступать что угодно, например, пользователь…
│ Казалось бы, причем тут │ рекомендации?..
28
А где же “deep” learning?
Music content-based recommender
Low-level: signal, MFCC, tempo
High-level: genre, mood, epoch, instrument
Content-based recommender
Semantic gap!
Сверточные сети
Идея: вместо обучения полносвязной сети давайте смотреть на «окрестности» и вводить связи только там. Это реализуется операцией свертки. В нашем случае все просто:
s = xicii∑
…
Архитектура
Где активируются фильтры?
14 242 250 253
14 — vibrato singing 242 — ambience 250 — vocal thirds 253 — bass drums
Фильтр 37 — китайский язык!
│ Можно обучать что │ угодно! │ Например, вектора SVD.
34
Удачи! Андрей Данильченко группа разработки рекомендательных систем, Яндекс [email protected]
http://www.4ducks.ru/itmo-rs-2014-lecture-5.html