Språk er komplisert. Det består gjerne av et stort vokabular, har grammatiske regler og regler for ordstilling. Norsk f.eks. er hva man kaller et SVO-språk. Det vil si at man bygger opp en setning ut fra regelen: subjekt – verb – objekt. Andre språk har andre syntaktiske regler. I tillegg kommer ting som forkortelser og initialer, symboler og tall. Det er mildt sagt kompliserte greier.
Derfor er AI og maskinlæring på tekstbasert data så spennende. NLP (Natural Language Processing) er noe av det mest hotte som skjer for tiden. Lenge har store selskaper som Google, Facebook og OpenAI kjempet om å ha de største og beste språkmodellene, for engelsk. Fokuset på andre språk er forståelig nok ikke like stort. I Innovatec tenker vi at Norge ikke burde henge langt bak det som skjer i verden med tanke på digitalisering og språkutvikling. Litt patriotisk, men det er et poeng å holde følge. Konsekvensen blir mangel på viktig kompetanse. Dersom vi gjør oss avhengig av oversettelsesmodeller fra engelsk til norsk har vi mistet en del av selvstendigheten.
Språkmodeller brukes til mye; chatboter, automatiseringsprosesser, søkemotorer, dataanalyse, oversettelse. Mulighetene er mange. Og de har åpnet opp for å løse gamle problem mer effektivt og presist. F.eks. er automatisert saksbehandling med bruk av maskinlæring på vei inn i norske, offentlige institusjoner. Chatboter er noe vi i økende grad møter på, bl.a. har Nav en chatbot med navnet Frida. Som Christina nevnte i forrige innlegg, disse er gjerne regelstyrte. Men ofte har de en trent språkmodell i grunn. Avhengig av behovet varierer slike modeller i kompleksitet. Og som nevnt, språk er komplekst. Se f.eks. på setningen
Anna har en hund, den er glad i å gå tur.
En god modell må forstå at den i denne sammenheng refererer til hunden og at det er den som liker tur. Måten mange modeller løser dette i dag er ved bruk av attention mekanismen. Det gjør modellen oppmerksom på omgivelsene sine, ikke bare ordene den er nabo med i en setning.
https://colab.research.google.com/github/tensorflow/tensor2tensor/blob/master/tensor2tensor/notebooks/hello_t2t.ipynb#scrollTo=OJKU36QAfqOC
Vårt prosjekt er å lage en chatbot med kognitiv respons, her er altså dialog hovedfokuset. Dette er et ambisiøst prosjekt, men derimot ikke noen grunn til å la være å prøve. Det finnes i dag mange gode og komplekse språkmodeller. For de som har testet ut OpenAI sin GPT-3 kan nok bekrefte at dagens modeller har kommet langt i å danne en kompleks språkforståelse. Måten disse modellene trenes opp på skiller seg ikke langt fra hvordan vår egen hjerne lærer nye ting. Nevrale nettverk er nettopp inspirert av hjernen. Problemet er bare at de ikke består av like mange komponenter som vi gjør. Estimater på antall nevroner i menneskehjernen er på røflig 86 milliarder [1]. Tidligere i år annonserte Microsoft at de har trent opp en modell på 17 milliarder parametre, da snakker vi størrelsesorden nevroner i vårt eget maskineri [2].
Dog fungerer mange av disse bedre på noen oppgaver enn andre. Huggingface’s ferdigtrente modell, BERT, er ganske allsidig. Dette er en Transformers-basert modell med 340 millioner parametre. Den har både en generell språkmodell trent ved bruk av masked language modelling og en next sentence prediction-modell i grunn. I tillegg reklamerer skaperne av BERT med dens enkle muligheter for fine-tuning på spesifikke oppgaver. Som f.eks. spørsmål/svar. Måten dette brukes på er å sende inn et spørsmål sammen med en sekvens med tekst der svaret inngår. Oppgaven til BERT er da å regne ut sannsynligheten for at et ord i denne sekvensen er starten på svaret på spørsmålet, deretter regner den seg til sannsynligheten for at et ord i sekvensen er slutten på svaret. Dette er en oppgave BERT løser veldig bra [3].
Så hva er det som gjør dialog så ekstra vanskelig å lære. I tradisjonelle spørsmål/svar-oppgaver har gjerne spørsmålet en fasit. På spørsmål om hvem som var den 44. presidenten i USA er det kun ett riktig svar. Derimot kan det være uendelig mange “rette” svar på spørsmål som: “Hvordan går det med deg?” eller “Hva gjorde du i går?”. En dialog er jo ikke nødvendigvis fylt med spørsmål og svar heller, men formet som en samtale. Hva skal en chatbot respondere på utsagn som “Det skal visst regne i dag.”?
Løsningen på slike problemstillinger er gjerne generative modeller. Altså at de prøver å lære seg en sannsynlighetsdistribusjon som representerer ordrommet og hvilke ord som ofte dukker opp sammen. De predikerer neste ord i en setning ut i fra statistikk. Utfordringen er å ikke havne i en loop. Dette er fort utfallet når statistikk er det som styrer utviklingen av ord i en tekst.
En chatbot som kun svarer det samme hele tiden er ikke særlig interessant. Generelt dukker det opp mange problemstillinger og utfordringer når man jobber med chatboter og maskinlæring, men kanskje ennå flere mulige løsninger. Mulighetene foran oss er mange. Dette er en utfordring i seg selv, hvordan velge en vei når de går i alle mulig retninger. Men NLP er et utrolig spennende felt med et enormt potensiale, vi er glad for å kunne ta del i det!
[1] Azevedo, F. A., Carvalho, L. R., Grinberg, L. T., Farfel, J. M., Ferretti, R. E., Leite, R. E., Jacob Filho, W., Lent, R., & Herculano-Houzel, S. (2009). Equal numbers of neuronal and nonneuronal cells make the human brain an isometrically scaled-up primate brain. The Journal of comparative neurology, 513(5), 532–541. https://doi.org/10.1002/cne.21974
[2] Rosset C. (2020, 13. Februar). Turing-NLG: A 17-billion-parameter language model by Microsoft [Bloggpost]. Hentet fra https://www.microsoft.com/en-us/research/blog/turing-nlg-a-17-billion-parameter-language-model-by-microsoft/
[3] Devlin, J., Chang, M. W., Lee, K., & Toutanova, K. (2018). Bert: Pre-training of deep bidirectional transformers for language understanding. arXiv preprint arXiv:1810.04805.