Het Elman Netwerk - Rijksuniversiteit Groningen

advertisement
Het Elman Netwerk
Joris IJsselmuiden
Rijksuniversiteit Groningen
Mei 2005
INLEIDING
Het verschijnsel tijd is een belangrijk onderdeel van veel menselijk gedrag, bij het verwerken
van geluid en bewegende beelden spelen tijd reeksen een grote rol. Het gebruik van tijd in
neurale netwerken is problematisch. Vaak wordt om het probleem heen gewerkt door de tijd
te parallelizeren. Meerdere tijdstappen worden dan tegelijk aangeboden aan het netwerk. Het
aantal input neuronen dat nodig zou zijn voor één input vector wordt dus vermenigvuldigd
met het aantal tijdstappen dat tegelijk wordt aangeboden. Deze methode heeft echter een
aantal nadelen.
Ten eerste is de oplossing niet biologisch plausibel. Het spatieel aanbieden van
temporele informatie gaat gepaard met buffering, in biologische systemen wordt niet van een
buffer gebruik gemaakt. Ten tweede moet elke input sequentie van dezelfde lengte zijn. In de
echte wereld wordt niet aan deze eis voldaan, woorden bijvoorbeeld, hebben een variabele
lengte. Het niet om kunnen gaan met inputs van variabele lengte is een probleem van neurale
netwerken in het algemeen, één van de redenen dat neurale netwerken voor lang niet alle
problemen geschikt zijn. Ten slotte is er nog een probleem dat zich het best laat illustreren aan
de hand van een voorbeeld. De sequentie (0, 1, 0, 1, 0, 0, 0, 0) is volgens bovenstaande
benadering een andere input dan de sequentie (0, 0, 0, 1, 0, 1, 0, 0), terwijl het in
werkelijkheid om dezelfde input gaat die twee stappen in de tijd verschoven is.
Vanwege deze problemen is het paralellizeren van de tijd niet de beste oplossing. Het
is beter om gebruik te maken van een geheugen waarin de toestand van het netwerk wordt
opgeslagen. Door dit geheugen in de volgende tijdstap weer aan te bieden als input, kan het
neurale netwerk met tijd omgaan. In het artikel van Elman (1990) [1] wordt een neuraal
netwerk beschreven waarin een dergelijk geheugen gebruikt wordt. Elman besteedt in dit
werk speciale aandacht aan natuurlijke taal verwerking. Het artikel dat voor u ligt is voor een
groot deel gebaseerd op het artikel van Elman (1990) [1].
NETWERKEN MET GEHEUGEN
Bij de geparallelizeerde representatie van tijd die hierboven is beschreven, wordt tijd
behandeld als een expliciet onderdeel van de input. Een andere benadering is om de input
vectoren één voor één aan te bieden en dynamische eigenschappen aan het netwerk toe te
voegen die reageren op tijd reeksen. Dit kan op vele manieren en er is veel onderzoek naar
gedaan. Eén van de meest succesvolle methoden is die van Jordan (1986) [2].
Het Jordan netwerk behoort tot de recurrente netwerken. Deze netwerken danken hun
naam aan het feit dat ze beschikken over verbindingen die tegen de normale richting in lopen.
Een ander netwerk dat tot deze groep behoort is het Elman netwerk. Beide netwerken zijn
gebaseerd op het multi layer perceptron, ze hebben naast de hidden layer en de output layer
een zogenaamde context layer. Het belangrijkste verschil tussen Jordan en Elman netwerken
is hoe de recurrente verbindinge lopen. Bij Jordan lopen ze van de output layer naar de
context layer en bestaat het geheugen uit de vorige output, bij Elman lopen ze van de hidden
layer naar de context layer en vormt de vorige interne toestand van het netwerk het geheugen.
De recurrente verbindingen zijn niet onderhevig aan leren.
In Figuur 1 is een Elman netwerk weergegeven met 2 inputs, 2 output neurons, 4
hidden neurons en 4 context neurons. De standaard taak van Elman netwerken bestaat uit het
voorspellen van de volgende input, daarom is het aantal output neurons gelijk aan het aantal
inputs. Bovendien is het aantal context neurons gelijk aan het aantal hidden neurons, omdat de
context layer steeds de vorige toestand van de hidden layer moet opslaan.
output layer
hidden layer
context layer
Figuur 1: Een Elman netwerk met 2 inputs en 4 hidden neurons.
Op het eerste gezicht lijkt het alsof er slechts een geheugen is bereikt van één tijdstap,
maar door de recurrente eigenschappen bestreikt het geheugen in werkelijkheid meerdere
tijdstappen. Dit is makkelijk in te zien als je het netwerk gedurende een aantal tijdstappen
observeert. Het netwerk gedraagt zich als volgt.
Op tijdstip 0 wordt input 0 aangeboden (een vector van nullen en enen). Deze input
bepaalt samen met de context layer activaties in de hidden layer. De outputs van de context
neurons zijn geïnnitialiseerd op 0,5, omdat er geen verleden is. De output van de hidden layer
wordt doorgegeven aan de output layer. Bovendien wordt de output van de hidden layer
gekopiëerd naar de context layer via één-op-één verbindingen, er is van hidden naar context
dus geen sprake van full connectivity. Vervolgens vindt er een back propagation leerstap
plaats, zoals in een multi layer perceptron. Naast de gewichten tussen input en hidden layer en
de gewichten tussen hidden layer en output layer, worden ook de gewichten tussen context
layer en hidden layer aangepast.
Op tijdstip 1 wordt input 1 aangeboden en het proces herhaalt zich. De input en de
context bepalen de activatie van de hidden layer. Dit maal is er wel een verleden in de context
layer aanwezig, de hidden layer van de vorige tijdstap is immers opgeslagen. De interne
toestand van het netwerk wordt bepaald door de interne toestand in de vorige tijdstap, dus de
output is ook afhankelijk van de vorige interne toestand. De hidden layer wordt weer
2
gekopiëerd naar de context, maar let op, daar zit ook activatie bij uit tijdstip 0, dit is waardoor
het geheugen meerdere tijdstappen bestreikt. Er vindt weer een leerstap plaats en het hele
proces herhaalt zich voor iedere input die wordt aangeboden.
EXPERIMENTEN
Het XOR probleem
Om de werking van het Elman netwerk te begrijpen is het goed om te beginnen met een
eenvoudig probleem. Elman heeft hiervoor het XOR probleem in tijd reeksen gegoten. Elke
tijdstap representeert de waarheidswaarde van achtereenvolgens de linker operand, de rechter
operand en de bijbehorende waarheidswaarde van de XOR operator. Er wordt steeds een
enkel bit aangeboden en het doel is om de volgende input te voorspellen. Het netwerk heeft 1
input, 2 hidden neurons, 2 context neurons en 1 output neuron.
Een voorbeeld van een input sequentie is | 0, 0, 0 | 1, 0, 1 | 1, 1, 0 | 1, ... Het netwerk
heeft geen kennis van het feit dat de input uit groepjes van drie bestaat, laat staan dat het XOR
triples zijn (De verticale strepen in het voorbeeld zijn geen onderdeel van de input). De derde
input is steeds te voorspellen door een getraind netwerk, die wordt namelijk deterministisch
bepaald door de eerste twee inputs. De error is steeds hoog bij het voorspellen van het eerste
en tweede bit, omdat die willekeurig gegenereerd zijn, de error is laag bij het voorspellen van
het derde bit.
Letter sequenties
XOR triples kun je zien als woorden van drie letters waar de derde letter wordt bepaald door
de eerste twee. Het geheugen van het netwerk hoeft slechts twee tijdstappen te onthouden in
zijn gewichtswaardes en er zijn maar vier mogelijke input sequenties.
In natuurlijke taal zijn er meer dan twee mogelijke letters, waardoor een input vector
langer is. De woorden zijn van variabele lengte en het netwerk moet een geheugen hebben
van meer dan twee tijdstappen. Bovendien is er geen sprake van determinisme, er zijn
meerdere letters mogelijk na een bepaalde sequentie. Het volgende experiment dat Elman
gedaan heeft, komt een stap dichter bij natuurlijke taal, al is er vanaf daar nog een lange weg
te gaan.
De input bij dit tweede experiment is gegenereerd door 1.000 medeklinkers uit de
verzameling {b, d, g} in willekeurige volgorde achter elkaar te zetten. Daarna wordt elke
medeklinker voorzien van een vast patroon klinkers, zo ontstaan de woorden {ba, dii, guuu}.
De volgorde waarin deze 1.000 woorden voorbij komen is dus willekeurig, maar de
medeklinker bepaalt deterministisch de rest van het woord. Een mogelijke input sequentie is
diibaguuubadiidiiguuu... Nu rest ons nog het representeren van elke letter afzonderlijk. Een
letter is een vector met 6 binaire componenten: (consonant, vowel, interrupted, high, back,
voiced) Elke component staat voor een eigenschap van de letter, zo is de eerste component 1
en de tweede component 0 bij alle medeklinkers.
Het netwerk bestaat uit 6 inputs, 20 hidden units, 20 context units en 6 output units.
Om het netwerk te trainen worden één voor één de letters aangeboden, de taak van het
netwerk is om steeds de volgende letter te voorspellen. Door de output vector te vergelijken
met de daadwerkelijke volgende letter, kan leren door backpropagation plaatsvinden. In de
trainings procedure wordt 200 keer de semi-random sequentie van 1.000 letters doorlopen. Na
afloop van deze procedure wordt het netwerk getest op een nieuwe, soortgelijke sequentie.
Een stuk van de error curve van de test fase is weergegeven in Figuur 2.
Wat meteen opvalt is de op en neer gaande vorm van de curve, dit gedrag zagen we
ook bij het XOR experiment en het is opnieuw eenvoudig te verklaren. De klinkers zijn voor
3
het netwerk makkelijk te voorspellen, omdat die direct bepaald worden door de medekliner
die eraan vooraf gaat. Tijdens het leren zijn de gewichten zo ingesteld dat het netwerk de
volgende letter juist voorspelt, omdat elke input zich aan de hierboven beschreven
grammaticale regels houdt. Wat het netwerk niet kan voorspellen zijn de medeklinkers. De
volgorde van de medeklinkers is willekeurig en tijdens het leren heeft het netwerk hier dus
geen regelmaat in kunnen ontdekken. Dit experiment zou je ook door mensen kunnen laten
doen, zonder ze van te voren te vertellen over de grammatica waar de letter sequenties zich
aan houden. Na een leer fase zouden mensen de grammatica zelf ontdekken en tijdens de test
fase een error grafiek van dezelfde vorm produceren. Als een dergelijk experiment dezelfde
resultaten oplevert als het experiment van Elman, zou dat pleiten voor de biologische
plausibiliteit van zijn systeem.
In Figuur 2 is de error over de hele output vector geplot, je zou ook kunnen kijken
naar de error van de 6 losse componenten van de vector. Met deze afzonderlijke errors is iets
interessants aan de hand, ze zijn namelijk verschillend en dat is als volgt te verklaren. Elke
component representeert een andere eigenschap van de letters. Component 1 geeft aan of een
letter een medeklinker is of niet. Het netwerk “weet” hoeveel klinkers er moeten komen na
elke medeklinker en voorspelt component 1, consonant, zeer nauwkeurig, waar de error over
de hele vector een hoge waarde heeft (word-onset). Wat het netwerk niet kan voorspellen is
welke medeklinker het is. Component 6 bijvoorbeeld, of de letter stemhebbend is, vertoont
een error gedrag van dezelfde vorm als de gehele vector.
g
g
d
RMS error
d
b
i
i
u
u
a
i
a
u
i
u
u
u
input #
Figuur 2: Grafiek van de root mean square error over de hele output vector in de
letter voorspellingstaak. De labels geven aan wat de correcte output is (volgende
letter). Waarden op de y-as tussen 0 en 1, 6D output.
Woorden ontdekken
Het derde experiment dat in het artikel van Elman [1] behandeld wordt doet nog een stap
richting echte natuurlijke taal verwerking, maar het gaat nogsteeds alleen om het voorspellen
van de volgende letter, een taak die nog niet echt in de buurt komt van het leren van een taal.
Het belangrijkste verschil met het hierboven beschreven experiment is dat het lexicon nu
4
RMS error
bestaat uit 15 woorden uit het Engels. Elman gebruikt voor het genereren van de input een
programma dat met deze 15 woorden semi-willekeurige zinnen maakt van 4 tot 9 woorden.
De volgorde van de woorden is niet volkomen willekeurig, het programma houdt zich qua
woordvolgorde aan de Engelse grammatica. Elman gebruikt 200 van dit soort zinnen om het
netwerk te trainen, ze vormen een aaneengesloten sequentie van 4963 letters (1270 woorden),
waarbij elke letter wordt gerepresenteerd door een willekeurig gekozen 5-bits vector. Het
netwerk heeft dus 5 inputs en 5 output neuronen, verder bestaat het uit 20 hidden units en 20
context units. Tijdens het trainen, wordt de hele letter sequentie 10 keer aangeboden.
Het testen gebeurt op een andere sequentie die op dezelfde manier gegenereerd is. In
Figuur 3 is de RMS error op een stuk van de test sequentie weergegeven, we zien dezelfde op
en neer gaande beweging als in Figuur 2, de verklaring van de curve is hier iets
ingewikkelder, vanwege de hogere complexiteit van het probleem. Het belangrijkste verschil
is dat nu de rest van een woord niet meer deterministisch wordt bepaald door de eerste letter.
De error is het hoogst bij de eerste letter van elk woord, want na het einde van een
woord zijn er meerdere opvolgers mogelijk. Na de word-onset daalt de curve, de tweede letter
van een woord is beter te voorspellen dan de eerste, de derde is beter te voorspellen dan de
tweede, enzovoort. De verklaring hiervoor is eenvoudig,: Hoe meer letters je van een woord
kent, hoe groter de kans dat je de volgende letter ook weet. Er zijn bewust woorden in het
lexicon opgenomen waarvan het begin op elkaar lijkt.
Als we proefpersonen hetzelfde zouden laten doen, krijgen we waarschijnlijk
eenzelfde vorm in de error curve te zien, net als bij het vorige experiment. Opnieuw zijn de
resultaten van het Elman netwerk natuurgetrouw.
ma ny y e a r s a g o a b oy a n d g i r l l i v ed b y t h e s e a th e y p l a y e d h a p p i l y
input #
Figuur 3: Grafiek van de root mean square error over de hele output vector in de
letter-in-woord voorspellingstaak. De labels geven aan wat de correcte output is
(volgende letter). Waarden op de y-as tussen 0 en 3,5, 5D output.
Woordvolgordes voorspellen
In plaats van het leren van letter-volgorde zijn we nu geïnteresseerd in woord-volgorde. In
natuurlijke taal zijn er allerlei beperkingen op de volgorde waarin woorden in een zin mogen
5
staan. Deze beperkingen zijn per taal verschillend, maar Chomsky (1957) heeft aangetoond
dat alle talen zich “onder water” aan een universele grammatica houden, ook al is de
uiteindelijke woordvolgorde verschillend per taal. Inmiddels is er een nieuwe speler op het
taal-toneel verschenen, de optimality theory. Deze wetenschappelijke ontwikkeling lijkt op de
Newtoniaanse natuurkunde die verdrongen wordt door relativiteitstheorie en quantum
mechanica, omdat de Newtoniaanse natuurkunde, net als de Chomskiaanse taal-theorie,
bepaalde verschijnselen niet kan verklaren. Dat wil niet zeggen dat de theorieën van Newton
en Chomsky ineens hun wetenschappelijke waarde zijn verloren.
De vraag die Elman probeert te beanwoorden is of een PDP netwerk (parallel
distrubuted processing) een (universele) grammatica kan leren, of dat daar symbolische
representaties voor nodig zijn. Aangezien ons brein gebruik maakt van parallel
gedistribueerde verwerking moet het in principe mogelijk zijn. De nadruk van dit experiment
ligt dus op de biologische plausibiliteit.
Voor de input wordt weer gebruik gemaakt van een zinnen-generator. Een zin bestaat
uit twee of drie woorden en er zijn 29 verschillende woorden, onderverdeeld in 13 klasses
(Tabel 1). Deze klasses worden samen met een set sentence-templates (Tabel 2) gebruikt om
10.000 semi-willekeurige zinnen te genereren. In dit experiment worden hele woorden aan het
netwerk aangeboden in plaats van letters. Een woord bestaat uit een 29-bits vector, waarvan
steeds maar één bit tegelijk aan is. Bijvoorbeeld woman:
(00000000000000000000000000010). Deze omslachtige representatie is gekozen om te
zorgen dat er geen correlatie bestaat tussen de verschillende woorden, alle vectoren staan
loodrecht op elkaar in de 29 dimensionale ruimte. De vector bevat dus geen informatie over
welke woorden op elkaar lijken qua letters of qua betekenis, het netwerk moet namelijk zelf
dit soort correlaties ontdekken door te trainen op de testset. De zinnen-generator maakt 10.000
zinnen (27.534 woorden) waarin geen grenzen zijn aangegeven tussen de verschillende
zinnen. Het netwerk bevat 29 inputs en 150 hidden units en het wordt getraind door 6 maal de
sequentie van 27.534 29-bits vectoren te doorlopen.
Categorie
voorbeeld
NOUN-HUM
man, woman
NOUN-ANIM
cat, mouse
NOUN-INANIM
book, rock
NOUN-AGRESS
dragon, monster
NOUN-FRAG
glass, plate
NOUN-FOOD
Cookie
VERB-INTRAN
think, sleep
VERB-TRAN
see, chase
VERB-AGPAT
move, break
VERB-PERCEPT
smell, see
VERB-DESTROY
break, smash
VERB-EAT
eat
Tabel 1: Woord categoriën met voorbeelden die gebruikt worden door de zinnen-generator.
Het netwerk heeft geen kennis van deze indeling.
6
WOORD 1
WOORD 2
NOUN-HUM
VERB-EAT
NOUN-HUM
VERB-PERCEPT
NOUN-HUM
VERB-DESTROY
NOUN-HUM
VERB-INTRAN
NOUN-HUM
VERB-TRAN
NOUN-HUM
VERB-AGPAT
NOUN-HUM
VERB-AGPAT
NOUN-ANIM
VERB-EAT
NOUN-ANIM
VERB-TRAN
NOUN-ANIM
VERB-AGPAT
NOUN-ANIM
VERB-AGPAT
NOUN-INANIM
VERB-AGPAT
NOUN-AGRESS
VERB-DESTROY
NOUN-AGRESS
VERB-EAT
NOUN-AGRESS
VERB-EAT
NOUN-AGRESS
VERB-EAT
Tabel 2: Templates die gebruikt worden door de zinnen-generator.
WOORD 3
NOUN-FOOD
NOUN-INANIM
NOUN-FRAG
NOUN-HUM
NOUN-INANIM
NOUN-FOOD
NOUN-ANIM
NOUN-INANIM
NOUN-FRAG
NOUN-HUM
NOUN-ANIM
NOUN-FOOD
De output van een goed getraind netwerk heeft output-componenten die recht
evenredig zijn met de frequenties van voorkomen van een woord (29 componenten voor 29
frequenties van woorden), gegeven de zin tot nu toe, terwijl de target-outputs vectoren zijn
waarvan één bit aan staat en de rest uit.Voor het trainen is dat geen probleem en wordt de
output vector gewoon vergeleken met de letter die het netwerk had moeten voorspellen. Voor
de prestatiemaat is deze vergelijking echter niet zinvol. Daarom is er een andere methode
gebruikt. De output vector wordt vergeleken met een vector die de frequentie van elk woord
weergeeft, gegeven de zin tot nu toe. Deze vector is dus een Bayesiaanse kansverdeling,
verkregen uit het training corpus (10.000 zinnen), de som van de componenten van deze
vector is 1, de som van de componenten van de output vector niet. Het netwerk presteert goed
als elke output vector recht evenredig is met de Bayesiaanse kans vector, beide vectoren
moeten dus de zelfde richting hebben, maar niet dezelfde lengte. De RMS error op de testset
is gemiddeld 0,053, met een standaard deviatie van 0,100. De error is het hoogst bij het
voorspellen van het eerste woord van een zin.
Naast de vergelijking van de output van het netwerk met de statistiek van de training
set heeft Elman de interne toestanden (hidden layer activatie) van het netwerk geanalyseerd.
De resultaten van deze analyse laten zien dat de interne representaties van de woorden
hierarchisch gerangschikt zijn op een zeer natuurlijke manier. Met behulp van hierarchische
cluster analyse is Figuur 4 tot stand gekomen, de natuurlijke indeling spreekt voor zichzelf.
Om helemaal uit te wijden hoe dat werkt, gaat te ver, het komt erop neer dat hidden layer
activaties die veel op elkaar lijken, dicht bij elkaar zitten in de boom. Het netwerk heeft
interne representaties ontwikkeld voor de input vectoren die feiten weerspiegelen over de
mogelijke woordvolgordes in de training corpus. Er is bijvoorbeeld een klasse van inputs,
namelijk VERB-*, die vaak gevolgd worden door een andere klasse, namelijk NOUN-*.
7
Figuur 4: De hierarchisce structuur van de interne representatie
van elk woord.
Elman heeft zijn hierarchisce cluster analyse tot in het extreme doorgevoerd, in Figuur
5 is het resultaat hiervan te zien. De bladeren van de boom zijn nu woorden in een bepaalde
context. Een woord heeft namelijk meerdere interne representaties, één voor elke context
waarin het woord kan voorkomen, de context layer staat immers ook in verbinding met de
hidden layer. In Figuur 4 zijn de woorden de bladeren van de boom, maar de vertakking gaat
in werkelijkheid verder. De verdere vertakking van de woorden “boy” en “girl” is in Figuur 5
weergegeven. Deze twee woorden behoren tot dezelfde categorie en ze komen dus voor in
dezelfde zinnen. De verdere vertakking van de hierarchische structuur is voor deze twee
woorden ongeveer hetzelfde. Dit resultaat is gunstig voor de biologische plausibiliteit van het
Elman netwerk.
8
Figuur 5: De verdere vertakking van de interne representaties
van de woorden in verschillende context.
CONCLUSIES
Door het onderzoek van Elman, is de methode van paralellizeren (spatieel aanbieden) van
temporele informatie verder ontkracht. Het is niet alleen onnatuurlijk, ook uit een engineering
perspectief is het niet de beste oplossing. Door gebruik te maken van een context layer
kunnen input sequenties van verschillende lengte verwerkt worden en wordt er geen gebruik
gemaakt van buffering.
Verder blijkt uit het laatste experiment over woordvolgorde dat een Elman netwerk de
klasse kan voorspellen van het woord dat komt, maar niet het woord zelf. Dit resultaat is naar
verwachting, omdat er in het training corpus steeds meerdere opvolgers mogelijk zijn. Het
resultaat is bovendien natuur getrouw.
9
In praktijk is het Elman netwerk niet echt interessant voor engineers. In het domein
van de natuurlijke taalverwerking winnen de hidden-Markov-modellen het van de neurale
netwerken. Het Elman netwerk bereikt wel zijn doel als onderzoeksmiddel. Met het Elman
netwerk kunnen voorspellingstaken uitgevoerd worden, om vervolgens de resulaten te
vergelijken met die van proefpersonen. De belangrijkste conclusie uit het werk van Elman, is
dat sub-symbolische systemen hierarchische structuren en verwachtingspatronen kunnen leren
uit temporele informatie.
REFERENTIES
Dit artikel is hoofdzakelijk gebaseerd op de volgende bron:
[1] Elman
J.L. (1990) Finding structure in time. Cognitive science 14, 179 – 211
Naast deze hoofdbron is gebruik gemaakt van het volgende:
[2] Jordan M.I. (1986) Serial order: A parallel distributed processing approach (Tech. Rep.
No. 8604). San Diego: University of California, Institute for Cognitive Science
[3] “Elman net” in Google, Google scholar en Google image search
10
Download