Sytuacja kobiet w IT w 2024 roku
25.08.20215 min
Jakub Wasilewski

Jakub WasilewskiFullstack Developer

Dlaczego w najbliższym czasie nie uda się zdać testu Turinga - rozmyślania

Dowiedz się, dlaczego w najbliższym czasie raczej nie uda się zdać Testu Turinga.

Dlaczego w najbliższym czasie nie uda się zdać testu Turinga - rozmyślania

Weryfikację człowieczeństwa sztucznej inteligencji zaproponowana przez Alana Turinga zna na pewno każdy pasjonat komputerów. Dla porządności przypomnę takim jak ja zapominalskim: maszyna, mówi Turing, pomyślnie przechodzi ww. test wtedy, gdy prowadzący z nią rozmowę człowiek nie potrafi określić, czy rozmawia z maszyną, czy też z drugim człowiekiem. Test utrzymuje się od lat jako swoisty benchmark i nie został dotychczas rozwiązany pomyślnie przez żaden program komputerowy. 

Sprawdzian ten dotyczy jedynie symulacji posługiwania się językiem naturalnym w stopniu przybliżonym do istoty ludzkiej i jest oczywiście wielce nieprecyzyjny, no bo kto np. ma być tym wielkim sędzią? Cała metodologia stoi tu pod znakiem zapytania, a więc znowu: jest nieprecyzyjna.

Podobnie zresztą logika, która sformalizuje ludzkie intuicje – te, które najczęściej kierują doborem słów w mowie potocznej. Ta natomiast, która już istnieje, i, moim zdaniem, najwierniej oddaje wnioskowania takich właśnie wczesnych stadiów wnioskowań, to głośna kilka lat temu logika rozmyta (ang. ‘fuzzy logic’) Lotfiego Zadeha, wzięta od logiki wielowartościowej Jana Łukasiewicza (warszawska szkoła logiczna). 


Uważam, że logika rozmyta jest najlepszym obecnie istniejącym narzędziem do modelowania ludzkiego toku myślenia, jako że wartości logiczne (Prawda lub Fałsz znane z klasycznej logiki) przypisuje zdaniom wartości ze zbioru [0, 1], a zatem posiada ich nieskończenie wiele.

“Wczoraj w Warszawie padał deszcz.” jest zdaniem prawdziwym (w dniu, w którym to piszę) - wiemy to na pewno, czyli jego wartość logiczna to 1 (Prawda). Co natomiast ze zdaniem “Jutro w Warszawie będzie padał deszcz.”? Już Arystoteles wiedział, że wartość logiczna takiego zdania jest (dziś) nieokreślona (trzecia wartość logiczna logiki Łukasiewicza). Dzisiaj jednak mamy nieco więcej pewności (narzędzi), niż miał Arystoteles, zatem możemy powiedzieć np., że deszcz będzie padał na 70%, zatem ostatnie zdanie przyjmie wartość logiczną, w logice rozmytej tym razem, 0.7. 

Pretendentami do inkorporacji tej lub lepszej logiki dla celów nauki prowadzenia przez komputery gry imitacyjnej (termin używany przez Turinga, ukuty przez Ludwika Wittgensteina) są tzw. chatboty. Najbardziej chyba zaawansowane prace nad nimi prowadzą obecnie Microsoft i Google.

Obaj giganci do nauki swoich chatbotów używają Machine Learningu, zatem nic dziwnego (statystycznie), że głośno było w ostatnich latach o tychże, które po chamsku obrażają rozmówców (o ile słusznym jest nazwanie chamem maszyny, która po prostu symuluje zrozumienie języka). 

Przyjęty zgodnie kierunek tworzenia logiki dialogu chatbotów, który wskazuje na Machine Learning dla natural language processing, prowadzi moim zdaniem w dobrą stronę, ale dlaczego nie spojrzeć dalej w tym samym kierunku - na samą logikę po prostu? No bo czemu używamy nadal logiki klasycznej sprzed ponad 2300 lat, skoro wszystkie inne narzędzia ulepszamy sobie co chwilę? Najpewniej dlatego, że jest taka prosta. Nic jednak nie stoi na przeszkodzie, żeby logikę rozmytą nauczyć używać się w sposób prosty lub, lepiej, wymyślić jeszcze prostszą logikę pozwalającą na modelowanie ludzkiej niepewności. 

Pewnym jest, że naszym pretendentom potrzebny będzie silnik analizujący tekst, np. przy użyciu regexa. Maszynę trzeba nauczyć wypowiadania się, tak samo jak dziecko, a więc rzeczony Machine Learning jest nieunikniony. Moja propozycja to zmiana logiki dialogu (lub nie tylko), np. na jakąś logikę wielowartościową, parakonsystentną, czy inną po prostu bardziej zaawansowaną.

Żeby sobie z tym wszystkim poradzić, potrzebnych będzie wiele zasobów (RAM-u, inteligencji lub po prostu czasu), ale wierzę, że jeśli sędzia nie będzie zbyt surowy, logikę, która pozwoli zdać test Turinga, wymyślimy w przyszłości bardzo już niedalekiej. A więc prosto: czynniki równania opisującego chatbota mającego zdać test Turinga są następujące. Regex, Machine Learning, nowa logika, zasoby.

Opiszę nasze komponenty po kolei, czyli zacznę od logiki. Wszystko jedno, którą z nich wybierzemy; istotne jest, by modelowanie przy jej pomocy przybliżało maszynowe wnioskowanie do ludzkiego zajmowania stanowisk. Dla przykładu ja będę tutaj pisać o wspomnianej logice rozmytej, która dobrze nadaje się do modelowania niepewności. 

Skoro jej wartości logiczne mogą oscylować pomiędzy Prawdą i Fałszem, bez kłopotów precyzyjnie (a więc zrozumiale dla maszyny) powiemy w niej następujące zdania (oraz odpowiadające im wartości logiczne). “Raczej nie.” - 0.3, “Chyba nie” - 0.4, “Nie wiem” - 0.5, “Chyba tak” - 0.6, “Raczej tak” - 0.7, “Tak” - 0.8, “Na pewno tak” - 0.9. Tak naprawdę w logice rozmytej mówi się nie o wartościach logicznych, a o stopniach przynależności elementu do zbioru (rozmytego), ale dla jasności nie wdaje się w tym tekście w ogóle w szczegóły techniczne. 

Napisany wyżej koncepcyjny schemat budowy zdań przy uwzględnieniu stopni pewności co do ich użycia wydaje się pasować dobrze do syntetycznej konstrukcji przesłanek dla maszynowej budowy swoich odpowiedzi - takie zdanie pewnie nie zdałoby testu Turinga, właśnie dlatego istotnym jest, kto będzie naszym wielkim sędzią. A zatem mówiąc mniej po polsku, co następuje. Mam na myśli następny w kolejce Machine Learning, przy którego użyciu uczylibyśmy nasze chatboty na podstawie (w idealnym świecie) nieskończonej liczby ludzkich dialogów. “Uczenie” mogłoby polegać na konstruowaniu indukcyjnie reguł wypowiadania się naszego robota. 

Ostatnim krokiem w naszej budowie celującego chatbota jest żelazne (czyli odpowiednie dla maszyny) doprecyzowanie logiki dialogowania, zatem opowiedzenie tych wszystkich powstałych (lub lepiej – powstających nieustannie) reguł. O programowaniu nie będę tu pisał, bo to technikalia. Wspomnę tylko o niezbędnej analizie tekstu wypowiedzi interlokutora naszego chatbota (np. przy użyciu wspomnianego, niekoniecznie w obecnej formie, regexa). Chatbot, mając dowolnie dokładnie zanalizowaną wypowiedź rozmówcy, wystarczy, że zastosuje dedukcje po przesłankach (regułach), żeby potrafić odpowiedzieć w sposób faktycznie bardziej rozmyty. 

Zwiększenie dokładności modelu, czyli przybliżenie logiki dialogu do tej znanej z rzeczywistości (która, jak mawiał Dostojewski, dąży do różnolitości), będzie wymagać dużych nakładów (wspomniane RAM i inteligencja), ale przecież oczywiście, że tych nigdy za dużo. 

Użycie logiki rozmytej (w dowolnym miejscu procesu), mnoży potrzebne nakłady nieskończoność-krotnie (teoretycznie). Dla przykładu, jeśli porównamy wypowiedzi modelowane w logice klasycznej i rozmytej w sposób, jaki następuje, “Nie.” - 0, “Tak.” - 1 (dwie wartości logiczne) oraz …, “Raczej nie” - 0.3, …, “Chyba tak.” - 0.6, …(dziesięć, powiedzmy, wartości logicznych), to otrzymamy stosunek liczby możliwych wartości 10/2, zatem pięciokrotnie większa złożoność obliczeniowa. 

Wzrost stosunku potrzebnych zasobów od złożoności jest tu (chwała prostocie!) wprost proporcjonalny (do rozmycia dokładności), a nie żaden np. wykładniczy, czy inny diabelski… Zatem łatwo policzyć rozmytość, na którą możemy sobie pozwolić. Teraz w moim scenariuszu jedynym, co odróżnia maszynę od człowieka, jest ilość dostępnego RAM-u lub inteligencji, które w sposób cywilizacyjnie naturalny są w nieprzerywalnej inkrementacji. 

<p>Loading...</p>