Algoritmo de propagação de erro de volta usando o Word2Vec como exemplo

Como encontrei dificuldades significativas em encontrar uma explicação do mecanismo de propagação de retorno do erro que gostaria, decidi escrever meu próprio post sobre a propagação de retorno do erro usando o algoritmo Word2Vec. Meu objetivo é explicar a essência do algoritmo usando uma rede neural simples, mas não trivial. Além disso, o word2vec se tornou tão popular na comunidade da PNL que será útil se concentrar nele.


Este post está conectado a outro post mais prático que eu recomendo a leitura, que discute a implementação direta do word2vec em python. Neste post, focaremos principalmente a parte teórica.


Vamos começar com as coisas necessárias para uma verdadeira compreensão da retropropagação. Além dos conceitos de aprendizado de máquina, como a função de perda e a descida em gradiente, mais dois componentes da matemática são úteis:



Se você estiver familiarizado com esses conceitos, outras considerações serão simples. Se você ainda não os domina, ainda pode entender o básico da retropropagação.


Primeiro, quero definir o conceito de propagação reversa, se o significado não for suficientemente claro, será divulgado com mais detalhes nos parágrafos seguintes.


1. O que é um algoritmo de retropropagação?


, , , ( , ). , .


, — , , .
, , .
, , , , w1 w2.



1. .


, w1 w2 .


, . , ∂L/∂w1∂L/∂w2, , . η, .


2. Word2Vec


word2vec, , , . , word2vec, NLP.


, word2vec [N, 3], N - , . , , '', , ( ), , ''. , word2vec .


word2vec : (CBOW) (skip-gram). , CBOW, , skip-gram.


. , woed2vec .


3. CBOW


CBOW . , :

2. Continuous Bag-of-Words


, ,
a = 1 (identity function, , ).
Softmax.


one hot encoding , , , , , 1.


: ['', '', '', '', '', '']
OneHot('') = [0, 0, 0, 1, 0, 0]
OneHot(['', '']) = [1, 0, 0, 1, 0, 0]
OneHot(['', '', '']) = [1, 0, 0, 0, 1, 1]


, W V×N, W′N×V, V — , N — ( , word2vec)


y t, , , , , .


, .


, word2vec :
"I like playing football"
CBOW (2) .
, 4 , V=4, , N=2, :



:


Vocabulary=[“I”,“like”,“playing”,“football”]


'' '' , . :



:



, one-hot encoding.



, , , . , , .


3.1 (Loss function)


1, , x:


h=WTxu=W′Th=W′TWTxy=  Softmax(u)=Softmax(W′TWTx)


, h — , u — , y — .


, , , (wt, wc). , onehot encoding .


, onehot wt ( ).


softmax , :


L=−log⁡P(wt|wc)=−log⁡yj∗ =−log⁡[Softmax(uj∗)]=−log⁡(exp⁡uj∗∑iexp⁡ui),


, j* — .
. (1):


L=−uj∗+log⁡∑iexp⁡(ui).(1)


.


"I like play football", , "I" "like", , x=(1,0,0,0)— "I", y^=(0,1,0,0), "like".


word2vec, . W 4×2


W=(−1.381187280.548493730.39389902−1.1501331−1.169676280.360780220.06676289−0.14292845)


W′2×4


W′=(1.39420129−0.894417570.998696670.444470370.69671796−0.233643410.21975196−0.0022673)


"I like" :


h=WTx=(−1.381187280.54849373)



u=W′Th=(−1.543507651.10720623−1.25885456−0.61514042)



y=Softmax(u)=(0.052565670.74454790.069875590.13301083)


y,


L=−log⁡P(“like”|“I”)=−log⁡y3=−log⁡(0.7445479)=0.2949781.


, (1):


L=−u2+log⁡∑i=14ui=−1.10720623+log⁡[exp⁡(−1.54350765)+exp⁡(1.10720623)+exp⁡(−1.25885456)+exp⁡(−0.61514042)]=0.2949781.


, "like play", , .


3.2 CBOW


, , W W` . , .


. (1) W W`. ∂L/∂W∂L/∂W′


, . (1) W W`, u=[u1, ...., uV],


L=L(u(W,W′))=L(u1(W,W′),u2(W,W′),…,uV(W,W′)) .


:


∂L∂Wij′=∑k=1V∂L∂uk∂uk∂Wij′(2)



∂L∂Wij=∑k=1V∂L∂uk∂uk∂Wij .(3)


, (2) (3) .


(2), Wij, W, i j , uj ( yj).



3. (a) yjhiWij′W′. (b) , xkN Wk1…WkNW.


, ∂uk/∂Wij′, , k=j, 0.


(4):


∂L∂Wij′=∂L∂uj∂uj∂Wij′(4)


∂L/∂uj, (5):


∂L∂uj=−δjj∗+yj:=ej(5)


, δjj∗— , , 1, , 0 .


(5) e N ( ), , , .


(4) (6):


∂uj∂Wij′=∑k=1VWikxk(6)


(5) (6) (4) (7):


∂L∂Wij′=(−δjj∗+yj)(∑k=1VWkixk)(7)


∂L/∂Wij, Xk, yj j W , 3(b). . ∂uk/∂Wij, uk u :


uk=∑m=1N∑l=1VWmk′Wlmxl .


∂uk/∂Wij, l=i m=j, (8):


∂uk∂Wij=Wjk′xi .(8)


(5) (8) , (9):


∂L∂Wij=∑k=1V(−δkk∗+yk)Wjk′xi(9)


. (7) (9) . (7)


∂L∂W′=(WTx)⊗e(10)


⊗ .


(9) :


∂L∂W=x⊗(W′e)(11)

3.3


, (7) (9), , . . η>0, :


Wnew=Wold−η∂L∂WWnew′=Wold′−η∂L∂W′


3.4


. , . , . , . , , , .


4. CBOW


CBOW . . (4) . OneHot Encoded . word2vec. .



4. CBOW


CBOW CBOW .


h=1CWT∑c=1Cx(c)=WTx¯u=W′Th=1C∑c=1CW′TWTx(c)=W′TWTx¯y=  Softmax(u)=Softmax(W′TWTx¯)


, '' x¯=∑c=1Cx(c)/C


, . :


L=−log⁡P(wo|wc,1,wc,2,…,wc,C)=−uj∗+log⁡∑iexp⁡(ui).(12)


, :


∂L∂Wij′=∑k=1V∂L∂uk∂uk∂Wij′(13)



∂L∂Wij=∑k=1V∂L∂uk∂uk∂Wij .(14)


CBOW , , . Wij′



Wij:


∂L∂Wij=∑k=1V∂L∂uk∂∂Wij(1C∑m=1N∑l=1VWmk′∑c=1CWlmxl(c))=1C∑k=1V∑c=1C(−δkk∗+yk)Wjk′xi(c).(16)


:


∂L∂Wij′=(−δjj∗+yj)(∑k=1VWkix¯k)(17)



∂L∂Wij=∑k=1V(−δkk∗+yk)Wjk′x¯i.(18)


(17) (18) .
(17) :


∂L∂W′=(WTx¯)⊗e(19)


(18):


∂L∂W=x¯⊗(W′e)(20)


, CBOW .
⊗ .


5. Skip-gram


CBOW, , . :



5. Skip-gram .


skip-gram :


h=WTxuc=W′Th=W′TWTxc=1,…,Cyc=  Softmax(u)=Softmax(W′TWTx)c=1,…,C


( uc) , y1=y2⋯=yC. :


L=−log⁡P(wc,1,wc,2,…,wc,C|wo)=−log⁡∏c=1CP(wc,i|wo)=−log⁡∏c=1Cexp⁡(uc,j∗)∑j=1Vexp⁡(uc,j)=−∑c=1Cuc,j∗+∑c=1Clog⁡∑j=1Vexp⁡(uc,j)


skip-gram C×V
:


L=L(u1(W,W′),u2(W,W′),…,uC(W,W′))=L(u1,1(W,W′),u1,2(W,W′),…,uC,V(W,W′))


:


∂L∂Wij′=∑k=1V∑c=1C∂L∂uc,k∂uc,k∂Wij′



∂L∂Wij=∑k=1V∑c=1C∂L∂uc,k∂uc,k∂Wij .


∂L/∂uc,j, :


∂L∂uc,j=−δjjc∗+yc,j:=ec,j


CBOW :


∂L∂Wij′=∑k=1V∑c=1C∂L∂uc,k∂uc,k∂Wij′=∑c=1C∂L∂uc,j∂uc,j∂Wij′=∑c=1C(−δjjc∗+yc,j)(∑k=1VWkixk)


Wij, :


∂L∂Wij=∑k=1V∑c=1C∂L∂uc,k∂∂Wij(∑m=1N∑l=1VWmk′Wlmxl)=∑k=1V∑c=1C(−δkkc∗+yc,k)Wjk′xi.


, skip-gram :


∂L∂Wij′=∑c=1C(−δjjc∗+yc,j)(∑k=1VWkixk)(21)



∂L∂Wij=∑k=1V∑c=1C(−δkkc∗+yc,k)Wjk′xi.(22)


(21):


∂L∂W′=(WTx)⊗∑c=1Cec(23)


(22):


∂L∂W=x⊗(W′∑c=1Cec)(24)

6.


word2vec. . [2] ( softmax, negative sampling), . [1].


, word2vec.


. Python, .


!



[1] X. Rong, word2vec Parameter Learning Explained , arXiv: 1411.2738 (2014).
[2] T. Mikolov, K. Chen, G. Corrado, J. Dean, Estimativa eficiente de representações de palavras no espaço vetorial , arXiv: 1301.3781 (2013).


All Articles