-
Notifications
You must be signed in to change notification settings - Fork 1
/
techniek_machine_learning.html
227 lines (222 loc) · 18.4 KB
/
techniek_machine_learning.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="css/normalize.css" rel="stylesheet">
<link href="css/ai.css" rel="stylesheet" type="text/css" />
<link href="css/menus.css" rel="stylesheet" type="text/css" />
<link href="css/treeview.css" rel="stylesheet" type="text/css" />
<title>Kunstmatige Intelligentie</title>
<script src="treeview.js"></script>
</head>
<body id="technieken" onload="initTreeview()" >
<a name="Inleiding" style="counter-reset: subsection 1;"></a>
<header class="paragraaf titel">Machine Learning</header>
<section>
<h4 class="pad" id="path_lead"><a href="index.htm" target="_parent">Kunstmatige Intelligentie</a>/<a href="inleiding_technieken.html" target="_parent">Technieken</a>/Machine Learning</h4>
<div style="height: 100px;">
<div style="float:right;">
<a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/4.0/">
<img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a>
<br />This work is licensed under a
<br />
<a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike
4.0
<br />International License</a>.
</div>
</div>
</section>
<div class="navbar">
<div class="centreer">
<a href="#Inleiding">Machine learning</a>
<a href="#onoff">Online en offline leren</a>
<span class="dropdown">
<div class="dropbtn" onclick="window.location='#categorien'">Categorieën machine learning ▼</div>
<div class="dropdown-content">
<a class="submenuitem" href="#Supervised">Supervised learning</a>
<a class="submenuitem" href="#UnSupervised">Unsupervised learning</a>
<a class="submenuitem" href="#Reinforcement">Reinforcement learning</a>
</div>
</span>
</div>
</div>
<article>
<p>
</p>
<p>In de <a href="techniek_introductie.html" class="book">introductie</a> van dit hoofdstuk heb je gezien dat er onderscheid werd gemaakt tussen niet lerende en lerende AI. Lerende AI noemen we <strong>machine learning</strong>. Machine learning vindt plaats aan de hand van data. Het leerproces levert een algoritme dat een <strong>agent</strong> (vertegenwoordiger van leerproces) gebruikt om te reageren op vragen van de gebruiker. Een gebruiker hoeft daarin niet een persoon te zijn, daarover later meer in de sectie <a href="techniek_multi_agent.html" class="book">multi-agentsystemen</a>. Machine learning wordt weer onderverdeeld in een groep waar de relatie tussen data en de uitvoer van het geleerde algoritme van de agent vast ligt en een groep waarin de relatie tussen de data en de uitvoer van het geleerde algoritme onbekend is. De machine learning techniek die in de laatste situatie wordt hoort bij neurale netwerken en wordt deep learning genoemd.
</p>
<p>Machine learning (of <strong>machinaal leren</strong> in het Nederlands) leert dus van data. De technieken binnen machine learning zorgen ervoor dat een systeem steeds beter wordt in een taak of zich steeds beter aanpast aan zijn omgeving. Mensen vinden deze vorm van kunstmatige intelligentie vaak fascinerend, omdat het lijkt alsof een systeem als vanzelf slimmer wordt. Het kunnen leren wordt dan ook vaak gekoppeld aan intelligentie; een hond die goed leert, noemen we ook slim.
</p>
<p>Er zijn mooie voorbeelden op het internet te vinden van toepassingen van machine learning. Vaak gaat het dan om een combinatie van meerdere machine learning-technieken. In deze filmpjes is een computerprogramma getraind om Super Mario te spelen. Het is opvallend hoe goed de computer uiteindelijk geworden is.
</p>
<div class="midden theorie">
<div style="display: inline-block; padding-right: 20px;">
<img src="images/image3.png" style="width: 300px;"/><br/>
<caption>
</caption>
</div>
<div style="display: inline-block;">
<img src="images/image4.png" style="width: 300px;"/><br/>
<caption>
</caption>
</div>
</div>
<br/>
<div class ='hammer treeview'>Vragen
<div style="padding-left: 20px;">
<ol>
<li>Denk je dat de agent (Super Mario) bijleert tijdens het spelen van een level, of steeds aan het einde?
<div class="caret doel">antwoord</div>
<ul class="nested">
<li>Waarschijnlijk leert de agent steeds aan het einde. Als Mario afgaat, dan is dat een signaal aan de computer om de volgende keer net iets anders te spelen.
</li>
</ul>
</li>
<li>Stel dat je de agent laat stoppen met leren en hem neemt zoals hij is aan het einde van het filmpje. Denk je dat hij ook goed zou kunnen presteren in een ander level?
<div class="caret doel">antwoord</div>
<ul class="nested">
<li>Bij de meeste games worden de levels steeds moeilijker en verschijnen er nieuwe uitdagingen. Als de agent alleen maar getraind is in dit level, zal hij waarschijnlijk niet zo ver komen.
</li>
</ul>
</li>
</ol>
</div>
</div>
<a id="onoff"></a><br/>
<h2>Online en offline leren</h2>
<p>Je kunt machine learning-algoritmen verdelen in twee groepen, namelijk in <strong>online learning-</strong> en <strong>offline learning</strong>-algoritmen. Deze groepen hebben niets te maken met verbindingen met het internet, maar de termen hebben betrekking op het moment waarop een algoritme aan het leren is. Online learning is leren ‘on the job’. Hierbij leert het algoritme terwijl het in productie draait.
<a href="https://blogs.fireflies.ai/how-does-voice-recognition-work/" target="techniek">Spraakherkenning is</a> hier een voorbeeld van. De software kan per persoon leren welke uitspraak van deze persoon bij welk woord hoort. Bij offline learning wordt het algoritme van tevoren getraind, waarna het in productie wordt genomen. Een postsorteerrobot is daar een voorbeeld van. De robot heeft een algoritme dat, op basis van heel veel voorbeelden, is ontstaan door training met het offline-learning algoritme. Eenmaal in de hal van de postverwerking geplaatst, zal deze robot niet meer bijleren.
</p>
<a id="categorien"></a><br/>
<h2>Categorieën machine learning</h2>
<p>Er zijn verschillende manieren om een computerprogramma iets aan te leren, net zoals er verschillende manieren zijn om mensen iets aan te leren. Denk bijvoorbeeld aan boekjes voor kleine kinderen met eenvoudige woorden en bijbehorende plaatjes (boom, huis, kat, etc.). Het kind wordt hierbij als het ware aan de hand genomen tijdens het leren.
</p>
<p>Een andere, minder behulpzame manier om iets aan te leren, is door simpelweg in het diepe te worden gegooid. Dit gebeurt bijvoorbeeld als je zonder voorbereiding naar het buitenland gaat en langzaam de taal ‘vanzelf’ leert te begrijpen.
</p>
<p>Weer een andere manier om te leren, is door je eigen gedrag te toetsen en daardoor te verbeteren. Onbewust deed je dat als klein kind toen je met vallen en opstaan leerde lopen. Als je nu bijvoorbeeld voor een sport traint of een muziek instrument leert bespelen dan doe je dat waarschijnlijk bewuster. Je probeert met telkens net iets andere handelwijzen en door zelf je resultaten te observeren (in de momenten zonder trainer) tot de beste handelwijze te komen.
</p>
<p>Deze manieren van leren hierboven genoemd worden ook binnen machine learning gebruikt. We onderscheiden de volgende drie basisvormen:
</p>
<ol>
<li><strong>supervised learning</strong> (begeleid leren),
</li>
<li><strong>unsupervised learning</strong> (onbegeleid leren),
</li>
<li><strong>reinforcement learning</strong> (versterkend leren).
</li>
</ol>
<p>Zoals gezegd vormen deze categorieën de basis voor machine learning. Dat wil zeggen dat er nog meer zijn. Zo kom je bijvoorbeeld ook tussenvormen tegen. We behandelen hier echter alleen deze drie basiscategorieën.
</p>
<a id="Supervised"></a><br/>
<h3>Supervised learning</h3>
<p>Supervised learning lijkt op het leren met het kleuterboekje: een agent krijgt voorbeelden met betekenissen te zien en wordt aan de hand van deze voorbeelden getraind om zelf conclusies te trekken. Deze vorm van leren wordt toegepast in het trainen van <a href="neurale_netwerken_leren.html" class="book">neurale netwerken</a>.
</p>
<p>Stel dat je een applicatie wil gebruiken om afbeeldingen te herkennen, dan moet deze eerst leren van een reeks met afbeeldingen met de bijbehorende woorden. De agent van de applicatie heeft als doel om een willekeurige afbeelding te voorzien van een etiket: om de gegeven afbeelding in een bepaalde geleerde categorie te plaatsen. Het herkennen van beeldmateriaal, zoals handschriftherkenning, is hiervan een voorbeeld. Bij deze manier van machine learning zijn er drie fases: de <strong>training</strong>-, de <strong>validatie</strong>- en de <strong>testfase</strong>.
</p>
<dl>
<dt>Fase 1: training
</dt>
<dd>De trainingfase is de eerste van de drie. Hier wordt de agent voorzien van voorbeelden om mee te trainen, de zogenaamde <strong>trainingset</strong>. De agent zal zich herhaaldelijk over de trainingset buigen, voordat er naar de volgende fase wordt overgegaan.
</dd>
<dt>Fase 2: validatie
</dt>
<dd>De validatiefase volgt op de trainingsfase. In deze fase wordt de huidige werking van de getrainde agent gevalideerd; dat wil zeggen dat gecontroleerd wordt hoe goed deze getraind is. Hier wordt de zogenaamde <strong>validatieset</strong> voor gebruikt. Dit is een vergelijkbare reeks voorbeelden als bij de trainingset, maar ze zijn nooit hetzelfde. Als de agent deze validatieset goed verwerkt, dan wordt overgegaan op de volgende fase. Als de uitkomsten echter niet acceptabel zijn, dan moeten het programma en/of de trainingset worden aangepast en wordt teruggegaan naar de trainingfase.
</dd>
<dt>Fase 3: testen
</dt>
<dd>Ten slotte is er de testfase. Deze naam is misschien misleidend, want in deze fase wordt de agent echt in gebruik genomen. Deze fase heeft dus niets te maken met software testen! Bij deze daadwerkelijke toepassing van de getrainde agent, noemen we de input die het programma krijgt, de <strong>testset</strong>.
</dd>
</dl>
<p>Omdat bij een zuiver supervised learning-algoritme altijd alleen geleerd wordt tijdens de trainingfase (en niet in de testfase), spreken we bij deze categorie van offline learning.
</p>
<h4>Overfitting</h4>
<p>Het trainen van een applicatie doe je om de agent in de praktijk te kunnen gebruiken met inputs die je nog niet weet. Bijvoorbeeld, als je een agent bouwt die handgeschreven tekst moet kunnen herkennen, dan kun je niet alle handschriften ter wereld in de trainingsfase stoppen. Bij het trainen van een agent is er een gevaar dat je de agent te goed leert werken met de trainingset. Je noemt dit <strong>overfitting</strong>. De validatie fase is onder andere nodig om deze overfitting te voorkomen.
</p>
<p>Aan het begin van dit hoofdstuk heb je een filmpje van Super Mario bekeken. Omdat Super Mario steeds hetzelfde level speelt, is hier sprake van overfitting. De agent zal in een ander level waarschijnlijk heel slecht presteren.
</p>
<a id="UnSupervised"></a><br/>
<h3>Unsupervised learning</h3>
<p>Bij unsupervised learning wordt de agent aan zijn lot overgelaten. Er wordt hem van tevoren niets ingefluisterd en er worden geen voorbeelden gegeven. Deze manier van leren heeft heel andere doeleinden dan bij supervised learning. Je kunt bijvoorbeeld geen handschriftherkenning met unsupervised learning voor elkaar krijgen; de agent heeft namelijk nooit etiketten – in dit geval de letters van het alfabet – gekregen.
</p>
<h4>Clustering en Associatie analyse</h4>
<p>Cluster en associatie analyse die vallen beide onder unsupervised machine learning. Bijvoorbeeld, bij clusteren wordt de data verdeeld groepjes, in clusters. De agent die aan het leren is, kan deze indelingen maken zonder de betekenis van deze clusters te weten. Als je dus bijvoorbeeld unsupervised learning toepast op handgeschreven letters, dan deelt de agent misschien de ‘u’ en de ‘v’ in een cluster (op basis van hun vormen) en de ‘i’ en de ‘j’ in een ander cluster, zonder te weten dat dit letters van ons alfabet zijn. Bij associatie analyse bepaalt de data welke onderdelen in de dataset meer met elkaar geassocieerd zijn ofwel welke onderdelen meer verband met elkaar houden. Er is van te voren geen oordeel over welke verband er moet zijn. In de secties <a href="techniek_cluster_analyse.html" class="book">cluster analyse</a> en <a href="techniek_associatie_analyse.html" class="book">associatie analyse</a> bekijken we unsupervised leren in detail.
</p>
<a id="Reinforcement"></a><br/>
<h3>Reinforcement learning</h3>
<div class="rechts theorie">
<img src="images/maze.png" style="width: 300px;"/><br/>
</div>
<p>De laatste categorie machine learning die we behandelen, is reinforcement learning. Deze vorm van leren is een speciaal geval van begeleid leren. De applicatie is zijn eigen trainer. Bij deze categorie van machine learning zoekt de agent naar oplossingen voor een probleem en bepaalt de agent na iedere poging zelf hoe goed hij gepresteerd heeft. Denk aan een kleine muis die door een doolhof rent. Als hij bij een T-splitsing naar links draait, krijgt hij een stukje kaas; als hij naar rechts draait, krijgt hij een kleine elektrische schok (maak je geen zorgen, dit is maar een doe-alsof-muis). Vermoedelijk zal de muis na verloop van tijd leren om naar links te draaien. Zijn neurale netwerk neemt een beslissing met een uitkomst (draai naar links of rechts) en observeert zijn omgeving (lekker of au). Je zou dus kunnen zeggen dat bij reinforcement learning goed gedrag beloond wordt en slecht gedrag bestraft. Dit moment van belonen vindt altijd achteraf plaats, dus nadat de agent zelf heeft gehandeld in een bepaalde situatie. De beloning zelf heet het <strong>reinforcement signal</strong>. Het Super Mario-filmpje is een voorbeeld van reinforcement learning.
</p>
<h4>Kenmerken van toepassingen van reinforcement learning</h4>
<p>Om reinforcement learning toe te passen op een probleem, moet het probleem zich wel lenen voor deze categorie van machine learning. Er zijn meerdere kenmerken waaraan een probleem kan voldoen, waaruit blijkt in hoeverre dit door een reinforcement learning-algoritme kan worden opgepakt. We noemen er een aantal:
</p>
<dl>
<dt>De oplossingen zijn voldoende meetbaar
</dt>
<dd>Voor een reinforcement signal is het nodig dat deze afgeleid kan worden van de door het programma bedachte oplossingen. De oplossingen moeten dus meetbaar zijn, zodat ze kunnen worden vertaald naar dit reinforcement signal.
</dd>
<dt>De omgeving is voldoende <i>deterministisch</i>
</dt>
<dd>Een omgeving is deterministisch als je precies kunt bepalen hoe de omgeving eruit ziet na een actie. Een schaakbord is bijvoorbeeld deterministisch (want je weet precies hoe de stukken staan na elke zet). Als een omgeving niet deterministisch is (b.v. het resultaat van een worp met een dobbelsteen), dan weet je dus niet of de acties van het computerprogramma hebben geleid tot een bepaalde oplossing en dan kun je dus ook geen reinforcement signaal toekennen. Is er slechts kleine variatie in de uitkomst van een experiment bij een bepaalde beginsituatie dan kan het systeem nog voldoende deterministisch zijn voor een succesvol leerproces.
</dd>
<dt>Er is genoeg ruimte om te leren
</dt>
<dd>Reinforcement learning is leren met vallen en opstaan. Sommige problemen lenen zich hier niet voor, omdat er geen ruimte is voor fouten. Reinforcement learning is bijvoorbeeld niet geschikt om een apparaat slim genoeg te maken om een hartfilmpje te leren monitoren: fouten zijn te cruciaal.
</dd>
</dl>
<div class ='hammer treeview'>Vragen
<div style="padding-left: 20px;">
Speel even met onderstaande <a href="https://experiments.withgoogle.com/ai/bird-sounds/view/" target="techniek">vogelapplicatie</a>. Let op: zet je geluid niet te hard! Beantwoord daarna de volgende vragen.
<iframe src="https://experiments.withgoogle.com/ai/bird-sounds/view/"
style="border: none; width: 98%; height: 600px; overflow: scroll;"
></iframe>
<ol start="3">
<li>Wat is hier waarschijnlijk gebruikt om de kunstmatige intelligentie te trainen: supervised, unsupervised of reinforcement learning? Leg uit waarom je dit denkt.
<div class="caret doel">antwoord</div>
<ul class="nested">
<li>De vogels zijn gerangschikt op hun geluid. Vogels die ongeveer gelijk aan elkaar klinken zijn gegroepeerd. Dit is clustering. Er is dus unsupervised learning gebruikt. De vogels zijn ook voorzien van een naam (een etiket). Er kan dus ook supervised learning zijn gebruikt.
</li>
</ul>
</li>
<li>In het <a href="https://youtu.be/31PWjb7Do1s" target="techniek">filmpje</a> dat erbij hoort leggen de makers uit wat ze hebben gedaan. Zo vertellen ze dat de kunstmatige intelligentie de namen van de vogels niet heeft gebruikt. Verandert dit je antwoord op vraag 1?
<div class="caret doel">antwoord</div>
<ul class="nested">
<li>Supervised learning valt daardoor af.
</li>
</ul>
</li>
<li>Stel dat jij als mens geluiden zou moeten groeperen, hoe zou je dit dan doen? Denk je dat dit lijkt op hoe de kunstmatige intelligentie van dit programma het heeft gedaan?
<div class="caret doel">antwoord</div>
<ul class="nested">
<li>Waarschijnlijk zouden mensen op basis van toonhoogte, frequentie en volume groeperen. Je kunt als mens redelijk eenvoudig horen wat op elkaar lijkt. Een computer vertaalt geluid naar diagrammen en doet eigenlijk beeldherkenning op die diagrammen. Het is dus niet helemaal hetzelfde.
</li>
</ul>
</li>
<li>Wat is het verschil tussen online en offline learning van een AI applicatie?
<div class="caret doel">antwoord</div>
<ul class="nested">
<li>Bij online learning leert de agent van de AI applicatie bij als die in bedrijf is in de test stap. Bij offline learning wordt de AI applicatie getraind. De agent die daarna in bedrijf is leert niet meer bij.
</li>
</ul>
</li>
<li>Geef in de juiste volgorde de drie stappen die gemaakt worden in supervised learning.
<div class="caret doel">antwoord</div>
<ul class="nested">
<li>trainen, valideren, testen
</li>
</ul>
</li>
<li>Een postcode robot krijgt jouw kerstkaart die je stuurt naar je oma onder de lens. In welke stap van supervised learning is deze robot?
<div class="caret doel">antwoord</div>
<ul class="nested">
<li>De robot bevindt zich in de testfase. Hij is op dat moment in bedrijf om werkelijk het werk te doen waar de applicatie voor is ontwikkeld.
</li>
</ul>
</li>
</ol>
</div>
</div>
</article>
</body>
</html>