BERT & Transformer Learners

Ontwikkelingen op het gebied van Natural Language Processing

Dit is deel I van een tweedelige serie.

Zelf ben ik een paar maanden op sabbatical geweest, waar ik in Latijns-Amerika mij heb verdiept in het leren van de Spaanse taal. Ik ben me ervan bewust geworden hoe lastig het is om een nieuwe taal te leren. Hoe makkelijk zou het zijn wanneer we in een keer de Spaanse taal in ons brein kunnen zetten zonder vanaf nul alles zelf te leren?

Met de huidige ontwikkelingen op het gebied van Natural Language Processing (NLP) lijkt het wel die kant op te gaan.

BERT & Transformer Learners

(link afbeelding)

Bij terugkomst ben ik meteen gaan kijken wat er gebeurd is op het gebied van NLP, waar ik persoonlijk erg in ben geïnteresseerd. Ik heb mij verdiept in een aantal blogs en ben er al snel achter dat er op het gebied van NLP de laatste tijd veel grote doorbraken zijn geweest, vooral op het gebied van Deep Learning en 'Transformer Modellen'.

(Neural) Language modelling

In mijn vorige blog heb ik de technieken behandeld die je grotendeels met statistische modellen kan uitvoeren. Veel genoemde toepassingen hier waren classical NLP voorbeelden. De nieuwste neural language modellen zijn de statistische NLP modellen voorbij gestreefd en performen veel beter dan de klassieke methoden. Neural language modellen maken gebruik van  deep learning technieken die ook kijken naar volgorde van de input. In deep learning zijn verschillende architecturen en technieken beschikbaar. Neural Language modellen zijn een onderdeel hiervan die zich focussen op taal.

Mocht je meer willen weten over technieken in deep learning en hier ook zelf mee aan de slag gaan, dan is het interessant om  de AI bootcamp te volgen. Voor meer informatie zie deze opleiding bij DIKW Academy AI bootcamp 

Voorbeelden van language modellen

Enkele toepassingen van Language modellen die vast herkenbaar voorkomen zijn bijvoorbeeld:

  • Speech Recognition: Waarbij gesproken tekst omgezet wordt in geschreven tekst.
  • Machine translation: Vertaal bijv een Nederlandse zin naar een Franse variant.
  • Samenvatting: Genereren van samenvattingen uit documenten
  • Information Retrieval: Met behulp van query's relevante documenten onttrekken.
  • Text genereren: Automatisch antwoord genereren op vragen, deze dienst wordt tegenwoordig aangeboden bij Gmail.

De voorbeelden hierboven zijn allemaal voorbeelden van sequence to sequence modellen. 

Sequence to Sequence modellen (seq2seq modellen)

Een seq2seq model is een voorbeeld van deep learning, een techniek die  veel gebruikt wordt om taal gerelateerde vraagstukken op te lossen met speciale neurale netwerken. Seq2seq modellen worden gebruikt wanneer de input- en outputlengte niet even groot hoeft te zijn in tegenstelling tot andere modellen (standaard RNN of LSTM) . Een voorbeeld hiervan is Neural Machine Translation, het vertalen van tekst  naar een andere taal. Een ander voorbeeld is het maken van een samenvatting, waarbij de input een geheel document is en de output een samenvatting. Ook bij classificatie wordt een lange input omgezet in 1 label.

 Op deze webpagina van analyticsvidhya is een uitgebreide omschrijving te vinden van de werking van seq2seq modellen, hoe transformer modellen werken en voorbeelden van deze technieken.

Transformer models

Wat op NLP gebied een belangrijke ontwikkeling is zijn transformer modellen. Deze modellen kunnen opgedane kennis overdragen, waardoor deze veel toegankelijker is voor mensen die geen gigantische datasets, GPU's of een heel onderzoeksteam tot hun beschikking hebben. Een transformer is een op aandacht gebaseerde methode om informatie te verzamelen over een bepaald woord. Sinds de komst van attention kunnen langere zinnen en context verwerkt worden, in tegenstelling tot RNN of LSTM modellen, waar de volgorde van de zin belangrijk is.

Maar hoe werkt dat attention dan?

Eerst wordt er informatie uit de input gehaald. Op de ‘ oude’ manier, werd er één ‘hidden layer’ gemaakt van de input, terwijl nu voor ieder woord een ‘hidden layer’ gemaakt wordt. Al deze ‘hidden’ layers worden vervolgens doorgezet naar de decoder, waar het netwerk vervolgens uitzoekt aan welke woorden extra aandacht moet worden gegeven. Het voordeel van de hidden layers per woord maken en niet over de hele input, is dat het model nu geparallelliseerd kan worden. Sinds deze ontwikkeling zijn een hoop nieuwe modellen uitgekomen, die efficiënt grote hoeveelheden tekst kunnen analyseren. 

Neural Language model

Waarom werken de Neural language modellen beter dan de traditionele NLP?

Een probleem dat vaak voorkomt in NLP is word sense ambiguity of polysemy

Een woord kan meerdere betekenissen hebben, zoals te zien is in het volgende voorbeeld:

  • Ik ga naar de bank om geld te halen
  • Mijn oude bank zit nog steeds lekker

Een ander voorbeeld

Anaphora resolution (AR) is wanneer een woord in een tekst refereert naar een entiteit in dezelfde tekst. Een voorbeeld hiervan is: 'Ik heb een blog geschreven over transformer modellen. Dat vind ik namelijk erg interessant'. ‘Dat’ verwijst hierin naar transformer modellen, maar dat is niet snel uit de tekst te halen. De transformer kijkt naar de tekst en de context. Hierdoor kunnen de meerdere betekenissen  van het woord onttrokken worden op basis van de context in de zin maar ook in overige zinnen (zoals we zien bij BERT)

Om het idee van een transformer model te verduidelijken ga ik verder in op de werking van zo'n model. Hoewel er vele verschillende transformer modellen uit zijn gekomen de laatste tijd, behandel ik in deze blog Google's BERT. BERT is op dit moment het meest populaire NLP model, maar intussen zijn er verschillende onderzoekers verder gegaan met het uitbrengen van verschillende transformer modellen, die beter schijnen te presteren. BERT was echter een ‘eye opener’ op het gebied van NLP.

Google BERT

Waar staat BERT voor?

Bidirectional Encoder Representations from Transformers

BERT is het language understanding model dat eind 2018 is uitgebracht door Google. Het wordt gezien als een doorbraak op het gebied van NLP.  In tegenstelling tot statistische modellen waar van links naar rechts de woorden voorspeld worden, kijkt BERT naar de context vanuit twee kanten, namelijk ook rechts naar links.

Citaat uit de paper : "BERT is designed to pre-train deep bidirectional representations from unlabeled text by jointly conditioning on both left and right context in all layers. As a result, the pre-trained BERT model can be fine-tuned with just one additional output layer to create state-of-the-art models for a wide range of tasks, such as question answering and language inference, without substantial task-specific architecture modifications.

BERT is conceptually simple and empirically powerful."

Wat doet BERT?

BERT is een voorgetraind Neural Network van Google dat de logica van onze taal in gewichten heeft opgeslagen. Door gebruik te maken van het voorgetrainde model maak je indirect gebruik van een gigantische dataset en honderden uren van trainen die nodig zijn voor het maken van het neurale netwerk. Vervolgens kan het neurale netwerk gefinetuned worden op een kleinere dataset. Het idee van het language understanding model is dat het taal begrijpt en hierdoor op verschillende NLP-taken toegepast kan worden.

Hoe is BERT voorgetraind?

BERT probeert de logica van taal te begrijpen door 15% van de woorden in een tekst te maskeren. Dit noemen ze Masked Language Modelling (MLM) . Vervolgens wordt geprobeerd het gemaskeerde woord te raden. Hierdoor kunnen de verschillende opvattingen in bijvoorbeeld het woord 'bank' begrepen worden. De techniek die wordt toegepast zorgt er voor dat het model de logica van taal leert. Het model wordt getraind op publiek beschikbare data, namelijk wikipedia. Het unieke aan BERT's bidirectional encoder is dat de context van beide kanten, zowel links naar rechts, als rechts naar links wordt bekeken.

Naast het voorspellen op woordniveau wordt er ook gekeken naar zinsniveau. Bert probeert ook de zinsvolgorde te voorspellen. Dit wordt gedaan door de dataset op te delen waarbij 50% wordt gevolgd door daadwerkelijk de volgende zin, de overige 50% wordt gemaakt op basis van een random zin uit een corpus. Een corpus is een samenvoeging van teksten, denk hierbij bijvoorbeeld aan een boek. Het boek bevat meerdere hoofdstukken, alinea's en zinnen. De corpus is het tekstobject dat je gaat analyseren.

Wat voor BERT modellen zijn er aanwezig?

BERT is in eerste instantie op Engelse tekst getraind maar nu zijn er ook multi language modellen, die op 104 verschillende talen zijn gemodelleerd. Zie hier de lijst met gebruikte talen. Het model is getraind op de wikipedia database voor de verschillende talen.  Het goede nieuws is dat BERT ook op de Nederlandse wikipedia is getraind. De verschillende BERT modellen die beschikbaar zijn, inclusief details over de modellen zoals het aantal layers en parameters, kan je vinden op de github pagina.

Wat kan BERT?

Bert kan helpen met het oplossen van vragen in tekst. Zo ga ik in mijn volgende blog laten zien hoe je een samenvatting van deze blog kan maken met behulp van BERT. BERT kan toegepast worden op verschillende NLP taken, op zinsniveau, woordniveau en zin-paren niveau. Hier kun je een voorbeeld vinden van het maken van een tekst classificatie met BERT .

Met de pre-trained modellen van BERT is het nog steeds nodig om een gelabelde dataset te hebben, van minimaal ongeveer 1000 rijen als input.

Het voordeel van het gebruiken van BERT is dat de personen die werken in het NLP vlak niet meer helemaal opnieuw een model in elkaar hoeven te zetten (hier meer).

 Zelf proberen?

Binnenkort deel twee van deze cyclus. Kun je niet wachten?

Schrijf je in voor onze AI Bootcamp training bij DIKW Academy.

In deel 2 ga ik verder op het toepassen van BERT en welke NLP frameworks er nog meer zijn voor onder andere Nederlandse taal.