Sieci neuronowe są obecnie metodą dającą najlepsze efekty w przetwarzaniu języka naturalnego. Uczą się na podstawie napływających danych, tak jak człowiek na podstawie książek i rozmów.
Sztuczne sieci neuronowe w NLP
Czym się różni sztuczna sieć neuronowa od ludzkiej?
Sztuczne sieci neuronowe powstały na wzór ludzkiego mózgu. Przetwarzają dane, takie jak dźwięk czy obraz, podobnie jak człowiek odbiera je za pomocą zmysłów. Ale czy działają tak samo?
Ludzki mózg to sieć neuronów przesyłających sobie sygnały. Każdy neuron może zdecydować, czy „przekazać wiadomość” dalej, w zależności od stopnia pobudzenia. Jeśli jest pobudzony – wysyła impuls; jeśli nie – pozostaje bierny.
Sztuczne neurony działają podobnie, ale zamiast impulsów przesyłają liczby. Każdy sygnał wejściowy ma wartość liczbową, a neuron wykonuje na tych wartościach obliczenia. Wynik decyduje, czy neuron „uaktywni się” i przekaże sygnał dalej.
Na przykład model językowy, który ma za zadanie przewidzieć kolejne słowo w zdaniu, zamienia tekst na ciąg liczb (wektor). Sieć neuronowa analizuje te liczby i zwraca prawdopodobieństwa pojawienia się kolejnych słów (w postaci zestawu liczb z przedziału od 0 do 1). Na tej podstawie wybierana jest najbardziej prawdopodobna kontynuacja wypowiedzi.
Sieci neuronowe wykorzystywane są nie tylko w przetwarzaniu języka, ale też w rozpoznawaniu obrazów, sterowaniu robotami, prognozach finansowych czy systemach rekomendacyjnych. Wszystkie mają wspólną cechę: strukturę warstwową.
Polega ona na tym, że na sieć składają się warstwy neuronów:
Warstwa wejściowa (input layer) – reprezentuje dane wejściowe w postaci numerycznej
Warstwy ukryte (hidden layers) – wykonują obliczenia,
Warstwa wyjściowa (output layer) – generuje dane wyjściowe.
Sygnały przepływają przez sieć, warstwa po warstwie, z warstwy wejściowej do wyjściowej.
https://stanford.edu/~shervine/teaching/cs-229/cheatsheet-deep-learning
Uporządkowanie neuronów w warstwy ułatwia obliczenia, ale odróżnia sztuczną sieć neuronową od jej naturalnego odpowiednika, w której neurony rozmieszczone są chaotycznie.
Co się dzieje w sztucznym neuronie?
https://miroslawmamczur.pl/czym-jest-i-jak-sie-uczy-sztuczna-siec-neuronowa/
W neuronie wartości sygnałów wejściowych (oznaczone na rysunku jako x1, x2, … , xn) mnożone są przez wagi (oznaczone jako w1, w2,…, wn), a iloczyny są ze sobą dodawane (do wyniku dodawana jest wartość b, która nie jest mnożona przez wartość sygnału wejściowego). Wynik rachunków poddawany jest funkcji aktywacji, która decyduje o ostatecznej wartości wysyłanego sygnału. W najprostszym przypadku może to być funkcja progowa (1 dla wartości dodatnich, 0 dla wartości niedodatnich), która przypomina działanie ludzkiego neuronu: „wysyłam sygnał lub nie”.
W różnych zastosowaniach aplikowane są różne funkcje aktywacji, a jedną z bardziej popularnych jest funkcja sigmoidalna, która łagodnie rozciąga wartości sygnału wyjściowego na całą skalę między 0 a 1.:
W sieci neuronowej wartość sygnału obliczona przez funkcję aktywacji przesyłana jest do neuronów kolejnej warstwy, gdzie wykonywane są podobne obliczenia – aż do warstwy wyjściowej.
Na czym polega uczenie sieci neuronowej?
Sieć neuronowa uczy się na podstawie przykładów. Każdy przykład składa się z:
- danych wejściowych (np. obraz przedstawiony jako ciąg liczb odpowiadających pikselom),
- danych wyjściowych (np. etykiety określającej, co znajduje się na obrazie – pies, kot, samochód itd.).
Podczas uczenia sieć stara się tak dostosować wagi, aby jej odpowiedzi jak najlepiej pasowały do oczekiwanych wyników. Po każdym przykładzie wagi są nieco zmieniane, tak aby zminimalizować różnicę między odpowiedzią sieci a prawidłową odpowiedzią.
Obliczenia wag odbywają się z wykorzystaniem metody spadku gradientu (patrz: „Regresja”), a różnicą między siecią neuronową a metodą regresji jest to, że w sieci algorytm ten stosowany jest wielokrotnie: dla wszystkich neuronów i wszystkich warstw.
Zastosowanie sieci w zadaniu klasyfikacji
Sieci neuronowe często stosowane są w zadaniu klasyfikacji. W rozpoznawaniu obrazów sieć neuronowa może otrzymać zadanie określenia nazwy owocu znajdującego się na zdjęciu, a w analizie tekstów zadaniem sieci zadanie może polegać na określeniu, czy jest on pozytywny, negatywny, czy neutralny.
W takich sytuacjach w warstwie wyjściowej sieci definiuje się tyle neuronów, ile klas, a ponadto dodaje się przed nią dodatkową warstwę softmax o tej samej liczbie neuronów. Celem jest zamiana wartości wyjściowych na odpowiadające im wartości prawdopodobieństw, które powinny zawierać się w przedziale od 0 do 1 i sumować się do jedynki.
opracowano w opraciu o: https://developers.google.com/machine-learning/crash-course/neural-networks/multi-class?hl=pl
Dzięki zastosowaniu funkcji softmax, dostajemy informację, że na powyższym zdjęciu z prawdopodobieństwem 0,63 znajduje się gruszka. Bez zastosowania tej dodatkowej warstwy wiedzielibyśmy, że sieć rozpoznaje gruszkę z wartością 1,3, której nie potrafilibyśmy zinterpretować.
Sieci neuronowe stosowane w NLP
Wyobraźmy sobie, że sieć neuronowa ma przyporządkować tekst do jednej z dziedzin, np. medycyna, sport, technologia. Do sieci trafiają numeryczne reprezentacje wyrazów, a na wyjściu – dzięki warstwie softmax – otrzymujemy rozkład prawdopodobieństwa dziedziny tekstu. W takim zadaniu kolejność wyrazów nie ma większego znaczenia – sieć „wyłapuje” charakterystyczne słowa i na ich podstawie podejmuje decyzję.
Jednak w wielu zadaniach językowych szyk wyrazów jest kluczowy. Przykład:
Ten film był nie dobry, ale nawet znakomity.
Ale ten „znakomity” film nie był nawet dobry.
Choć oba zdania zawierają te same wyrazy, wyrażają odwrotne opinie. Dlatego w takich zadaniach stosuje się rekurencyjne sieci neuronowe (RNN), które analizują tekst krok po kroku – wyraz po wyrazie – zachowując kolejność ich występowania.
https://stanford.edu/~shervine/teaching/cs-230/cheatsheet-recurrent-neural-networks
Zauważmy, że każdy kolejny (niebieski) neuron analizuję informację, która pochodzi od kolejnego wyrazu (x<1>, …<xT>) oraz od przetworzonego ciągu poprzedzających wyrazów. Podobnie działa mózg ludzki, który słysząc nowy wyraz przetwarza go w oparciu o kontekst dotychczasowej konwersacji.
Podsumowanie
Sieci neuronowe są obecnie metodą dającą najlepsze efekty w przetwarzaniu języka naturalnego. Uczą się na podstawie napływających danych, tak jak człowiek na podstawie książek i rozmów.
Wielkie modele języka, stosujące sieci neuronowe, nie potrafią rozumieć tekstów tak głęboko jak człowiek. Mają jednak nad nami jedną, zdecydowaną przewagę: przeczytały dużo, dużo więcej niż ktokolwiek z nas.