Dėmesio, dialogo ir daugkartinio naudojimo modelių mokymasis

„Rasa Core“ yra atvirojo kodo kompiuteriniu mokymu paremta dialogo sistema, skirta 3 lygio konteksto AI padėjėjams kurti. 0.11 versijoje mes išsiuntinėjome savo naują įterpimo politiką (REDP), kuri yra žymiai geriau bendraujant su nebendradarbiaujančiais vartotojais nei mūsų standartinis LSTM („Rasa“ vartotojai tai žinos kaip „KerasPolicy“). Mes pristatome pranešimą apie jį „NeurIPS“, o šiame įraše paaiškinta problema, kurią REDP išsprendžia ir kaip ji veikia.

Mūsų naujas dialogo modelis (REDP) pralenkia mūsų standartinę LSTM politiką santykiuose su nebendradarbiaujančiais vartotojais. Šie sklypai yra išsamiau paaiškinti žemiau.

Nebendradarbiaujantys vartotojai sunkina kūrėjo gyvenimą

Sunkus dalykas, kaip sukurti gerą AI padėjėją, yra tai, kaip begaliniai būdai, kuriais jūsų vartotojai nukrypsta nuo laimingo kelio. Mūsų naujoji dialogo politika REDP turi du privalumus: (1) daug geriau išmokti elgtis nebendradarbiaujant ir (2) ji gali pakartotinai panaudoti šią informaciją mokydamasi naujos užduoties.

Ką turime omenyje nebendradarbiaudami? Norėdami parodyti tikslą, imsimės populiariausio restorano rekomendacijų pavyzdžio, tačiau tas pats pasakytina ir apie asistento, kuriančio IT gedimus, klientų palaikymą ar bet ką kitą, kūrimą. Tarkime, kad jums reikia 3 informacijos iš vartotojo, kad rekomenduotumėte vietą, kur pavalgyti. Akivaizdus požiūris yra parašyti tam tikrą kilpą ir paprašyti šių 3 dalykų. Deja, tikras dialogas nėra toks paprastas, o vartotojai ne visada pateiks jums jūsų prašomos informacijos (bent jau ne iškart).

Kai paklausime vartotojo „kokio kainų diapazono jūs ieškote?“, Jis gali atsakyti:

  • „Kodėl jums reikia tai žinoti?“ (Siauras kontekstas)
  • „Ar dar galite man parodyti keletą restoranų?“ (Platus kontekstas)
  • „Tiesą sakant, aš nenoriu kinų maisto“ (pataisa)
  • „Tikriausiai turėčiau daugiau gaminti maistą sau“ (chitchat)

Mes visa tai vadiname nebendradarbiaujančiu. Yra daugybė kitų būdų, kaip vartotojas gali atsakyti, tačiau mūsų darbe nagrinėjame šiuos keturis skirtingus tipus. Štai pokalbio pavyzdys:

Kiekvienu atveju asistentas turi naudingai atsakyti į vartotojo (nebendradarbiaujančią) žinią ir tada nukreipti pokalbį tinkama linkme. Norėdami tai padaryti teisingai, turite atsižvelgti į įvairius kontekstus. Dialoge turi būti atsižvelgiama į ilgalaikę pokalbio būseną, ką ką tik pasakė vartotojas, ką ką tik pasakė asistentas, kokie buvo API skambučių rezultatai ir dar daugiau. Apie tai išsamiau aprašome šiame įraše.

Taisyklių naudojimas, jei reikia elgtis nebendradarbiaujant, tampa nepatogus

Jei jau sukūrėte porą AI padėjėjų ar pokalbių programų, tikriausiai suprantate, koks tai galvos skausmas, ir galite pereiti į kitą skyrių. Bet pabandykime sugalvoti keletą paprasčiausių ir bendriausių nebendradarbiaujančių atsakymų taisyklių: aš nežinau. Norėdami padėti vartotojui surasti restorano dėklą, galime paklausti apie virtuvę, vietą, žmonių skaičių ir kainų diapazoną. API, į kurią kreipiamės, reikalauja virtuvės, vietos ir žmonių skaičiaus, tačiau kainų diapazonas yra neprivalomas.

Norime, kad mūsų padėjėjas elgtųsi taip: jei vartotojas nežino atsakymo į pasirenkamą klausimą, pereikite prie kito klausimo. Jei klausimas nėra pasirenkamas, atsiųskite pranešimą, kad padėtų jam išsiaiškinti, ir duokite jiems dar vieną galimybę atsakyti. Kol kas taip paprasta.

Bet jei vartotojas sako, kad nežinau du kartus iš eilės, turėtumėte kreiptis į tai (pvz., Atiduoti žmogaus agentui arba bent jau pripažinti, kad šis pokalbis vyksta nelabai gerai). Išskyrus, žinoma, jei vienas iš „Aš nežinau“ atsakė į pasirenkamą klausimą.

Su šia logika galite gana gerai susitvarkyti, naudodami porą įterptųjų teiginių. Bet jei norite bendrauti su tikrais vartotojais, turėsite elgtis su daugeliu rūšių nebendradarbiaujančių veiksmų ir kiekviename vartotojo tiksle, kurį palaiko jūsų padėjėjas. Žmogui akivaizdu, ką reikia daryti teisingai, tačiau ne taip lengva parašyti ir išlaikyti nuoseklų taisyklių rinkinį, kuris jį padaro. O kas, jei mes galėtume sukurti modelį, kuris galėtų išsiaiškinti šiuos dialogo modelius ir pakartotinai panaudoti juos naujuose kontekstuose?

REDP atkreipia dėmesį į nebendradarbiaujantį dialogą

Dėmesys yra viena iš svarbiausių idėjų gilumoje mokantis pastaruosius kelerius metus. Pagrindinė idėja yra tai, kad ne tik išmokęs aiškinti įvestus duomenis, neuroninis tinklas gali sužinoti ir tas, kurias įvesties duomenis reikia aiškinti. Pavyzdžiui, vaizdų klasifikatorius, galintis aptikti skirtingus gyvūnus, gali išmokti nepaisyti mėlyno dangaus fone (kuris nėra labai informatyvus) ir atkreipti dėmesį daugiausia į gyvūno formą, ar jis turi kojas, ir į galvos formą. .

Tą pačią idėją panaudojome ir nebendradarbiaujantiems vartotojams. Teisingai reagavęs į vartotojo nebendradarbiaujantį pranešimą, padėjėjas turėtų grįžti į pradinę užduotį ir tęsti taip, tarsi nukrypimas niekada neįvyktų. REDP tai pasiekia įtraukdamas dėmesio mechanizmą į nervų tinklą, leisdamas jam ignoruoti nesvarbias dialogo istorijos dalis. Žemiau pateiktas paveikslėlis rodo REDP architektūrą (išsamus aprašymas pateiktas popieriuje). Dėmesio mechanizmas pagrįstas modifikuota neuroninio tiuringo mašinos versija, o vietoj klasifikatoriaus mes naudojame įterpimo ir rango metodą, kaip ir „Rasa NLU“ įterpiamajame dujotiekyje.

Dėmesys buvo naudojamas dialogo tyrimuose anksčiau, tačiau įtraukimo politika yra pirmasis modelis, kuris atkreipia dėmesį būtent į nebendradarbiaujantį elgesį, taip pat pakartotinai panaudodamas šias žinias kitai užduočiai.

REDP išmoksta, kai nekreipia dėmesio

Žemiau esančiame paveikslėlyje rodome „Rasa Core“ istoriją viduryje, o atitinkamą pokalbį - dešinėje. Kairėje yra juostinė diagrama, rodanti, kiek dėmesio mūsų modelis skiria skirtingoms pokalbio istorijos dalims, kai pasirenkamas paskutinis veiksmas (utter_ask_price). Atkreipkite dėmesį, kad modelis visiškai ignoruoja ankstesnius nebendradarbiaujančius vartotojo pranešimus (šalia chitchat nėra juostų, taisykite, paaiškinkite ir tt). Įterpimo politika geriau išsprendžia šią problemą, nes atsakydama į vartotojo klausimą ji gali tęsti atlikdama užduotį ir nekreipti dėmesio į tai, kad kada nors įvyko nukrypimas. Išskirtos ir tvirtos juostos rodo atitinkamai vartotojų vartotojų ir sistemos veiksmų dėmesio svorį.

REDP yra daug geresnis nei LSTM klasifikatorius, kai dirbama su nebendradarbiaujančiais vartotojais

Šis siužetas lygina REDP ir standartinio „Rasa Core LSTM“ veikimą („Rasa“ vartotojai tai žinos kaip „KerasPolicy“). Dialoge nurodome dialogo skaičių testų rinkinyje, kuriame kiekvienas veiksmas numatomas teisingai, nes pridedame vis daugiau treniruočių duomenų. Mes vykdome dvi šiek tiek skirtingas LSTM versijas (išsamiau skaitykite popieriuje).

Pakartotinis raštų panaudojimas vykdant užduotis

Mes ne tik norėjome sužinoti, kaip gerai REDP gali elgtis su nebendradarbiaujančiais vartotojais, bet ir sužinoti, ar ji galėtų pakartotinai naudoti šią informaciją naujame kontekste. Pvz., Tarkime, kad jūsų „Rasa“ asistentas jau turi krūvą mokymo duomenų iš tikrų vartotojų (jie nebendradarbiauja, nes jie visada yra ). Dabar norite pridėti naujo vartotojo tikslo palaikymą. Kaip gerai jūsų padėjėjas gali susitvarkyti su nukrypimais nuo laimingo kelio, net jei anksčiau niekada nebuvo matęs nebendradarbiaujančio atliekant šią užduotį?

Norėdami tai išbandyti, mes sukūrėme traukinio testo dialogo fragmentą, skirtą viešbučio užsakymo užduočiai (kuriame yra krūva nebendradarbiaujančio elgesio), ir palyginome atlikimą su ir neįtraukdami mokymų duomenis iš kitos užduoties (restorano užsakymas).

REDP V1 versija parodė didelį perkėlimo mokymosi pranašumą

Aukščiau pateiktoje schemoje rodomi kai kurie ankstyvosios REDP versijos rezultatai (ne galutinė, mes parodysime kitą). Testo rinkinys yra viešbučio domene. Kvadratai rodo, kaip pagerėja našumas, kai įtraukiame ir treniruočių duomenis iš restorano srities. Našumas yra didelis, tai rodo, kad REDP gali pakartotinai panaudoti kitos užduoties žinias! Tai taip pat vadinama perkėlimu. Čia tas pats LSTM siužetas. Yra keletas įrodymų apie mokymosi perkėlimą, tačiau jis yra daug mažesnis nei naudojant REDP:

REDP V2 labai greitai išsprendžia užduotį

Šioje diagramoje parodyti „galutinės“ REDP versijos, aprašytos darbe ir įdiegtos „Rasa Core“, rezultatai. Spektaklis yra daug geresnis nei V1. Turėdamas tik pusę duomenų, REDP pasiekia beveik 100% bandymo tikslumą. Vis dar matome mokymosi perkėlimo naudą, tačiau pridedant restorano mokymo duomenis nėra daug tobulėjimo galimybių.

Tolesni žingsniai

Mes tikrai džiaugiamės dėl įdėjimo politikos ir turime dar daugybę eksperimentų, kurie parodo, ką ji gali padaryti. Iš pirmos užduoties, kurią mums davė, buvo malta mėsa, todėl mes susidursime su dar sunkesnėmis problemomis, kad galėtume mokytis perkėlimo mokymosi gamtoje.

Eik ir išbandyk REDP savo duomenų rinkinyje! Darbo kodą ir duomenis rasite čia. Prašome pasidalinti savo rezultatais šioje temoje „Rasa“ forume.

Laukia daug sunkaus darbo, kad 5 AI padėjėjų lygiai taptų realybe, todėl, jei norite išspręsti šias problemas ir išsiųsti sprendimus į kodo bazę, kurią naudoja tūkstančiai kūrėjų visame pasaulyje, prisijunkite prie mūsų! Mes samdome.

Iš pradžių paskelbta tinklalapyje blog.rasa.com 2018 m. Lapkričio 29 d.