{"id":328,"date":"2017-08-13T14:38:45","date_gmt":"2017-08-13T12:38:45","guid":{"rendered":"http:\/\/www.mlguru.cz\/?p=328"},"modified":"2017-08-13T14:38:45","modified_gmt":"2017-08-13T12:38:45","slug":"why-and-when-the-analogies-in-the-word2vec-algorithms-work","status":"publish","type":"post","link":"https:\/\/www.mlguru.com\/cs\/why-and-when-the-analogies-in-the-word2vec-algorithms-work\/","title":{"rendered":"Pro\u010d a kdy funguj\u00ed slovn\u00ed analogie v algoritmech word2vec"},"content":{"rendered":"<p>Od publikov\u00e1n\u00ed prvn\u00edho algoritmu Tom\u00e1\u0161e Mikolova, p\u0159ev\u00e1d\u011bj\u00edc\u00edho slova na vektory se zaj\u00edmav\u00fdmi vlastnostmi (psal jsem o n\u011bm <a href=\"http:\/\/www.mlguru.cz\/word2vec-jednoducha-aritmetika-se-slovy\/\">zde<\/a>), ub\u011bhlo ji\u017e n\u011bkolik let. St\u00e1le se v\u0161ak lid\u00e9 sna\u017e\u00ed v\u00edce \u010di m\u00e9n\u011b uspokojiv\u011b vysv\u011btlit, jak je mo\u017en\u00e9, \u017ee \"<em><strong>kings<\/strong> \u2013 <strong>king<\/strong> + <strong>queen<\/strong>\u00a0 = <strong>queens<\/strong>\". <\/em>P\u0159ed \u010dasem napsal podobn\u00fd text na sv\u00e9m <a href=\"http:\/\/p.migdal.pl\/2017\/01\/06\/king-man-woman-queen-why.html\">blogu<\/a>\u00a0Piotr Migdal. \u010cl\u00e1nek je inspirativn\u00ed, ale obsahuje \u0159adu nepodlo\u017een\u00fdch tvrzen\u00ed a p\u0159edpoklad\u016f. R\u00e1d bych zde prezentoval alternativn\u00ed zd\u016fvodn\u011bn\u00ed vych\u00e1zej\u00edc\u00ed ze stejn\u00fdch my\u0161lenek, kter\u00e9 v\u0161ak bude precizn\u011bj\u0161\u00ed.<\/p>\n<p>Jedn\u00edm z\u00a0hlavn\u00edm p\u0159\u00ednos\u016f v\u011bt\u0161iny takzvan\u00fdch word embedding algoritm\u016f (cbow, skipgram, glove, atd.) je schopnost projektovat lexik\u00e1ln\u00ed jednotky (nej\u010dast\u011bji slova) do vektorov\u00e9ho prostoru, ve kter\u00e9m morfologick\u00e9, syntaktick\u00e9 i n\u011bkter\u00e9 s\u00e9mantick\u00e9 vlastnosti t\u011bchto slov zachov\u00e1vaj\u00ed line\u00e1rn\u00ed z\u00e1vislosti. Znamen\u00e1 to, \u017ee kdy\u017e nap\u0159\u00edklad vektor slova <strong><em>king<\/em><\/strong> ode\u010dteme od vektoru slova<em> <strong>kings<\/strong><\/em>, dostaneme vektor, kter\u00fd lze v\u00fdznamov\u011b ch\u00e1pat jako vektor p\u0159echodu od singul\u00e1ru k\u00a0plur\u00e1lu. Pokud tento vektor p\u0159i\u010dteme k\u00a0libovoln\u00e9mu substantivu v\u00a0singul\u00e1ru, dostaneme se v\u00a0dan\u00e9m vektorov\u00e9m prostoru velmi bl\u00edzko k\u00a0vektoru stejn\u00e9ho slova v\u00a0plur\u00e1lu. Tuto vlastnost ilustruje zn\u00e1m\u00fd obr\u00e1zek p\u0159evzat\u00fd z\u00a0p\u016fvodn\u00edho \u010dl\u00e1nku T. Mikolova.<\/p>\n<div id=\"attachment_236\" style=\"width: 772px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.mlguru.cz\/wp-content\/uploads\/2015\/03\/w2v.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-236\" class=\" wp-image-236\" src=\"http:\/\/www.mlguru.cz\/wp-content\/uploads\/2015\/03\/w2v.png\" alt=\"\" width=\"762\" height=\"273\" srcset=\"https:\/\/www.mlguru.com\/wp-content\/uploads\/2015\/03\/w2v.png 1005w, https:\/\/www.mlguru.com\/wp-content\/uploads\/2015\/03\/w2v-300x107.png 300w\" sizes=\"auto, (max-width: 762px) 100vw, 762px\" \/><\/a><p id=\"caption-attachment-236\" class=\"wp-caption-text\">Obr\u00e1zek 1: Vektorov\u00e1 reprezentace slov. Zdroj: T. Mikolovov et al. :\u00a0Linguistic Regularities in Continuous Space Word Representations, NAACL 2013.<\/p><\/div>\n<p>Tohoto fenom\u00e9nu lze vyu\u017e\u00edt k\u00a0hled\u00e1n\u00ed slovn\u00edch analogi\u00ed. Mohli bychom se pt\u00e1t na slovo <strong><em>W<\/em><\/strong>, pro kter\u00e9 plat\u00ed: <strong><em>king<\/em><\/strong> se m\u00e1 ke <strong><em>kings<\/em><\/strong> jako <strong><em>queen<\/em><\/strong> k\u00a0<strong><em>W<\/em><\/strong>. V\u00a0obecnosti bychom cht\u011bli uk\u00e1zat, \u017ee pokud se slovo <strong><em>a<\/em><\/strong> m\u00e1 ke slovu <strong><em>A<\/em><\/strong> stejn\u011b jako slovo <strong><em>b<\/em><\/strong> ke slovu <strong><em>B<\/em><\/strong>, potom p\u0159ibli\u017en\u011b plat\u00ed v<strong><sub>a<\/sub><\/strong> \u2013 v<strong><sub>A<\/sub><\/strong> = v<strong><sub>b<\/sub><\/strong> \u2013 v<strong><sub>B<\/sub><\/strong>, kde v<strong><sub>x<\/sub><\/strong> je vektor reprezentuj\u00edc\u00ed slovo <strong><em>x<\/em><\/strong><em>, <\/em>z\u00edskan\u00fd n\u011bkter\u00fdm z\u00a0algoritm\u016f word2vec (viz Obr. 1).<\/p>\n<p>Word2vec je zobec\u0148uj\u00edc\u00ed pojmenov\u00e1n\u00ed pro metody p\u0159evodu slova na jeho vektorovou reprezentaci. Pro \u00fa\u010dely tohoto textu se zam\u011b\u0159me konkr\u00e9tn\u011b na nejzn\u00e1m\u011bj\u0161\u00ed algoritmus <a href=\"http:\/\/papers.nips.cc\/paper\/5021-distributed-representations-of-words-and-phrases-and-their-compositionality.pdf\">Skip-gram s\u00a0negativn\u00edm samplov\u00e1n\u00edm<\/a>.<\/p>\n<p>Abychom mohli dan\u00e9 tvrzen\u00ed dok\u00e1zat, je t\u0159eba se nejd\u0159\u00edve vypo\u0159\u00e1dat s v\u00e1gn\u00ed definic\u00ed vztahu \u201cm\u00edt se stejn\u011b k\u201d. To v\u011bt\u0161ina literatury zanedb\u00e1v\u00e1 a spokojuje se jen s intuic\u00ed. Pro v\u011bt\u0161\u00ed p\u0159ehlednost budeme v\u00a0n\u00e1sleduj\u00edc\u00edm textu <strong><em>tu\u010dnou kurz\u00edvou<\/em><\/strong> ozna\u010dovat lexik\u00e1ln\u00ed jednotky, <em>kurz\u00edvou<\/em> jejich vlastnosti a <strong>tu\u010dn\u011b<\/strong> z\u00e1pis lexik\u00e1ln\u00ed jednotky v korpusu.<\/p>\n<p>Vyjd\u011bme z\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/John_Rupert_Firth\">Firthova<\/a> pohledu na lexik\u00e1ln\u00ed v\u00fdznam. Jeho zn\u00e1m\u00fd cit\u00e1t \u201eYou shall know a word by the company it keeps\u201c lze, voln\u011b p\u0159elo\u017eeno, ch\u00e1pat tak, \u017ee v\u00fdznam slova je d\u00e1n slovy, kter\u00e1 se s\u00a0n\u00edm \u010dasto poj\u00ed. Podle jeho tvrzen\u00ed tedy plat\u00ed, \u017ee dv\u011b slova maj\u00ed podobn\u00fd v\u00fdznam tehdy, kdy\u017e se v\u00a0textech \u010dasto vyskytuj\u00ed ve stejn\u00fdch kontextech. Jedn\u00e1 se o v\u00a0praxi \u010dasto vyu\u017e\u00edvan\u00fd pohled na lexik\u00e1ln\u00ed s\u00e9mantiku.<\/p>\n<p>V\u00fdznam slova <strong><em>a<\/em><\/strong> lze ve Firthov\u011b pojet\u00ed formalizovat jako soubor pravd\u011bpodobnost\u00ed SEM(<strong><em>a<\/em><\/strong>) = \u2329P(<strong>w <\/strong>| <strong>a<\/strong>): <strong>w<\/strong>\u00a0\u2208\u00a0<strong>L\u232a<\/strong>, kter\u00e9 vyjad\u0159uj\u00ed pravd\u011bpodobnost v\u00fdskytu slova <strong>w<\/strong> bl\u00edzko slova <strong>a<\/strong> v\u00a0jazyce <strong>L<\/strong>. Ten nech\u0165 je reprezentovan\u00fd dostate\u010dn\u00e9 velk\u00fdm jazykov\u00fdm korpusem. Bl\u00edzkost je ur\u010dena n\u011bjakou maxim\u00e1ln\u00ed vzd\u00e1lenost\u00ed v\u00a0textu (m\u011b\u0159eno po\u010dtem slov, kter\u00e1 je odd\u011bluj\u00ed).<\/p>\n<p>Dal\u0161\u00edm d\u016fle\u017eit\u00fdm poznatkem je <a href=\"https:\/\/en.wikipedia.org\/wiki\/Gottlob_Frege\">Fregeho<\/a> <a href=\"https:\/\/en.wikipedia.org\/wiki\/Principle_of_compositionality\">princip kompozicionality<\/a>, kter\u00fd n\u00e1m \u0159\u00edk\u00e1, \u017ee v\u00fdznam slo\u017eit\u011bj\u0161\u00edho lexik\u00e1ln\u00edho v\u00fdrazu je d\u00e1n v\u00fdznamem d\u00edl\u010d\u00edch jednotek a zp\u016fsobem jejich kombinace. Tento princip se d\u00e1 vzt\u00e1hnout i na v\u00fdznam slov \u2013 slovo je nositelem souboru d\u00edl\u010d\u00edch v\u00fdznam\u016f, kter\u00e1 dohromady d\u00e1vaj\u00ed v\u00fdznam cel\u00e9ho slova. Nap\u0159\u00edklad slovo <strong><em>queen<\/em><\/strong> lze zjednodu\u0161en\u011b ch\u00e1pat jako anglick\u00e9 substantivum ozna\u010duj\u00edc\u00ed osobu, kter\u00e1 m\u00e1 sou\u010dasn\u011b vlastnosti <em>b\u00fdt panovn\u00edkem s\u00a0kr\u00e1lovsk\u00fdm titulem<\/em> a <em>b\u00fdt \u017eensk\u00e9ho pohlav\u00ed<\/em>.<\/p>\n<p>Vych\u00e1zej\u00edce z\u00a0p\u0159edchoz\u00edch dvou formulac\u00ed m\u016f\u017eeme tedy v\u00fdznam slova <strong><em>queen<\/em><\/strong> definovat pomoc\u00ed pravd\u011bpodobnost\u00ed\u2329<em>P(<\/em><strong>w<\/strong><sub>i<\/sub> | <em>je panovn\u00edk <\/em>\u2227\u00a0<em>je \u017eensk\u00e9ho pohlav\u00ed<\/em> )<strong>\u232a<\/strong>, v\u00a0obecnosti jako\u00a0\u2329P(<strong>w<\/strong><sub>i<\/sub> | <em>a<sub>1<\/sub>, a<sub>2<\/sub>, \u2026 a<sub>n<\/sub><\/em>)<strong>\u232a<\/strong>.<\/p>\n<p>Nyn\u00ed ji\u017e lze zadefinovat slovn\u00ed analogie: <strong><em>a<\/em><\/strong> se m\u00e1 k\u00a0<strong><em>A<\/em><\/strong> stejn\u011b jako <strong><em>b<\/em><\/strong> k\u00a0<strong><em>B<\/em><\/strong> tehdy, kdy\u017e existuj\u00ed vlastnosti <em>a<sub>1<\/sub><\/em>...<em> a<sub>n<\/sub>, b<sub>1<\/sub><\/em>...<em> b<sub>n<\/sub>, c<\/em> a <em>d<\/em> takov\u00e9, \u017ee<\/p>\n<p>SEM(<strong><em>a<\/em><\/strong>) =\u2329P(<strong>w<\/strong><sub>i<\/sub> | <em>a<sub>1<\/sub>, a<sub>2<\/sub>, \u2026 a<sub>n<\/sub>, c<\/em>)<strong>\u232a<\/strong><\/p>\n<p>SEM(<strong><em>A<\/em><\/strong>) =\u2329P(<strong>w<\/strong><sub>i<\/sub> | <em>a<sub>1<\/sub>, a<sub>2<\/sub>, \u2026 a<sub>n<\/sub>, d<\/em>)<strong>\u232a<\/strong><\/p>\n<p>SEM(<strong><em>b<\/em><\/strong>) =\u2329P(<strong>w<\/strong><sub>i<\/sub> | <em>b<sub>1<\/sub>, b<sub>2<\/sub>, \u2026 b<sub>m<\/sub>, c<\/em>)<strong>\u232a<\/strong><\/p>\n<p>SEM(<strong><em>B<\/em><\/strong>) =\u2329P(<strong>w<\/strong><sub>i<\/sub> | <em>b<sub>1<\/sub>, b<sub>2<\/sub>, \u2026 b<sub>m<\/sub>, d<\/em>)<strong>\u232a<\/strong>.<\/p>\n<p>Pokud budou platit n\u00e1sleduj\u00edc\u00ed statistick\u00e9 nez\u00e1vislosti v\u00fdskyt\u016f vlastnost\u00ed slov v\u00a0korpusu<\/p>\n<p>P(<em>a<sub>1<\/sub>, a<sub>2<\/sub>, \u2026 a<sub>n<\/sub><\/em>) \u22a5 P(c)<\/p>\n<p>P(<em>a<sub>1<\/sub>, a<sub>2<\/sub>, \u2026 a<sub>n<\/sub><\/em>) \u22a5 P(d)<\/p>\n<p>P(<em>b<sub>1<\/sub>, b<sub>2<\/sub>, \u2026 b<sub>m<\/sub><\/em>) \u22a5 P(c)<\/p>\n<p>P(<em>b<sub>1<\/sub>, b<sub>2<\/sub>, \u2026 b<sub>m<\/sub><\/em>) \u22a5 P(d)<\/p>\n<p>Dostaneme pro v\u0161echna <strong>w<sub>i<\/sub><\/strong><\/p>\n<p class=\"p1\" style=\"text-align: center;\"><img src='https:\/\/s0.wp.com\/latex.php?latex=%5Cdfrac%7BP%28%5Cmathbf%7Bw_i%7D+%7C+%5Cmathbf%7Ba%7D%29%7D%7BP%28%5Cmathbf%7Bw_i%7D+%7C+%5Cmathbf%7BA%7D%29%7D+%3D+%5Cdfrac%7BP%28%5Cmathbf%7Bw_i%7D+%7C+%5Cmathbf%7Bb%7D%29%7D%7BP%28%5Cmathbf%7Bw_i%7D+%7C+%5Cmathbf%7BB%7D%29%7D+&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\\dfrac{P(\\mathbf{w_i} | \\mathbf{a})}{P(\\mathbf{w_i} | \\mathbf{A})} = \\dfrac{P(\\mathbf{w_i} | \\mathbf{b})}{P(\\mathbf{w_i} | \\mathbf{B})} ' title='\\dfrac{P(\\mathbf{w_i} | \\mathbf{a})}{P(\\mathbf{w_i} | \\mathbf{A})} = \\dfrac{P(\\mathbf{w_i} | \\mathbf{b})}{P(\\mathbf{w_i} | \\mathbf{B})} ' class='latex' \/><\/p>\n<p class=\"p1\">nebo\u0165<\/p>\n<p class=\"p1\" style=\"text-align: center;\"><img src='https:\/\/s0.wp.com\/latex.php?latex=%5Cdfrac%7BP%28%5Cmathbf%7Bw_i%7D+%7C+%5Cmathbf%7Ba%7D%29%7D%7BP%28%5Cmathbf%7Bw_i%7D+%7C+%5Cmathbf%7BA%7D%29%7D+%3D+%5Cdfrac%7BP%28%5Cmathbf%7Bw_i%7D+%7C+a_1+%5Cdots+a_n%2C+c%29%7D%7BP%28%5Cmathbf%7Bw_i%7D+%7C+a_1+%5Cdots+a_n%2C+d%29%7D+%3D+%5Cdfrac%7BP%28%5Cmathbf%7Bw_i%7D%2C+a_1+%5Cdots+a_n%2C+c%29P%28a_1+%5Cdots+a_n%2C+d%29%7D%7BP%28%5Cmathbf%7Bw_i%7D%2C+a_1+%5Cdots+a_n%2C+d%29P%28a_1+%5Cdots+a_n%2C+c%29%7D+%3D+&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\\dfrac{P(\\mathbf{w_i} | \\mathbf{a})}{P(\\mathbf{w_i} | \\mathbf{A})} = \\dfrac{P(\\mathbf{w_i} | a_1 \\dots a_n, c)}{P(\\mathbf{w_i} | a_1 \\dots a_n, d)} = \\dfrac{P(\\mathbf{w_i}, a_1 \\dots a_n, c)P(a_1 \\dots a_n, d)}{P(\\mathbf{w_i}, a_1 \\dots a_n, d)P(a_1 \\dots a_n, c)} = ' title='\\dfrac{P(\\mathbf{w_i} | \\mathbf{a})}{P(\\mathbf{w_i} | \\mathbf{A})} = \\dfrac{P(\\mathbf{w_i} | a_1 \\dots a_n, c)}{P(\\mathbf{w_i} | a_1 \\dots a_n, d)} = \\dfrac{P(\\mathbf{w_i}, a_1 \\dots a_n, c)P(a_1 \\dots a_n, d)}{P(\\mathbf{w_i}, a_1 \\dots a_n, d)P(a_1 \\dots a_n, c)} = ' class='latex' \/><\/p>\n<p class=\"p1\" style=\"text-align: center;\"><img src='https:\/\/s0.wp.com\/latex.php?latex=%3D%5Cdfrac%7BP%28a_1+%5Cdots+a_n%2C+c+%7C+%5Cmathbf%7Bw_i%7D%29P%28%5Cmathbf%7Bw_i%7D%29P%28a_1+%5Cdots+a_n%29P%28d%29%7D%7BP%28a_1+%5Cdots+a_n%2C+d+%7C+%5Cmathbf%7Bw_i%7D%29P%28%5Cmathbf%7Bw_i%7D%29P%28a_1+%5Cdots+a_n%29P%28c%29%7D+%3D+%5Cdfrac%7BP%28a_1+%5Cdots+a_n+%7C+%5Cmathbf%7Bw_i%7D%29P%28+c+%7C+%5Cmathbf%7Bw_i%7D%29P%28d%29%7D%7BP%28a_1+%5Cdots+a_n+%7C+%5Cmathbf%7Bw_i%7D%29P%28+d+%7C+%5Cmathbf%7Bw_i%7D%29P%28c%29%7D+%3D+&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='=\\dfrac{P(a_1 \\dots a_n, c | \\mathbf{w_i})P(\\mathbf{w_i})P(a_1 \\dots a_n)P(d)}{P(a_1 \\dots a_n, d | \\mathbf{w_i})P(\\mathbf{w_i})P(a_1 \\dots a_n)P(c)} = \\dfrac{P(a_1 \\dots a_n | \\mathbf{w_i})P( c | \\mathbf{w_i})P(d)}{P(a_1 \\dots a_n | \\mathbf{w_i})P( d | \\mathbf{w_i})P(c)} = ' title='=\\dfrac{P(a_1 \\dots a_n, c | \\mathbf{w_i})P(\\mathbf{w_i})P(a_1 \\dots a_n)P(d)}{P(a_1 \\dots a_n, d | \\mathbf{w_i})P(\\mathbf{w_i})P(a_1 \\dots a_n)P(c)} = \\dfrac{P(a_1 \\dots a_n | \\mathbf{w_i})P( c | \\mathbf{w_i})P(d)}{P(a_1 \\dots a_n | \\mathbf{w_i})P( d | \\mathbf{w_i})P(c)} = ' class='latex' \/><\/p>\n<p class=\"p1\" style=\"text-align: center;\"><img src='https:\/\/s0.wp.com\/latex.php?latex=%3D+%5Cdfrac%7BP%28+c+%7C+%5Cmathbf%7Bw_i%7D%29P%28d%29%7D%7BP%28+d+%7C+%5Cmathbf%7Bw_i%7D%29P%28c%29%7D+%3D+%5Cdfrac%7BP%28%5Cmathbf%7Bw_i%7D%7CP%28b_1+%5Cdots+b_m%2C+c%29%7D%7BP%28%5Cmathbf%7Bw_i%7D%7CP%28b_1+%5Cdots+b_m%2C+d%29%7D+%3D+%5Cdfrac%7BP%28%5Cmathbf%7Bw_i%7D+%7C+%5Cmathbf%7Bb%7D%29%7D%7BP%28%5Cmathbf%7Bw_i%7D+%7C+%5Cmathbf%7BB%7D%29%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='= \\dfrac{P( c | \\mathbf{w_i})P(d)}{P( d | \\mathbf{w_i})P(c)} = \\dfrac{P(\\mathbf{w_i}|P(b_1 \\dots b_m, c)}{P(\\mathbf{w_i}|P(b_1 \\dots b_m, d)} = \\dfrac{P(\\mathbf{w_i} | \\mathbf{b})}{P(\\mathbf{w_i} | \\mathbf{B})}' title='= \\dfrac{P( c | \\mathbf{w_i})P(d)}{P( d | \\mathbf{w_i})P(c)} = \\dfrac{P(\\mathbf{w_i}|P(b_1 \\dots b_m, c)}{P(\\mathbf{w_i}|P(b_1 \\dots b_m, d)} = \\dfrac{P(\\mathbf{w_i} | \\mathbf{b})}{P(\\mathbf{w_i} | \\mathbf{B})}' class='latex' \/>.<\/p>\n<p class=\"p1\">Nyn\u00ed ji\u017e lze analogie snadno zd\u016fvodnit<\/p>\n<p class=\"p1\" style=\"text-align: center;\"><img src='https:\/\/s0.wp.com\/latex.php?latex=%5Cdfrac%7BP%28%5Cmathbf%7Bw_i%7D+%7C+%5Cmathbf%7Ba%7D%29%7D%7BP%28%5Cmathbf%7Bw_i%7D+%7C+%5Cmathbf%7BA%7D%29%7D+%3D+%5Cdfrac%7BP%28%5Cmathbf%7Bw_i%7D+%7C+%5Cmathbf%7Bb%7D%29%7D%7BP%28%5Cmathbf%7Bw_i%7D+%7C+%5Cmathbf%7BB%7D%29%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\\dfrac{P(\\mathbf{w_i} | \\mathbf{a})}{P(\\mathbf{w_i} | \\mathbf{A})} = \\dfrac{P(\\mathbf{w_i} | \\mathbf{b})}{P(\\mathbf{w_i} | \\mathbf{B})}' title='\\dfrac{P(\\mathbf{w_i} | \\mathbf{a})}{P(\\mathbf{w_i} | \\mathbf{A})} = \\dfrac{P(\\mathbf{w_i} | \\mathbf{b})}{P(\\mathbf{w_i} | \\mathbf{B})}' class='latex' \/><\/p>\n<p class=\"p1\" style=\"text-align: center;\"><img src='https:\/\/s0.wp.com\/latex.php?latex=%5Cmbox%7Blog%7D+%5CBigg%28+%5Cdfrac%7BP%28%5Cmathbf%7Bw_i%7D+%7C+%5Cmathbf%7Ba%7D%29%7D%7BP%28%5Cmathbf%7Bw_i%7D%29%7D+%5Ccdot+%5Cdfrac%7BP%28%5Cmathbf%7Bw_i%7D%29%7D%7BP%28%5Cmathbf%7Bw_i%7D+%7C+%5Cmathbf%7BA%7D%29%7D+%5CBigg%29+%3D+%5Cmbox%7Blog%7D+%5CBigg%28+%5Cdfrac%7BP%28%5Cmathbf%7Bw_i%7D+%7C+%5Cmathbf%7Bb%7D%29%7D%7BP%28%5Cmathbf%7Bw_i%7D%29%7D+%5Ccdot+%5Cdfrac%7BP%28%5Cmathbf%7Bw_i%7D%29%7D%7BP%28%5Cmathbf%7Bw_i%7D+%7C+%5Cmathbf%7BB%7D%29%7D+%5CBigg%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\\mbox{log} \\Bigg( \\dfrac{P(\\mathbf{w_i} | \\mathbf{a})}{P(\\mathbf{w_i})} \\cdot \\dfrac{P(\\mathbf{w_i})}{P(\\mathbf{w_i} | \\mathbf{A})} \\Bigg) = \\mbox{log} \\Bigg( \\dfrac{P(\\mathbf{w_i} | \\mathbf{b})}{P(\\mathbf{w_i})} \\cdot \\dfrac{P(\\mathbf{w_i})}{P(\\mathbf{w_i} | \\mathbf{B})} \\Bigg)' title='\\mbox{log} \\Bigg( \\dfrac{P(\\mathbf{w_i} | \\mathbf{a})}{P(\\mathbf{w_i})} \\cdot \\dfrac{P(\\mathbf{w_i})}{P(\\mathbf{w_i} | \\mathbf{A})} \\Bigg) = \\mbox{log} \\Bigg( \\dfrac{P(\\mathbf{w_i} | \\mathbf{b})}{P(\\mathbf{w_i})} \\cdot \\dfrac{P(\\mathbf{w_i})}{P(\\mathbf{w_i} | \\mathbf{B})} \\Bigg)' class='latex' \/><\/p>\n<p class=\"p1\" style=\"text-align: center;\"><img src='https:\/\/s0.wp.com\/latex.php?latex=%5Cmbox%7Blog%7D+%5Cdfrac%7BP%28%5Cmathbf%7Bw_i%7D+%7C+%5Cmathbf%7Ba%7D%29%7D%7BP%28%5Cmathbf%7Bw_i%7D%29%7D-%5Cmbox%7Blog%7D+%5Cdfrac%7BP%28%5Cmathbf%7Bw_i%7D+%7C+%5Cmathbf%7BA%7D%29%7D%7BP%28%5Cmathbf%7Bw_i%7D%29%7D%3D%5Cmbox%7Blog%7D+%5Cdfrac%7BP%28%5Cmathbf%7Bw_i%7D+%7C+%5Cmathbf%7Bb%7D%29%7D%7BP%28%5Cmathbf%7Bw_i%7D%29%7D-%5Cmbox%7Blog%7D+%5Cdfrac%7BP%28%5Cmathbf%7Bw_i%7D+%7C+%5Cmathbf%7BB%7D%29%7D%7BP%28%5Cmathbf%7Bw_i%7D%29%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\\mbox{log} \\dfrac{P(\\mathbf{w_i} | \\mathbf{a})}{P(\\mathbf{w_i})}-\\mbox{log} \\dfrac{P(\\mathbf{w_i} | \\mathbf{A})}{P(\\mathbf{w_i})}=\\mbox{log} \\dfrac{P(\\mathbf{w_i} | \\mathbf{b})}{P(\\mathbf{w_i})}-\\mbox{log} \\dfrac{P(\\mathbf{w_i} | \\mathbf{B})}{P(\\mathbf{w_i})}' title='\\mbox{log} \\dfrac{P(\\mathbf{w_i} | \\mathbf{a})}{P(\\mathbf{w_i})}-\\mbox{log} \\dfrac{P(\\mathbf{w_i} | \\mathbf{A})}{P(\\mathbf{w_i})}=\\mbox{log} \\dfrac{P(\\mathbf{w_i} | \\mathbf{b})}{P(\\mathbf{w_i})}-\\mbox{log} \\dfrac{P(\\mathbf{w_i} | \\mathbf{B})}{P(\\mathbf{w_i})}' class='latex' \/><\/p>\n<p class=\"p1\">P\u0159i\u010dem\u017e\u00a0z definice <a href=\"https:\/\/en.wikipedia.org\/wiki\/Pointwise_mutual_information\">pointwise mutual information<\/a>\u00a0plat\u00ed<\/p>\n<p class=\"p1\" style=\"text-align: center;\"><img src='https:\/\/s0.wp.com\/latex.php?latex=%5Cmbox%7BPMI%7D%28%5Cmathbf%7Bw_i%7D%2C%5Cmathbf%7Ba%7D%29+-%5Cmbox%7BPMI%7D%28%5Cmathbf%7Bw_i%7D%2C%5Cmathbf%7BA%7D%29+%3D%5Cmbox%7BPMI%7D%28%5Cmathbf%7Bw_i%7D%2C%5Cmathbf%7Bb%7D%29+-%5Cmbox%7BPMI%7D%28%5Cmathbf%7Bw_i%7D%2C%5Cmathbf%7BB%7D%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\\mbox{PMI}(\\mathbf{w_i},\\mathbf{a}) -\\mbox{PMI}(\\mathbf{w_i},\\mathbf{A}) =\\mbox{PMI}(\\mathbf{w_i},\\mathbf{b}) -\\mbox{PMI}(\\mathbf{w_i},\\mathbf{B})' title='\\mbox{PMI}(\\mathbf{w_i},\\mathbf{a}) -\\mbox{PMI}(\\mathbf{w_i},\\mathbf{A}) =\\mbox{PMI}(\\mathbf{w_i},\\mathbf{b}) -\\mbox{PMI}(\\mathbf{w_i},\\mathbf{B})' class='latex' \/>.<\/p>\n<p class=\"p1\" style=\"text-align: left;\">Te\u010f vyu\u017eijeme v\u00fdsledek pr\u00e1ce\u00a0<a href=\"http:\/\/dl.acm.org\/citation.cfm?id=2969070\">Levy \u00a0&amp; Yoav Goldberg, 2014<\/a>, kde bylo uk\u00e1z\u00e1no, \u017ee algoritmus Skip-gram s negativn\u00edm samplov\u00e1n\u00edm\u00a0aproximuje rozklad matice slov a kontext\u016f, kde jednotliv\u00e9 bu\u0148ky matice odpov\u00eddaj\u00ed (a\u017e na konstatn\u00ed posuv) pointwise mutual information. Auto\u0159i <a href=\"https:\/\/arxiv.org\/abs\/1502.03520\">Arora &amp; kol., 2015<\/a>\u00a0sice ukazuj\u00ed, \u017ee aproximace se bl\u00ed\u017e\u00ed skute\u010dnosti jen u vektor\u016f vysok\u00e9 dimenze a navrhuj\u00ed vlastn\u00ed d\u016fkaz, pro pot\u0159eby tohoto \u010dl\u00e1nku n\u00e1m v\u0161ak tvrzen\u00ed sta\u010d\u00ed:<\/p>\n<p class=\"p1\" style=\"text-align: center;\"><img src='https:\/\/s0.wp.com\/latex.php?latex=%5Cmbox%7BPMI%7D%28%5Cmathbf%7Bw%7D%2C%5Cmathbf%7Ba%7D%29+%5Capprox+v_%5Cmathbf%7Bw%7D+%5Ccdot+v_%5Cmathbf%7Ba%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\\mbox{PMI}(\\mathbf{w},\\mathbf{a}) \\approx v_\\mathbf{w} \\cdot v_\\mathbf{a}' title='\\mbox{PMI}(\\mathbf{w},\\mathbf{a}) \\approx v_\\mathbf{w} \\cdot v_\\mathbf{a}' class='latex' \/>.<\/p>\n<p class=\"p1\" style=\"text-align: left;\">Odsud ji\u017e dostaneme k\u00fd\u017eenou line\u00e1rn\u00ed z\u00e1vislost vektor\u016f, odpov\u00eddaj\u00edc\u00ed slovn\u00edm analogi\u00edm:<\/p>\n<p class=\"p1\" style=\"text-align: center;\"><img src='https:\/\/s0.wp.com\/latex.php?latex=v_%5Cmathbf%7Ba%7D+-+v_%5Cmathbf%7BA%7D+%3D+v_%5Cmathbf%7Bb%7D+-+v_%5Cmathbf%7BB%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='v_\\mathbf{a} - v_\\mathbf{A} = v_\\mathbf{b} - v_\\mathbf{B}' title='v_\\mathbf{a} - v_\\mathbf{A} = v_\\mathbf{b} - v_\\mathbf{B}' class='latex' \/>.<\/p>\n<p>Probl\u00e9mem d\u016fkazu je p\u0159edpoklad nez\u00e1vislosti v\u00fdskytu jev\u016f v korpusu, kter\u00fd samoz\u0159ejm\u011b ve v\u011bt\u0161in\u011b p\u0159\u00edpad\u016f neplat\u00ed. To je n\u011bco, \u010d\u00edm se \u017e\u00e1dn\u00fd ze mn\u011b zn\u00e1m\u00fdch d\u016fkaz\u016f analogi\u00ed v algoritmech word2vec kv\u016fli v\u00e1gn\u00ed nebo chyb\u011bj\u00edc\u00ed definici v\u00fdznamu slov nezab\u00fdval. Je mo\u017en\u00e9, \u017ee existuje siln\u011bj\u0161\u00ed d\u016fkaz, kter\u00fd p\u0159edpoklad nez\u00e1vislosti jev\u016f nepot\u0159ebuje. Druhou mo\u017enost\u00ed je, \u017ee slovn\u00ed analogie funguj\u00ed p\u0159esn\u011b jen v p\u0159\u00edpad\u011b statisticky nez\u00e1visl\u00fdch jev\u016f. Ani pro jedno v\u0161ak nem\u00e1m zd\u016fvodn\u011bn\u00ed, a proto nech\u00e1v\u00e1m ot\u00e1zku otev\u0159enou pro p\u0159\u00edpadn\u00e9 z\u00e1jemce z \u0159ad \u010dten\u00e1\u0159\u016f.<\/p>\n<p>Pro tuto chv\u00edli v\u0161ak nechme stranou exaktn\u00ed d\u016fkazy a pod\u00edvejme na n\u011bkolik p\u0159\u00edklad\u016f analogi\u00ed napo\u010d\u00edtan\u00fdch algoritmem skip-gram na korpusu \u010desk\u00e9ho internetu.<\/p>\n\n<table id=\"tablepress-1\" class=\"tablepress tablepress-id-1 tbody-has-connected-cells\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">+ slovo<\/th><th class=\"column-2\">- slovo<\/th><th class=\"column-3\">+ slovo<\/th><th class=\"column-4\">nejbli\u017e\u0161\u00ed slovo v\u00fdsledku<\/th><th class=\"column-5\">kosinov\u00e1 podobnost<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-hover\">\n<tr class=\"row-2\">\n\t<td rowspan=\"3\" class=\"column-1\">kr\u00e1lovna<\/td><td rowspan=\"3\" class=\"column-2\">kr\u00e1l<\/td><td rowspan=\"3\" class=\"column-3\">\u0159idi\u010d<\/td><td class=\"column-4\">\u0159idi\u010dka<\/td><td class=\"column-5\">0.785<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-4\">\u0158idi\u010dka<\/td><td class=\"column-5\">0.682<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-4\">cyklistka<\/td><td class=\"column-5\">0.625<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td rowspan=\"3\" class=\"column-1\">ryb\u00e1\u0159ka<\/td><td rowspan=\"3\" class=\"column-2\">ryb\u00e1\u0159<\/td><td rowspan=\"3\" class=\"column-3\">o\u0161et\u0159ovatel<\/td><td class=\"column-4\">o\u0161et\u0159ovatelka<\/td><td class=\"column-5\">0.692<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-4\">O\u0161et\u0159ovatelka<\/td><td class=\"column-5\">0.619<\/td>\n<\/tr>\n<tr class=\"row-7\">\n\t<td class=\"column-4\">canisterapeutka<\/td><td class=\"column-5\">0.605<\/td>\n<\/tr>\n<tr class=\"row-8\">\n\t<td rowspan=\"3\" class=\"column-1\">kr\u00e1lovna<\/td><td rowspan=\"3\" class=\"column-2\">kozel<\/td><td rowspan=\"3\" class=\"column-3\">\u0159idi\u010d<\/td><td class=\"column-4\">\u0159idi\u010dka<\/td><td class=\"column-5\">0.609<\/td>\n<\/tr>\n<tr class=\"row-9\">\n\t<td class=\"column-4\">\u010dty\u0159iadvacetilet\u00e1<\/td><td class=\"column-5\">0.532<\/td>\n<\/tr>\n<tr class=\"row-10\">\n\t<td class=\"column-4\">dvaadvacetilet\u00e1<\/td><td class=\"column-5\">0.511<\/td>\n<\/tr>\n<tr class=\"row-11\">\n\t<td rowspan=\"3\" class=\"column-1\">ryb\u00e1\u0159ka<\/td><td rowspan=\"3\" class=\"column-2\">kozel<\/td><td rowspan=\"3\" class=\"column-3\">o\u0161et\u0159ovatel<\/td><td class=\"column-4\">krotitelka<\/td><td class=\"column-5\">0.574<\/td>\n<\/tr>\n<tr class=\"row-12\">\n\t<td class=\"column-4\">o\u0161et\u0159ovatelka<\/td><td class=\"column-5\">0.547<\/td>\n<\/tr>\n<tr class=\"row-13\">\n\t<td class=\"column-4\">pasa\u010dka<\/td><td class=\"column-5\">0.541<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-1 from cache -->\n<p>V\u00a0tabulce jsou v\u017edy uvedena t\u0159i slova, kter\u00e1 slou\u017e\u00ed jako dotaz a ke ka\u017ed\u00e9mu dotazu 3 nejbli\u017e\u0161\u00ed slova nalezen\u00e1 v\u00a0prostoru spolu s\u00a0kosinovou podobnost\u00ed. U prvn\u00edho p\u0159\u00edkladu, kde je dotazem v(<strong>kr\u00e1lovna<\/strong>) \u2013 v(<strong>kr\u00e1l<\/strong>) + v(<strong>\u0159idi\u010d<\/strong>) vid\u00edme, \u017ee analogie kr\u00e1sn\u011b funguj\u00ed a dv\u011b nejbli\u017e\u0161\u00ed nalezen\u00e1 slova jsou <strong>\u0159idi\u010dka<\/strong> a <strong>\u0158idi\u010dka<\/strong>. Ve druh\u00e9m p\u0159\u00edkladu byla z\u00e1m\u011brn\u011b pou\u017eita slova, pro kter\u00e1 p\u0159edpoklad nez\u00e1vislosti v\u00fdrazn\u011bji neplat\u00ed. Vlastnost <em>b\u00fdt ryb\u00e1\u0159em<\/em> a <em>b\u00fdt mu\u017e<\/em>, spolu jist\u011b pozitivn\u011b koreluj\u00ed. Podobn\u011b jako vlastnosti <em>b\u00fdt o\u0161et\u0159ovatel<\/em> a <em>b\u00fdt \u017eena<\/em>. P\u0159esto\u017ee kosinov\u00e1 podobnost nejbli\u017e\u0161\u00edho kandid\u00e1ta je ni\u017e\u0161\u00ed ne\u017e v\u00a0p\u0159edchoz\u00edm p\u0159\u00edpad\u011b, st\u00e1le je v\u00fdsledkem spr\u00e1vn\u00e1 odpov\u011b\u010f <strong><em>o\u0161et\u0159ovatelka<\/em><\/strong>. T\u0159et\u00ed p\u0159\u00edklad je extr\u00e9mn\u011bj\u0161\u00ed. Dotazem je zde v(<strong>kr\u00e1lovna<\/strong>) \u2013 v(<strong>kozel<\/strong>) + v(<strong>\u0159idi\u010d<\/strong>) a v\u00fdsledkem st\u00e1le <strong>\u0159idi\u010dka<\/strong>, i kdy\u017e u\u017e s\u00a0v\u00fdrazn\u011b ni\u017e\u0161\u00ed kosinovou podobnost\u00ed. Tento v\u00fdsledek je trochu zar\u00e1\u017eej\u00edc\u00ed a neodpov\u00edd\u00e1 na\u0161\u00ed intuici. Zd\u00e1 se, \u017ee vlastnost <em>b\u00fdt mu\u017eem<\/em> a <em>b\u00fdt \u017eenou<\/em> je natolik dominantn\u00ed, \u017ee p\u0159ev\u00e1\u017e\u00ed v\u0161echny ostatn\u00ed. Teprve posledn\u00ed p\u0159\u00edklad, kter\u00fd kombinuje extr\u00e9my p\u0159edchoz\u00edch uk\u00e1zek, dopadne jinak. Na dotaz v(<strong>ryb\u00e1\u0159ka<\/strong>) \u2013 v(<strong>kozel<\/strong>) + v(<strong>o\u0161et\u0159ovatel<\/strong>) najdeme jako nejbli\u017e\u0161\u00ed slovo <strong>krotitelka<\/strong>.<\/p>\n<p>T\u011bchto p\u00e1r p\u0159\u00edklad\u016f samoz\u0159ejm\u011b v\u016fbec nic nedokazuje. Je z\u00a0nich v\u0161ak vid\u011bt, \u017ee hled\u00e1n\u00ed analogi\u00ed pomoc\u00ed word2vec p\u0159\u00edstup\u016f je velmi odoln\u00e9 v\u016f\u010di \u0161umu. M\u016f\u017ee tedy dob\u0159e fungovat i v p\u0159\u00edpad\u011b, \u017ee by byl pro p\u0159esn\u00fd d\u016fkaz po\u017eadavek nez\u00e1vislosti jev\u016f nutn\u00fd. Nav\u00edc nep\u0159esnost\u00ed, kter\u00e9 do procesu hled\u00e1n\u00ed analogi\u00ed vstupuj\u00ed, je mnoho (velikost a zam\u011b\u0159en\u00ed korpusu, velikost reprezentuj\u00edc\u00edch vektor\u016f, apod.) a je jen ot\u00e1zkou, jak velkou chybu jednotliv\u011b zp\u016fsobuj\u00ed. Velk\u00e1 odolnost v\u016f\u010di nim je podle m\u00e9ho n\u00e1zoru zaji\u0161t\u011bna velkou \u0159\u00eddkost\u00ed vektorov\u00e9ho prostoru, ve kter\u00e9m analogie hled\u00e1me. Pro dotaz v(<strong>kr\u00e1lovna<\/strong>) \u2013 v(<strong>kozel<\/strong>) + v(<strong>\u0159idi\u010d<\/strong>) najdeme jako odpov\u011b\u010f slovo <strong>\u0159idi\u010dka<\/strong> jednodu\u0161e proto, \u017ee se v bl\u00edzkosti \u017e\u00e1dn\u00e9 jin\u00e9 slovo nenach\u00e1z\u00ed.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Od publikov\u00e1n\u00ed prvn\u00edho algoritmu Tom\u00e1\u0161e Mikolova, p\u0159ev\u00e1d\u011bj\u00edc\u00edho slova na vektory se zaj\u00edmav\u00fdmi vlastnostmi (psal jsem o n\u011bm zde), ub\u011bhlo ji\u017e n\u011bkolik let. St\u00e1le se v\u0161ak lid\u00e9 sna\u017e\u00ed v\u00edce \u010di m\u00e9n\u011b uspokojiv\u011b vysv\u011btlit, jak je mo\u017en\u00e9, \u017ee \"kings \u2013 king + queen\u00a0 = queens\". P\u0159ed \u010dasem napsal podobn\u00fd text na sv\u00e9m blogu\u00a0Piotr Migdal. \u010cl\u00e1nek je inspirativn\u00ed, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[10,14],"tags":[],"class_list":["post-328","post","type-post","status-publish","format-standard","hentry","category-nlp","category-strojove-uceni"],"_links":{"self":[{"href":"https:\/\/www.mlguru.com\/cs\/wp-json\/wp\/v2\/posts\/328","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mlguru.com\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mlguru.com\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mlguru.com\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mlguru.com\/cs\/wp-json\/wp\/v2\/comments?post=328"}],"version-history":[{"count":34,"href":"https:\/\/www.mlguru.com\/cs\/wp-json\/wp\/v2\/posts\/328\/revisions"}],"predecessor-version":[{"id":452,"href":"https:\/\/www.mlguru.com\/cs\/wp-json\/wp\/v2\/posts\/328\/revisions\/452"}],"wp:attachment":[{"href":"https:\/\/www.mlguru.com\/cs\/wp-json\/wp\/v2\/media?parent=328"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mlguru.com\/cs\/wp-json\/wp\/v2\/categories?post=328"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mlguru.com\/cs\/wp-json\/wp\/v2\/tags?post=328"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}