Procesory
Artykuł
Mateusz Brzostek, Poniedziałek, 13 sierpnia 2018, 15:03

Testy profesjonalne – uczenie maszynowe

Przeprowadziliśmy dwa eksperymenty z dziedziny uczenia maszynowego, oba związane z przetwarzaniem języka naturalnego. Skuteczne przetwarzanie języka naturalnego jest konieczne do zapewnienia usług, do których przyzwyczailiśmy się dopiero niedawno, choć bardzo szybko: maszynowego tłumaczenia, rozpoznawania pisma, rozpoznawania mowy, rozpoznawania znaków, skutecznych wyszukiwarek internetowych. Oba te testy są wykonywane w maszynie wirtualnej KVM-QEMU.

Modelowanie języka 

Statystyczny model języka jest rozkładem prawdopodobieństwa na sekwencje słów. Można dzięki niemu określić prawdopodobieństwo, z jakim dane słowo wystąpi po określonej sekwencji innych słów. Sposób na oszacowanie względnego prawdopodobieństwa różnych wyrażeń jest przydatny szczególnie w narzędziach, które generują tekst jako wynik. Najbardziej popularne jest podejście statystyczne oparte na n-gramach, ale jest dziś wypierane przez sieci neuronowe lub systemy hybrydowe łączące zalety statystyki i głębokiego uczenia.

Test polegał na wytrenowaniu modelu języka zgodnie z najnowszymi trendami. Jest to logarytmiczny bilinearny model wytrenowany za pomocą sieci rekurencyjnych (RNN). Więcej informacji można znaleźć w repozytorium na Githubie. Ten test potrzebuje ok. 8 GB pamięci operacyjnej (w maszynie 64-wątkowej) i przez większość czasu wykorzystuje ok. 70–90% czasu procesora.

Analiza semantyczna

Wykorzystaliśmy do tego Słowosieć (tzw. plwordnet), relacyjny słownik semantyczny, który odzwierciedla system leksykalny języka polskiego. Obecnie zawiera 191 000 rzeczowników, czasowników, przymiotników i przysłówków, 285 000 znaczeń oraz ponad 600 000 relacji. Słowosieć przechowuje i określa powiązania między słowami, takie jak:

  • hiponimia i hiperonimia, czyli zawężanie lub poszerzanie znaczenia słów: np. pies jest hiperonimem słów pudel i jamnik, a te są hiponimami pierwszego;
  • meronomia, czyli opisywanie części lub składników innego słowa: np. słowo silnik jest meronomem słowa samochód;
  • polisemia, czyli różne znaczenia słów o tym samym rodowodzie: np. język (część ciała) i język (mowa ludzka) są polisemami;
  • synonimia, antonimia i homonimia, czyli to samo znaczenie różnych słów, przeciwne znaczenie różnych słów i identyczne brzmienie słów o różnych znaczeniach;
  • konotacja, czyli konieczność występowania pewnych słów w połączeniu z innymi: np. przymiotnik wodne wymaga dodania rzeczownika chłodzenie;
  • kolokacja, czyli często używane połączenia słów, których znaczenie wynika ze znaczeń połączonych słów: np. silny wiatr;
  • idiomy, metafory, porównania, czyli inne częste połączenia słów niemające bezpośredniego związku z ich znaczeniem.

Słowosieć jest już największym wordnetem na świecie i nieustannie się rozrasta. Analiza semantyczna pozwala na przykład na dokładniejsze niedosłowne tłumaczenie pomiędzy językami (polską Słowosieć wykorzystuje m.in. tłumacz Google) albo identyfikowanie specyficznego stylu pisania danego autora.

W tym teście trenujemy sieć neuronową, która na podstawie Słowosieci nauczy się określać prawdopodobieństwo, że w pobliżu pewnego słowa wystąpi inne, powiązane słowo. Rozważaliśmy relacje takie, jak: synonim, hiperonim, hiponim, hierarchiczna odległość między słowami. Więcej informacji można znaleźć w repozytorium na Githubie. Ten test składa się z wielu etapów zajmujących dowolnie dużą liczbę wątków, przeplatanych okresami małowątkowej aktywności. W 64-wątkowym środowisku wymaga ok. 8 GB pamięci.

 

Dziękujemy dr. inż. Krzysztofowi Wołkowi za pomoc w przygotowaniu testów ML.

Spis treści
Ocena artykułu:
Ocen: 21
Zaloguj się, by móc oceniać
Artykuły spokrewnione
Facebook
Ostatnio komentowane