Tähelepanu, dialoog ja korduvkasutatavate mustrite õppimine

Rasa Core on avatud lähtekoodiga masinõppel põhinev dialoogisüsteem 3. taseme kontekstipõhiste AI-abiliste ehitamiseks. Versioonis 0.11 tarniti meie uus manustamispoliitika (REDP), mis on koostööst hoidunud kasutajatega suhtlemisel palju parem kui meie tavaline LSTM (Rasa kasutajad teavad seda kui KerasPolicy). Esitame selle kohta NeurIPSis paberi ja see postitus selgitab probleemi, mida REDP lahendab ja kuidas see töötab.

Meie uus dialoogimudel (REDP) edestab meie tavapäraseid LSTM-i poliitikaid koostööst loobunud kasutajatega suhtlemisel. Neid krunte selgitatakse üksikasjalikumalt allpool.

Koostööst hoidunud kasutajad muudavad arendaja elu raskeks

Hea AI abilise ehitamise raske asi on tegeleda lõpmatute viisidega, mis teie kasutajad õnnelikult teelt eemalduvad. REDP-l, meie uuel dialoogipoliitikal, on kaks eelist: (1) on palju parem õppida koostööst hoidumisega käituma ja 2) saab seda teavet uue ülesande õppimisel uuesti kasutada.

Mida me mõtleme mittetöötava käitumise all? Mõtete näitamiseks võtame alati populaarse restoranisoovituse näite, kuid sama kehtib IT-tõrkeotsingu, klienditoe või muu sellise jaoks abistaja ehitamise kohta. Oletame, et teil on vaja söögikoha soovitamiseks kasutajalt 3 teavet. Ilmne lähenemisviis on kirjutada mõni aeg, et küsida neid kolme asja. Paraku pole päris dialoog nii lihtne ja kasutajad ei anna teile alati teavet, mida te küsisite (vähemalt mitte kohe).

Kui küsime kasutajalt „millist hinnaklassi te otsite?”, Võib ta vastata:

  • “Miks peate seda teadma?” (Kitsas kontekst)
  • “Kas saate mulle veel mõnda restorani näidata?” (Lai kontekst)
  • “Tegelikult ma ei taha hiina toitu” (parandus)
  • “Peaksin ilmselt ise rohkem süüa tegema (chitchat)

Me nimetame kogu seda koostööst hoidumist. Kasutajal on palju muid viise, kuidas reageerida, kuid oma artiklis uurime neid nelja erinevat tüüpi. Siin on näide vestlusest:

Mõlemal juhul peab abiline vastama kasutaja (mittetöötavale) sõnumile abivalmilt ja seejärel juhtima vestlust õiges suunas. Õigeks tegemiseks peate arvestama erinevat tüüpi kontekstiga. Teie dialoogis tuleb arvestada vestluse pikaajalise olekuga, mida kasutaja just ütles, mida assistent just ütles, millised olid API-kõnede tulemused ja palju muud. Kirjeldame seda selles postituses üksikasjalikumalt.

Reeglite kasutamine koostööst hoidumisega käitumiseks muutub kiiresti segaseks

Kui olete juba paar AI abilist või vestlusbooti ehitanud, saate tõenäoliselt aru, mis see peavalu põhjustab, ja võite järgmise jaotise juurde liikuda. Proovime aga välja tulla mõne lihtsama ja kõige tavalisema koostööst loobumise vastuse reegliga: ma ei tea. Aitamaks kasutajal leida restoranikohvrit, võiksime küsida köögi, asukoha, inimeste arvu ja hinnaklassi kohta. Meie küsitav API nõuab kööki, asukohta ja inimeste arvu, kuid hinnaklass on valikuline.

Soovime, et meie abiline käituks nii: kui kasutaja ei tea vastust valikulisele küsimusele, jätkake järgmise küsimusega. Kui küsimus pole valikuline, saatke sõnum, et aidata tal seda välja mõelda, ja andke neile siis veel üks võimalus vastata. Siiani nii lihtne.

Kuid kui kasutaja ütleb, et ma ei tea kaks korda järjest, siis peaksite eskalanema (näiteks andma inimagendile või vähemalt tunnistama, et see vestlus ei lähe eriti hästi). Välja arvatud muidugi juhul, kui üks „ma ei tea” oli vastus valikulisele küsimusele.

Saate selle palju loogikat päris hästi käsitseda paari pesastatud avaldusega. Kuid tegelike kasutajatega suhtlemiseks peate hakkama saama mitut tüüpi koostööst hoidumisega ja seda iga kasutaja eesmärgi puhul, mida teie assistent toetab. Inimesele on ilmne, mida teha on õige, kuid järjepidevate reeglite kogumi koostamine ja hooldamine pole seda nii lihtne. Mis oleks, kui saaksime luua mudeli, mis suudaks need dialoogimustrid välja mõelda ja neid uues kontekstis uuesti kasutada?

REDP pöörab tähelepanu koostööst hoidunud dialoogi käsitlemisele

Tähelepanu on viimase paari aasta sügava õppimise üks olulisemaid ideid. Põhiidee on see, et lisaks sisendandmete tõlgendamise õppimisele võib närvivõrk õppida ka seda, milliseid sisendandmete osi tõlgendada. Näiteks saab kujutise klassifikaator, mis tuvastab erinevaid loomi, õppida sinist taevast taustal eirama (mis pole kuigi informatiivne) ja pöörata tähelepanu peamiselt looma kujule, kas tal on jalad ja pea kuju .

Kasutasime sama ideed ka koostööst hoidunud kasutajatega. Pärast kasutaja mittetöötavale teatele õigesti reageerimist peaks abiline naasma algse ülesande juurde ja saama jätkata, nagu poleks hälvet kunagi juhtunud. REDP saavutab selle, lisades närvivõrku tähelepanu mehhanismi, mis võimaldab tal ignoreerida dialoogi ajaloo ebaolulisi osi. Allolev pilt on REDP arhitektuuri illustratsioon (täielik kirjeldus on paberil). Tähelepanu mehhanism põhineb Neural Turing Machinei modifitseeritud versioonil ja klassifikaatori asemel kasutame manustamis- ja järjestamismeetodit, nagu ka Rasa NLU manustamisjuhtmes.

Tähelepanu on dialoogi uurimisel juba varem kasutatud, kuid kinnistamispoliitika on esimene mudel, mis kasutab tähelepanu spetsiaalselt koostööst hoidumiseks ja ka nende teadmiste taaskasutamiseks teises ülesandes.

REDP õpib, kui EI peaks tähelepanu pöörama

Alloleval joonisel näitame keskel Rasa Core lugu ja paremal vastavat vestlust. Vasakul on tulpdiagramm, mis näitab, kui palju tähelepanu meie mudel viimase toimingu valimisel vestluse ajaloo eri osadele pöörab (utter_ask_price). Pange tähele, et mudel ignoreerib täielikult eelnevaid mittetoimivaid kasutajateateid (vestluse kõrval pole ribasid, parandage, selgitage jne). Manustamispoliitika on selle probleemi lahendamisel parem, kuna pärast kasutaja küsimusele vastamist võib see jätkata käsiloleva ülesandega ja jätta tähelepanuta, et kõrvalekalle kunagi juhtus. Viirutatud ja kindlad ribad näitavad vastavalt kasutaja teadete ja süsteemitoimingute tähelepanu kaalu.

REDP on palju parem kui LSTM-i klassifikaator koostööst hoiduvate kasutajate käsitlemisel

Sellel graafikul võrreldakse REDP-i ja tavalise Rasa Core LSTM-i toimivust (Rasa kasutajad teavad seda kui KerasPolicy). Joonistame testikomplekti dialoogide arvu, kus iga toimingut ennustatakse õigesti, kuna lisame üha rohkem treeningu andmeid. Meil on LSTM-i kaks veidi erinevat versiooni (üksikasju lugege paberist).

Mustrite taaskasutamine ülesannete vahel

Me ei soovinud mitte ainult näha, kui hästi REDP suudaks koostööd mittetegevate kasutajatega hakkama saada, vaid ka näha, kas ta saaks seda teavet uues kontekstis uuesti kasutada. Näiteks öelge, et teie Rasa assistendil on juba hunnik reaalsete kasutajate treeningandmeid (olles mittetöötavad, nagu nad alati on are). Nüüd soovite lisada uue kasutaja eesmärgi toe. Kui hästi saab teie abiline hakkama kõrvalekalletega õnnelikult teelt, isegi kui ta pole kunagi varem selle ülesande täitmisel koostööst hoidunud käitumist näinud?

Selle testimiseks koostasime hotelli broneerimise ülesande jaoks rongitesti dialoogide jaotuse (mis sisaldas hunnikut koostööst hoidumist) ja võrdlesime toimingut teise ülesande koolitusandmetega (ilma restorani broneerimiseta) ja ilma.

REDP V1 näitas ülekandmisõppest suurt kasu

Ülaltoodud graafik näitab REDP-i varajase versiooni tulemusi (mitte lõplikku, näitame seda järgmisena). Testikomplekt asub hotelli domeenis. Ruudud näitavad, kuidas toimivus paraneb, kui lisame ka restorani domeeni treeningandmed. Toimimises on suur hüpe, mis näitab, et REDP saab teistsuguse ülesande teadmisi uuesti kasutada! Seda nimetatakse ka siirdeõppeks. Siin on sama süžee ka LSTM-i jaoks. On olemas mõningaid tõendeid üleminekuõppe kohta, kuid see on palju väiksem kui REDP puhul:

REDP V2 lahendab ülesande väga kiiresti

Sellel graafikul on toodud REDP-i lõpliku versiooni tulemused, mida on kirjeldatud artiklis ja rakendatud Rasa Core-s. Etendus on palju parem kui V1. Ainult poole andmetega saavutab REDP peaaegu 100% -lise täpsuse. Siirdeõppest näeme endiselt kasu, kuid restoranikoolituse andmete lisamisel pole arenguruumi palju.

Järgmised sammud

Oleme manustamispoliitikast tõesti vaimustuses ja käimas on veel hulk katseid, et näidata, mida see teha saab. Esimesest ülesandest, mille me talle andsime, valmistati hakkliha, nii et tegeleme veel raskemate probleemidega, et õppida looduses siirdeõpet.

Minge ja proovige oma andmestikus REDP-i! Paberi kood ja andmed on saadaval siin. Jagage oma tulemusi selles lõimes Rasa foorumis.

Ees on veel palju rasket tööd, et muuta AI-assistentide 5 taset reaalsuseks, nii et kui soovite nende probleemidega tegeleda ja saata lahendused tuhandete arendajate poolt kogu maailmas kasutatavaks andmebaasiks, siis liituge meiega! Me otsime töötajaid.

Algselt avaldati see blogis.rasa.com 29. novembril 2018.