W ostatnich latach, AI rozwinęła się w bezprecedensowym stopniu, zaznaczając swoją obecność w dziedzinach do tej pory zarezerwowanych dla ludzkiego umysłu. Dziś sztuczna inteligencja może być nawet i poetką, imitując ludzką kreatywność w zaskakująco skuteczny sposób – choć czasem i nieco dziwaczny czy nawet niepokojący.
Przykładem może być tutaj „empatyczny” system Microsoft oparty na sztucznej inteligencji – Xiaoice – który stworzył już miliony wierszy na bazie obrazków dostarczonych przez użytkowników. Z kolei stworzony przez Deep AI Deep–speare był na ustach wszystkich, gdy okazało się, że nauczył się samodzielnie pisać szekspirowskie frazy. Również sam GPT-3, najbardziej rozwinięty model NLP wszechczasów, porwał się na tworzenie kilku wierszy.
Sztuczna inteligencja potrafi pisać skomplikowane teksty, ale czy jest w stanie stworzyć coś, co porusza czytelników? Postanowiliśmy to sprawdzić, wykorzystując GPT–2 na korpusie poezji w języku polskim. Zanim jednak pochylimy się nad rezultatami tego eksperymentu, podsumujmy krótko, dlaczego w zasadzie testujemy potencjał sztucznej inteligencji w tak kreatywnych dziedzinach.
NLP, czyli naturalne przetwarzanie języka (Natural Language Processing) to dziedzina sztucznej inteligencji, która umożliwia komputerom przetwarzanie języków naturalnych (używanych przez ludzi) w formie tekstu lub treści głosowych celem zrozumienia ich całościowego znaczenia. Mowa tutaj również o intencji autora komunikatu oraz jego nacechowania emocjonalnego.
NLP łączy lingwistykę obliczeniową ze statystyką i uczeniem maszynowym, w tym uczeniem głębokim (deep learning). Połączenie tych podejść umożliwia komputerom tłumaczenie tekstu z jednego języka na drugi, odpowiadanie na pisane polecenia czy szybkie podsumowywanie dużych objętościowo tekstów, nawet w czasie rzeczywistym.
Istnieje duża szansa, że zdarzyło ci się już wejść w interakcje z NLP poprzez sterowane głosowo systemy GPS, czy też za pośrednictwem asystentów głosowych, czatbotów oraz innych produktów wspierających konsumentów. Technologia ta często wykorzystywana jest również w rozwiązaniach firmowych, które mają za zadanie usprawniać procesy biznesowe i zwiększać efektywność pracowników.
Jedną z najważniejszych zalet technologii jest fakt, że umożliwia ona firmom łatwą automatyzację zadań, które uwzględniają zadawanie wszelkich pytań, czy to ze strony klientów, czy też użytkowników bądź pracowników. Mogą oni zadawać je za pośrednictwem interfejsu modelowi NLP, który dzięki odpowiedniemu treningowi jest w stanie na nie odpowiadać w imieniu zespołu. Przejmuje w ten sposób część obowiązków zespołu obsługi klienta, który może skupić się na bardziej wymagających zadaniach, dostarczając tym samym większą wartość klientom.
Asystenci głosowi, jak na przykład stworzona przez Apple Siri czy Alexa od Amazona, wykorzystują technologie rozpoznawania głosu i generowania naturalnego języka do przetwarzania poleceń głosowych i pisanych. Chatboty zachowują się w podobny sposób, jednak odpowiadają wyłącznie na komunikaty pisane. Te bardziej zaawansowane wykorzystują również wiedzę zawartą w danych kontekstowych, aby z czasem dostarczać coraz trafniejsze odpowiedzi na zadane pytania, czy wystosowane polecenia.
Z pewnością zdarzyło ci się już używać Tłumacza Google. Czy wiesz, że bazuje on właśnie na technologii NLP? Aby tłumaczyć skutecznie, nie wystarczy oczywiście po prostu zastąpić słowa w danym języku słowami w innym języku. Narzędzia do tłumaczenia muszą być zdolne do wychwycenia znaczenia i tonu wprowadzonego komunikatu. W ostatnich latach byliśmy świadkami ich dynamicznego rozwoju, co przełożyło się na znaczącą poprawę dokładności tłumaczeń.
NLP jest bardzo chętnie wykorzystywany na potrzeby wykrywania spamu i pishingu. Wiele firm filtruje niechciane maile za pośrednictwem narzędzi NLP, które skanują tekst maile poszukiwaniu konkretnych schematów, jak na przykład nadmierne wykorzystanie finansowych pojęć lub też charakterystyczne błędy gramatyczne. Pretekstem do odfiltrowania maila może być również język zawierający znamiona gróźb, niewłaściwie zapisane nazwy firm czy naglący ton tekstu.
Ten rodzaj narzędzia analizuje język w postach na social media, w odpowiedziach na komentarze czy recenzjach, aby zidentyfikować postawy klientów wobec usług produktów, wydarzeń, lub akcji promocyjnych oraz uczucia, jakie one wzbudzają. Firmy korzystają z tych informacji, projektując swoje produkty oraz kampanie marketingowe.
Naturalne przetwarzanie języka może pomóc w wyciągnięciu esencji z dużych transz tekstu, tworząc podsumowania dla indeksów, naukowych baz danych, czy po prostu czytelników, którzy nie mają czasu, by zapoznać się z pełnym tekstem. Najlepsze narzędzia z tej niszy wykorzystują semantyczne wnioskowanie oraz generowanie naturalnego języka (NLG), aby dostarczać podsumowania wzbogacone kontekstem oraz wnioskami.
GPT-3 to następca GPT–2. Zacznijmy więc od tego drugiego, aby w pełni prześledzić jego rozwój.
W lutym 2019 roku, Open AI wprowadziło na rynek GPT–2, duży model językowy o 1.5 miliarda parametrów, którego trening uwzględniał ponad 8 milionów stron internetowych.
GPT–2 może generować próbki tekstu bezprecedensowej jakości. Zamiast wykorzystywać dane z konkretnej domeny (jak Wikipedia czy artykuły newsowe), model nauczył się generować tekst niezależnie.
Następnie przyszedł czas na GPT-3. Wdrożony w 2020 roku, jest on, podobnie jak jego poprzednik, autoregresyjnym modelem językowym, jednak liczba jego parametrów wynosi 175 miliardów. Generowany tekst ma tak wysoką jakość, że czytelnicy często nie są w stanie odróżnić go od tego pisanego ludzką ręką.
Od momentu jego powstania w 2020 roku, GPT-3 został wykorzystany już w ponad 300 aplikacjach do wygenerowania 4.5 milionów słów dziennie.
Aby sprawdzić wydajność modelu GPT–2, postanowiliśmy, jako projekt poboczny, wytrenować go na korpusie składającym się z polskich wierszy.
Stworzyć projekt oparty na GPT–2, który mógłby generować wiersze w języku polskim.
Na potrzeby treningu wykorzystaliśmy Google Colab, a naszym materiałem bazowym tym procesie były wiersze pobrane z portalu www.poezja.org z wykorzystaniem metod web scraping. Jako model bazowy wykorzystaliśmy PapuGaPT2 dostępny na HuggingFaceHub.
Aby móc generować wiersze w różnych stylach, konieczne było wytrenowanie osobnych modeli dla konkretnych stylów. Osobny był model dla Młodej Polski i dwudziestolecia międzywojennego. Wybraliśmy te okresy z uwagi na specyficzną naturę tworzonych w nich tekstów (na przykład przejrzyste rymy).
Wytrenowaliśmy też modele dla innych okresów – na przykład dla poezji romantycznej. W fazie przedtreningowej, nie dostarczyliśmy modelowi treści pochodzących z XVI wieku, a gdy zaczęliśmy uczyć go tekstów renesansowych, został wystawiony na kontakt z nowymi słowami. Kiedy poprosiliśmy model o stworzenie wierszy w stylu romantycznym, generował on słowa, które w ogóle nie istniały – jak na przykład nieistniejące archaizmy bazujące na prawdziwych słowach.
Wiersze podzieliliśmy na zwrotki. Alternatywą był podział na wersy, jednak wytrenowany w ten sposób model niekoniecznie generował semantycznie spójny tekst.
Każda zwrotka została poddana tokenizacji (innymi słowy, przekonwertowana na formę numeryczną) z wykorzystaniem algorytmu do analizy leksykalnej (tokenizer), który poprzednio nauczyliśmy odzwierciedlać znaki języka polskiego. Maksymalna długość sekwencji ze zwrotek wynosiła 512 tokenów (ograniczenie to wynikało z architektury modelu). Dodaliśmy tokeny (ang. beginning-of-sentence, początek zdania) i (end-of-sentence, koniec zdania) do każdej sekwencji, aby zasygnalizować te elementy naszemu modelowi.
Przygotowane w ten sposób dane wejściowe zostały wykorzystane w procesie douczania (ang. fine-tuning) modelu GPT2.
Stworzyliśmy aplikację do generowania wierszy z wykorzystaniem wytrenowanych modeli. Tutaj zobaczysz, w jaki sposób działa: https://dev.4soft.art
Przeprowadziwszy kilka testów, zauważyliśmy, że ChatGPT ma tendencję do tworzenia podobnych tekstów za każdym razem. Oto przykład wygenerowanych wierszy w stylu Nowej Polski i okresu międzywojnia.
Porównaj teraz powyższą twórczość ChatGPT z wierszami wygenerowanymi przez nasz model:
Prawdopodobnie wynika to z faktu, że ChatGPT nie został wytrenowany stricte pod generację wierszy, a raczej pod konwersacje. Dobrze się więc z nim rozmawia, ale, jako że prawdopodobnie był uczony na mniejszym zestawie wersów, jego twórczość jest dość powtarzalna.
ChatGPT został stworzony na potrzeby konwersacji, więc skupia się mocno na zachowaniu kontekstu konwersacji i logicznej spójności. Nasz model został natomiast wytrenowany na małym zestawie polskich wierszy, więc jest nieco mniej rozwinięty w tym aspekcie.
Ponadto, architektura ChatGPT bazuje na GPT-3, który niewątpliwie jest lepszy, niż GPT-2, na którym bazuje nasz model – ma bowiem więcej parametrów, które wpływają na proces nauki. Do uczenia GPT-3 wykorzystano też znacznie większej ilości danych.
Biorąc pod uwagę ilość startupów skupiających się na przetwarzaniu języka naturalnego i tłumaczeniu maszynowym, bez wątpienia można stwierdzić, że wkrótce doświadczymy prawdziwego boomu aplikacji językowych opartych na sztucznej inteligencji. Już teraz GPT-3 wspomaga setki botów, apek, blogów firmowych i social media, a AI codziennie generuje miliardy słów poprawnych gramatycznie treści.
OpenAI niedawno uchyliła rąbka tajemnicy odnośnie dalszych planów rozwoju swojego modelu. Firma planuje wdrożyć jego nową wersję, GPT-4, która będzie miała 500 razy większe moce obliczeniowe, a co za tym, będzie w stanie przetwarzać jeszcze większe ilości danych. W miarę jak systemy rosną, stają się też coraz lepsze w wychwytywaniu błędów czy powtarzalności. GPT-4 może zaskoczyć nas jeszcze większą zdolnością do odnajdywania właściwych słów i układania ich w zdania brzmiące zupełnie tak, jakby stworzył je człowiek.