Figyelem, párbeszéd és újrafelhasználható minták tanulása

A Rasa Core nyílt forráskódú gépi tanuláson alapuló párbeszéd rendszer a 3. szintű kontextusbeli AI asszisztensek felépítéséhez. A 0.11 verzióban elküldtük az új beágyazási irányelveinket (REDP), amely sokkal jobb a nem együttműködő felhasználókkal való kapcsolattartásban, mint a szokásos LSTM (a Rasa felhasználók ezt KerasPolicy néven fogják tudni). Bemutatunk egy papírt róla a NeurIPS-n, és ez a bejegyzés ismerteti a problémát, amelyet a REDP megold, és hogyan működik.

Új párbeszéd modellünk (REDP) felülmúlja a szokásos LSTM irányelveinket, amikor a nem együttműködő felhasználókkal foglalkozunk. Ezeket a parcellákat az alábbiakban részletesebben ismertetjük.

A nem együttműködő felhasználók megnehezítik a fejlesztő életét

A jó AI asszisztens felépítésének nehéz dolga az olyan végtelen módszerek kezelése, amelyekkel a felhasználók kikerülnek a boldog útról. A REDP-nek, az új párbeszéd politikájának két előnye van: (1) sokkal jobb, ha megtanulja, hogyan kell kezelni a nem együttműködő magatartást, és (2) újból felhasználhatja ezeket az információkat egy új feladat megtanulásakor.

Mit értünk a nem együttműködő viselkedés alatt? A lényeg bemutatása érdekében a mindig népszerű éttermi ajánlások példáját vesszük, de ugyanez vonatkozik az informatikai hibaelhárítási, ügyfélszolgálati vagy bármi más segítőjének felépítésére. Tegyük fel, hogy 3 darab információra van szüksége a felhasználótól, hogy javasoljon egy étkezési helyet. Nyilvánvaló megközelítés az, hogy írj egy ideig hurkot, és kérdezze meg ezt a 3 dolgot. Sajnos a valódi párbeszéd nem olyan egyszerű, és a felhasználók nem mindig adják meg a kért információkat (legalábbis nem azonnal).

Amikor azt kérdezzük a felhasználótól, hogy „milyen ártartományt keresel?”, Akkor válaszolhatnak:

  • „Miért kell ezt tudni?” (Szűk kontextus)
  • „Meg tudsz mutatni még néhány éttermet?” (Széles kontextus)
  • „Valójában nem akarok kínai ételt” (javítás)
  • "Valószínűleg többet főznék magamnak" (chitchat)

Ezt az összes nem együttműködő viselkedést nevezzük. Számos más módon is reagálhat a felhasználó, de a cikkünkben ezt a négy különféle típust vizsgáljuk. Íme egy példabeszélgetés:

Az asszisztensnek minden esetben hasznos módon kell válaszolnia a felhasználó (nem működőképes) üzenetre, majd vissza kell irányítania a beszélgetést a helyes irányba. A helyes végrehajtáshoz különféle típusú kontextusokat kell figyelembe vennie. A párbeszédnek figyelembe kell vennie a beszélgetés hosszú távú állapotát, azt, amit a felhasználó éppen mondott, amit az asszisztens mondott, mi volt az API hívások eredménye és még sok más. Ezt részletesebben leírjuk ebben a bejegyzésben.

A Szabályok nem együttműködő magatartás kezelése gyorsan rendetlenné válik

Ha már építettél pár AI asszisztenst vagy chatbotot, akkor valószínűleg rájössz, mi ez a fejfájás, és átugorhatsz a következő szakaszra. De próbáljuk meg kidolgozni néhány szabályt az egyik legegyszerűbb és leggyakoribb nem együttműködő válaszra: Nem tudom. Annak érdekében, hogy a felhasználó megtalálhassa az éttermet, megkérdezhetjük a konyhát, a helyet, az emberek számát és az árkategóriát. Az általunk lekérdezett API konyhát, helyszínt és emberek számát igényli, de az ártartomány opcionális.

Azt akarjuk, hogy asszisztensünk így viselkedjen: ha a felhasználó nem ismeri a választ egy választható kérdésre, folytassa a következő kérdéssel. Ha a kérdés nem választható, küldjön egy üzenetet, hogy segítsen nekik kitalálni, majd adjon új esélyt arra, hogy válaszoljon. Eddig olyan egyszerű.

De ha a felhasználó azt mondja, hogy nem tudok egymás után kétszer, akkor eszkalálódnia kell (például átadja az emberi ügynököknek, vagy legalább elismeri, hogy ez a beszélgetés nem megy túl jól). Természetesen, kivéve, ha az egyik „nem tudom” választ adott választ kérdező kérdésre válaszolt.

Ez a sok logika elég jól kezelhető néhány beágyazott if utasítás segítségével. De a valódi felhasználókkal való kapcsolat kezeléséhez sokféle nem működőképes viselkedést kell kezelnie, és minden olyan felhasználói célnál, amelyet az asszisztens támogat. Az ember számára nyilvánvaló, hogy mi a helyes cselekedet, de nem könnyű olyan következetes szabálykészletet írni és fenntartani, amely ezt teszi. Mi lenne, ha felépíthetnénk egy modellt, amely kitalálhatja ezeket a párbeszédmintákat, és új összefüggésekben újra felhasználhatja őket?

A REDP figyelmet fordít a nem együttműködő párbeszéd kezelésére

A figyelem a mély tanulás egyik legfontosabb ötlete az elmúlt években. A legfontosabb ötlet az, hogy a bemeneti adatok értelmezésének megtanulása mellett egy neurális hálózat megtanulhatja a bemeneti adatok mely részeit is értelmezni. Például egy olyan különféle állatokat felismerő képes osztályozó megtanulhatja, hogy figyelmen kívül hagyja a kék ég hátterét (ami nem túl informatív), és különös figyelmet fordít az állat alakjára, akár lábaira, akár a fej alakjára .

Ugyanezt az ötletet használtuk a nem együttműködő felhasználókkal való kapcsolattartáshoz. Miután helyesen reagált a felhasználó nem együttműködő üzenetére, az asszisztensnek visszatérnie kell az eredeti feladathoz, és folytatnia kell, mintha az eltérés soha nem történt meg. A REDP ezt úgy érinti el, hogy egy figyelemmechanizmust épít fel a neurális hálózatba, lehetővé téve ezzel, hogy figyelmen kívül hagyja a párbeszéd előzményeinek irreleváns részeit. Az alábbi kép a REDP architektúráját szemlélteti (a teljes leírás a papírban található). A figyelemmechanizmus a Neurális Turinggép módosított változatán alapul, és osztályozó helyett inkubálási és rangsorolási megközelítést használunk, akárcsak a Rasa NLU beágyazási folyamatában.

A figyelmet már korábban használták a párbeszédkutatásban, de a beágyazási politika az első olyan modell, amely a figyelmet kifejezetten a nem együttműködő magatartás kezelésére, valamint ezen ismeretek más feladatként történő felhasználására használja fel.

A REDP megtanulja, mikor NEM kell figyelni

Az alábbi ábra közepén egy Rasa Core történetet mutat, a jobb oldalon pedig egy megfelelő beszélgetést. A bal oldalon oszlopdiagram mutatja, hogy mekkora figyelmet fordít modellünk a beszélgetéstörténet különböző részeire, amikor az utolsó műveletet választja (utter_ask_price). Vegye figyelembe, hogy a modell teljesen figyelmen kívül hagyja a korábban nem működő felhasználói üzeneteket (nincsenek sávok a chitchat mellett, javítás, magyarázat stb.). A beágyazási politika jobban megoldja ezt a problémát, mert miután válaszolt egy felhasználói kérdésre, folytathatja a jelen feladatot, és figyelmen kívül hagyhatja, hogy az eltérés valaha is történt. A kikelt és a folytonos sávok megmutatják a figyelmet a felhasználói üzenetekre és a rendszer műveleteire.

A nem működő felhasználók kezelésekor a REDP sokkal jobb, mint egy LSTM osztályozó

Ez a grafikon összehasonlítja a REDP és a szokásos Rasa Core LSTM teljesítményét (a Rasa felhasználók ezt KerasPolicy néven fogják tudni). Azt a párbeszédszámot ábrázoljuk a tesztkészletben, ahol minden egyes műveletet helyesen megjósolunk, mivel egyre több és több edzési adatot adunk hozzá. Az LSTM két, kissé eltérő változatát futtatjuk (a részletekért olvassa el a papírt).

Minták újbóli felhasználása a feladatok során

Nem csak azt akartuk megnézni, hogy a REDP mennyire képes megbirkózni a nem együttműködő felhasználókkal, hanem azt is, hogy meg tudja-e újítani használni ezeket az információkat egy új összefüggésben. Tegyük fel például, hogy a Rasa asszisztens már rendelkezik egy csomó képzési adattal a valódi felhasználóktól (mivel nem működnek együtt, mint mindig ). Most támogatást szeretne hozzáadni egy új felhasználói célhoz. Mennyire képes kezelni az asszisztense a boldog utatól való eltéréseket, még akkor is, ha soha nem látott nem együttműködő magatartást e feladat során?

Ennek tesztelése céljából egy szállodai foglalási feladathoz párbeszédpaneleket készítettünk egy vonatteszt-osztással (amely egy csomó nem együttműködő magatartást tartalmaz), és összehasonlítottuk a teljesítményt egy másik feladatból származó képzési adatokkal (éttermi foglalás) és anélkül.

A REDP V1 verziója nagy előnyt jelentett a transzfertanulásból

A fenti ábra néhány eredményt mutat a REDP korai verziójára (nem a végsőre, ezt a következőt mutatjuk be). A tesztkészlet a szálloda területén található. A négyzetek megmutatják, hogyan javul a teljesítmény, ha az étteremtartomány edzési adatait is felvesszük. Nagyon nagy a teljesítmény, ami azt mutatja, hogy a REDP újra felhasználhatja egy másik feladatból származó ismereteket! Ezt továbbító tanulásnak is nevezik. Ugyanaz a terv jelenik meg az LSTM számára. Van néhány bizonyíték a továbbképzésről, de sokkal kisebb, mint a REDP esetében:

A REDP V2 verziója gyorsan megoldja a feladatot

Ez a grafikon a REDP „végleges” verziójának eredményeit mutatja be, amelyeket a cikk leír és a Rasa Core-ban bevezetett. A teljesítmény sokkal jobb, mint a V1. Az adatoknak csak a felével, a REDP majdnem 100% -os pontosságot ér el. A transzfertanulás előnyeit még mindig látjuk, de az étterem képzési adatainak hozzáadásakor nincs sok fejlesztési lehetőség.

Következő lépések

Nagyon izgatottak vagyunk a beágyazási politikáról, és még egy csomó további kísérlet indul annak bemutatására, hogy mit tud tenni. Az első feladatból apróra vágott húst készítettünk, tehát még súlyosabb problémákat vetünk fel a természetben történő transzfertanulás tanulmányozására.

Menj, és próbáld ki a REDP-t az adatkészletén! A papír kódja és adatai itt érhetők el. Kérjük, ossza meg eredményeit ebben a szálat a Rasa fórumon.

Sok nehéz munka előtt áll annak érdekében, hogy az AI asszisztensek 5 szintjét valóra váltsák, tehát ha ezekkel a problémákkal szeretne foglalkozni, és megoldásokat szállít egy kódbázisba, amelyet világszerte több ezer fejlesztő használ, csatlakozzon hozzánk! Felveszünk felvételt.

Eredetileg a blog.rasa.com oldalon, 2018. november 29-én tették közzé.