Gjennom høsten har jeg lest meg opp på mye forskjellig innen NLP og språkmodeller. Christina og jeg har diskutert en god del angående hva vi tenker er beste fremgangsmåte for å trene opp en chatbot til dialog. En naturlig første tanke er å mate modellen med dialog-basert data. Janne har samlet inn mye slik type data, undertekster til film og serier. Generelt innbefatter det samtaledata, altså dialog. Dette er et godt utgangspunkt, spesielt med tanke på at datainnsamling er tidkrevende, og et stort og kvalitetsrikt datasett er en forutsetning for en god språkmodell.
Men hvordan velge modell å trene denne dataen på i et mylder av mulige metoder og modeller/nevrale nettverk? Antall nettverksstrukturer er enorm. Recurrent neural networks (RNN), convolutional neural networks (CNN), feed-forward neural networks (FFNN), Transformers, support vector machines, listen er lang. Alle har de sine fordeler og ulemper.
FFNN kan håndtere data som ikke nødvendigvis kommer i riktig rekkefølge, og fungerer godt til å finne sammenheng eller mønster i slik data. Her flyter informasjon kun en vei, fremover. Altså er ikke slike nettverk spesielt egnet for dialog, der det er essensielt hvilken rekkefølge ordene har. Derimot behandler både RNN og CNN data sekvensvis og er derfor godt egnet til å trene på dialog. Men, disse nettverkene tar gjerne tid å trene opp da et og et ord går gjennom nettverket om gangen. I tillegg lagres det vektorer som skal holde på informasjon til tidligere tilstander, som skal fungere som et slags korttidsminne. Dette er recurrent-delen av metoden. Alt dette tar tid å gjøre beregninger på.

Dette er noe Transformers løser veldig godt. Transformers er en nettverksstruktur som både Christina og jeg har skrevet om i tidligere innlegg. Lære en maskin og snakke med kunstig intelligens og Dialog, en utfordring!. Transformers ble utviklet spesifikt for språktrening, men har bl.a. blitt brukt til bilde- og audiomodellering [1]. Transformers økende popularitet grunner i at dens arkitektur kan håndtere hele sekvenser med tekst på en gang. I motsetning til RNN kan flere ord jobbe seg gjennom nettverket parallelt. Dette minsker treningstiden betraktelig.
GPT og BERT er begge bygget på Transformers. GPT står for Generative Pre-trained Transformers og ser på input (f.eks. en setning) fra venstre til høyre. Altså den ser på sammenhengen av ord slik de er skrevet. BERT står for Bidirectional Encoder Representation for Transformers og ser på input begge veier (bidirectional). Denne modellen skal da fange opp kontekst ut fra både en venstre-til-høyre og en høyre-til-venstre orientering av en tekst. Noe annet som skiller disse modellene er hvordan de er trent opp. Som nevnt i forrige innlegg er BERT trent opp ved bruk av en teknikk kalt masked language modelling. Det går ut på å predikerer skjulte ord i en sekvens. Noen ord blir maskerte før det sendes inn og det blir da modellens oppgave å finne de ordene. Derimot er GPT trent opp til å predikere neste ord i en sekvens. Begge danner de seg “språkforståelse” gjennom treningsprosessen.
Min tanke var at GPT mulig fungerer bedre som tekstgenerator, men det er ikke nødvendigvis slik. Begge trenes de opp til å bli språkmodeller og kan teoretisk sett brukes til hva man vil. Måten de er trent opp på er mer en formalitet og påvirker ikke bruksområder.

Når det gjelder ferdigtrente språkmodeller var både Christina og jeg av den oppfatning at noe av det som virket mest lovende var BERT eller GPT2, men etter å ha snakket med en forsker tilknyttet språkgruppa ved UiO har vi innsett at en større teoretisk forståelse av ting er viktig. Og at ikke nødvendigvis BERT og GPT fungerer like godt til alt, de har mange utfordringer. Et stort spørsmål knyttet til de største språkmodellene er i hvor stor grad de har språkforståelse mot at de kun “husker” veldig godt og egentlig bare driver med kopiering. En spennende artikkel som i sommer vant pris for beste temaartikkel ved et av de største lingvistikkonferansene i verden handler om nettopp denne problemstillingen [2], [3]. Der argumenterer artikkelforfatterne at ettersom modellene kun blir presentert for språk i form av tekst, og ikke blir gitt noen spesifikk informasjon om hva meningen av teksten er, har de ingen forutsetning for å forstå meningen. Altså har de ingen idé om meningen av en tekst eller en forståelsen av språk. Derimot kan de få en enklere språkforståelse på den måten at de kan skjønne grammatiske regler som bøying av verb eller finne ordklasser (substantiv, verb, osv.). Men dype nevrale nettverk er mulig ikke nok for å lage modeller med en språkforståelse i sin rette forstand.
Til tross disse utfordringene, de store ferdigtrente modellene er de beste mulighetene vi har for øyeblikket. Et alternativ til de to modellene nevnt over er ELMo (Embeddings from Language Models). ELMo skiller seg ut fra disse andre i at den ikke er bygget på Transformers, men heller benytter seg av LSTM, et av de mer kjente typene av RNN. Den tar i bruk kontekstualisert ordrepresentasjon 1), noen som BERT og GPT også gjør. Men ELMo var den første modellen til å ta i bruk dynamisk embedding og var ganske banebrytende da den kom. ELMo finnes i en norsk variant, som er ganske interessant for oss da vi sliter med å finne gode, norske modeller.
Nå jobber forskerne på UiO med å trene opp en norsk språkmodell som skal ha samme struktur som BERT, en norsk BERT. De har så langt funnet og ferdig fremstilt data, da er det treningen av modellen som gjenstår. Dette er veldig interessant, da dette er noe Norge trenger. Og ettersom Christina og jeg begynner å få oversikt over hvordan BERT fungerer og kan taes i bruk er dette noe vi synes er utrolig spennende!
Generelt skjer det mye innen NLP og det virker som at dialog er et spesielt hot tema [4], [5]. Det forskes mye og produseres mange artikler på dette for øyeblikket. Drømmen er jo å ha så gode språkmodeller at de kan løse mange generelle problemer. Vår hypotese: en god, norsk språkmodell er nødvendig som grunnlag for en ren maskinlæringsstyrt chatbot, men vil også være et bedre utgangspunktet for andre oppgaver inne NLP. Som f.eks. sentimentanalyse eller topic modelling, men ennå viktigere; bedre kunne gjenkjenne spørsmål og henvendelser fra brukere av chatboter, noe som er spesielt viktig dersom en chatbot skal kunne svare relevant.
Kilder:
[1] Child, R., Gray, S., Radford, A., & Sutskever, I. (2019). Generating long sequences with sparse transformers. arXiv preprint arXiv:1904.10509. Hentet fra: https://arxiv.org/pdf/1904.10509.pdf
[2] Bender, E. M., & Koller, A. (2020). Climbing towards NLU: On meaning, form, and understanding in the age of data. In Proc. of ACL. Hentet fra: https://openreview.net/pdf?id=GKTvAcb12b
[3] Association for Computational Linguistics. (2020, 3. desember). Konferanse for lingvistikk og språkprosessering. Hentet fra https://acl2020.org/
[4] Mehri, S., Eric, M., & Hakkani-Tur, D. (2020). Dialoglue: A natural language understanding benchmark for task-oriented dialogue. arXiv preprint arXiv:2009.13570. Hentet fra: https://arxiv.org/pdf/2009.13570.pdf
[5] Liu, B., Tur, G., Hakkani-Tur, D., Shah, P., & Heck, L. (2018). Dialogue learning with human teaching and feedback in end-to-end trainable task-oriented dialogue systems. arXiv preprint arXiv:1804.06512. Hentet fra: https://arxiv.org/pdf/1804.06512.pdf
Wang, Y., Hou, Y., Che, W., & Liu, T. (2020). From static to dynamic word representations: a survey. International Journal of Machine Learning and Cybernetics, 1-20. Hentet fra: http://ir.hit.edu.cn/~car/papers/icmlc2020-wang.pdf
1) Med kontekstualisert ordrepresentasjon, eller dynamisk embedding, endrer ordvektorene seg ut fra konteksten ordene kommer i. Med statisk embedding har hvert eneste ord en satt vektorrepresentasjon og endres ikke ut fra sammenhengen av ordene.