35
Рекомендательные системы Лекция 5: Deep learning Андрей Данильченко НИУ ИТМО, 13 декабря 2014

ITMO RecSys course. Autumn 2014. Lecture 5

Embed Size (px)

Citation preview

Page 1: ITMO RecSys course. Autumn 2014. Lecture 5

Рекомендательные системы Лекция №5: Deep learning

Андрей Данильченко

НИУ ИТМО, 13 декабря 2014

Page 2: ITMO RecSys course. Autumn 2014. Lecture 5

Как построить модель естественного языка?

Page 3: ITMO RecSys course. Autumn 2014. Lecture 5

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( )

Page 4: ITMO RecSys course. Autumn 2014. Lecture 5

Как обучать такие модели?

•  Введем вектора слов •  Выразим вероятность следующего слова через

вектора предыдущих •  Обучим вектора и параметры модели,

максимизируя правдоподобие

Page 5: ITMO RecSys course. Autumn 2014. Lecture 5

Feedforward NN language model

Page 6: ITMO RecSys course. Autumn 2014. Lecture 5

Что происходит в сети?

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∑

Page 7: ITMO RecSys course. Autumn 2014. Lecture 5

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)

Page 8: ITMO RecSys course. Autumn 2014. Lecture 5

│ Сама NNLM — обучение │ с учителем.

│ Вектора слов — обучение │ без учителя!

8

Page 9: ITMO RecSys course. Autumn 2014. Lecture 5

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:

Page 10: ITMO RecSys course. Autumn 2014. Lecture 5

А можно проще?

10

Page 11: ITMO RecSys course. Autumn 2014. Lecture 5

Continuous bag of words

wt−1wt−2wt−3 wt+1 wt+2 wt+3

wt

input

projection

output

Page 12: ITMO RecSys course. Autumn 2014. Lecture 5

Hierarchical softmax

Обычный softmax — слой размера . Но вместо линейного слоя можно использовать дерево! Таким образом, вместо связей получается .

V

Vlog2 V!" #$

Одно из самых удачных представлений: коды Хаффмана.

Page 13: ITMO RecSys course. Autumn 2014. Lecture 5

Skip-gram model

wt−1wt−2wt−3 wt+1 wt+2 wt+3

wt

input

projection

output

Page 14: ITMO RecSys course. Autumn 2014. Lecture 5

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

Page 15: ITMO RecSys course. Autumn 2014. Lecture 5

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

Page 16: ITMO RecSys course. Autumn 2014. Lecture 5

Negative sampling

logσ !vwOTvwI( )+ EwI ~Pn w( ) logσ − !vwi

TvwI( )#$

%&

i=1

k

Будем обучать модель с таким objective (вместо H-SM):

Page 17: ITMO RecSys course. Autumn 2014. Lecture 5

Negative sampling

logσ !vwOTvwI( )+ EwI ~Pn w( ) logσ − !vwi

TvwI( )#$

%&

i=1

k

Будем обучать модель с таким objective (вместо H-SM):

положительные примеры

Page 18: ITMO RecSys course. Autumn 2014. Lecture 5

Negative sampling

logσ !vwOTvwI( )+ EwI ~Pn w( ) logσ − !vwi

TvwI( )#$

%&

i=1

k

Будем обучать модель с таким objective (вместо H-SM):

выберем k примеров по популярности

Page 19: ITMO RecSys course. Autumn 2014. Lecture 5

Negative sampling

logσ !vwOTvwI( )+ EwI ~Pn w( ) logσ − !vwi

TvwI( )#$

%&

i=1

k

Будем обучать модель с таким objective (вместо H-SM):

будем обучать их как негативные

Page 20: ITMO RecSys course. Autumn 2014. Lecture 5

Subsampling of frequent words

p wi( ) =1− tf wi( )

Выкинем слова из обучающего множества с вероятностью:

где — частота слова f wi( )

— параметр (обычно ) t ~10−5

Page 21: ITMO RecSys course. Autumn 2014. Lecture 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

Page 22: ITMO RecSys course. Autumn 2014. Lecture 5

Модели NLP можно применять к любым естественным языкам. Это могут быть любые последовательности, создаваемые человеком. Например, плейлисты.

│ Казалось бы, причем тут │ рекомендации?..

22

Page 23: ITMO RecSys course. Autumn 2014. Lecture 5

Как получить вектора более длинных сущностей?

23

Page 24: ITMO RecSys course. Autumn 2014. Lecture 5

Phrase vectors

В качестве слов в CBOW и Skip-Gram можно передавать все, что хочется. Например, частотные фразы. Выделение частотных фраз можно сделать так:

score wi,wj( ) =count wiwj( )−δ

count wi( )× count wj( )

Теперь добавим результаты к словам и запустим word2vec!

Page 25: ITMO RecSys course. Autumn 2014. Lecture 5

doc2vec: document vector clustering Chinese Restaurant Process

•  выбираем стол с ближайшей суммой векторов (по косинусам) •  с вероятностью n/(n+1) садимся за него, иначе за новый •  или садимся за него, если sim(v,C) > 1/(n+1)

Вектор документа — сумма векторов наиболее репрезентативного кластера (например, по tf-idf).

Page 26: ITMO RecSys course. Autumn 2014. Lecture 5

Paragraph vector: distributed memory

wt−1wt−2d wt+1 wt+2

wt

input

projection

output

Page 27: ITMO RecSys course. Autumn 2014. Lecture 5

Paragraph vector: distributed BoW

input

projection

output

wt−1wt−2 wt+2wt+1wt

d

Page 28: ITMO RecSys course. Autumn 2014. Lecture 5

В качестве документа может выступать что угодно, например, пользователь…

│ Казалось бы, причем тут │ рекомендации?..

28

Page 29: ITMO RecSys course. Autumn 2014. Lecture 5

А где же “deep” learning?

Page 30: ITMO RecSys course. Autumn 2014. Lecture 5

Music content-based recommender

Low-level: signal, MFCC, tempo

High-level: genre, mood, epoch, instrument

Content-based recommender

Semantic gap!

Page 31: ITMO RecSys course. Autumn 2014. Lecture 5

Сверточные сети

Идея: вместо обучения полносвязной сети давайте смотреть на «окрестности» и вводить связи только там. Это реализуется операцией свертки. В нашем случае все просто:

s = xicii∑

Page 32: ITMO RecSys course. Autumn 2014. Lecture 5

Архитектура

Page 33: ITMO RecSys course. Autumn 2014. Lecture 5

Где активируются фильтры?

14 242 250 253

14 — vibrato singing 242 — ambience 250 — vocal thirds 253 — bass drums

Фильтр 37 — китайский язык!

Page 34: ITMO RecSys course. Autumn 2014. Lecture 5

│ Можно обучать что │ угодно! │ Например, вектора SVD.

34

Page 35: ITMO RecSys course. Autumn 2014. Lecture 5

Удачи! Андрей Данильченко группа разработки рекомендательных систем, Яндекс [email protected]

http://www.4ducks.ru/itmo-rs-2014-lecture-5.html