Język – najbardziej naturalne API

Przemysław Stochel | Go to Cloud | 02.10.2019

W ostatnim czasie sztuczna inteligencja zyskuje coraz większą popularność, a technologie oparte na jej rozwiązaniach pomagają wspierać wiele procesów biznesowych. Technologie AI wykorzystują najbardziej naturalną dla nas metodę komunikacji, czyli język naturalny. W dzisiejszym artykule chciałbym spojrzeć na język tak, jak patrzy się na interfejs. Co łączy, a co różni interfejs programowania i język naturalny, którym posługujemy się na co dzień?

Sztuczna inteligencja

Mój promotor i jednocześnie jeden z największych specjalistów w zakresie sztucznej inteligencji – prof. Ryszard Tadeusiewicz – opisuje sztuczną inteligencję jako archipelag składający się z wielu wysp. Dlaczego właśnie tak? Cytując: „Wynika to z faktu, że struktura sztucznej inteligencji jako działu informatyki przypomina luźną strukturę archipelagu, bo poszczególne metody i techniki nie łączą się w całość, nie tworzą zwartej metodologii czy technologii, tylko rozwiązują różne problemy, wychodząc często z zupełnie różnych założeń i korzystając z całkowicie odmiennych środków. Łączy je podobieństwo ogólnego celu – zastępowania ludzkiego intelektu pracą mądrej maszyny”.

Czytaj także: AI, machine learning i data science – czym są i co dalej?

Czy jednak maszyna jest w stanie w pełni zastąpić intelekt człowieka w kontekście języka naturalnego? Komputer może tekst zapisać, odtworzyć, przekształcić – jednak nie potrafi go zrozumieć. Wyjątkiem jest język maszynowy, ale ten nas, jako społeczeństwa, nie interesuje. Interesujący jest dla nas język naturalny, czyli język, którym posługujemy się w komunikacji. Terminu tego używa się, aby odróżnić język ten od języków formalnych, na przykład języków programowania. Dla nas, ludzi, znaczenie tekstu jest najważniejsze. Narzędziem do osiągania wymienionych wyżej celów są metody sztucznej inteligencji określane zwykle jako NLP (j. ang. Natural Language Processing, czyli przetwarzanie języka naturalnego).

Sztuczna inteligencja posadowiona jest na dwóch filarach: metodach ścisłych – symbolicznych i metodach intuicyjnych, opartych na zjawiskach występujących w naturze, jak sieci neuronowe i algorytmy genetyczne. Ten drugi temat zainteresował mnie już jako studenta automatyki i robotyki ponad 20 lat temu. Co kryje się za magią sztucznej inteligencji? Przyjrzyjmy się bliżej jednym i drugim metodom wykorzystywanym przez sztuczną inteligencję.

Metody symboliczne

Typowy komputer potrafi wykonać działanie A + B, ale jeżeli zadamy pytanie: „Ile trzeba dodać do A, żeby otrzymać B”, nie potrafi odpowiedzieć. Natomiast komputer wyposażony w program pozwalający na wykonywanie obliczeń symbolicznych poda rozwiązanie: „B ­- A”. Proste? Dla nas tak.

Dzisiejsze systemy rozpoznawania mowy bazują najczęściej na podejściu statystycznym i na wielkich bazach danych z gotowymi przykładami. Podejście statystyczne stosuje między innymi znany nam wszystkim tłumacz Google. Gdy wpiszemy w jego okienku pytanie w języku polskim: „Jak działa sztuczna inteligencja?”, Google przetłumaczy je na język angielski: „How does artificial intelligence work”. Czy jednak maszyna rozumie treść pytania i zna na nie odpowiedź?

Nawet bardzo sprawne automatyczne tłumaczenie tekstów z jednego języka na drugi nie oznacza, że komputer rozumie treść tłumaczonych dokumentów. On po prostu zamienia jedne napisy w jednym języku na drugie w innym języku, posługując się metodami przekształceń symbolicznych.

Metody algorytmiczne

Na podobnej zasadzie (stosowania algorytmicznych reguł zamieniających jedne napisy na inne) działają programy prowadzące z ludźmi dialogi na różne tematy, czyli popularne chatboty. Te są coraz chętniej wykorzystywane np. w procesie automatyzacji obsługi klienta. Z chatbotem w zależności od firmy, która używa tego rozwiązania, można porozmawiać na temat spłaty kredytu, kupna samochodu czy ubezpieczenia. Istnieją nawet boty pełniące funkcję wirtualnego asystenta service desk, a nawet… psychologa.

Przetestowałem osobiście kilka i wierzcie mi: gdy przejdziemy na wyższy poziom konwersacji, na przykład zadając skomplikowane pytanie niezwiązane z kontekstem, boty najzwyczajniej sobie nie radzą. Są co prawda chatboty, które przeszły test Turinga. W trakcie takiego testu osoby zwane sędziami prowadzą konwersację ze stronami: ludźmi i maszyną. Następnie oceniają, która ze stron była ich zdaniem człowiekiem, a która botem.

Gdy wymagana jest większa uniwersalność, sprawdza się sztuczna inteligencja oparta na sieciach neuronowych (odwzorowują one sposób pracy ludzkiego mózgu), algorytmach genetycznych (przypominają zjawisko ewolucji genetycznej) czy systemach bazujących na logice rozmytej, gdzie wartości mogą przynależeć do wielu tzw. zbiorów rozmytych jednocześnie. Temat jest bardzo obszerny i z powodzeniem można by napisać kilka artykułów na ten temat. Dziś chciałbym jednak skupić się na języku naturalnym i klasycznych metodach sztucznej inteligencji – jedną z nich jest rozumienie języka naturalnego.

Rozumienie języka naturalnego

Najstarsze znane ludzkości techniki umożliwiały wyłącznie zapis języka pisanego – i tak było przez tysiąclecia. Obecnie, chociaż jesteśmy w stanie przetwarzać dźwięk, wideo, animacje, nadal to tekst pisany jest najbardziej powszechny.

Teksty przechowujemy w chmurze, wyszukujemy za pomocą rozbudowanych algorytmów, ale to nadal nie sprawia, że maszyna jest w stanie rozumieć przechowywany tekst. Działanie komputera kończy się bowiem zwykle na poziomie formy tekstu, a nie sięga do jego znaczenia.

Człowiek, adresując przekaz, przyjmuje pewne założenia co do wiedzy człowieka, do którego ten przekaz jest kierowany. Jeżeli zrobi to poprawnie (celowo nie używam słowa „dobrze”), przekaz zostanie zrozumiany nawet wtedy, gdy będzie niepełny, a czasami nawet – niepoprawny.

Aby komputer zaczął zachowywać się w komunikacji tak jak człowiek, musi nie tylko automatycznie rozumować, lecz także być wyposażony w wiedzę. Tu z pomocą przychodzi ontologia. Ontologia w informatyce jest formalną specyfikacją znaczeń słów i fraz występujących w tekstach oraz związków pomiędzy tymi słowami czy frazami. Dla człowieka rozumienie tekstu bez względu na szyk wyrazów jest naturalne, sztuczną inteligencję musimy wyposażyć w tę umiejętność. Dopiero wówczas program będzie w stanie zrozumieć, że zarówno zdanie „Użytkownik napisał tekst”, jak i „Tekst został napisany przez użytkownika” – jedno w stronie czynnej, drugie w stronie biernej – oznaczają to samo.

Język naturalny jako API – wyzwania technologiczne

API, czyli z j. ang. Application Programming Interface, to konkretny zestaw reguł określający sposób komunikowania się maszyn między sobą. API sprawia, że konkretna aplikacja jest w stanie komunikować się z systemem i możliwe jest wykorzystywanie jej funkcjonalności przez inną aplikację. W jaki sposób można odnieść tę definicję do języka naturalnego i jakie są najważniejsze wyzwania stojące przed technologią w kontekście komunikacji i rozpoznawania mowy? Spróbujmy spojrzeć na język jak na interfejs programowania, sprawdzając, jakie są podobieństwa i różnice obu „interfejsów”.

Już dwuletnie dziecko potrafi wypowiadać zdania – dziewczynki nawet wcześniej. Nie jest to jednak najwcześniejszy interfejs, bo wymaga nauki – nikt z nas w chwili narodzin nie zna języka i nie posługuje się nim od samego początku. Język to jednak API bardzo szerokie w przekazie, gdyż nie tylko słowa, ale również sposób ich wypowiadania są nośnikiem informacji. Wiedzę na temat języków programowania także przyswajamy. Język naturalny ma tę przewagę, że istotny jest także sposób przekazu, ton głosu, towarzysząca mu gestykulacja, mimika. To istotne wyzwanie stojące przed technologią. Jak transmitować emocje, gestykulację i mimikę za pomocą źródeł przekazu?

Inną istotną kwestią jest zagadnienie szumów komunikacyjnych, czyli wszystkiego, co przeszkadza nam w skutecznej komunikacji (dźwięki, zakłócenia itp.). Szum otoczenia ogranicza rozpoznawanie mowy, ale za to nie jest wrażliwy na inne zakłócenia, np. na natężenia oświetlenia. Obecne media pozwalają co prawda na transfer głosu na duże odległości bez zakłóceń. Pozostają jednak wciąż takie zagadnienia jak rozpoznawanie emocji, które sprawiają, że mówimy ciszej lub głośniej (w naturalny sposób w przypadku strachu, stresu, wzywania pomocy). Głos ma tę przewagę nad obrazem, że może być nakierowany lub nie (np. gdy wzywamy pomocy). Dodatkowo komunikacja jako proces nie wymaga użycia dodatkowych urządzeń, klawiatury. Język jako interfejs nie wymaga użycia rąk. Czyż nie jest to wygodne i naturalne? Patrząc na to w ten sposób, dostrzegamy, że klawiatura komputera to konieczność, a nie przyjemność. Jak to działa w drugą stronę? Komunikacja w drugą stronę jest coraz częściej spotykana, jak na przykład informacje dla niewidomych, GPS, zapowiedzi na dworcach. Spotykamy tu dwa rozwiązania: syntezatory mowy i nagrania lektorów.

Ogólny schemat rozpoznawania mowy

Na koniec przyjrzyjmy się metodom rozpoznawania mowy krok po kroku:

  • Rejestracja „surowego” sygnału mowy. Do tego wystarczy najprostszy mikrofon.
  • Przetwarzanie wstępne:
    • Usunięcie zakłóceń – czyli szumów, odgłosów otoczenia. Tu znamy wiele rozwiązań sprzętowych i programowych. Pamiętam, jak się cieszyłem, gdy kupiłem pierwszy zestaw stereo z systemem Dolby. Dziś mamy dostęp do sprzętu dużo bardziej zaawansowanego.
    • Wzmocnienie składowych częstotliwości (głównie wysokich), które mają niską energię, a w istotny sposób wpływają na odbiór.
    • Segmentacja – to znaczy podział na odcinki odpowiadające poszczególnym głoskom, a dokładniej tak zwanym fonemom.
  • Wydobywanie cech wyróżniających. O co chodzi? Za Wikipedią: „Cecha fonologiczna relewantna (inaczej cecha odróżniająca, dystynktywna, kontrastywna lub istotna) – właściwość fonemu, której zmiana powoduje zmianę znaczenia wyrazów, w których ów fonem został użyty. W języku polskim cechą odróżniającą jest np. dźwięczność, por.: /pas/ pas vs. /bas/ bas”.
  • Ostatni etap to rozpoznawanie wypowiedzi, które bazuje ma modelu języka. Porównujemy wcześnie wyekstrahowane cechy z tymi z modelu. I tu jest pies pogrzebany. Dla języka angielskiego stworzono ich wiele, jak na przykład wspomnianą wcześniej bazę Google, a dla języka polskiego – nie ma jeszcze ani jednego pełnego.

Podsumowanie

Rozpoznawanie i przetwarzanie języka naturalnego jest istotne w kontekście wdrażania najnowszych technologii, dzięki czemu przedsiębiorstwa mogą usprawniać obsługę klienta i automatyzować wiele procesów, np. wykorzystując nagrania IVR. Temat sztucznej inteligencji i języka to kwestia, której przyglądamy się z coraz większym zaciekawieniem. Najbardziej naturalny interfejs, jakim jest ludzki język, okazuje się nieoceniony w kontekście rozwoju technologii AI i efektywnego wykorzystania jej nie tylko w biznesie, ale też w życiu codziennym. Automaty nie zastąpią nas jednak prędko, gdyż wciąż jest wiele aspektów, w których ludzki intelekt jest niedościgniony, jak empatia, umiejętność rozumienia kontekstu czy intuicja. Ten sam intelekt jest jednak kluczem do budowania coraz bardziej zaawansowanych maszyn i aplikacji, które z pewnością zmienią naszą przyszłość.