From 340197a94c10b06f5b5b1569410e5ce4a61ac5a7 Mon Sep 17 00:00:00 2001 From: Filip Gralinski Date: Wed, 26 May 2021 13:48:10 +0200 Subject: [PATCH] fixes --- wyk/09_neurozoo.ipynb | 8 ++++---- wyk/09_neurozoo.org | 14 +++++++------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/wyk/09_neurozoo.ipynb b/wyk/09_neurozoo.ipynb index 6acddca..6fa0950 100644 --- a/wyk/09_neurozoo.ipynb +++ b/wyk/09_neurozoo.ipynb @@ -1533,7 +1533,7 @@ "sportowych powyżej), tzn. rozkład prawdopodobieństwa możliwych etykiet\n", "uzyskujemy poprzez zastosowanie prostej warstwy liniowej i funkcji softmax:\n", "\n", - "$$p(l^k=i) = s(W\\vec{v}(t^k))_i = \\frac{e^{W\\vec{v}(t^k)}}{Z},$$\n", + "$$p(l^k=j) = s(W\\vec{v}(t^k))_j = \\frac{e^{(W\\vec{v}(t^k))_j}}{Z},$$\n", "\n", "gdzie $\\vec{v}(t^k)$ to reprezentacja wektorowa tokenu $t^k$.\n", "Zauważmy, że tutaj (w przeciwieństwie do klasyfikacji całego tekstu)\n", @@ -1585,7 +1585,7 @@ "cały kontekst, dla *okna* o długości $c$ będzie to kontekst $t^{k-c},\\dots,t^k,\\dots,t^{k+c}$.\n", "Innymi słowy klasyfikujemy token na podstawie jego samego oraz jego kontekstu:\n", "\n", - "$$p(l^k=i) = \\frac{e^{W\\vec{v}(t^{k-c},\\dots,t^k,\\dots,t^{k+c})}}{Z_k}.$$\n", + "$$p(l^k=j) = \\frac{e^{(W\\vec{v}(t^{k-c},\\dots,t^k,\\dots,t^{k+c}))_j}}{Z_k}.$$\n", "\n", "Zauważmy, że w tej metodzie w ogóle nie rozpatrujemy sensowności\n", "sekwencji wyjściowej (etykiet), np. może być bardzo mało\n", @@ -1594,7 +1594,7 @@ "Napiszmy wzór określający prawdopodobieństwo całej sekwencji, nie\n", "tylko pojedynczego tokenu. Na razie będzie to po prostu iloczyn poszczególnych wartości.\n", "\n", - "$$p(l) = \\prod_{k=1}^K \\frac{e^{W\\vec{v}(t^{k-c},\\dots,t^k,\\dots,t^{k+c})}}{Z_k} = \\frac{e^{\\sum_{k=1}^KW\\vec{v}(t^{k-c},\\dots,t^k,\\dots,t^{k+c})}}{\\prod_{k=1}^K Z_k}$$\n", + "$$p(l) = \\prod_{k=1}^K \\frac{e^{(W\\vec{v}(t^{k-c},\\dots,t^k,\\dots,t^{k+c}))_{l^k}}}{Z_k} = \\frac{e^{\\sum_{k=1}^K (W\\vec{v}(t^{k-c},\\dots,t^k,\\dots,t^{k+c})_{l^k})}}{\\prod_{k=1}^K Z_k} $$\n", "\n", "Reprezentacja kontekstu może być funkcją embeddingów wyrazów\n", "(zakładamy, że embedding nie zależy od pozycji słowa).\n", @@ -1631,7 +1631,7 @@ "\n", "W takiej wersji warunkowych pól losowych otrzymamy następujący wzór na prawdopodobieństwo całej sekwencji.\n", "\n", - "$$p(l) = \\frac{e^{\\sum_{k=1}^KW\\vec{v}(t^{k-c},\\dots,t^k,\\dots,t^{k+c}) + \\sum_{k=1}^{K-1} V_{l_k,l_{k+1}}}}{\\prod_{k=1}^K Z_k}$$\n", + "$$p(l) = \\frac{e^{\\sum_{k=1}^K (W\\vec{v}(t^{k-c},\\dots,t^k,\\dots,t^{k+c}))_{l^k} + \\sum_{k=1}^{K-1} V_{l^k,l^{k+1}}}}{\\prod_{k=1}^K Z_k}$$\n", "\n" ] }, diff --git a/wyk/09_neurozoo.org b/wyk/09_neurozoo.org index 288621b..75d6d64 100644 --- a/wyk/09_neurozoo.org +++ b/wyk/09_neurozoo.org @@ -824,7 +824,7 @@ klasyfikacji wieloklasowej (jak w przykładzie klasyfikacji dyscyplin sportowych powyżej), tzn. rozkład prawdopodobieństwa możliwych etykiet uzyskujemy poprzez zastosowanie prostej warstwy liniowej i funkcji softmax: -$$p(l^k=i) = s(W\vec{v}(t^k))_i = \frac{e^{W\vec{v}(t^k)}}{Z},$$ +$$p(l^k=j) = s(W\vec{v}(t^k))_j = \frac{e^{(W\vec{v}(t^k))_j}}{Z},$$ gdzie $\vec{v}(t^k)$ to reprezentacja wektorowa tokenu $t^k$. Zauważmy, że tutaj (w przeciwieństwie do klasyfikacji całego tekstu) @@ -852,7 +852,7 @@ Za pomocą wektora można przedstawić nie pojedynczy token $t^k$, lecz cały kontekst, dla /okna/ o długości $c$ będzie to kontekst $t^{k-c},\dots,t^k,\dots,t^{k+c}$. Innymi słowy klasyfikujemy token na podstawie jego samego oraz jego kontekstu: -$$p(l^k=i) = \frac{e^{W\vec{v}(t^{k-c},\dots,t^k,\dots,t^{k+c})}}{Z_k}.$$ +$$p(l^k=j) = \frac{e^{(W\vec{v}(t^{k-c},\dots,t^k,\dots,t^{k+c}))_j}}{Z_k}.$$ Zauważmy, że w tej metodzie w ogóle nie rozpatrujemy sensowności sekwencji wyjściowej (etykiet), np. może być bardzo mało @@ -861,7 +861,7 @@ prawdopodobne, że bezpośrednio po nazwisku występuje data. Napiszmy wzór określający prawdopodobieństwo całej sekwencji, nie tylko pojedynczego tokenu. Na razie będzie to po prostu iloczyn poszczególnych wartości. -$$p(l) = \prod_{k=1}^K \frac{e^{W\vec{v}(t^{k-c},\dots,t^k,\dots,t^{k+c})}}{Z_k} = \frac{e^{\sum_{k=1}^KW\vec{v}(t^{k-c},\dots,t^k,\dots,t^{k+c})}}{\prod_{k=1}^K Z_k}$$ +$$p(l) = \prod_{k=1}^K \frac{e^{(W\vec{v}(t^{k-c},\dots,t^k,\dots,t^{k+c}))_{l^k}}}{Z_k} = \frac{e^{\sum_{k=1}^K (W\vec{v}(t^{k-c},\dots,t^k,\dots,t^{k+c}))_{l^k}}}{\prod_{k=1}^K Z_k}$$ Reprezentacja kontekstu może być funkcją embeddingów wyrazów (zakładamy, że embedding nie zależy od pozycji słowa). @@ -886,7 +886,7 @@ przyjmować dowolne wartości, które będę normalizowane podobnie, tak jak to W takiej wersji warunkowych pól losowych otrzymamy następujący wzór na prawdopodobieństwo całej sekwencji. -$$p(l) = \frac{e^{\sum_{k=1}^KW\vec{v}(t^{k-c},\dots,t^k,\dots,t^{k+c}) + \sum_{k=1}^{K-1} V_{l_k,l_{k+1}}}}{\prod_{k=1}^K Z_k}$$ +$$p(l) = \frac{e^{\sum_{k=1}^K (W\vec{v}(t^{k-c},\dots,t^k,\dots,t^{k+c}))_{l^k} + \sum_{k=1}^{K-1} V_{l^k,l^{k+1}}}}{\prod_{k=1}^K Z_k}$$ ** Algorytm Viterbiego @@ -916,7 +916,7 @@ Inicjalizacja: Dla $i > 1$ i dla każdego $j$ będziemy teraz szukać: -$$\underset{q \in \{1,\dots,|V|}} \operatorname{max} s[i-1, q] + (W\vec{v}(t^{k-c},\dots,t^k,\dots,t^{k+c}))_j + V_{q, j}$$ +$$\underset{q \in \{1,\dots,|V|\}}{\operatorname{max}} s[i-1, q] + (W\vec{v}(t^{k-c},\dots,t^k,\dots,t^{k+c}))_j + V_{q, j}$$ Tę wartość przypiszemy do $s[i, j]$, z kolei do $b[i, j]$ — indeks $q$, dla którego ta największa wartość jest osiągnięta. @@ -924,11 +924,11 @@ $q$, dla którego ta największa wartość jest osiągnięta. Najpierw obliczenia wykonujemy wprzód wypełniając tabelę dla coraz większych wartości $j$. W ten sposób otrzymamy największą wartość (nieznormalizowanego) prawdopodobieństwa: -$$\underset{q \in \{1,\dots,|V|}} \operatorname{max} s[K, q]$$ +$$\underset{q \in \{1,\dots,|V|\}}{\operatorname{max}} s[K, q]$$ oraz ostatnią etykietę: -$$y^K = \underset{q \in \{1,\dots,|V|}} \operatorname{argmax} s[K, q]$$ +$$y^K = \underset{q \in \{1,\dots,|V|\}}{\operatorname{argmax}} s[K, q]$$ Aby uzyskać cały ciąg, kierujemy się /wstecz/ używając wskaźników: