Jak utrzymać wysoką skuteczność odpowiedzi przy użyciu uczenia maszynowego
17.06.2020 | Kinga Delinger
Wstęp
Skąd bot wie, co to departamnt? Zobacz w poprzednim artykule, gdzie opisujemy jak Wirtualny Asystent dzięki komponentowi spellchecker radzi sobie z poprawianiem słów, które zawierają literówki. Mechanizm jest na tyle skuteczny, że znacząco upraszcza kolejne procesy, zarówno te po stronie bota jak i nasze wewnątrzzespołowe – monitorujące przegląd konwersacji. W tym artykule skupimy się właśnie na przeglądzie konwersacji użytkowników z botem – a konkretniej na naszych doświadczeniach z jej automatyzacją.
Cel, który nam przyświeca - każde unikalne pytanie użytkownika jest analizowane manualnie przez inżyniera wiedzy maksymalnie jeden raz - jest w ciągle zmieniającym się otoczeniu ambitnym założeniem. W związku z tym wdrażamy mechanizmy oparte na technikach data science automatyzujące przegląd konwersacji tak, by móc skupić się nie tylko na bieżącym utrzymaniu, ale i rozwoju narzędzia.
Ze względu na wolumen nie jesteśmy w stanie manualnie monitorować wszystkich odpowiedzi asystenta, ale istnieje część pytań użytkowników, które się powtarzają i są do siebie podobne. Powtarzalność pytań może obejmować pytania dokładnie takie same, jednak biorąc pod uwagę język polski i mnogość odmian, koniecznym jest również objęcie automatem pytań podobnych. Z tego powodu zaczęliśmy tworzyć pipeline, będący narzędziem do obiegu wiedzy, który analizuje historie konwersacji z botem z dnia poprzedniego i dostarcza inżynierowi wiedzy pytania użytkowników, mające największe prawdopodobieństwo konieczności ręcznej obsługi i zmian w bazie wiedzy.
W pierwszym kroku zaimplementowaliśmy metody regułowe, które w prosty sposób ograniczyły część konwersacji do przeglądu. Standaryzacja pytań objęła między innymi kroki zamiany wszystkich liter na małe, usunięcia zbędnych znaków czy nadmiarowych spacji, co pozwoliło szybko odfiltrować duplikaty.
W międzyczasie powstała lista pytań z dobrymi odpowiedziami, która w miarę obiegu wiedzy w dalszym ciągu jest stale powiększana o kolejne obserwacje, co jest świetnym materiałem dla uczenia maszynowego z nadzorem, ale o tym za chwilę.
Wspomniana powyżej lista zapewnia odfiltrowywanie pytań zweryfikowanych - gdy następnym razem kolejna osoba zada takie samo pytanie - pipeline to wykrywa i inżynier bazy wiedzy już nie musi go ponownie weryfikować. Podejście skuteczne, ale zapewnia tylko obsługę pytań identycznych. Mnogość odmian języka polskiego skłoniła nas do dalszego rozwoju narzędzia.
lemma... lemmatization.. let me google that for you
Jak możemy przeczytać w książce Wprowadzenie do wyszukiwania informacji, z powodów gramatycznych w dokumentach tekstowych stosowane są różne formy tych samych wyrazów. Najpopularniejsze techniki NLP radzące sobie z tym wyzwaniem to lematyzacja oraz stemming. Stemming polega na prostym, heurystycznym odcinaniu końcówek słów w nadziei, że powstałe rdzenie będą odzwierciedlać podobne lub takie samo znaczenie różnych odmian słów. Dla przetwarzania języka angielskiego, będącego językiem analitycznym zastosowanie stemmingu może przynosić dobre rezultaty. W przypadku języka polskiego jest to nieco trudniejsze zadanie.
Zdecydowaliśmy się na wykorzystanie potencjału lematyzacji, ze względu zarówno na prostotę działania jak i przyszłego zarządzania oraz możliwości dokonywania zmian. Dodatkowo lematyzacja pozwala na łatwiejsze zarządzanie specyficznymi przypadkami, których w języku polskim oraz w naszej bankowej rzeczywistości jest sporo. Zaczęliśmy od najprostszego zastosowania – bez oznaczania części mowy (part of speech), korzystając z gotowych słowników, zawierających formy odmienione oraz podstawowe.
Pipeline został wzbogacony o moduł lematyzacji, który przetwarza pytania z historii konwersacji i wyszukuje frazy zlematyzowane w liście zweryfikowanych pytań. Przykładowo, użytkownik zadał pytanie: „zalałem laptopa” (pytanie prawdziwe :) ). Gdyby próbować odnaleźć to pytanie na liście jeden do jednego, niestety nikt nigdy takiego pytania do tej pory nie zadał, więc dotychczas inżynier bazy wiedzy musiałby się nad nim pochylić. Dzięki zastosowaniu modułu lematyzacji możemy taki przypadek wychwycić, ponieważ na liście zweryfikowanych pytań znajduje się pytanie „zalany laptop” - więc po zastosowaniu lematyzacji, obie te frazy brzmią „zalać laptop”.
Powyższy przypadek obejmuje zlematyzowanie jednej jak i drugiej frazy oraz jak widać obu słów. Dopiero po sprowadzeniu do wspólnej formy pipeline wykrył, że pytania są tożsame i kolejne kilka procent pytań mogliśmy zakwalifikować jako obsłużone automatycznie. Brzmi dobrze, ale czy jesteśmy w stanie coś jeszcze z tego wycisnąć?
Wyobraźmy sobie, że na liście pytań zweryfikowanych mamy pozycję „pożyczka gotówkowa okres”. Natomiast użytkownik zapytał: „okres pożyczki gotówkowej”. W takim przypadku proces przetwarzania wygląda następująco:
Na pierwszy rzut oka uzyskany wynik nie gwarantuje nam, że mechanizm automatycznie wychwyci podobieństwo tych fraz, ponieważ „okres pożyczka gotówkowy” to nie dokładnie to samo, co „pożyczka gotówkowy okres”. Jednym z podstawowych kroków przetwarzania języka naturalnego jest tokenizacja obserwacji, czyli wyodrębnienie poszczególnych (najczęściej) słów. Gdy przyjrzymy się bliżej, okazuje się, że kolejny krok przetwarzania oparty o sortowanie tokenów może pomóc w tym przypadku:
Posortowane alfabetycznie i zlematyzowane słowa nie są już tak przystępną formą dla człowieka, jednak pozwalają obsłużyć następne kilka procent pytań automatycznie. Jak widzimy, w formach oryginalnych tożsame jeden do jednego jest tylko słówko „okres”, które wystąpiło w każdej frazie na innej pozycji, a mechanizm wychwycił taki przypadek.
Poniższy schemat przedstawia grupę różnie zadanych pytań użytkowników, które dzięki zaimplementowanemu rozwiązaniu jesteśmy w stanie sprowadzić do jednej formy.
Takie podejście pozwala na odfiltrowanie kolejnej grupy pytań, które uznajemy za podobne do pytań znajdujących się na liście pytań zweryfikowanych, a co za tym idzie – z niskim prawdopodobieństwem konieczności manualnej oceny. Analizując zaimplementowany proces, można zauważyć, że model deterministyczny mógłby zostać zastąpiony modelem uczenia maszynowego. Tworzenie modeli ML jest samo w sobie wyzwaniem, które dodatkowo można bardzo łatwo skomplikować - zainteresowanych tematem odsyłam do artykułu o wyzwaniach inżynierii oprogramowania w środowisku data science. Z tego powodu zaczęliśmy od utworzenia baselinowego modelu, wykorzystującego dane z pytań zweryfikowanych, by poznać potencjał takiego podejścia. Cel wydawał się prosty – odfiltrować kolejną porcję pytań, dla których model zwraca odpowiedź z wysokim prawdopodobieństwem, która jest zbieżna z odpowiedzą bota.
Reprezentowanie tekstu jako zmienne dla modelu machine learning
Konwersja zbioru pytań zweryfikowanych (dokumentów) na macierz liczb zrozumiałych dla komputera wykonana została ważeniem częstości termów (u nas słów) - TF-IDF. Takie podejście pozwala ocenić ważność danego słowa z uwzględnieniem częstości występowania względem innych słów w pytaniu jak i pod względem częstości występowania w całym zbiorze uczącym zawierającym inne pytania. Jest to powszechnie stosowany schemat ważenia przy wyszukiwaniu informacji, który również znalazł dobre zastosowanie w klasyfikacji dokumentów. Do tego wykorzystanie one-vs-rest regresji logistycznej, pozwala obsłużyć wiele klas. Nasunęło się pytanie - czy tutaj lematyzacja może również pomóc i w jakim zakresie? Weryfikacja pokazała, że tak. Uzyskane korzyści:
- zmniejszenie liczby dokumentów - dotychczas zapisane pytania w różnych odmianach po sprowadzeniu do podstawowej formy można było ograniczyć do jednej unikalnej frazy, co wpływa pośrednio na lepsze zbalansowanie liczebności klas (liczba wierszy macierzy zmniejszyła się o 8%),
- zmniejszenie liczby słów - dotychczas zapisane w macierzy różne odmiany jednego słowa po sprowadzeniu do podstawowej formy zostają ograniczone do jednej kolumny, która zawiera unikalne podstawowe słowo, co wpływa na uproszczenie reprezentacji wiedzy oraz ogranicza szum, którego obecność może pogłębić przeuczenie modelu uczenia maszynowego (liczba słów zmniejszyła się o 40%).
Rozmiar macierzy TF-IDF przed lematyzacją (po lewej) i po (z uwzględnieniem usunięcia duplikatów):
Wpływ lematyzacji na skuteczność modelu również nie pozostał obojętny. Prosty model wytrenowany na stworzonym stałym, zbalansowanym zbiorze pytań osiągnął na zbiorze testowym 74.3%. Ten sam model, na zbiorze pytań poddanych lematyzacji uzyskał skuteczność 81.8%. Pokazuje to, jak ważna jest eksploracja danych i ich wstępne przetwarzanie - inwestycja w postaci czasu powinna zwrócić się z nawiązką w przyszłości.
XAI – eXplainable Artificial Intelligence
Skuteczność to jedno... ale model ma aktualnie w bazie wiedzy 5000 klas, oczywiście liczba pytań przypadająca na klasę nie jest zbalansowana w całym zbiorze danych. W celu poznania wyjaśnień predykcji, co ma znaczenie w kontekście zaufania do decyzji modelu oraz próby zrozumienia działania można skorzystać z metod pomagających wyjaśnić predykcje klasyfikatora z dużą liczbą parametrów.
Powyższy przykład pokazuje, jakie wsparcie może oferować zastosowanie metod interpretacyjnych modeli machine learning. Dwie najbardziej prawdopodobne odpowiedzi według modelu na zadane pytanie – „czyszczenie miejsca na dysku” to:
- 1005997 - odpowiedź opisująca, co należy zrobić, gdy zaczyna kończyć się miejsce na dysku
- 1005871 - odpowiedź opisująca, co należy zrobić, gdy zaczyna kończyć się miejsce na skrzynce odbiorczej poczty
Co możemy uzyskać z takiej wizualizacji decyzji modelu:
- prawdopodobieństwo, że pytanie powinno prowadzić do klasy 1005997 wynosi 75%, a dla klasy 1005871 21%
- słowo „dysk” ma najwyższy dodatni wynik dla klasy 1005997, oraz najwyższy ujemny wynik dla klasy 1005871
- klasa 1005997 zawiera w zbiorze wszystkie zadane słowa, które występują na tyle często, że ich dodatnie wartości głosują za tą klasą
- gdyby usunąć słowo „dysk” z pytań prowadzących do klasy 1005997, powinniśmy oczekiwać, że predykcja modelu dla tej klasy spadnie do 26% (75% - 49%). Widzimy, że jest to kluczowe słowo dla tego pytania. Dodatkowo brak tego słowa pytaniach prowadzących do klasy 1005871 warunkuje niskie prawdopodobieństwo dla tej klasy.
Gdy przyjrzymy się pytaniom prowadzącym do faktu 1005997 widzimy, że żadne z pytań nie zawiera dokładnie tego samego zestawu słów, które zadał użytkownik. Jednak poszczególne słowa pojawiają w różnych konfiguracjach w różnych pytaniach do faktu, co pozwala modelowi nauczyć się powiązań poszczególnych słów i ich ważności w tworzeniu funkcji decyzji.
Wyniki metod interpretacyjnych pozwalają upewnić się, że decyzje modelu nie są podejmowane na podstawie niepożądanych słów. Zapewnia to ochronę przed niezrozumiałymi dla człowieka predykcjami, które mogą wynikać z źle dobranego zbioru danych.
Poniższy popularny przykład ukazuje piksele, na podstawie których model uczenia maszynowego podjął decyzję, że na obrazie znajduje się wilk.
Źródło: https://arxiv.org/pdf/1602.04938.pdf
Powyższa interpretacja wskazuje, że klasyfikator podejmował decyzje na podstawie śniegu w tle zdjęcia zamiast na cechach odróżniających wilki od psów rasy husky. Warto pamiętać o zastosowaniu metod wyjaśniających predykcje modeli, szczególnie w przypadku bankowych case’ów, gdzie może mieć to również krytyczne znaczenie w kontekście regulacji i polityk jak np. GDPR.
Podsumowanie
Rozpoczynając przygodę przed prawie pięcioma laty, nie podejrzewaliśmy nawet, że eksperyment wdrożenia chatbota w naszej organizacji da tak pozytywne rezultaty i że poszukiwanie wiedzy właśnie tutaj stanie się najpopularniejszym źródłem informacji w wielu obszarach banku.
Dziś Wirtualny Asystent odpowiada dziennie na 4000 pytań z 88% wiarygodnością. Dzięki wykorzystaniu chatbota, sprawiliśmy, że na powtarzalne pytania nie musi już udzielać odpowiedzi człowiek, który może się w tym czasie zająć bardziej złożonymi zadaniami i problemami.
Utrzymanie wysokiej skuteczności jest nie lada wyzwaniem, natomiast baseline’owy model uczenia maszynowego pokazał, że rozwiązania data science mają potencjał, natomiast wymagają nakładu pracy po stronie danych. Model może mieć wiele zastosowań, m.in. wsparcie inżyniera wiedzy w monitorowaniu odpowiedzi, wsparcie w kierowaniu do najbardziej prawdopodobnych odpowiedzi, sprawdzanie słabych punktów bazy wiedzy, dodatkowo w spornych pytaniach możliwość podejrzenia wag dla poszczególnych słów. Zainwestowany czas na tworzenie zbiorów uczących powinien zwrócić się w postaci zaoszczędzonego czasu pracy w przyszłości. AI nie jest dziedziną, w której gotowe rozwiązania można znaleźć w Internecie. Aby było skuteczne musi być „uszyte na miarę” na danych, którymi dysponujemy. Oznacza to bardzo dużo eksperymentowania i obserwacji wyników. Dodatkowo, bardzo dużo czasu musimy poświęcać na pracy z samymi danymi, ponieważ oprócz algorytmów ważna jest także jakość i ilość dostępnych danych, szczególnie w przypadku ich niedoboru, gdzie aktualnie średnio na klasę przypada mniej niż 10 obserwacji.
Musimy pamiętać, że wszystkie zadania muszą być wykonane w ciągle zmieniającym się środowisku, dlatego automatyzacja jak największej liczby procesów jest kluczowa w przypadku zarządzania wiedzą dla pracowników banku.