Meena – jak Google tworzył super chatbota?

Meena - jak Google tworzył super chatbota?

W ostatnim czasie pojawiło się sporo artykułów o najnowszym chatbocie, stworzonym przez inżynierów z Google o imieniu Meena.

Meena jest, zdaniem twórców, najbardziej zaawansowanym otwartym* botem, uczonym na ogromnej liczbie konwersacji dostępnych w Social Mediach.

* otwarty chatbot (open-domain) to taki, który nie jest ograniczony tylko do jednego zadania, domeny. W zamyśle tego typu chatbot, potrafi porozmawiać na każdy temat.

W dzisiejszym wpisie postaram się przedstawić, co na temat Meeny zamieścili inżynierowie w publikacji, którą możecie znaleźć TUTAJ. Dokument przedstawia, w jaki w sposób został stworzony chatbot, jakie metryki zastosowano, aby sprawdzić jego poprawność i jak wypada w porównaniu do innych, dostępnych na rynku otwartych botów.

Pierwsza sekcja dotyczyć będzie wskaźnika SSA, czyli miary wymyślonej przez twórców, w celu oceny chatbota. Opiszę jak jest on zbudowany, jakie są jego składowe i co właściwie oznacza.

Wskaźnik SSA

Wskaźnik jaki zaproponowali twórcy bota nazwano SSA Sensibleness and Specificity Average, który ma odzwierciedlać 2 najważniejsze aspekty konwersacji:

  • sens wypowiedzi
  • szczegółowość odpowiedzi

Sens wypowiedzi określa w jakim stopniu odpowiedź wygenerowana przez chatbota, wpisuje się w konwencję rozmowy. Szczegółowość odpowiedzi natomiast sprawdza jak dokładnie bot odpowiedział na zadaną frazę.

Jaka jest różnica pomiędzy nimi?

Można to przedstawić na przykładzie – bot, który na większość fraz i pytań odpowie „Nie wiem” itp. może być uznany za całkiem sensowny, ponieważ odpowiada z sensem. Problem polega na tym, że jest niekonkretny, nie odnosi się do wypowiedzi użytkownika – a to mierzy drugi czynnik (szczegółowość odpowiedzi) – im większa precyzja wypowiedzi, tym większa wartość tego współczynnika.

A jak przebiegał proces testowania?

Testerzy byli pytanie najpierw o sens wypowiedzi. Gdy odpowiedź była twierdząca, pytano wówczas o szczegółowość. Wynikiem (SSA) zaś była zwykła średnia z uzyskanych odpowiedzi.

Co ciekawe w między czasie zapytano osoby o określenia stopnia „człowieczeństwa” odpowiedzi, czyli jak bardzo prawdopodobne jest, że odpowiedział testerom człowiek, a ich odpowiedzi okazały się silnie skorelowane z wynikiem SSA, co dodatkowo utwierdziło inżynierów w słuszności ich wskaźnika.

Statyczny test

Pierwsza część testu to tzw. statyczny test. Dlaczego statyczny? Dlatego, że twórcy przygotowali zestaw 1477 konwersacji, zawierających od 1 do 3 wymian zdań.

Tu macie przykład konwersacji z 1 wymianą zdań:

  • Jak się masz?
  • Dziękuję, dobrze, choć nie wyspałem się za bardzo

A tu z 2 wymianami zdań:

  • Lubisz filmy?
  • Tak, najbardziej lubię sc-fi
  • Naprawdę? A jaki jest Twój ulubiony?
  • Myślę, że Terminator 2

Tak przygotowane przypadki testowe nazwano MTB (Mini Turing Benchamrk), od słynnego w IT Testu Turinga, a wyniki w postaci kontekstu i odpowiedzi pokazywane były testerom, aby Ci mogli ocenić odpowiedź pod kątem wskaźnika SSA.

Interaktywny test

Druga cześć testu, zdecydowanie bardziej wymagająca dla botów, nazwano testem interaktywnym. W przeciwieństwie do testu statycznego, testerzy mieli tu pełną dowolność w wyborze tematów, o których chcą porozmawiać z chatbotem. Jedynym ograniczeniem była tu długość rozmowy, tą określono następująco:

  • nie mniej niż 7 wymian zdań
  • nie więcej niż 14 wymian

Po otrzymaniu odpowiedzi, testerzy, podobnie jak w poprzednim przypadku, oceniali ją pod kątem metryki SSA

Trening chatbota

Jednym z kryteriów podziału botów jest sposób jego budowy. Wyróżnić możemy boty stworzone przez człowieka z komponentów, które wraz z upływem czasu mocno się komplikują. Przykładem takich botów są wszystkie stworzone za pomocą popularnych platform do budowania chatbotów (np. Chatfuel, ManyChat).

Innym rodzajem botów, póki co mniej popularnym, są boty oparta na sieciach neuronowych (tzw. end-to-end). I właśnie botem takiego typu jest Meena.

Zbiór treningowy wykorzystany podczas nauki modelu pochodzi z publicznych konwersacji na portalach społecznościowych. Pierwszą wiadomość w wątku potraktowano jako korzeń drzewa, a kolejne odpowiedzi, jako kolejne węzły.

Po zbudowaniu takiego drzewa, na każdym jego poziomie jesteśmy w stanie wyróżnić parę:

(context, odpowiedź)

, gdzie:

  • context – kolekcja wcześniejszych wypowiedzi w wątku
  • odpowiedź – wypowiedź jednej ze stron rozmowy

Krokiem, którego rolą było przygotowanie danych było usunięcie wiadomości, które potencjalnie mogły powodować tzw. szum, czyli nie wnosiły nic do rozmowy.

Przykłady takich wiadomości to:

  • wiadomości zawierające mniej niż 2 słowa lub więcej niż 128 słów
  • gdy autor wiadomości ma w nazwie słowo „bot”
  • stosunek liter w wiadomości jest mniejszy niż 70%
  • wiadomość zawiera URL

W publikacji, na której się opieram znajdziecie jeszcze kilka warunków, które powodują, że algorytm uczący model ignoruje takie wiadomości.

Efektem takiego przygotowania zbioru testowego są ogromne liczby:

  • 341 GB tekstu
  • 40 miliardów słów
  • 867 milionów par ( context, odpowiedź )

Robi wrażenie.

Wyniki

Główną miarą na jakiej się skupiono był wspomniany SSA. Różne warianty rozwiązań zostały poddane testom i ocenom, a następnie takie same testy przeprowadzono na istniejących już chatbotach, aby można było w jakiś sposób porównać ich działanie.

Do porównania wykorzystano następujące chatboty:

  • Mitsuku
  • Cleverbot
  • DialoGPT

oraz co ciekawe – człowieka.

Aby porównać Meene do rozmowy z człowiekiem, wyznaczono wskaźnik SSA dla rozmowy człowiek-człowiek. Efekt?

  • sens wypowiedzi – 94% i 97%
  • szczegółowość odpowiedzi – 69% i 75%
  • SSA – 82% i 86%

A więc mamy potwierdzenie, że odpowiedzi człowieka, potrafią być mało sensowne i mało precyzyjne.

Wyniki, w postaci wykresu zamieszczonego w publikacji są następujące:

Czyli widać, że Meena radzi sobie dużo lepiej niż porównywane boty, a już niewiele jej brakuje do osiągnięcia wyniku człowieka.

Podsumowanie

Mam nadzieję, że Was nie zanudziłem tym wpisem, ale ostatnio zacząłem się interesować bota, również od tej bardziej techniczno-naukowej strony, a takie wpisy pozwalają mi się wgłębić w temat.

Nie chciałem Was tu zarzucać szczegółami implementacyjnymi Meeny, jej architekturą i budową, dlatego skupiłem się bardziej na procesie uczenia modelu.

Tego typu informacje od gigantów potwierdzają, że baza tekstów, jakie oni posiadają w niedługim czasie, pozwolą na budowę coraz bardziej inteligentnych modeli NLP.

Póki co znamy Meene tylko ze słyszenia i czytania, ponieważ Google nie opublikował jeszcze modelu, więc pozostaje czekać, aż będzie on dostępny publicznie.