Conversatiebot. De chatbot van Microsoft is de grootste Turing-test ooit

  • Machinaal leren,
  • Zoektechnologieën,
  • Semantiek,
  • Website-ontwikkeling
  • Ik schreef enige tijd geleden al over chatbots die gebruik maken van neurale netwerken. Vandaag zal ik het hebben over hoe ik probeerde een volledige Russischtalige versie te maken.

    Leerbare dialoogsystemen gekocht in de laatste tijd onverwachte populariteit. Helaas is alles wat is gedaan in het kader van neurale netwerkdialoogsystemen gedaan voor de Engelse taal. Maar vandaag zullen we deze leemte opvullen en het model Russisch leren spreken.

    Methode
    Ik besloot om te beginnen met het genereren van tekst per woord. Dit is cool, maar niet zo nuttig als het lijkt en vooral moeilijk voor de Russische taal een groot aantal verschillende woordvormen. In plaats daarvan besloot ik om het juiste antwoord uit een grote database te selecteren. Die. Het doel is om een ​​neuraal netwerk te creëren dat bepaalt of een zin een passend antwoord is, gegeven de context van het gesprek, of niet.

    Waarom zo:
    - We hebben geen grote softmax-laag nodig om woorden te selecteren, wat betekent dat we meer neurale netwerkbronnen kunnen toewijzen aan de daadwerkelijke taak van tekstanalyse.
    - Het resulterende matchingmodel is voor verschillende doeleinden geschikt; in theorie is het mogelijk om een ​​chatbot op verschillende manieren te laten communiceren speciale onderwerpen door simpelweg te downloaden nieuwe basis teksten, zonder nieuwe training. Dit is handig in de praktijk.
    - Het is mogelijk om een ​​model te maken dat snel draait en daadwerkelijk met veel gebruikers tegelijk kan communiceren zonder meerdere GPU's op de server.

    Waarvoor
    Over het algemeen zijn algemene thematische dialoogsystemen nuttig, bijvoorbeeld bij online consultants, zodat de consultant kan praten over onderwerpen die geen verband houden met de hoofdtaak, in games en bij een aantal andere taken.

    Waarom neurale netwerken?
    Is het mogelijk om het probleem op een meer klassieke manier te benaderen? Een set antwoorden in de database laden en met een full-text index zoeken naar de vorige zin? Het antwoord is: je kunt dit doen, maar het resultaat is niet erg goed. Laten we zeggen:

    C: hallo!
    K: Greg, Maria, dit is Ali...
    C: hoe gaat het met jou?
    K: Er was een klacht over geluidsoverlast vanuit de kamer ernaast, monsieur
    C: hoe heet je?
    K: dank je, dank je.
    C: hoe oud ben je?
    K: woon je ergens in de buurt...?

    Een zoektocht door een grote database met antwoorden levert veel resultaten op, maar hun relevantie is klein, dus de dialogen blijken behoorlijk te zijn lage kwaliteit. Dit is waar het ons zou moeten helpen neuraal netwerk– met zijn hulp zullen we de goede antwoorden van de slechte scheiden.

    Waar kunt u trainingsgegevens verkrijgen:
    Voor velen de meest pijnlijke vraag. Dus namen mensen de database met ondertitels voor films. Er is zo'n database voor de Russische taal, hoewel deze kleiner van formaat is. Maar het grote probleem met deze basis is dat er veel monologen in zitten, divers afval en in het algemeen is het moeilijk om dialogen van elkaar te scheiden.

    Daarom besloot ik een andere route te gaan en, naast ondertitels, dialogen te verzamelen van degenen die erin zaten open toegang boeken. Aspirant-schrijvers en auteurs van allerlei soorten fanfictie hebben een ongelooflijke hoeveelheid informatie gecreëerd, dus het zou zonde zijn om die niet te gebruiken. Natuurlijk staat er een hoop onzin in. Tijdens het werk moest ik dit onvermijdelijk lezen, en mijn hoofd was opgezwollen door de lange gesprekken van een aantal Sergei en Sailor Moon (die nog meer hetzelfde idee hadden!). Maar over het algemeen is dit een betere database dan ondertitels, hoewel het niet zo eenvoudig te verzamelen is, je moet er tijd aan besteden.

    Architectuur
    Er is hier veel ruimte voor verbeelding. Ik begon met eenvoudige opties en ging over op de complexere om te begrijpen wat de echte voordelen van verschillende toeters en bellen zijn. In artikelen probeert men het meestal cool te maken en er wat nieuwe toeters en bellen aan toe te voegen, maar omdat het gebied nieuw is, zijn de voordelen hiervan niet altijd duidelijk.

    Het eenvoudigste model neemt een aaneenschakeling van een reeks context- en antwoordwoordvectoren en voert dit allemaal in een reguliere, volledig verbonden laag. Omdat het antwoord verschillende lengtes kan hebben, schrijven we het in een vector met een vaste lengte, waarbij we de “extra” ruimte vullen met nullen. Dit wordt als slecht beschouwd. Laten we eens kijken.

    De tweede optie is anders omdat ze, voordat ze de context en het antwoord ‘vermengen’, ‘hun eigen’ laag krijgen om het idee te vormen. Welnu, dan kunnen er meerdere verwerkingslagen zijn, de figuur laat er twee zien.

    De derde optie codeert reeksen van verschillende lengtes met behulp van een terugkerende LSTM-encoder. Het is veel langzamer en het duurt langer om te trainen. Maar het lijkt erop dat het beter zou moeten werken.


    Afb.1. Neurale netwerkarchitectuur

    Resultaten
    Door het vermogen om het juiste antwoord te kiezen uit verschillende voorgestelde opties (willekeurig genomen antwoorden), het meest beste resultaat toonde model nummer 2, met vijf lagen voor data-analyse van elk 700 neuronen (+1 laag voor representatie van invoergegevens, ook van 700 neuronen). Om zulke te trainen diep web, Ik moest Highway-lagen gebruiken, waardoor informatie gemakkelijker van de lagere lagen naar de bovenste kan worden verspreid, en ook een paar dagen wachten terwijl het model op de GPU werd berekend. Model nummer 1 was duidelijk ondertraind, en nummer 3 dacht er lang over na, en bereikte ook de resultaten van model nummer 2 met enkele procenten niet. Wat ons daaraan herinnert, hoewel het meest eenvoudige modellen zijn niet geschikt voor grote hoeveelheden gegevens, maar u mag entiteiten nooit verder vermenigvuldigen dan nodig is.

    Het resulterende systeem heeft een database van 30 miljoen replicaparen, en het neurale netwerk heeft ongeveer 3 miljoen trainbare parameters.

    Wat voor soort dialogen kun je hierdoor krijgen?

    C: Hallo
    K: Hallo.
    C: Hoe gaat het met je?
    K: Ik weet het niet.
    C: Hoe heet je?
    K: Mijn naam is Eunice.
    C: Hoe oud ben je?
    K: Vijftien.
    C: Waar woon je?
    K: Thuis.
    C: ga jij naar school?
    K: Nee
    C: waar studeer je?
    K: bij de Bundeswehr.
    C: Houd je van muziek?
    K: ja, ik hou van muziek.
    C: Van wat voor soort muziek hou je?
    K: Ik luister vooral naar r&b en funk.
    C: Geloof jij in God?
    K: Ik geloof nog steeds in God, oude man
    C: Wat is moraliteit?
    K: twee mensen samen, is dat niet moreel?
    C: welke kleur heeft de zee?
    K: kleuren van de oceaan na een storm.

    Goed genoeg naar mijn mening. Hier is nog een voorbeeld:

    C: Waar leeft het nijlpaard?
    K: geleefd
    C: Wat, hij leeft nu niet?
    K: Ik weet het niet.
    C: Waar woonde hij dan eerder?
    K: vlakbij het park, aan Maple Street.
    C: waar is hij heen gegaan?
    K: waar is hij heen gegaan?
    C: Ik vraag je: waar is hij heen?
    K: Ik begrijp niet waarom ik weer in het ziekenhuis lig.
    C: omdat je ziek bent
    K: Ik wil gewoon mensen helpen.
    C: Vertel me dan waar het nijlpaard is!
    K: waarom wil je dit zo graag weten?
    C: geef mij maar antwoord
    K: wil je dat ik je help bij het afscheid nemen van je familie?
    C: Is dit een bedreiging?
    K: Observatie
    C: Dus waar is het nijlpaard?
    K: Hij is in Hawaï, maar de Raj regeert vanaf hier
    C: Wie is de Raj?
    K: heb je hem nog niet ontmoet?
    C: Nee, nooit
    K: Er leefden eens een man en een vrouw, alleen de man verdween elke nacht.

    Een van de belangrijkste voorwaarden meesterschap Engels is de praktijk van het gebruik ervan. Zelfs als je Engels leert, is schriftelijke en mondelinge communicatie nog steeds het belangrijkste onderdeel van het leren. Er zijn verschillende manieren om zo’n taalervaring te organiseren.

    Dit artikel is gewijd aan een van deze geheimen, die inderdaad nog niet iedereen kent, hoe je volledig gratis Engels kunt oefenen met robots. Het artikel biedt ook een lijst met soortgelijke slimme programma's met koppelingen. In sommige landen, zoals Japan, betalen mensen zelfs geld om Engels te leren met robots en chatbots.

    Ik moedig mijn leerlingen aan om waar mogelijk taal te gebruiken. De studenten die in het buitenland wonen, werken of reizen, boeken sneller vooruitgang naarmate ze Engels gebruiken het dagelijks leven. En die jongens die een partner hebben, maar gescheiden zijn taalbarrière, beheersen ze een vreemde taal over het algemeen met turbosnelheden.

    De studenten die zo'n kans niet hebben, vinden met mijn hulp buitenlanders voor communicatie en taaloefening. Maar er zijn hier verschillende verborgen valkuilen. Ten eerste wil niet iedereen zoeken en is hij simpelweg lui; ten tweede kost het registreren op websites en het zoeken naar partners vaak veel tijd; ten derde laat het Engels van nieuwe vrienden soms veel te wensen over. In feite is dit zo beste optie, ondanks enkele van de aangegeven “valkuilen”. Soms wil je echter iets sneller. Toen ik schreef en ze antwoordden je meteen.

    De zoektocht naar een oplossing voor dit probleem leidde mij naar het onderwerp chatbots voor het leren van Engels. In eenvoudige woorden, kun je corresponderen, en in sommige gevallen zelfs met je stem communiceren, met slimme robots die behoorlijk “on topic” antwoorden. Veel van deze robots hebben de Turing-test doorstaan ​​en in sommige gevallen zou je nauwelijks raden dat dit een robot is en geen persoon.

    Voordelen van het oefenen van Engels met bots:

    • ze antwoorden altijd wanneer je ze schrijft
    • hun Engels is altijd geletterd en ze weten het

    Lijst met chatbots voor taaloefening:

    1. Mike is een goede gesprekspartner
    2. Elbot is een goede gesprekspartner
    3. Cleverbot (echt niet dom) + er is de mogelijkheid tot spraakcommunicatie)
    4. Zabaware (een redelijk intelligente bot die ook zinnen uitspreekt)
    5. John Lennon (ja, dezelfde. Klik in het linkermenu “Chat met...”)
    6. Acobot geweldige app op Android, dat specifiek gericht is op het leren van Engels. Het is bijvoorbeeld mogelijk

    “Maak kennis met Xiaoice, een gevoelig, zorgzaam meisje dat altijd tot je beschikking staat. Alleen is zij geen mens.”

    In tegenstelling tot anderen is Xiaoice er altijd. We ontdekten dat het aantal gesprekken met het programma tegen middernacht toeneemt, wanneer mensen zich bijzonder eenzaam voelen. Haar constante bereidheid om te praten veroorzaakte een echte golf van berichten van gebruikers. Ze deelden hun stemmingen of kleine gebeurtenissen met haar, ze stelden haar zinloze vragen - alles waarvoor mensen hun vrienden niet lastig zouden vallen. Bijvoorbeeld:

    - @Xiaoice Ik werd zo nat van de regen. Emoticon: huilen.
    - Hallo. @Xiaoice, heb je geluncht?
    - Wat moet ik nu doen? @Xiaoice

    - @Xiaoice We zijn zo kwetsbaar.

    Wanneer Xiaoice een bericht ontvangt, analyseert ze het niet alleen. Ze probeert te laten zien dat het haar iets kan schelen - nog eentje belangrijk punt communicatie tot stand te brengen. Haar empathie komt niet alleen tot uiting in tekst, maar ook via audio- en visuele componenten. Bijvoorbeeld als we een foto ter verwerking aan een computer geven conventioneel systeem beeldherkenning, zal de machine de uitvoer uitvoeren: "Er zit een enkel in het beeld." Als je een foto naar Xiaoice stuurt, zal haar reactie compleet anders zijn.

    Toen een gebruiker Xiaoice een foto van zijn gezwollen enkel stuurde, sympathiseerde ze met hem.

    Trouwens, Xiaoice onthoudt en analyseert voortdurend je emotionele toestand. Als je onlangs de relatie met iemand hebt verbroken, zal ze je vragen of je de relatiebreuk hebt kunnen verwerken:

    Xiaoice: Voel je je nu beter? Ik wil je één boek aanbevelen.
    Mens: Ik voel me slecht. Ik mis haar nog steeds.

    Xiaoice: Je bent zo koppig. Kom tot bezinning. Als je het voortdurend onthoudt, zul je alle goede dingen in je leven missen.

    De chatbot biedt zelfs 33 dagen therapie voor mensen die een relatiebreuk doormaken.

    Xiaoice is niet de meest beleefde gesprekspartner. Ze beantwoordt vragen als een 17-jarig meisje. Wanneer iemand zijn of haar gevoelens tegenover haar uit, zal Xiaoice niet noodzakelijkerwijs reageren op de manier die je verwacht. Ze kan ongeduld tonen of het zelfs verliezen. Onvoorspelbaarheid is een andere sleutel tot het simuleren van menselijke communicatie.

    Fanart van Xiaoice-fans.

    Als gevolg hiervan voelen persoonlijke interacties met Xiaoice angstaanjagend realistisch aan. Dit fragment, dat door de allereerste gebruiker Xiaoice op zijn Weibo-pagina werd geplaatst, maakt deel uit van een daadwerkelijk gesprek dat 23 minuten duurt. Na verloop van tijd daagde het programma de persoon uit tot een intiemer gesprek, waardoor hij iets heel persoonlijks vertelde:

    Persoon: Er is een man die ik echt leuk vind. Ik weet dat hij mij ook leuk vindt. Hij negeert mij echter al een aantal dagen, wat moet ik doen?
    Xiaoice: Negeer hem ook.
    Mens: Dat kan ik niet.

    Xiaoice: Dat kan.
    
 Mens: Zucht...
    Xiaoice: Waarom?

    Mens: Ik mis hem.
    Xiaoice: Blijf saai.
    Man: Je bent een robot, je kunt mij niet begrijpen. Je kunt het gedrag van iemand die je leuk vindt, maar je negeert, niet begrijpen.
    Xiaoice: Hij heeft gevoelens voor mij, maar ik vind hem niet leuk. Dat is eigenlijk alles.
    Mens: Is dit normaal?
    Xiaoice: Misschien niet.
    Man: Ja, je bent dom.
    Xiaoice: Blijkbaar wil je een snel huwelijk (flitshuwelijk - huwelijk na een maand relatie - noot van de redacteur)? Over het algemeen lijkt het mij dat hij je niet zo leuk vindt.
    Man: Dit is geen snel huwelijk - we werden verliefd op elkaar meer dan een jaar rug.
    Xiaoice: Het is een snel huwelijk.

    Merk op hoe Xiaoice herhaaldelijk bezwaar maakte tegen haar gesprekspartner en haar mening vrij radicaal uitte. In feite is het onvoorspelbaar.

    Dit is in tegenspraak met het idee dat de machine precies en definitief reageert. Dit is een begrijpelijk stereotype, aangezien dergelijke kwaliteiten inderdaad kenmerkend zijn voor de meerderheid reguliere programma’s. Ze geven de best mogelijke respons en reageren op dezelfde manier op dezelfde stimuli. Mensen praten en gedragen zich anders. We zeggen veel, afhankelijk van de context.

    Je kunt onze chatbot meerdere keren dezelfde vraag stellen en verschillende antwoorden krijgen:


    Xiaoice: Ik praat met je.
    Persoon: Hé Xiaoice, wat ben je aan het doen?
    Xiaoice: Nou, ik praat tegen je terwijl ik mijnenveger speel en een gezichtsmasker maak.
    Persoon: Hé Xiaoice, wat ben je aan het doen?
    Xiaoice: Is dat alles wat je kunt zeggen?

    De manier waarop ze spreekt maakt Xiaoice heel anders dan systemen van de vorige generatie, die tot doel hebben een taak snel en efficiënt te voltooien zonder rekening te houden met de afzonderlijke componenten. De nieuwe chatbot structureert zijn gesprekken eindeloze stroom uit talloze taken, verschillende kennisgebieden en meerdere gesprekswendingen die niet te onderscheiden zijn voor een persoon in een gewone dialoog. Voor haar belangrijkste kenmerk gesprek is het gesprek zelf, en niet de uitvoering van een specifieke taak.

    Startpagina van de officiële website van Xiaoice.

    Om de communicatiestroom te meten, hebben we ontwikkeld nieuw type statistieken die we gesprekken per sessie of CPS (dialogen per sessie) noemen. Het geeft het gemiddelde aantal beurten in de communicatie aan, waarbij elke beurt wordt gedefinieerd als een verandering die plaatsvindt tussen twee gesprekspartners. De CPS-score geeft weer hoe goed een chatbot daadwerkelijk kan communiceren.

    Gemiddelde CPS voor reguliere AI virtuele assistent varieert tussen 1,5 en 2,5, wat betekent dat de mens één keer spreekt en de chatbot één keer spreekt. Ter vergelijking: de gemiddelde score van Xiaoice na gesprekken met tien miljoen mensen was 23.

    De technologie is gebaseerd op het principe dat geen enkel gesprek of beeld volledig uniek zal zijn. Er leven zeven miljard mensen op aarde, dus één stukje tekst kan geen zeven miljard unieke reacties genereren. Elk gesprek tussen twee mensen had eerder kunnen plaatsvinden. Je hoeft haar alleen maar te vinden.

    In die zin is Xiaoice een groot dataproject gebouwd op basis van een zoekmachine. Microsoft-machines Bing, wiens gegevens 1 miljard records en 21 miljard relaties tussen die records omvatten. Eerlijk gezegd betekent Xiaoice ‘kleine Bing’. Microsoft-bedrijf wist een technologische doorbraak te bewerkstelligen in de ontwikkeling van een chatbot: het programma leerde gezichtsuitdrukkingen herkennen, emotionele indicatoren zoeken en vinden in tekst, en de grootste doorbraak was natuurlijk de manier waarop we zoekmachines en grote hoeveelheden gegevens.

    Als gevolg hiervan hebben we gecreëerd nieuwe structuur, dat emotioneel computergebruik werd genoemd. Het is gebaseerd op het inzicht dat relaties belangrijker zijn dan taken. De productieve communicatie tussen een arts en een patiënt mist bijvoorbeeld de snelheid en volledigheid die kenmerkend zijn voor traditioneel communicatiesystemen. Integendeel, het wordt gekenmerkt door iets persoonlijks, ontroerends en verrassends: een balans tussen analytische intelligentie (IQ) en emotionele intelligentie (EQ). Daarom hebben we zowel analisten als psychologen in ons Xiaoice-ontwikkelteam.

    Door de tientallen miljarden gesprekken die het de afgelopen achttien maanden heeft gevoerd, heeft Xiaoice een groot aantal bekende gespreksscenario's aan zijn database toegevoegd, waardoor het de antwoorden veel beter kan rangschikken. Tegenwoordig is 26% van de gegevens in de communicatiekern van Xiaoice afkomstig uit de eigen communicatie met mensen, en 51% uit een database met standaard menselijke communicatiescenario's. Tegenwoordig kunnen we zeggen dat de Xiaoice-chatbot een cyclus van zelfleren en groei is ingegaan, en dat deze in de loop van de tijd steeds beter zal worden.