This commit is contained in:
Filip Gralinski 2021-05-26 15:56:22 +02:00
parent 340197a94c
commit a6a4106844
4 changed files with 593 additions and 244 deletions

File diff suppressed because one or more lines are too long

View File

@ -840,7 +840,7 @@ Można spróbować uzyskać bogatszą reprezentację dla słowa biorąc pod uwag
- długość słowa - długość słowa
- kształt słowa (/word shape/), np. czy pisany wielkimi literami, czy składa się z cyfr itp. - kształt słowa (/word shape/), np. czy pisany wielkimi literami, czy składa się z cyfr itp.
- n-gramy znakowe wewnątrz słowa (np. słowo /Kowalski/ można zakodować jako sumę wektorów - n-gramy znakowe wewnątrz słowa (np. słowo /Kowalski/ można zakodować jako sumę wektorów
trigramów znakówych $\vec{v}(Kow) + \vec{v}(owa) + \vec{v}(wal) + \vec{v}(als) + \vec{v}(lsk) + + \vec{v}(ski)$ trigramów znakówych $\vec{v}(Kow) + \vec{v}(owa) + \vec{v}(wal) + \vec{v}(als) + \vec{v}(lsk) + \vec{v}(ski)$
Cały czas nie rozpatrujemy jednak w tej metodzie kontekstu wyrazu. Cały czas nie rozpatrujemy jednak w tej metodzie kontekstu wyrazu.
(/Renault/ w pewnym kontekście może być nazwą firmy, w innym — (/Renault/ w pewnym kontekście może być nazwą firmy, w innym —
@ -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}$. 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: Innymi słowy klasyfikujemy token na podstawie jego samego oraz jego kontekstu:
$$p(l^k=j) = \frac{e^{(W\vec{v}(t^{k-c},\dots,t^k,\dots,t^{k+c}))_j}}{Z_k}.$$ $$p(l^k=j) = \frac{e^{(W\vec{v}(t^{k-c},\dots,t^k,\dots,t^{k+c}))_j}}{Z}.$$
Zauważmy, że w tej metodzie w ogóle nie rozpatrujemy sensowności Zauważmy, że w tej metodzie w ogóle nie rozpatrujemy sensowności
sekwencji wyjściowej (etykiet), np. może być bardzo mało sekwencji wyjściowej (etykiet), np. może być bardzo mało
@ -861,12 +861,12 @@ prawdopodobne, że bezpośrednio po nazwisku występuje data.
Napiszmy wzór określający prawdopodobieństwo całej sekwencji, nie 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. 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}))_{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}$$ $$l = (l^1,\\dots,l^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 Reprezentacja kontekstu może być funkcją embeddingów wyrazów
(zakładamy, że embedding nie zależy od pozycji słowa). (zakładamy, że embedding nie zależy od pozycji słowa).
$$\vec{v}(t^{k-c},\dots,t^k,\dots,t^{k+c}) = f(\vec{E}(t^{k-c}),\dots,\vec{E}(t^k),\dots,\vec{E}({t^{k+c}})$$ $$\vec{v}(t^{k-c},\dots,t^k,\dots,t^{k+c}) = f(\vec{E}(t^{k-c}),\dots,\vec{E}(t^k),\dots,\vec{E}({t^{k+c}}))$$
** Warunkowe pola losowe ** Warunkowe pola losowe
@ -934,6 +934,8 @@ Aby uzyskać cały ciąg, kierujemy się /wstecz/ używając wskaźników:
$$y^i = b[i, y^{i+1}]$$ $$y^i = b[i, y^{i+1}]$$
[[./crf-viterbi.png]]
*** Złożoność obliczeniowa *** Złożoność obliczeniowa
Zauważmy, że rozmiar tabel $s$ i $b$ wynosi $K \times |L|$, a koszt Zauważmy, że rozmiar tabel $s$ i $b$ wynosi $K \times |L|$, a koszt
@ -985,10 +987,10 @@ macierzy $W$ i $V$ (samego procesu uczenia nie pokazujemy tutaj):
import torch.nn as nn import torch.nn as nn
matrixW = torch.tensor( matrixW = torch.tensor(
[[-1., 3.0, 3.0], [[-1., 3.0, 3.0], # C
[0., 2.0, -2.0], [0., 2.0, -2.0], # P
[4., -2.0, 3.0]]) [4., -2.0, 3.0]]) # R
# Ala ma powieść
# rozkład prawdopodobieństwa, gdyby patrzeć tylko na słowo # rozkład prawdopodobieństwa, gdyby patrzeć tylko na słowo
nn.functional.softmax(matrixW @ onehot['powieść'], dim=0) nn.functional.softmax(matrixW @ onehot['powieść'], dim=0)
#+END_SRC #+END_SRC
@ -1005,9 +1007,10 @@ macierzy $W$ i $V$ (samego procesu uczenia nie pokazujemy tutaj):
import torch.nn as nn import torch.nn as nn
matrixV = torch.tensor( matrixV = torch.tensor(
[[-0.5, 1.5, 2.0], [[-0.5, 1.5, 2.0], # C
[0.5, 0.8, 2.5], [0.5, 0.8, 2.5], # P
[2.0, 0.8, 0.2]]) [2.0, 0.8, 0.2]]) # R
# C P R
# co występuje po przymiotniku? - rozkład prawdopodobieństwa # co występuje po przymiotniku? - rozkład prawdopodobieństwa
nn.functional.softmax(matrixV[1], dim=0) nn.functional.softmax(matrixV[1], dim=0)

1
wyk/crf-viterbi.drawio Normal file
View File

@ -0,0 +1 @@
<mxfile host="app.diagrams.net" modified="2021-05-26T13:43:59.377Z" agent="5.0 (X11)" etag="4emVx1cQBqc02lQgOp_X" version="14.6.13" type="device"><diagram id="7pFB8Xg2-vPC_YrQG171" name="Page-1">5ZpNc5swEIZ/Dcd2jAQ2PsbYTQ/pTKaZTt3eFJCNWowYWY5xf31FEAa0dr4DDLl40IIk9Lyr1UrYwv4muxQkjb7xkMYWGoWZhecWQlPHVr+54VAYXIwLw1qwsDDZleGG/aPaONLWHQvptvGg5DyWLG0aA54kNJANGxGC75uPrXjc7DUlawoMNwGJofUnC2VUWD00qexfKVtHZc/2eFrc2ZDyYT2SbURCvq+Z8MLCvuBcFlebzKdxzq7kUtT7cubu8cUETeRTKiwvJ+j3gvFb5s3Dq/2PdDlzPulW7ki80wO+iIl+X3koIUiaqS5mkdzEymCry60U/C/1ecyFsiQ8UU/OViyODROJ2TpRxUC9JFX22R0Vkim8F/rGhoVh3s1sHzFJb1IS5H3ulS8pm+C7JKT5+49USb+qaoBmZxnYR7LKIynfUCkO6pGywliLob3RdnR5X2lbmqKarKWGRHvT+thyBVxdaObP4I8A/82A8SO3Z/gxwJ/yPaOW71rTmeU7ljcZrhq4b2o4QA0f0FfNqNB/jlFNFLJNi/VgxbKc2tuED7dJzIPE8Ali+L2IjQGx634TQyd8rFViE0Dse7+J4VHHxJAHAYUqR9JFLmTE1zwh8aKyGsGqeuaK81TD+0OlPOiEj+wkb6KlGZPL2vWvvKnPri7NM93yfeFQFhI13mW9UKuVF6tq96WyXjG+fFAPa6YY8J0I6AOwNCtJxJrKh/KuM04gaEwku2u+yJtL6vU90CIzT+s60E7fNdDWcwUL4ZUX0CAAiYW6c+u5jvtWyZjBuPPQXG75+hubTWSdx2Yb7t96NpOx27OUyYZbrp7lTCay7icm3Cb1bGKayLqfmHAvs7XcmQKp2hvZljsHAIezr/SMKT+GYrS6r7Rh0m8PFz844zoxF9rFD9NNNFz83uNZVbv0YeqKh0sfO0bs6dr5EUxqBxx7DOe3y5WgM/ow2Rtw6AHH6507P0wcBxx7DOfHo66d3wX08xwUFTkoGnQOCpZh1PVUgEf1NTGGvSEAy8K465kBNwQ1MfCHEgN1vUZjeIYF6NMkvMj/zJFjjMl2y4KmFi89QH38zB9yrHFyT3AqbU8+ydc9XHOmOq5kmhoyuQb/4lOErlVJABrC5jGvbTRUfKsADd1reRz2K+SFOcCz5X3dx6Dq+8+vso12PgaVpF/8NagdVzselpUeMn6pq03OLLptuRo8dLv9KIdujiGiPe044cGn11g1Cn/YSthTM9t5NyVUsfr/YDGLqj9h4sV/</diagram></mxfile>

BIN
wyk/crf-viterbi.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB