Fixes
This commit is contained in:
parent
09cf8cbc23
commit
81c7963e4c
@ -15,14 +15,14 @@ Rzecz jasna, $\sum_{i=1}^m k_i = T$.
|
||||
|
||||
Jak powinniśmy racjonalnie szacować prawdopodobieństwa wylosowania kuli w $i$-tym kolorze ($p_i$)?
|
||||
|
||||
Wydawałoby się wystarczyłoby liczbę wylosowanych kul w danym kolorze
|
||||
Wydawałoby się, że wystarczy liczbę wylosowanych kul w danym kolorze
|
||||
podzielić przez liczbę wszystkich prób:
|
||||
|
||||
$$p_i = \frac{k_i}{T}.$$
|
||||
|
||||
*** Wygładzanie — przykład
|
||||
|
||||
Rozpatrzmy przykład z 3 kolorami (wiemy, że w urnie mogą być urny
|
||||
Rozpatrzmy przykład z 3 kolorami (wiemy, że w urnie mogą być kule
|
||||
żółte, zielone i czerwone, tj. $m=3$) i 4 losowaniami ($T=4$):
|
||||
|
||||
[[./05_Wygladzanie/urna.drawio.png]]
|
||||
@ -35,12 +35,12 @@ a zielonej — 0. Wartości te są jednak dość problematyczne:
|
||||
potrzebowalibyśmy większej liczby losowań, żeby być bardziej pewnym
|
||||
naszych estymacji.
|
||||
- W szczególności stwierdzenie, że prawdopodobieństwo wylosowania kuli
|
||||
zielonej wynosi 0 jest bardzo mocnym stwierdzeniem (twierdzimy, że
|
||||
zielonej wynosi 0, jest bardzo mocnym stwierdzeniem (twierdzimy, że
|
||||
*NIEMOŻLIWE* jest wylosowanie kuli zielonej), dopiero większa liczba
|
||||
prób bez wylosowania zielonej kuli mogłaby sugerować
|
||||
prawdopodobieństwo bliskie zeru.
|
||||
- Zauważmy, że niemożliwe jest wylosowanie ułamka kuli, jeśli w
|
||||
rzeczywistości 10% kul jest żółtych to nie oznacza się wylosujemy
|
||||
rzeczywistości 10% kul jest żółtych, to nie oznacza się wylosujemy
|
||||
$4\frac{1}{10} = \frac{2}{5}$ kuli. Prawdopodobnie wylosujemy jedną
|
||||
kulę żółtą albo żadną. Wylosowanie dwóch kul żółtych byłoby możliwe,
|
||||
ale mniej prawdopodobne. Jeszcze mniej prawdopodobne byłoby
|
||||
@ -59,11 +59,11 @@ Laplace'a, zdefiniowane za pomocą następującego wzoru:
|
||||
|
||||
$$p_i = \frac{k_i+1}{T+m}.$$
|
||||
|
||||
W naszym przypadku z urną prawdopodobieństwo wylosowania kuli
|
||||
czerwonej określimy na $\frac{3+1}{4+3} = \frac{4/7}$, kuli żółtej —
|
||||
W naszym przykładzie z urną prawdopodobieństwo wylosowania kuli
|
||||
czerwonej określimy na $\frac{3+1}{4+3} = \frac{4}{7}$, kuli żółtej —
|
||||
$\frac{1+1}{4+3}=2/7$, zielonej — $\frac{0+1}{4+3}=1/7$. Tym samym,
|
||||
kula zielona uzyskała niezerowe prawdopodobieństwo, żółta — nieco
|
||||
zyska, zaś czerwona — straciła.
|
||||
zyskała, zaś czerwona — straciła.
|
||||
|
||||
**** Własności wygładzania +1
|
||||
|
||||
@ -74,7 +74,7 @@ $$\lim_{m \rightarrow \infty} \frac{k_i +1}{T + m} = \frac{k_i}{T}.$$
|
||||
|
||||
Inna dobra, zdroworozsądkowo, własność to to, że prawdopodobieństwo nigdy nie będzie zerowe:
|
||||
|
||||
$$frac{k_i + 1}{T + m} > 0.$$
|
||||
$$\frac{k_i + 1}{T + m} > 0.$$
|
||||
|
||||
** Wygładzanie w unigramowym modelu języku
|
||||
|
||||
@ -90,7 +90,7 @@ $T$ — długość zbioru uczącego.
|
||||
A zatem przy użyciu wygładzania +1 w następujący sposób estymować
|
||||
będziemy prawdopodobieństwo słowa $w$:
|
||||
|
||||
$$P(w) = \fraq{\# w + 1}{|C| + |V|}.$$
|
||||
$$P(w) = \frac{\# w + 1}{|C| + |V|}.$$
|
||||
|
||||
*** Wygładzanie $+\alpha$
|
||||
|
||||
@ -98,7 +98,7 @@ W modelowaniu języka wygładzanie $+1$ daje zazwyczaj niepoprawne
|
||||
wyniki, dlatego częściej zamiast wartości 1 używa się współczynnika $0
|
||||
< \alpha < 1$:
|
||||
|
||||
$$P(w) = \fraq{\# w + \alpha}{|C| + \alpha|V|}.$$
|
||||
$$P(w) = \frac{\# w + \alpha}{|C| + \alpha|V|}.$$
|
||||
|
||||
W innych praktycznych zastosowaniach statystyki
|
||||
przyjmuje się $\alpha = \frac{1}{2}$, ale w przypadku n-gramowych
|
||||
@ -248,7 +248,7 @@ counterA['taki']
|
||||
:results:
|
||||
:end:
|
||||
|
||||
Policzmy teraz jakiej liczby wystąpień byśmy oczekiwali gdyby użyć wygładzania +1 bądź +0.01.
|
||||
Policzmy teraz jakiej liczby wystąpień byśmy oczekiwali, gdyby użyć wygładzania +1 bądź +0.01.
|
||||
(Uwaga: zwracamy liczbę wystąpień, a nie względną częstość, stąd przemnażamy przez rozmiar całego korpusu).
|
||||
|
||||
#+BEGIN_SRC python :session mysession :exports both :results raw drawer
|
||||
@ -339,7 +339,7 @@ Wygładzanie metodą Gooda-Turinga, mimo prostoty, daje wyniki zaskakująco zbli
|
||||
|
||||
*** Rzadkość danych
|
||||
|
||||
W wypadku bigramów, trigramów itd. jeszcze dotkliwy staje się problem
|
||||
W wypadku bigramów, trigramów, tetragramów itd. jeszcze dotkliwy staje się problem
|
||||
*rzadkości* danych (/data sparsity/). Przestrzeń możliwych zdarzeń
|
||||
jest jeszcze większa ($|V|^2$ dla bigramów), więc estymacje stają się
|
||||
jeszcze mniej pewne.
|
||||
@ -347,7 +347,7 @@ jeszcze mniej pewne.
|
||||
*** Back-off
|
||||
|
||||
Dla $n$-gramów, gdzie $n>1$, nie jesteśmy ograniczeni do wygładzania $+1$, $+k$ czy Gooda-Turinga.
|
||||
W przypadku rzadkich $n$-gramów, w szczególności gdy $n$-gram w ogóle się nie pojawił w korpusie,
|
||||
W przypadku rzadkich $n$-gramów, w szczególności, gdy $n$-gram w ogóle się nie pojawił w korpusie,
|
||||
możemy „zejść” na poziom krótszych $n$-gramów. Na tym polega *back-off*.
|
||||
|
||||
Otóż jeśli $\# w_{i-n+1}\ldots w_{i-1} > 0$, wówczas estymujemy prawdopodobieństwa
|
||||
@ -355,7 +355,7 @@ Otóż jeśli $\# w_{i-n+1}\ldots w_{i-1} > 0$, wówczas estymujemy prawdopodobi
|
||||
|
||||
$$P_B(w_i|w_{i-n+1}\ldots w_{i-1}) = d_n(w_{i-n+1}\ldots w_{i-1}\ldots w_{i-1}) P(w_i|w_{i-n+1}\ldots w_{i-1})$$
|
||||
|
||||
W przeciwnym razie, rozpatrujemy rekurencyjnie krótszy $n$-gram:
|
||||
W przeciwnym razie rozpatrujemy rekurencyjnie krótszy $n$-gram:
|
||||
|
||||
$$P_B(w_i|w_{i-n+1}\ldots w_{i-1}) = \delta_n(w_{i-n+1}\ldots w_{i-1}\ldots w_{i-1}) P_B(w_i|w_{i-n+2}\ldots w_{i-1}).$$
|
||||
|
||||
@ -396,7 +396,7 @@ Teraz zastosujemy interpolację z następującą wartością parametru
|
||||
$1-\lambda$, sterującego wagą, jaką przypisujemy do krótszych $n$-gramów:
|
||||
|
||||
|
||||
$$1 - \lambda = \frag{N_{1+}(w_1\ldots w_{n-1}\dot\bullet)}{N_{1+}(w_1\ldots w_{n-1}\dot\bullet) + \# w_1\ldots w_{n-1}}.$$
|
||||
$$1 - \lambda = \frac{N_{1+}(w_1\ldots w_{n-1}\dot\bullet)}{N_{1+}(w_1\ldots w_{n-1}\dot\bullet) + \# w_1\ldots w_{n-1}}.$$
|
||||
|
||||
*** Wygładzanie Knesera-Neya
|
||||
|
||||
@ -453,3 +453,34 @@ $$P(w) = \frac{N_{1+}(\bullet w)}{\sum_{w_j} N_{1+}(\bullet w_j)}.$$
|
||||
#+RESULTS:
|
||||
:results:
|
||||
:end:
|
||||
|
||||
** Narzędzia $n$-gramowego modelowania języka
|
||||
|
||||
Istnieje kilka narzędzie do modelowania, ze starszych warto wspomnieć
|
||||
pakiety [[http://www.speech.sri.com/projects/srilm/][SRILM]] i [[https://github.com/irstlm-team/irstlm][IRSTLM]].
|
||||
Jest to oprogramowanie bogate w opcje, można wybierać różne opcje wygładzania.
|
||||
|
||||
Szczytowym osiągnięciem w zakresie $n$-gramowego modelowania języka
|
||||
jest wspomniany już KenLM. Ma on mniej opcji niż SRILM czy ISRLM, jest
|
||||
za to precyzyjnie zoptymalizowany zarówno jeśli chodzi jakość, jak i
|
||||
szybkość działania. KenLM implementuje nieco zmodyfikowane wygładzanie
|
||||
Knesera-Neya połączone z *przycinaniem* słownika n-gramów (wszystkie
|
||||
/hapax legomena/ dla $n \geq 3$ są domyślnie usuwane).
|
||||
|
||||
*** Przykładowe wyniki dla KenLM i korpusu Open Subtitles
|
||||
|
||||
**** Zmiana perplexity przy zwiększaniu zbioru testowego
|
||||
|
||||
#+CAPTION: Perplexity dla różnych rozmiarów zbioru testowego
|
||||
[[./05_Wygladzanie/size-perplexity.gif]]
|
||||
|
||||
|
||||
**** Zmiana perplexity przy zwiększaniu zbioru uczącego
|
||||
|
||||
#+CAPTION: Perplexity dla różnych rozmiarów zbioru uczącego
|
||||
[[./05_Wygladzanie/size-perplexity2.gif]]
|
||||
|
||||
**** Zmiana perplexity przy zwiększaniu rządu modelu
|
||||
|
||||
#+CAPTION: Perplexity dla różnych wartości rządu modelu
|
||||
[[./05_Wygladzanie/order-perplexity.gif]]
|
||||
|
BIN
wyk/05_Wygladzanie/order-perplexity.gif
Normal file
BIN
wyk/05_Wygladzanie/order-perplexity.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.1 KiB |
BIN
wyk/05_Wygladzanie/size-perplexity.gif
Normal file
BIN
wyk/05_Wygladzanie/size-perplexity.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.5 KiB |
BIN
wyk/05_Wygladzanie/size-perplexity2.gif
Normal file
BIN
wyk/05_Wygladzanie/size-perplexity2.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.8 KiB |
Loading…
Reference in New Issue
Block a user