Fixes
This commit is contained in:
parent
0a9dc121ef
commit
09ccde4ea7
1
wyk/09_Rekurencyjny_model_jezyka.ipynb
Normal file
1
wyk/09_Rekurencyjny_model_jezyka.ipynb
Normal file
File diff suppressed because one or more lines are too long
@ -4,13 +4,13 @@
|
|||||||
|
|
||||||
Na poprzednim wykładzie rozpatrywaliśmy różne funkcje
|
Na poprzednim wykładzie rozpatrywaliśmy różne funkcje
|
||||||
$A(w_1,\dots,w_{i-1})$, dzięki którym możliwe było „skompresowanie” ciągu słów
|
$A(w_1,\dots,w_{i-1})$, dzięki którym możliwe było „skompresowanie” ciągu słów
|
||||||
(a właściwie ich zanurzeń) dowolnej długości w wektor o stałej długości.
|
(a właściwie ich zanurzeń) o dowolnej długości w wektor o stałej długości.
|
||||||
|
|
||||||
Funkcję $A$ moglibyśmy zdefiniować w inny sposób, w sposób **rekurencyjny**.
|
Funkcję $A$ moglibyśmy zdefiniować w inny sposób, w sposób **rekurencyjny**.
|
||||||
|
|
||||||
Otóż moglibyśmy zdekomponować funkcję $A$ do
|
Otóż moglibyśmy zdekomponować funkcję $A$ do
|
||||||
|
|
||||||
- pewnego stanu początkowego $\vec{s^0} \in \mathcal{R}^p$,
|
- pewnego stanu początkowego $\vec{s_0} \in \mathcal{R}^p$,
|
||||||
- pewnej funkcji rekurencyjnej $R : \mathcal{R}^p \times \mathcal{R}^m \rightarrow \mathcal{R}^p$.
|
- pewnej funkcji rekurencyjnej $R : \mathcal{R}^p \times \mathcal{R}^m \rightarrow \mathcal{R}^p$.
|
||||||
|
|
||||||
Wówczas funkcję $A$ można będzie zdefiniować rekurencyjnie jako:
|
Wówczas funkcję $A$ można będzie zdefiniować rekurencyjnie jako:
|
||||||
@ -19,7 +19,7 @@ $$A(w_1,\dots,w_t) = R(A(w_1,\dots,w_{t-1}), E(w_t)),$$
|
|||||||
|
|
||||||
przy czym dla ciągu pustego:
|
przy czym dla ciągu pustego:
|
||||||
|
|
||||||
$$A(\epsilon) = \vec{s^0}$$
|
$$A(\epsilon) = \vec{s_0}$$
|
||||||
|
|
||||||
Przypomnijmy, że $m$ to rozmiar zanurzenia (embeddingu). Z kolei $p$ to rozmiar wektora stanu
|
Przypomnijmy, że $m$ to rozmiar zanurzenia (embeddingu). Z kolei $p$ to rozmiar wektora stanu
|
||||||
(często $p=m$, ale nie jest to konieczne).
|
(często $p=m$, ale nie jest to konieczne).
|
||||||
@ -39,12 +39,12 @@ gdzie $C$ jest wyuczalną macierzą o rozmiarze $|V| \times p$.
|
|||||||
Nietrudno zdefiniować model „worka słów” w taki rekurencyjny sposób:
|
Nietrudno zdefiniować model „worka słów” w taki rekurencyjny sposób:
|
||||||
|
|
||||||
- $p=m$,
|
- $p=m$,
|
||||||
- $\vec{s^0} = [0,\dots,0]$,
|
- $\vec{s_0} = [0,\dots,0]$,
|
||||||
- $R(\vec{s}, \vec{x}) = \vec{s} + \vec{x}.$
|
- $R(\vec{s}, \vec{x}) = \vec{s} + \vec{x}.$
|
||||||
|
|
||||||
Dodawanie (również wektorowe) jest operacją przemienną i łączną, więc
|
Dodawanie (również wektorowe) jest operacją przemienną i łączną, więc
|
||||||
to rekurencyjne spojrzenie niewiele tu wnosi. Można jednak zastosować
|
to rekurencyjne spojrzenie niewiele tu wnosi. Można jednak zastosować
|
||||||
funkcję $R$, która nie jest przemienna — w ten sposób wyjdziemy poza
|
inną funkcję $R$, która nie jest przemienna — w ten sposób wyjdziemy poza
|
||||||
nieuporządkowany worek słów.
|
nieuporządkowany worek słów.
|
||||||
|
|
||||||
** Związek z programowaniem funkcyjnym
|
** Związek z programowaniem funkcyjnym
|
||||||
@ -57,7 +57,7 @@ w językach funkcyjnych:
|
|||||||
|
|
||||||
W Pythonie odpowiednik ~fold~ jest funkcja ~reduce~ z pakietu ~functools~:
|
W Pythonie odpowiednik ~fold~ jest funkcja ~reduce~ z pakietu ~functools~:
|
||||||
|
|
||||||
#+BEGIN_SRC python :session mysession :exports both :results raw drawer
|
#+BEGIN_SRC ipython :session mysession :exports both :results raw drawer
|
||||||
from functools import reduce
|
from functools import reduce
|
||||||
|
|
||||||
def product(ns):
|
def product(ns):
|
||||||
@ -83,10 +83,10 @@ przez macierz) i jakąś prostą funkcję aktywacji (na przykład sigmoidę):
|
|||||||
|
|
||||||
$$R(\vec{s}, \vec{e}) = \sigma(W[\vec{s},\vec{e}] + \vec{b}).$$
|
$$R(\vec{s}, \vec{e}) = \sigma(W[\vec{s},\vec{e}] + \vec{b}).$$
|
||||||
|
|
||||||
Dodatkowo jeszcze wprowadziliśmy wektor obciążeń $\vec{b}, a zatem wyuczalne wagi to:
|
Dodatkowo jeszcze wprowadziliśmy wektor obciążeń $\vec{b}$, a zatem wyuczalne wagi obejmują:
|
||||||
|
|
||||||
- macierz $W \in \mathcal{R}^p \times \mathcal{R}^{p+m}$,
|
- macierz $W \in \mathcal{R}^p \times \mathcal{R}^{p+m}$,
|
||||||
- wektor obciążń $b \in \mathcal{R}^p$.
|
- wektor obciążeń $b \in \mathcal{R}^p$.
|
||||||
|
|
||||||
Olbrzymią zaletą sieci rekurencyjnych jest fakt, że liczba wag nie zależy od rozmiaru wejścia!
|
Olbrzymią zaletą sieci rekurencyjnych jest fakt, że liczba wag nie zależy od rozmiaru wejścia!
|
||||||
|
|
||||||
@ -124,11 +124,11 @@ Tak więc w skrajnym przypadku:
|
|||||||
|
|
||||||
- jeśli $\Gamma_\gamma = [0,\dots,0]$, sieć całkowicie zapomina
|
- jeśli $\Gamma_\gamma = [0,\dots,0]$, sieć całkowicie zapomina
|
||||||
informację płynącą z poprzednich wyrazów,
|
informację płynącą z poprzednich wyrazów,
|
||||||
- jeśli $\Gamma_\update = [0,\dots,0]$, sieć nie bierze pod uwagę
|
- jeśli $\Gamma_u = [0,\dots,0]$, sieć nie bierze pod uwagę
|
||||||
bieżącego wyrazu.
|
bieżącego wyrazu.
|
||||||
|
|
||||||
Zauważmy, że bramki mogą selektywnie, na każdej pozycji wektora stanu,
|
Zauważmy, że bramki mogą selektywnie, na każdej pozycji wektora stanu,
|
||||||
sterować przepływem informacji. Na przykład $Gamma_\gamma =
|
sterować przepływem informacji. Na przykład $\Gamma_\gamma =
|
||||||
[0,1,\dots,1]$ oznacza, że pierwsza pozycja wektora stanu jest
|
[0,1,\dots,1]$ oznacza, że pierwsza pozycja wektora stanu jest
|
||||||
zapominana, a pozostałe — wnoszą wkład w całości.
|
zapominana, a pozostałe — wnoszą wkład w całości.
|
||||||
|
|
||||||
@ -142,7 +142,7 @@ gdzie $\bullet$ oznacza iloczyn Hadamarda (nie iloczyn skalarny!) dwóch wektor
|
|||||||
|
|
||||||
$$[x_1,\dots,x_n] \bullet [y_1,\dots,y_n] = [x_1 y_1,\dots,x_n y_n].$$
|
$$[x_1,\dots,x_n] \bullet [y_1,\dots,y_n] = [x_1 y_1,\dots,x_n y_n].$$
|
||||||
|
|
||||||
Obliczanie $$\vec{\xi_t}$$ bardzo przypomina zwykłą sieć rekurencyjną,
|
Obliczanie $\vec{\xi_t}$ bardzo przypomina zwykłą sieć rekurencyjną,
|
||||||
jedyna różnica polega na tym, że za pomocą bramki $\Gamma_\gamma$
|
jedyna różnica polega na tym, że za pomocą bramki $\Gamma_\gamma$
|
||||||
modulujemy wpływ poprzedniego stanu.
|
modulujemy wpływ poprzedniego stanu.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user