LE 1 – Introductie & Algoritmiek
Uit te leggen waarom het van belang is dat juristen enige kennis van de techniek
moeten verwerven;
- Juristen en techneuten hebben allebei een eigen jargon met overlappende terminologie,
maar met een andere uitleg daarvan. Bijv. ‘anoniem’. Het is daarom van belang dat
gegevensbeschermingsrecht-jurist direct dient door te vraag wat bedoeld wordt.
- Een ander probleem ontstaat wanneer de jurist ten onrechte denkt dat is voldaan aan een
juridische definitie in het gegevensbeschermingsrecht bij gebrek aan kennis over de
techniek. Zo verwijst het recht veelvoudig naar ‘de stand van de techniek’, die in beginsel het
beste kan worden uitgelegd door een techneut, niet een jurist.
Uit te leggen wat het concept van algoritme inhoudt en hoe algoritmen problemen
oplossen of taken uitvoeren en op een hoog niveau uit te leggen hoe algoritmes
omgezet worden naar computerprogramma’s;
- Een algoritme is een stappenplan dat ingezet wordt om een specifiek doel te bereiken. De
term ‘algoritme’ verwijst naar een gespecificeerde instructie om een probleem op te lossen
of om een berekening uit te voeren. Het is de nabootsing van menselijke intellectuele
vermogens en complexe menselijke vaardigheden door machines.
- Eenvoudige algoritmen: een eindige beschrijving van stappen.
- Voor hetzelfde probleem kunnen er meerdere verschillende algoritmen zijn.
- Algoritmes worden uitgeprogrammeerd in functies. Een programma bestaat uit meerdere
functies.
- Programmeren gebeurt in een programmeertaal. Dit is broncode die moet worden
omgezet naar machinecode om op een computer te kunnen draaien.
- Bij open-source is de source code van een programma vrijelijk beschikbaar om in te zien en
aan te passen.
- Bugs zijn met name een gevolg van de complexiteit van programma's. Bugs kunnen voor
komen op algoritme, implementatie, of data-niveau.
1. Fouten in het algoritme: wanneer een algoritme een fout bevat, dan zullen de
implementaties dat wss ook hebben. Dit is eigenlijk een fout in het concept van het
programma.
2. Fouten in de implementatie: specifieke fouten in de implementatie van een
algoritme. Dit soort fouten kunnen op veel manieren ontstaan, bijv door simpelweg
typefouten, doordat het algoritme dat geïmplementeerd moet worden niet duidelijk
genoeg is, door veranderingen in de code, door het verouderen van bepaalde
techniek.
Bij het implementeren van een algoritme kan een algoritmische fout al naar boven
komen en daarmee voorkomen worden in de implementatie.
3. Fouten in de data: foutieve gegevens = shit in, shit out.
- Slimme algoritmes verwijst naar een klasse van algoritmes die gebruik maken van data om
het functioneren te verbeteren.
Enkele moderne ontwikkelingen in softwaretechnologie te benoemen en aan te
geven hoe deze een impact hebben op de privacy van de eindgebruikers.
,- From waterfall to agile development
- From Shrink-Wrap software to Service-Oriented Architectures
- From PCs to the Cloud
https://brightspace.ou.nl/content/9699-RM4903-232714M/cursusbronnen/LE1/
PrivacyafterAgileTurn2017.pdf?isCourseFile=true&ou=9699
Tentamenvraag OT 1 4
Stelling:
Uit de machinecode van een programma kan altijd de volledige oorspronkelijke broncode
worden afgeleid.
Is deze stelling waar? Verklaar uw antwoord kort.
- De stelling is niet waar. (1pt)
- Over het algemeen is het onmogelijk om gegeven een stuk broncode en een stuk
machinecode te bewijzen dat de machinecode het resultaat is van de gegeven broncode.
Daarmee is het afleiden van de gebruikte broncode uit enkel een stuk machinecode ook
onmogelijk. (1pt)
Tentamenvraag OT 2 1
In de informatica gebruiken we soms een techniek die ‘fuzzing’ wordt genoemd. Met deze
techniek test je een stuk software door willekeurige invoer te sturen naar deze software en
te kijken hoe de software daarop reageert. Stel je bijvoorbeeld voor een tekstverwerker
waarin je verschillende bestanden probeert te openen die allemaal willekeurig op bitniveau
zijn aangepast. Welke van de types fouten behandeld in de cursus (algoritmefouten,
implementatiefouten en datafouten) zou je typisch kunnen opsporen met deze techniek,
welke niet; en waarom?
- In eerste instantie test je met deze techniek op implementatiefouten, want je test hoe de
implementatie van het algoritme reageert op onverwachte input. (1pt)
- Wanneer een fout gevonden wordt zou dit echter ook op een algoritmefout kunnen
duiden. (1pt)
- Hoewel je foutieve data invoert, gebeurt dit in een testsituatie, waardoor
dit geen datafouten opspoort.
,LE 2 – AI & Transparantie
Uit te leggen hoe machine learning (ML) zich verhoudt tot kunstmatige intelligentie
(AI);
Grofweg zijn er twee categorieën van AI:
1. Expert systems: algoritmen waar mensen intelligente stappen in hebben
geprogrammeerd.
- Hierbij wordt geprobeerd om de kennis van domeinexperts te vangen in een
programma. Bijvoorbeeld een programma dat ondersteunt bij medische diagnoses,
dat gebaseerd is op veel interviews met dokters en waarin uiteindelijk een
beslisboom wordt geprogrammeerd die door antwoorden op vragen probeert bij de
juiste diagnose uit te komen.
2. Machine learning (ML): algoritmen die intelligente stappen leren uit data.
- Een voorbeeld hiervan is een programma dat ondersteunt bij medische diagnoses,
dat gebaseerd is op casusdata van patiënten en waarin uiteindelijk een beslisboom
wordt geleerd die door antwoorden op vragen probeert bij de juiste diagnose uit te
komen.
- Natuurlijk zijn er ook technieken die een combinatie van deze twee categorieën vormen.
- Beide systemen kunnen dus voor hetzelfde doel worden ingezet, maar ML is veel flexibeler
en krachtiger: het kan verbanden vinden in data die experts nog niet kennen en het kan
leren van data waarvoor geen echte experts beschikbaar zijn (zoals ‘computer vision’ bij
onderscheid tussen banaan een ballon).
- ML werkt echter ook te vaak veel als een ‘black box’. We geven het systeem invoer en het
komt met een antwoord, maar we hebben geen idee waar dat antwoord op gebaseerd is.
Dat is problematisch voor het vertrouwen, maar het zorgt er ook vaak voor dat we fouten
van het algoritme (te lang) over het hoofd zien.
Uit te leggen hoe zelflerende algoritmen in grote lijnen werken, met name het idee
van een model, kenmerken (features) en gewichten;
ML training
- Bij het leren bouwt het ML-algoritme een model op. Er zijn veel verschillen ML-methoden
veel met hun eigen model en eigen algoritme om te leren. Je hebt beslisbomen, random
forst etc, uiteindelijk doet het er niet zo veel toe hoe deze technieken technisch verschillen.
Vaak hebben ze hetzelfde leerproces, daarvoor hebben ze twee vormen van invoer nodig:
trainingsdata en een evaluatiefunctie. Deze evaluatiefunctie is een maat voor hoe goed of
slecht het model op dit moment het doet. Als we kijken naar de trainingsdata dan bestaat
die vaak uit heel veel trainingsitems die ook wel datapunten worden genoemd. Deze
datapunten waarvan het algoritme leert hebben bepaalde kenmerken (features). Dat kan
van alles zijn: bloedtype, oogkleur, afstand tussen de ogen, hartritme, salaris, aantal
ledematen, kleur, vorm. Ieder datapunt in een trainingsset heeft een mogelijke combinatie
van alle features. En iedere feature van een datapunt kan je zien als een punt op een
schaalverdeling. Zo valt de afstand tussen de ogen op een afstandschaal, kleur van de ogen
op een kleurenraster etc. Al deze eigenschappen kunnen dus weergegeven worden als
punten op een schaal, en iedere schaal kan je ook zien als de as van een grafiek. Daarom
spreken we hier ook van dimensionaliteit van data. Zie het als een ander woord voor het
aantal verschillende kenmerken waar rekening mee gehouden wordt. Wat er vervolgens
gebeurt in het leerproces van ML is dat in het model op een bepaalde manier opgeslagen
wordt hoe belangrijk ieder van deze kenmerken is. Dit gebeurt a.d.h.v. gewichten die
, toegekend worden aan iedere feature. Hiervoor wordt de evaluatie functie gebruikt. Het
algoritme bekijkt of het beter presteert als het meer gewicht toekent aan kenmerk 1 dan aan
kenmerk 2. Als het op die manier beter presteert, dan gaat het met deze veranderde
gewichten verder, als het minder presteert dan worden de gewichten niet veranderd. Dit
proces wordt herhaald voor ieder kenmerk en voor ieder datapunt, vaak meerdere keren.
Maar we kunnen ook ruwe data aan het machine algoritme geven en het zelf laten bepalen
welke features het beste werken. Zoals wanneer algoritme leren van foto’s, wanneer het
niet direct duidelijk is of een groepje groene pixels belangrijk zijn of niet.
ML training problemen
- Overfitting
- Overfitting komt erop neer dat het geleerde model te goed past op de trainingsdata
waardoor het specifieke ruis uit de trainingsdata heeft meegenomen als belangrijke
kenmerken. Het resulterende model is hierdoor niet meer goed bruikbaar op nieuwe
data. Overfitting kan het resultaat zijn van een te complex model of te lang en met een te
kleine dataset getraind te hebben.
- Bias
- Soorten: algoritm bias, sample bias, prejudice bias (...)
- Algorithm bias: het lerende algortime werkt zelf niet meer helemaal oke
- Sample bias: garbage in, garbage out. De data is niet goed gekozen. (Lineaal en
huidkanker)
- Prejudice: de trainingsdata is op zichzelf een goede willekeurige selectie van echte
wereldige data, maar die data uit de echte wereld bevat al vooroordelen die nu eenmaal
voorkomen in de maatschappij.
Uit te leggen wat supervised, unsupervised en reinforcement learning inhoudt;
ML leerstrategieën:
- 4 verschillende leerstrategieen: Supervised-, Unsupervised-, Hybrid- en Reinforcement
learning.
Supervised Learning – labelled data
- Bij supervised learning wordt het model getrained met gelabelde data. Dat wil
zeggen dat er voor alle data objecten al duidelijk is wat bijv de diagnose is, of
het frauduleus gedrag vertoont of of het hier gaat om een hond of een muffin.
Unsupervised learning – unlabelled data
- Bij unsupervised learning wordt het model getraind waarbij de data objecten
niet gelabeld zijn. Dit kan bijv gebruikt worden om bepaalde trends in data te
ontdekken.
Hybrid learning – labelled en unlabelled data
- Bij hybrid learning wordt het model getrained op een combinatie van
gelabelde en niet gelabelde data. De voornaamste reden om dit toe te passen is
om dat het voor heel veel problemen in de praktijk helemaal niet makkelijk is
om aan een dataset van correct gelabelde data te komen die groot genoeg is.
Zo’n dataset kan dan worden aangevuld met ongelabelde data.