Door Marc van Oostendorp
Het is al een tijdje geleden dat Google Translate in het nieuws was, maar deze week kwam Google weer met een fascinerend bericht.
Een paar jaar geleden hoorde je regelmatig over deze online-vertaalmachine: steeds weer werden nieuwe talen toegevoegd aan het systeem, en je kreeg ook het gevoel dat vertalingen inderdaad steeds beter werden. Maar op zeker moment stagneerde het: er kwamen nauwelijks talen bij, en de kwaliteit van de vertalingen tussen bestaande taalparen werd ook niet meer verhoogd.
Was dit het dan?
Moduletje
Deze week kwam het bedrijf met een blogpost en een wetenschappelijk artikel waarin het een nieuwe doorbraak aankondigde: een geheel nieuwe manier van vertalen, die Neural Machine Translation genoemd wordt en die gebruik maakt van technieken die de laatste jaren populair zijn geworden in de wereld van de kunstmatige intelligentie. De computer die een tijdje geleden de wereldkampioen Go versloeg (wat tot voor kort ondenkbaar was, want Go is de ingewikkeldste van alle bordspelen) maakt ook gebruik van dergelijke techieken.
De term neural in de nieuwe naam komt natuurlijk voort uit een metafoor. Zoals de ingewikkeldste gedachten in ons hoofd uiteindelijk volgens sommige neurowetenschappers voortkomen uit patronen van heel veel kleine cellen, neuronen, die een eenvoudig signaaltje sturen naar andere neuronen als ze zelf een eenvoudig signaaltje krijgen, zo kun je een computerprogramma maken die bestaat uit honderdduizenden heel kleine heel simpele moduletjes die niet veel meer doen dan even oplichten als ze voldoende worden aangestuurd door andere moduletjes; en met dat oplichten weer andere moduletjes doen oplichten.
Spelletjes Go
Gaandeweg groeien dan de verbindingen: als je neuron A aanraakt, begint neuron B ook al op te lichten, omdat A en B in het verleden meestal samenwerkten en de verbinding tussen die twee daardoor is gegroeid.
Op die wijze leert de computer dus patronen herkennen. Je geeft het een positie in het Go-spel die het nooit eerder heeft gezien, maar het herkent wel dat de linkerbenedenhoek er uit zag als ooit in spelletje X, en de rechterbovenhoek overeenkomsten vertoont met spelletjes Y en Z, en kan uit die combinatie zijn conclusies trekken
Belangrijk hierbij is dat de computer min of meer zichzelf leert wat de patronen zijn. De computerprogrammeur maakt al die kleine computerneuronen en hun verbindingen, maar zonder veel verwachtingen en voert het dan duizenden (tienduizenden, honderdduizenden) eerdere spelletjes Go, of Chinese en Engelse zinnen, op basis waarvan het programma ‘getraind’ wordt.
Instructies
Dit staat tegenover traditionele computerprogramma’s die vooral instructies uitvoeren: als je dit Chinese woord ziet, vervang je het door dat Engelse woord. De oude Google Translate werkte min of meer op die manier. De instructies zijn heel algemeen, en gebruiken een heleboel door de computer ter plekke uitgevoerde statistiek (als ik dit Engelse woord zie, is dat Chinese woord de meest waarschijnlijke vertaling),
Neurale netwerken zijn als techniek allang bekend, maar voor ingewikkelde problemen als het spelen van Go of het vertalen van teksten konden ze nog niet worden ingezet. Je hebt er gigantische netwerken voor nodig die je met héél veel gegevens moet voeden om ze een beetje te trainen en dan werken ze vervolgens ook nog eens langzamer dan traditionele programma’s die een lijst met instructies afwerken.
Maar kennelijk zijn er op dat vlak de afgelopen jaren de nodige barrières geslecht. Misschien zijn de computers sneller of de algoritmes om zo’n neuraal netwerk te bouwen efficiënter.
Demonstratie
In hun artikel leggen de taalingenieurs van Google uit dat ze ook nog wel wat technieken hebben bedacht waarop de netwerken beter met taal kunnen omgaan. Een probleem met alle op statistiek gebaseerde software is: wat doe je met woorden die maar heel zelden voorkomen en dus als het ware onder de statistische radar vallen? Google hakt zo’n woord (zeg, treitervlogger) voortaan op in stukjes (zeg, treiter en vlogger), die ieder vaker voorkomen en die het wél herkent, om dan te proberen in de andere taal ook weer de juiste manier te vinden om die begrippen aan elkaar te verbinden.
De auteurs zijn zelf ervan overtuigd dat deze nieuwe techniek een verbetering van 60% geeft op de resultaten van de nieuwe Google. Ik kan het helaas niet controleren, want het systeem werkt vooralsnog alleen voor vertalingen tussen het Chinees en het Engels en die eerste taal beheers ik niet. Wel vond ik elders op internet deze demonstratie van de universiteit van Montréal die werkt tussen het Engels en het Frans, en die werkt behoorlijk goed, zij het een beetje langzaam en alleen voor bepaalde gebieden van het leven (de internationale politiek).
Hulpmiddel
Er is ook reden om een beetje verontrust te zijn over dit succes. Een van de doelen van de computertaalkunde is altijd geweest: begrijpen hoe menselijke taal werkt. Door het na te bouwen, zou je beter inzicht krijgen in de manier waarop de mens het doet.
Maar dat doel moet je met dit soort toepassingen eigenlijk verlaten: de computer leert het systeem zichzelf en legt op basis daarvan dus een netwerk van verbindingen aan tussen alle interne ‘neuronen’, dat wel werkt maar zo groots en ingewikkeld is dat we het net zo min begrijpen als onze eigen hersens. We hebben dan dadelijk een veel beter hulpmiddel – maar we snappen er nog steeds niks van.
Therapy? zegt
Iedereen kan zich aanmelden om Google Translate te verbeteren, net als Wikipedia
Marc van Oostendorp zegt
Het is me niet duidelijk of dat nog zin heeft als dadelijk alle vertalingen volgens dit principe van Neural Machine Translation werken. Het was iets dat misschien gekoppeld was aan de oude manier van doen, waar het zin had om kleine stukjes te verbeteren. Maar we zullen zien.
(Overigens is er natuurlijk een verschil tussen Google en Wikipedia: de tweede is geen bedrijf.)
Andre Engels zegt
Een ander groot verschil tussen Wikipedia en Google Translate is dat het proces bij Wikipedia transparant is: Je bewerkt daadwerkelijk de tekst van de pagina, en ziet meteen wat het resultaat is. Bij Google Translate is je verbetering enkel een suggestie die vervolgens een black box ingaat, waarvan je enkel kunt hopen dat het tot nut geweest is.
Jaap K. Blom zegt
Ha, André! Mag ik de Verontrusten verzoeken om toestemming je uit te nodigen toe te treden, als Advocaat van de Dubbelkegel?
Het resultaat gaat natuurlijk ook zo’n zwarte doos in, maar het is wel beleefder tegenover de moderator en bovendien leuk voor jezelf de verbetering nog even in zijn context te presenteren.
Misschien tot ziens in Eindhoven?
Jelke Bloem zegt
Het lijkt mij dat het nog steeds zin heeft, namelijk om het neurale netwerkmodel van meer correcte training-data te voorzien. De vraag is inderdaad wel of menselijke correcties in aantal nog op kunnen tegen de enorme hoeveelheid data die tegenwoordig gebruikt wordt.
Andre Engels zegt
Ik ben het niet eens met de verontrusting aan het eind. Het lijkt mij dat een systeem als dit juist gebruikt kan worden om de taal te onderzoeken. De volgorde ligt anders dan totnogtoe (niet van taal naar model naar programma, maar van taal naar programma naar model), maar het bekijken van een netwerk als dit zou kunnen leiden tot geheel nieuwe concepten in de taalkunde, of tot nieuwe verbindingen tussen bestaande concepten.
Wat ik bedoel is dit: Er zijn heel veel neuronen, maar uiteindelijk hebben ze allemaal een bepaalde functie, en dus een bepaalde betekenis. Neuron 163423 zou bijvoorbeeld kunnen ‘vuren’ als het huidige woord een lidwoord is, neuron 11231923 als het mogelijk het einde van een bijvoeglijke bepaling is en neuron 252328 als de tekst een wetenschappelijke verhandeling is in een biologisch onderwerp. Door het systeem een groot aantal zinnen/teksten te geven, en te kijken wanneer welk neuron vuurt, kunnen we uitvinden welke functie een neuron heeft – wellicht kunnen we dat nog verfijnen, door bijvoorbeeld specifiek te kijken naar de neuronen die onderscheid maken tussen twee betekenissen van een bepaald homoniem. Dit zou dan op minstens 2 manieren gebruikt kunnen worden: Ten eerste, de ‘functie’ van een neuron zou gevonden kunnen worden als iets waarvan het belang totnogtoe niet werd ingezien door taalkundigen (bijvoorbeeld: stel dat Russische en Oekraïense steden duidelijk verschillende neuronen doen vuren, dan worden kennelijk teksten met Russische steden erin anders vertaald dan teksten met Oekraïense steden), ten tweede, er kunnen conclusies getrokken worden uit het bestaan of de sterkte van verbindingen tussen ‘neuronen’ (bijvoorbeeld: als er een duidelijke verbinding is tussen ‘het huidige woord is een lidwoord’ en ‘de tekst gebruikt formele taal’ dan worden er kennelijk in formele taal veel of juist weinig lidwoorden gebruikt).
Lucas Seuren zegt
Leert Google hiermee nog altijd zinnen in isolatie te vertalen? Want dat is nog heel wat anders dan een taal leren. Voorlopig denk ik dat we veel meer moeten weten voor we een computer volledig zelflerende kunnen maken.
Redactie Neerlandistiek zegt
Als ik het goed artikel goed begrijp, is de eenheid van vertaling inderdaad de losse zin. De auteurs hebben overigens niet de pretentie dat hiermee alle problemen zijn opgelost; ik neem aan dat het vertalen van hele fragmenten simpelweg nog té grote netwerken behoeft en té lange tijd duurt. Maar computers worden nog steeds sneller.
Lucas Seuren zegt
Het probleem is niet rekenkracht, maar uitingen in relatie tot andere uitingen is waar taal in het dagelijks leven zijn oorsprong vindt. Om dat adequaat te vertalen moet een computer meer kunnen dan adequaat rekenen, software moet leren waar het rekening mee moet houden; wat in de context is belangrijk.
Noor van Leusen zegt
” zo kun je een computerprogramma maken die bestaat uit…” ; “het computerprogramma dat…” is het dacht ik, of ben ik helemaal niet meer van deze tijd?
Jaap K. Blom zegt
(Even kijken hoeveel er verder gelezen wordt. Zal wel weer Poisson-verdeeld zijn: daar kun je op wachten.)