This commit is contained in:
Filip Gralinski 2022-04-02 10:02:00 +02:00
parent 09cf8cbc23
commit 81c7963e4c
4 changed files with 46 additions and 15 deletions

View File

@ -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$)? 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: podzielić przez liczbę wszystkich prób:
$$p_i = \frac{k_i}{T}.$$ $$p_i = \frac{k_i}{T}.$$
*** Wygładzanie — przykład *** 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$): żółte, zielone i czerwone, tj. $m=3$) i 4 losowaniami ($T=4$):
[[./05_Wygladzanie/urna.drawio.png]] [[./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 potrzebowalibyśmy większej liczby losowań, żeby być bardziej pewnym
naszych estymacji. naszych estymacji.
- W szczególności stwierdzenie, że prawdopodobieństwo wylosowania kuli - 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 *NIEMOŻLIWE* jest wylosowanie kuli zielonej), dopiero większa liczba
prób bez wylosowania zielonej kuli mogłaby sugerować prób bez wylosowania zielonej kuli mogłaby sugerować
prawdopodobieństwo bliskie zeru. prawdopodobieństwo bliskie zeru.
- Zauważmy, że niemożliwe jest wylosowanie ułamka kuli, jeśli w - 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ą $4\frac{1}{10} = \frac{2}{5}$ kuli. Prawdopodobnie wylosujemy jedną
kulę żółtą albo żadną. Wylosowanie dwóch kul żółtych byłoby możliwe, kulę żółtą albo żadną. Wylosowanie dwóch kul żółtych byłoby możliwe,
ale mniej prawdopodobne. Jeszcze mniej prawdopodobne byłoby 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}.$$ $$p_i = \frac{k_i+1}{T+m}.$$
W naszym przypadku z urną prawdopodobieństwo wylosowania kuli W naszym przykładzie z urną prawdopodobieństwo wylosowania kuli
czerwonej określimy na $\frac{3+1}{4+3} = \frac{4/7}$, kuli żółtej — 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, $\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 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 **** 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: 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 ** 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ć A zatem przy użyciu wygładzania +1 w następujący sposób estymować
będziemy prawdopodobieństwo słowa $w$: będziemy prawdopodobieństwo słowa $w$:
$$P(w) = \fraq{\# w + 1}{|C| + |V|}.$$ $$P(w) = \frac{\# w + 1}{|C| + |V|}.$$
*** Wygładzanie $+\alpha$ *** 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 wyniki, dlatego częściej zamiast wartości 1 używa się współczynnika $0
< \alpha < 1$: < \alpha < 1$:
$$P(w) = \fraq{\# w + \alpha}{|C| + \alpha|V|}.$$ $$P(w) = \frac{\# w + \alpha}{|C| + \alpha|V|}.$$
W innych praktycznych zastosowaniach statystyki W innych praktycznych zastosowaniach statystyki
przyjmuje się $\alpha = \frac{1}{2}$, ale w przypadku n-gramowych przyjmuje się $\alpha = \frac{1}{2}$, ale w przypadku n-gramowych
@ -248,7 +248,7 @@ counterA['taki']
:results: :results:
:end: :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). (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 #+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 *** 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ń *rzadkości* danych (/data sparsity/). Przestrzeń możliwych zdarzeń
jest jeszcze większa ($|V|^2$ dla bigramów), więc estymacje stają się jest jeszcze większa ($|V|^2$ dla bigramów), więc estymacje stają się
jeszcze mniej pewne. jeszcze mniej pewne.
@ -347,7 +347,7 @@ jeszcze mniej pewne.
*** Back-off *** Back-off
Dla $n$-gramów, gdzie $n>1$, nie jesteśmy ograniczeni do wygładzania $+1$, $+k$ czy Gooda-Turinga. 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*. 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 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})$$ $$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}).$$ $$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$, 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 *** 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:
:results: :results:
:end: :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]]

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB