...

Bijeenkomsten gehouden in 2016

  Kort verslag van de bijeenkomst op 3 december 2016 Er waren op de laatste bijeenkomst van dit jaar weer diverse interessante bijdragen in de plenaire sessie: Naar aanleiding van eerdere gesprekken over willekeurige getallen en diverse soorten dobbelstenen liet Abraham ons kennis maken met de 120-zijdige dobbelsteen. De som van 2 tegenover elkaar liggende zijden is altijd 121 (zoals dat bij een gewone, 6-zijdige dobbelsteen altijd 7 is), en ondanks het grote aantal vlakjes is goed te zien welk getal boven ligt. Diverse aanwezigen zagen er een soort "verfijning" van een 12-zijdige dobbelsteen in (met regelmatige vijfhoeken als zijden); volgens Gerard was hij echter evengoed te zien als een "afgeleide" van een 20-zijdige dobbelsteen (met driehoeken als zijden). Verder deed Abraham kort verslag van zijn deelname aan de Roborama-wedstrijd van de HCC Robotica interessegroep. Hij deed mee met twee robots: de PLV ("Propeller LijnVolger", bestuurd door de Parallax Propeller microcontroller), en de Intel Inside, bestuurd door een Intel 4004 — de allereerste microprocessorchip! Beide robots hebben met succes 2 verschillende lijnvolg-trajecten afgelegd. Daarnaast heeft Intel Inside ook het onderdeel "heen-en_weer" correct volbracht; het onderdeel "T-rijden" is helaas niet gelukt.Interessant is nog dat de PLV is uitgerust met een cameraatje, waarvan hij slechts naar één beeldlijn kijkt. Abraham heeft ook al weer een nieuwe uitdaging op het oog: de lijn-doolhofbaan, die hij te lijf wil gaan door de PLV meer dan één beeldlijn te laten gebruiken, zodat hij "vooruit kan zien". Op deze foto (gemaakt door Albert), is goed te zien hoe Abraham achter zijn hand zijn robot nog even enkele laatste instructies en bemoedigende woorden toefluistert… In de laatste nieuwsbrief van onze interessegroep werd gewag gemaakt van plannen om een cursus neurale netwerken "in JavaScript met Processing" te gaan organiseren. Pedro merkte hierover op dat JavaScript en Processing twee behoorlijk verschillende talen zijn, dus dat het wat hem betreft "òf – òf" zou moeten worden. Verder vroeg hij zich af hoe groot de belangstelling was voor de "werkgroep in oprichting JavaScript met Processing", en wat precies de bedoeling was. Er werd hem aangeraden om zijn aktiviteiten in het kader van die werkgroep niet te laten afhangen van de belangstelling van anderen (of het gebrek daaraan!), maar zijn eigen gang te gaan. Ervaringen in het verleden wijzen uit dat er dan het meeste gebeurt. Jan vertelde steeds meer onder de indruk te zijn van neurale netwerken. Hij heeft bevonden dat het begin simpel is, zoals te zien is in The Nature of Code. Op het internet heeft hij iets gevonden over character recognition, en hij wil nu proberen om dat werkend te krijgen. Hij hoopt op de volgende bijeenkomst het eerste begin te kunnen demonstreren… Henk heeft gewerkt aan een programma dat het welbekende spel "4 op een rij" speelt. Hierbij moeten "rood" en "blauw" beurtelings een schijf plaatsen in een speelveld van 6 rijen en 7 kolommen; de kolommen moeten "van onder af" opgevuld worden. De winnaar is degene die het eerst vier schijven van zijn kleur aaneensluitend op één horizontale, vertikale of diagonale rij heeft. De strategie van zijn programma bestaat uit 3 regels: Maak 4 op een rij, indien mogelijk. Als de tegenstander 4 op een rij kan maken (ware hij aan zet), blokkeer dit dan. Doe niets wat de tegenstander de mogelijkheid geeft om 4 op een rij te maken. Als geen van deze regels van toepassing is, wordt een willekeurige zet gedaan. Gerard suggereerde dat iemand anders ook een 4-op-een-rijprogramma zou kunnen schrijven, en dat dit programma het zou kunnen opnemen tegen dat van Henk. Verder had Henk zitten lezen in het Volkskrant-boek Wat iedereen moet weten van de natuurwetenschappen, dat de zgn. bètacanon bevat. Hij beschouwt het als een ernstige omissie dat het idee dat de wereld was opgebouwd uit atomen, niet expliciet als onderwerp in dit boek was opgenomen. Volgens Henk was Democritus, die dit idee lanceerde, zijn tijd daarmee ver vooruit. Het idee van de opgebouwde wereld speelt ook een belangrijke rol in Henks artikel over De computer en 'de vrije wil'. Op Henks vraag hoe vaak dit artikel tot nu toe is geraadpleegd, moest Gerard helaas het antwoord schuldig blijven. Ronald kon eindelijk een demonstratie geven van zijn Kohonen-programma, dat een vierkant van 10×10 programmeerbare RGB-LEDjes gebruikt om de zelforganiserende werking van het door Kohonen bedachte leeralgoritme te demonstreren. De demonstratie zou volgens Gerard nog wat beter worden als de LEDjes wat minder helder zouden branden, waardoor de kleurverschillen waarschijnlijk beter waarneembaar zouden worden. Daarnaast bleek niet iedereen goed te weten wat een Kohonen self-organising feature map nu precies doet. Mogelijk gaan Ronald en Gerard de demonstratie in de toekomst nog eens tot een nette PowerPoint-presentatie en/of een (YouTube-)filmpje uitwerken. Ronald had ook zijn eerder getoonde 3-dimensionale LED-array weer meegenomen. Door er één laag van ongebruikt te laten, hield hij een 4×4×4 kubus over, waarmee hij liet zien dat een kleurenpatroon in allerlei richtingen kan worden gespiegeld en/of gedraaid. Daarna vertelde Ronald over zijn bezoek, eerder die dag, aan een tentoonstelling van het Cryptomuseum. Dit museum heeft geen permanente tentoonstellingsruimte tot zijn beschikking, maar organiseert regelmatig i.s.m. andere instellingen dagen waarop stukken uit de collectie, waaronder Enigma-machines uit de tweede wereldoorlog, daadwerkelijk te zien zijn. Tussen zulke evenementen door leidt het museum een virtueel bestaan. Tenslotte liet Ronald een door hemzelf in Visual Basic 6 geprogrammeerd 6-dimensionaal boter-kaas-en-eieren zien. Daarbij worden de zetten van beide spelers d.m.v. muisklikken aangegeven. De computer houdt dan de bordstand bij en bekijkt na elke zet of er een winnaar is — wat in 6 dimensies zeker geen sinecure is: als mens zie je al snel een rijtje over het hoofd! Dit bleek spoedig toen Ronald een spelletje speelde tegen de rest van de aanwezigen en dat glansrijk won, maar daar in eerste instantie ook zelf wel enigzins verbaasd over leek te zijn… Gerard had een brute-forceprogrammaatje geschreven om het handelsreizigersprobleem (Traveling Salesman Problem, TSP) aan te pakken. Het maakt gebruik van een zelfgeschreven functie die alle permutaties van een lijst genereert; deze functie roept op zijn beurt weer een backtrackfunctie aan. Het programma is niet echt op snelheid geschreven: een willekeurige configuratie van 12 steden wordt in ruim 22 minuten opgelost. Vanwege de lange draaitijd liet Gerard alleen de output (opgevangen in een tekstbestandje) zien. Gerard wil dit programma als vergelijkingsstandaard gaan gebruiken om de prestaties van enkele AI-technieken (zoals een genetisch algoritme) bij dit probleem beter te kunnen beoordelen. Het komende jaar zullen deze en andere aktiviteiten ongetwijfeld een vervolg krijgen. Houd deze webpagina dus in de gaten — of beter: kom zelf onze bijeenkomsten bezoeken. Tot in het nieuwe jaar! (GV 8 januari 2017) Kort verslag van de bijeenkomst op 5 november 2016 Hoewel we moesten "concurreren" met de tegelijkertijd plaats vindende Roborama-wedstrijden van de HCC Robotica interessegroep, waaraan ook enkele van onze vaste bezoekers deelnamen, hadden we toch tijd, aanwezigen en onderwerpen genoeg voor een interessante plenaire sessie: Theo maakte ons attent op het nrc-artikel Kunstmatige Intelligentie gaat regeren. Dit artikel gaat over de invloed die AI, gecombineerd met "big data", zal hebben op de economie, de machtsverhoudingen, en de maatschappij als geheel, en over hoe de politiek daarop zou kunnen of moeten inspelen. Peter heeft een cursus bijgewoond over de Joomla-template voor websites van groeperingen. Diverse interessegroepen maken hier al gebruik van, en Peter wou inventariseren wat de aanwezigen vonden van een eventuele overgang naar dit nieuwe "format". Men leek hier niet echt een mening over te hebben, en de interesse was gering: men had liever gesprekken over AI dan over organisatorische zaken. Jan gaf aan dat hij nog steeds geïnteresseerd is in het programmeren van transputers, en hoopt om binnen onze interessegroep een clubje van enthousiaste medestanders te vinden. Gerard suggereerde dat Jan daarbij zelf het voortouw zou kunnen nemen, bijvoorbeeld door de programmeertaal Occam te leren, en daarover iets in de groep te vertellen. Jan vertelde verder dat hij, mede geïnspireerd door het boek The Nature of Code van Daniel Shiffman, het liefst een neuraal netwerk op zijn transputers zou zetten, omdat de mogelijkheid tot gelijktijdige verwerking die door transputers wordt geboden bij uitstek geschikt lijkt voor het programmeren van een dergelijk systeem. Hij weet echter te weinig over zulke onderwerpen om hiermee aan de slag te gaan. Gerard meldde dat hij en Albert al plannen hebben voor een simpel projectje in die richting, en Peter gaf aan dat hij wel bereid was om een cursus neurale netwerken te gaan geven. Rob is begonnen zijn programma voor solitaire Yatze te refactoren door meer gebruik te gaan maken van functies. Daarnaast is hij bezig in een boek over C# voor Android, en overweegt zijn programma voor deze omgeving te gaan vertalen. Pedro had drie onderwerpen: Hij heeft een versie van ALife (Conway's Game of Life) geschreven in JavaScript, en een in Processing. Hij hoopt de snelheid van de Processing-versie te combineren met de betere mogelijkheden van Javascript voor het bouwen van grafische user interfaces (GUIs). In de Volkskrant-bijlage "Sir Edmund" van 15 oktober j.l. staat een artikel over de Nijmeegse natuurkundige Theo Rasing, die het energieverbruik van chips ziet als de belangrijkste barrière die voortschrijdende miniaturisatie in de weg staat. Tenslotte demonstreerde Pedro de Adafruit Circuit Playground, een elektronicabordje met dezelfde microcontroller als op de Arduino, maar speciaal geschikt voor mensen die (nog) weinig tot niets van elektronica weten. Hij hoopt de komende maand m.b.v. de LED-lichtjes, sensoren, en geluidsmogelijkheden van dit bordje een soort "intelligente kerstbal" te maken. Gerard liet de tromino-puzzel zien die Aloys op zijn verzoek met de 3D-printer had vervaardigd. Hoewel die iets te simpel is om als puzzel echt interessant te zijn, is hij wel goed geschikt om enkele problemen te illustreren die optreden bij het schrijven van een programma dat alle oplossingen van de tetromino-puzzel moet vinden. Daarnaast vertelde Gerard dat door het verband met robotica zijn interesse in de biomechanica is hernieuwd, en dat hij door het lezen van een hoofdstukje over computerschaak een idee had opgedaan om zijn checkersprogramma te verbeteren. Henk meldde bezig te zijn in een boek over chaostheorie, en hij zag in dat daarin een relatie schuilt met zijn opvattingen over de "vrije wil": een mechanistisch wereldbeeld houdt niet per se in dat alles dus ook gedetermineerd is. Mogelijk volgt er een aanvulling (voetnoot?) op zijn artikel. Op de eerstvolgende bijeenkomst komen ongetwijfeld verdere ontwikkelingen en nieuwe onderwerpen aan bod! (GV 20 november 2016) Kort verslag van de bijeenkomst op 1 oktober 2016 Omdat volgende maand de Roborama-wedstrijden plaatsvinden, waren enkele van onze vaste bezoekers druk bezig met het beproeven en perfectioneren van hun robots, en schoven pas laat aan bij onze plenaire sessie. Niettemin werd er ook dit keer werd weer een verscheidenheid aan tips en eigen aktiviteiten ingebracht: Peter liet weten dat hij erg ontevreden was over het stukje in PC-Active 290 ("Is AI eng of niet?"). Een discussie hierover moest helaas worden uitgesteld tot een van de volgende bijeenkomsten. Ed meldde dat er bij de Robotica interessegroep in januari een I2C workshop begint. In deze workshop, die gegeven wordt door Joep en Karel en 4 sessies zal omvatten, worden de deelnemers vertrouwd gemaakt met het gebruik van deze data-interface (vergelijkbaar met bijv. de RS-232), die vooral geschikt is voor sensorinformatie.Tijdens de bijdrage van Ed ontstond enige consternatie doordat de voedingskabel van een van de meegebrachte laptops begon te roken; adequaat ingrijpen voorkwam dat deze beginnende kortsluiting ernstige schade veroorzaakte. Abraham deed kort verslag van de MegaCompUfair. Tussen 10:00 en 14:00 was de belangstelling goed, daarna wat minder. Het was gezellig, mede door het contact met de andere interessegroepen. Erg leuk vond hij zelf de pogingen van diverse bezoekers om de patroonherkenning van het steen-schaar-papierprogramma op het verkeerde been te zetten. Naar aanleiding van een artikel in De Volkskrant van 24 september 2016 is Henk in Jij bent je brein van Dick Swaab gaan lezen. Dit boek bevat dezelfde inzichten als de pil Wij zijn ons brein, maar dan speciaal voor de jeugd vereenvoudigd uitgelegd. Henk kan zich goed vinden in Swaabs stelling dat de vrije wil een illusie is; maar hij voegde eraan toe dat het toch een handig begrip kan zijn, omdat we wel vrije wil ervaren. Verder herhaalde Henk nog maar weer eens zijn standpunt dat eigenlijk het hele leven illusie is, omdat we in een "opgebouwde wereld" leven. Met deze opvatting (zie zijn artikel) schaart hij zich in de traditie van Democritus, Epicurus en Lucretius. Ed vertelde dat Dick Swaab recentelijk een nieuw boek het licht heeft doen zien, getiteld Ons creatieve brein, en vroeg zich af of dit boek misschien de feitelijke aanleiding was voor het Volkskrant-artikel. Geïnspireerd door het boek Machine Learning Using C Sharp for Beginners (geschreven door Latasha Morgan) had Titus op basis van een zelfbedacht algoritme een programmaatje voor data-clustering geschreven, dat hij demonstreerde. Het verandert de waarde (= kleur) van punten in een matrix wanneer de gemiddelde afstand tot het zwaartepunt (van punten met die kleur) daardoor kleiner wordt. Dit leidt er toe dat punten met dezelfde kleur bij elkaar komen te liggen. Ook Pedro was weer aan het programmeren geslagen. Naar aanleiding van een column van Ionica Smeets (in De Volkskrant van 27 augustus 2016) had hij een wachtrijsimulatie gemaakt (één wachtrij voor 6 toiletten). Het programma is geschreven in processing, een op Java gebaseerde taal die bedoeld is om kunstenaars, ontwerpers e.d. in staat te stellen grafische applicaties te bouwen. Voor wie wil zien wat voor leuke dingen er in processing mogelijk zijn, wees Pedro op de website van Otoro, met o.a. een fraaie simulatie van creatures (wezentjes) die hebben geleerd om planken te ontwijken. De demonstratie van Pedro lokte diverse reacties uit. Gerard was geïnteresseerd in wat er gebeurt als de parameters van de simulatie worden veranderd. Zo wordt is er elke tijdseenheid een kans van 60% dat zich iemand bij de wachtrij aansluit; wat gebeurt er met de lengte van die rij als die kans 80% of 100% wordt? Ben werd herinnerd aan een programma dat hij (als docent) schreef om computerlessen in een lokaal met beperkte capaciteit (er waren maar 6 computers) te roosteren; en Peter aan het verdelen van stageplaatsen onder studenten, een probleem waar hijzelf vroeger bij betrokken was. Rob liet een zelfgeschreven programma zien waarmee je solitaire Yatze kunt spelen. Hij is ruim twee jaar met dit programma bezig geweest en heeft zich daarmee uit een ernstige burn-out gewerkt. Als nieuw project denkt hij aan het programmeren van een aan-/afwezigbord met daaraan gekoppelde database. De resterende tijd werd door Gerard besteed aan een inventarisatie van onderwerpen die de aanwezigen zouden kunnen bijdragen aan de promotievideo. Hij was daarbij vooral op zoek naar voorbeelden van hoe een hobbyist zelf met AI aan de slag kan gaan. Dat leverde voorlopig het volgende op: Henk: 2×2 Rubik-kubus, schuifpuzzel, sudoku-oplosser, DO-statement Ben: Prolog als AI-taal Pedro: Party Planner als voorbeeld van een Artificial-Life-simulatie Peter: het zoeken naar (en vinden van) AI-informatie op het internet Jan: de transputer, in het kader van conapp en besturing als AI-aktiviteit Titus: perceptron met GA, dataclustering, ijsbeerprogramma Gerard: lamprei-projectje Verder suggereerde Albert dat Gerard het geheel van een introductie zou kunnen voorzien (en eventueel de onderwerpen aan elkaar kan praten). Dit idee wordt serieus in overweging genomen. Al met al weer een aangename en nuttige bijeenkomst. Aan het eind werd nog het idee geopperd om voortaan na de plenaire sessie wat tijd te reserveren voor napraten en informele contacten; temeer daar het laatste onderwerp door een efficiëntere afhandeling misschien wat minder tijd in beslag had kunnen nemen… (GV 5 oktober 2016) HCC!AI op de MegaCompUfair van 24 september 2016 Gewoontegetrouw hebben we ons weer gepresenteerd op de MegaCompUfair van HCC!CompUsers. We konden geen spectaculaire nieuwe maaksels laten zien; maar het eenvoudige steen-schaar-papier-programma van Gerard dat patronen in de speelwijze van de menselijke tegenstanders probeerde uit te buiten was voor diverse mensen toch een leuke uitdaging. De toegankelijke "gebruikersinvoer-interface" van Abraham vormde daarbij zeker een verrijking; een volgende stap is het visueel aantrekkelijk maken van de resultaten, die nu nog op een eenvoudig karakter-georiënteerd scherm werden gepresenteerd. Ook de reeds eerder gedemonstreerde tetromino-puzzel en de transputer van Jan konden weer rekenen op de belangstelling van een aantal bezoekers. Daarnaast werd er natuurlijk weer enthousiast gepraat met andere interessegroepen uit de "cluster techniek". Op de bovenstaande foto is te zien hoe iemand haar ruimtelijk inzicht beproeft met de tetromino-puzzel; rechts op tafel liggen de steen-schaar-papier-"toetsen" van Abraham. (GV 5 oktober 2016) Kort verslag van de bijeenkomst op 3 september 2016 De eerste paar uur had het bestuur het druk met diverse bestuurswerkzaamheden, zodat de bezoekers de tijd doorbrachten met zelfwerkzaamheid en informele contacten. Om 13:00 begon de presentatie looprobots door Willem Ouwerkerk van de HCC Forth interessegroep. Hij heeft zelf een tweetal lopende robotjes gebouwd: één met twee benen, die hij heel toepasselijk Biped heeft genoemd, en één met zes poten, Hexapod geheten. De robotjes zijn geprogrammeerd in de computertaal Forth, die speciaal voor besturingsdoeleinden is ontwikkeld. Biped Hexapod In de lezing kwamen de volgende onderwerpen aan bod: Na een korte introductie van de beide robots volgde een demonstratie van Biped. Daarbij werd duidelijk hoe de robotjes worden aangestuurd met korte, zelf-ontwikkelde Forth-opdrachten (woorden), die zelf weer uit andere eenvoudige Forth-opdrachten bestaan. De voordelen van Forth voor dit soort taken kwamen aan bod: het is interactief en bottom-up, zodat alle opdrachten, zowel op laag als op hoog niveau, gemakkelijk kunnen worden uitgeprobeerd en gecombineerd. De verschillen en gelijkenissen tussen de beide looprobots werden op een rijtje gezet. Vervolgens legde Willem uit hoe hij de diverse loopjes heeft bedacht en ontwikkeld. Omdat hij ontevreden was over de mechanische stevigheid en balans van het Hexapod-bouwpakket, is Willem begonnen met het zelf ontwerpen en bouwen van een verbeterde versie. Hij vertelde over de constructie daarvan en de gebruikte materialen. Daarna werd er gekeken naar de sensoren waarmee de robots zijn uitgerust, en vooral de sensoren die nog kunnen worden toegevoegd. De robots hebben niet direct "nuttige" toepassingen; ze zijn vooral geschikt om te experimenteren met allerlei bewegingen en te kijken welk gedrag er uit voorkomt. Tot slot werd Hexapod gedemonstreerd. Interessant was dat Hexapod ook het algoritme kon uitvoeren van de mier die door Gerard in Scratch was geprogrammeerd. Het gedrag was herkenbaar, maar kwam nog niet volledig uit de verf door de mechanische beperkingen van Hexapod. We kijken dan ook vol verwachting uit naar Hexapod 2.0 ! Willem bleek een enthousiaste spreker met een passie voor techniek en veel kennis van zaken. Het publiek, bestaande uit leden van de HCC-interessegroepen Robotica, Artificiële Intelligentie en Forth, was zeer geïnteresseerd. Willem was na afloop nog ruim een uur bezig met het te woord staan van diverse aanwezigen! Hij heeft de informatie uit zijn presentatie als PDF ter beschikking gesteld. Helaas bleken de opnames van de videowerkgroep te zijn mislukt; maar Willem heeft dezelfde lezing in oktober gegeven voor de HCC interessegroep programmeren, en daarbij is een nieuwe, en geslaagde, poging gedaan om alles vast te leggen. Na de presentatie van Willem werd er nog een korte plenaire sessie gehouden, waarin de volgende onderwerpen ter sprake kwamen: Ed vroeg hoe het stond met de samenwerking tussen HCC Robotica en HCC AI. Er bleek tijdens de maanden van zijn afwezigheid weinig tot niets te zijn gebeurd. Ook informeerde Ed naar het eerder door Gerard geopperde idee om een humanoïde robot te bouwen, dat destijds was afgewezen. Gerard vertelde dat hij een soort wiki-project voor ogen had: terwijl één persoon of groep bijvoorbeeld aan de voortbeweging werkt, kan een andere tamelijk onafhankelijk daarvan een camera monteren en de beeldverwerking programmeren, terwijl nog een andere misschien iets doet aan de armen. Daarbij kan eerst voor een relatief simpele oplossing worden gekozen, en als iemand daartoe de lust voelt opkomen kan een onderdeel (iets / veel) geavanceerder worden gemaakt. Zo zouden we bijvoorbeeld kunnen beginnen met een soort rijdende pop, die later misschien kan worden voorzien van een loopbeweging. Voor dit project zou Gerard de naam Frankenbot willen gebruiken, omdat ook het "monster van Frankenstein" uit allerlei afzonderlijke, aan elkaar gelapte onderdelen was samengesteld. Peter deelde mee bezig te zijn in het boek The Master Algorithm van Pedro Domingos. Dit boek, waarvan de ondertitel luidt How the Quest for the Ultimate Learning Machine Will Remake Our World ("Hoe de zoektocht naar de ultieme leermachine onze wereld zal herscheppen"), gaat over Artificial General Intelligence, d.w.z. een machine die niet slechts op één specifiek gebied de mens evenaart of overtreft (zoals Deep Blue, Watson, of AlphaGo), maar die zich met de mens kan meten op alle terreinen waarop de menselijke geest werkzaam is. Dit boek bevat geen formules of wiskunde; volgens Peter is het hierdoor enerzijds interessant voor de algemene lezer, maar anderzijds ook nogal "breedsprakig". Vermeldenswaard is verder nog dat dit één van de twee boeken over AI is die zijn aanbevolen door Bill Gates; het andere is Superintelligence van Nick Bostrom, dat al eerder door Jan op onze plenaire sessies ter sprake werd gebracht. Ook Henk was iets interessants aan het lezen: een Aula-pocket uit 1965, Mens en computer. In een twaalftal artikelen, geschreven door diverse bekende Nederlandse academici uit die tijd, wordt gekeken naar de (toenmalige) stand van zaken en de (eveneens toenmalige) verwachtingen m.b.t. het overnemen van menselijke werkzaamheden door computers en robots (AI, dus eigenlijk). Henk vestigde vooral de aandacht op de beschouwingen over de geheugencapaciteit van computers, die met de achteraf‐kennis van nu leuk zijn om nog eens na te lezen. Maar hij kwam in het boekje ook filosofische inzichten tegen die nu nog steeds van belang kunnen zijn. Ben had de afgelopen maand verder gesleuteld aan de software van zijn rijdende robot Madeleine. De heen-en-weer-opdracht (voor de Roboramawedstrijden van de HCC Robotica interessegroep) is nu geprogrammeerd in één wiskundige functie, met de toestanden van de 3 sensors als inputs en de motoropdracht als output.Daarnaast had hij veel hinder van Windows-systeemfouten. Als zo'n storing optrad, kon hij alleen nog maar het programma afsluiten, de robotgegevens waren niet meer toegankelijk. Dat maakt debuggen natuurlijk erg moeilijk! In samenspraak met zijn contacten bij Visual Prolog bleek dat het probleem in die software zat en nu waarschijnlijk is opgelost. Daarbij kreeg Ben wel de indruk dat het programmeren van robots een tamelijk ongebruikelijke toepassing van Prolog was… Ronald kon het Kohonennetwerk op zijn kleuren-LEDjes helaas nog niet demonstreren wegens een defect aan de elektronica. Maar hij had wel iets nieuws meegebracht: een 3-dimensionaal blokje met 4×4×5 gekleurde LEDs. De weg lijkt dus open te liggen voor Kohonen-3D! (GV 18 september 2016) Kort verslag van de bijeenkomst op 2 juli 2016 Vóór de plenaire sessie waren er weer verscheidene nuttige en interessante activiteiten. Zo hadden Peter en Gerard wat informeel bestuursoverleg; Gerard en Albert gingen verder met het doorgronden van de programmeertaal Occam; en Jan, Ben en Abraham waren druk in de weer bij Robotica. Tijdens de plenaire sessie zelf kwamen de volgende onderwerpen aan de orde: Gerard vroeg de aanwezigen om mee te denken over de opzet van een presentatievideo, die HCC over onze interessegroep wil maken. Het idee om de actieve leden iets te laten vertellen over waar ze mee bezig zijn, of wat ze gedaan hebben, en dat te illustreren met screenshots en filmpjes van programma's en robot-bouwsels, kreeg bijval: men vond dit een goede opzet. Na de zomervakantie gaan we dit idee nader gestalte geven. Natuurlijk blijft er ruimte voor ideeën over de precieze invulling, en staat het bestuur open voor eventuele aanvullende plannen, of desnoods zelfs voor een goed idee over een andere aanpak. De ethische implicaties van kunstmatige intelligentie kwamen op de vorige paar bijeenkomsten niet aan bod; maar vandaag was er eindelijk de gelegenheid om dit onderwerp aan te pakken. Peter had nogal wat tot nadenken stemmende stukjes informatie van het Internet opgeduikeld, en het onderwerp leent zich ook wel voor diepgaande (om niet te zeggen: eindeloze) discussie. Daarom was de bespreking van vandaag waarschijnlijk slechts een eerste aanzet, en zal het vraagstuk ook in de toekomst nog op diverse bijeenkomsten ter sprake komen. Ditmaal kwamen o.a. aan de orde: Google werkt aan een kill switch voor autonome systemen. Dat wil zeggen dat robots en andere systemen die hun eigen gang gaan, altijd kunnen worden uitgeschakeld als ze iets onwelgevalligs (dreigen te) doen. De vraag doet zich natuurlijk onmiddellijk voor: wie bedient dan die "uit"-knop? Gerard merkte op dat problemen met apparaten meestal bij mensen liggen: zo zal de kill-switch van een militaire drone vermoedelijk wel bediend worden door degene die 'm heeft uitgezonden, en dus hoogstwaarschijnlijk nooit gebruikt worden! Een chat-bot van Microsoft is "gekaapt" door "trollen", die hem hebben "geleerd" om ultrarechtse propaganda te spuien. Het merkwaardige is dat deze mogelijkheid door Microsoft blijkbaar niet is voorzien; de chatbot is dan ook spoorslags van het Internet gehaald. Het lijkt er op dat Microsoft hier "een beetje naief" is geweest. Immers, ook mensen kunnen, ondanks alle opvoedingspogingen, geïndoctrineerd worden met allerlei extreme ideologieën… Hierna liet Peter een filmpje zien van een robot die had "geleerd" om "nee!" te zeggen. Dit gaf aanleiding tot de vraag of geleerd gedrag is "geprogrammeerd". Jan en Teun dachten van wel; als technici meenden zij dat er toch ergens in het systeem bitjes moeten zijn die dit gedrag veroorzaken. Peter daarentegen dacht dat er, mede door de toenemende complexiteit van autonome systemen, onvoorspelbare effecten kunnen optreden. Hij gaf het voorbeeld van AlphaGo, waar de regels van het Go-spel niet expliciet ingeprogrammeerd waren; maar doordat alle voorbeelden waarvan het systeem geleerd heeft, geldige partijen waren, leerde hij zelf ook alleen maar geldige zetten doen. IBM's intelligente systeem Watson, dat de twee beste menselijke spelers versloeg in de quiz-show Jeopardy, leert momenteel medische diagnoses en behandelingen. En vanwege de enorme, en nog steeds groeiende, jurisprudentie worden menselijke assistenten van aanklagers, advocaten en rechters steeds vaker bijgestaan of zelfs vervangen door computersystemen. Wat voor consequenties hebben deze ontwikkelingen? Tot slot liet Peter een illustratie zien waaruit bleek dat zelfrijdende voertuigen met moeilijke morele dilemma's te maken kunnen krijgen: situaties waarbij geheid slachtoffers vallen, en het systeem moet kiezen tussen bijv. de inzittenden van het voertuig of passerende voetgangers. Henk had een filosofisch artikeltje meegebracht over de relatie mens — machine. Er werd een pauze ingelast zodat iedereen hiervan kennis kon nemen. Helaas is het niet meer tot een discussie over dit onderwerp gekomen. Abraham had een lijnvolgende robot meegebracht waaraan hij werkt. Dit onderwerp was aangemeld voor de plenaire sessie, maar de nieuwsgierigheid van de aanwezigen was zo groot dat Abraham de werkingsprincipes al in de pauze had uitgelegd. Jammer genoeg was daardoor niet iedereen hierbij aanwezig; maar dit onderwerp komt ongetwijfeld ook op volgende bijeenkomsten weer naar voren. Theo had weer een drietal interessante stukjes informatie te delen: Het juli(2016)-nummer van het computertijdschrift C'T bevat enkele artikelen over smartbikes: rijwielen uitgerust met sensoren en andere gadgets om het fietsen interessanter, makkelijker, aangenamer, en veiliger (maar niet goedkoper…) te maken. Het "gouwe ouwe" programmeersysteem Turbo C is ook voor Windows 7, 8, 8.1 en 10 beschikbaar. Op de wiki van de Python-gemeenschap staat een pagina met informatie en links m.b.t. AI en machine learning in Python. Ben had de afgelopen maand weer stevig gesleuteld aan Madeleine. Ze had al één recht naar voren gerichte infrarood-afstandssensor; nu de uitlezing daarvan goed blijkt te werken, is ze uitgerust met nog twee van die sensoren, die onder een hoek van (voorlopig?) 45° schuin naar links- en rechtsvoor kijken. Verder hebben haar wielen nu een onafhankelijke snelheidsregeling, zodat ze kan keren en bochtjes draaien. Ben heeft ervoor gekozen om Madeleines bewegingen te besturen in Visual Prolog op de PC (in plaats van in C op de microprocessor). De laptop verzendt iedere seconde één of meer opdrachten naar de robot; de uitvoeringscode voor die opdrachten staat dan wel weer op de robot zelf. Ben is nu begonnen om Madeleine klaar te stomen voor het onderdeel "heen-en-weer" van de Roborama-wedstrijden van HCC!Robotica. Hij koos daarbij voor de volgende aanpak: Heen: volg de wand aan je rechterkant. Stop en keer: als je de eindmuur ontwaart. Terug: volg de wand aan je linkerkant. Dit vroeg natuurlijk om een demonstratie, en Madeleine gaf een uitstekende show weg; zelfs Bens verwachtingen werden overtroffen! De verrichtingen van Madeleine zijn door Abraham vastgelegd op een filmpje. Ben merkte ook nog op dat de Bluetooth-dataverbinding tussen Madeleine en de computer soms wegvalt. Madeleine blijft dan voortdurend de laatst ontvangen opdracht herhalen — een euvel dat Ben binnenkort nog hoopt te verhelpen. Gerard vertelde dat Ronald erin was geslaagd om met zijn 8×8-matrix van regelbare LEDjes de inwendige toestand van een Kohonen-netwerk weer te geven. Op de onderstaande foto de situatie na leerstap 1076: het schermpje rechts geeft de situatie zoals die door Gerards programma al werd afgebeeld, terwijl links dezelfde toestand van het neurale netwerk met de LEDs wordt uitgebeeld. Omdat niet iedereen vertrouwd was met het Kohonen-netwerk heeft Gerard nog kort uiteengezet wat het netwerk verondersteld wordt te doen; maar de tijd ontbrak om het hoe en waarom volledig te bespreken. Wegens andere verplichtingen kon Ronald vandaag niet aanwezig zijn om het geheel te demonstreren, dus een volledige presentatie van dit project (desgewenst met uitvoerige uitleg van het neurale netwerk door Gerard) volgt later nog. Tot slot meldde Gerard nog dat het juli-nummer van Scientific American een interessant artikel bevat over het lopen van tweebenige robots. Na de zomervakantie pakken we de draad weer op! (GV 6 juli 2016) Kort verslag van de bijeenkomst op 4 juni 2016 In de plenaire sessie kwamen de volgende onderwerpen aan bod: Gewoontegetrouw praatte Ben ons weer bij over het wel en wee van zijn robotkarretje Madeleine. De infrarood-afstandssensor zit er nu op en werkt goed. Om de 0.5 seconde wordt er een meting verricht, en Madeleine stopt netjes als ze op een afstand tussen 10 en 80 centimeter een obstakel ontwaart. Ben heeft hiervan een korte demonstratie gegeven; daarbij gaf hij (via de beamer) ook een goede indruk van de datacommunicatie tussen Madeleine en de computer.De volgende stap is nu om de motoren van de beide aandrijfwielen, die worden aangestuurd door middel van pulscodemodulatie (PCM), met verschillende snelheden te laten draaien, zodat Madeleine allerlei bochtjes kan gaan beschrijven. Titus was nog steeds bezig met natuurkundige simulaties, waarvan hij er twee demonstreerde. Er was vooral aandacht voor de verbeterde "ballenbak", waarin nu ballen van verschillende formaten rondstuiterden. De eerder waargenomen, onbedoelde "plakkerigheid" van de ballen was nu verholpen. Wat nog wel vragen opriep, was dat alle ballen zich steeds meer verzamelden onderin de bak, alsof ze langzamerhand energie verloren; hoewel Titus verklaarde dat hij er geen wrijving of zo had ingeprogrammeerd. Dit blijft dus nog een punt van aandacht. Ook vertelde Titus zich weer te hebben geworpen op het oude Commodore64-spel "geen-drie-op-een-rij", een soort omgekeerd boter-kaas-en-eieren dus. Er waren 5 speelkeuzes: mens vs. random, random vs. mens, random vs. random, mens vs. AI, en AI vs. mens. (De eerstgenoemde heeft telkens de beginzet.) We zijn er echter niet toe gekomen dit interessante programma tot in detail te bekijken. Ronald kwam met twee interessante onderwerpen uit de geek pages van het tijdschrift "LINUX magazine": Onder een berichtje over de recente overwinningen van het deep learning computersysteem AlphaGo staat een gegeven dat deze prestatie nog eens extra in perspectief zet: het exacte aantal toegestane go-posities. Dit is een getal van 171 cijfers! — helaas te groot om het netjes op een HTML-webpagina te krijgen… Doordat computers gewoonlijk rekenen in het binaire talstelsel (of afgeleiden daarvan, zoals hexadecimaal), is de uitkomst van 0.1 + 0.2 niet 0.3, maar meestal 0.30000000000000004. Dit soort onnauwkeurigheden kan je grote problemen bezorgen bij bepaalde numerieke berekeningen, omdat kleine fouten zich kunnen voortplanten en opeenstapelen, zoals bijvoorbeeld bij het doorrekenen van differentiaalvergelijkingen. Denk bijv. ook aan de chaostheorie, waarin kleine verschillen in beginwaarden hemelsbrede verschillen in uitkomsten kunnen geven: de spreekwoordelijke vlinder die met zijn gefladder een orkaan veroorzaakt! Theo vroeg de aandacht voor het juni(2016)nummer van het tijdschrift C'T (Nederlandstalige versie), waarin maar liefst 5 artikelen over kunstmatige intelligentie zijn te vinden. Het gaat vooral over zelflerende neurale netwerken, waarin ook aandacht wordt besteed aan "zelf doen". Nuttige lectuur voor hobbyisten, dus! Gerard verklaarde een digitale versie van het Nature-artikel over AlphaGo te hebben bemachtigd; hij hoopt ergens in de komende maanden de tijd te vinden om deze zware kost te bestuderen. Omdat niet iedereen de regels van Go kent, heeft Gerard in het kort iets uitgelegd over vrijheden, slaan, en gebiedsbezetting. Ook vertelde Gerard dat Willem Ouwerkerk van de HCC!Forth interessegroep bereid is gevonden om voor de Robotica- en AI-interessegroepen een lezing (met demonstratie) te geven over een tweetal robotjes die hij heeft gebouwd. Daarbij zullen zowel de hardware als de software aan bod komen. Deze presentatie zal waarschijnlijk in september plaatsvinden. Door afwezigheid van Peter moest de discussie over de ethische implicaties van AI, die als gevolg van het succes van deep learning weer zeer actueel worden, wederom uitgesteld worden. We hebben, naast het vervolg van alle lopende en bekende activiteiten en projecten, dus nog steeds iets om naar uit te kijken! (GV 29 juni 2016) Kort verslag van de bijeenkomst op 7 mei 2016 Vóór het gezamenlijke gedeelte zijn Albert en Gerard bezig geweest met het verder verkennen van de programmeertaal Occam. Ze hebben hun programmaatje zodanig aangepast dat de beide op te tellen getallen nu door de gebruiker moeten worden ingevoerd. Via het Internet is dit getest op de transputer die bij Jan thuis stond aangesloten, en het bleek allemaal prima te werken! Tijdens de plenaire sessie werden er weer diverse onderwerpen aangedragen: Twee nieuwe bezoekers stelden zich voor: Arthur verklaarde ervaring met ICT te hebben vanuit zijn achtergrond in de financiële dienstverlening (m.n. verzekering); zijn belangstelling gaat vooral uit naar datagebruik en zelflerende systemen. Teun heeft een achtergrond in elektronica en automatisering (m.n. datacom), en hij is vooral geïnteresserd in de combinatie van mechanica en elektronica en de toepassingen daarvan in de robotica. Jan had op een eerdere bijeenkomst gezegd dat hij bij het programmeren van zijn Lego-robotkarretje MOOF in LabView, problemen had ondervonden met het doorgeven van variabelen tussen de diverse "programmablokken". Hij deelde mee dat hij dat probleem nu onder de knie heeft, en dat het prima werkt. Het klaarstomen van MOOF voor de Roborama-wedstrijden gaat dus gewoon door. Verder vertelde Jan dat concurrency steeds meer zijn interesse heeft. Titus had een boek aangeschaft over "natuurkunde op de computer", met voorbeelden in JavaScript, en hij liet enkele natuurkundige simulaties zien, die hij n.a.v. dat boek in FreeBasic heeft geschreven: een stuitende bal, een bak met meerdere stuitende ballen, een bal die in het water valt, een planeet die om een zon draait. Daarnaast had hij er ook een paar die nog niet naar behoren werkten, zoals een simulatie van "flocking behaviour". Ook demonstreerde hij een "wereldbeeld" voor een nog te schrijven flight simulator. Ben deed zijn belofte, gedaan op een eerdere bijeenkomst, gestand door iets te vertellen over backtracking in de programmeertaal Prolog. Het blijkt dat Prolog voor elk programma een (onzichtbare) boomstructuur opbouwt, en daarin een depth-first zoekactie uitvoert — en depth-first zoeken is backtracken. Het backtrack-mechanisme zit dus gewoon in de programmeertaal ingebouwd. Ben wist dit treffend te illustreren met de debugger die in (de betaalde versie van) Visual Prolog zit ingebouwd, aan de hand van een (zelf bedacht) programmavoorbeeld over vrienden, en vrienden van vrienden (die, zoals de volkswijsheid luidt, ook weer vrienden zijn). Voor degenen die dit nog eens na willen lezen, heeft Ben alles nog eens duidelijk opgeschreven in een artikel op zijn eigen website. Aan het eind van die webpagina staat ook een link naar een YouTube-filmpje dat dezelfde materie behandelt, zij het in het Engels. Verder verwees Ben nog naar het stuk dat hij schreef over de oplossing van de roofoverval, ook te vinden op zijn website; en naar het boek Prolog Programming for Artificial Intelligence van Ivan Bratko, dat goed beschrijft hoe een van de standaard backtrackproblemen, het "8 koninginnenprobleem", in Prolog kan worden opgelost. Tot slot was Gerard aan de beurt, die demonstreerde dat hij het programma van Titus om een neuraal netwerk van één neuron, een zgn. perceptron, te "trainen" met behulp van een genetisch algoritme, min of meer aan de praat heeft gekregen. De wijzigingen in het voortplantingsmechanisme, die hij op de vorige bijeenkomst had aangekondigd, waren voldoende om het perceptron gaandeweg de generaties te verbeteren. Er ontstond niet altijd een foutloze versie, hetgeen ook niet te verwachten was, omdat toevalsprocessen een belangrijke rol spelen; maar er werd wel steeds een perceptron geproduceerd dat hooguit slechts een paar procent van de inputs verkeerd klassificeerde. Dat gold niet alleen voor de trainings-dataset, maar ook voor de apart gegenereerde testdata. Bovendien bleken de gewichten van het resulterende perceptron steeds te beantwoorden aan de door Gerard van te voren op theoretische gronden voorspelde waarden: de gewichten van de beide inputs vrijwel even groot, maar tegengesteld van teken; en het gewicht van de bias-input vrijwel nul. Helaas namen deze onderwerpen zoveel tijd in beslag, dat de door Peter voorbereide en aangekondigde discussie over de ethische aspecten van zelflerende systemen niet meer aan bod kwam. U kunt er dus op rekenen dat dit onderwerp voor de juni-bijeenkomst met maximale prioriteit op de lijst staat… (GV 1 juni 2016) Kort verslag van de bijeenkomst op 2 april 2016 De eerste drie kwartier van het plenaire gedeelte werden besteed aan de traditionele jaarlijkse Algemene Ledenvergadering (ALV). Daarna kwamen er weer diverse onderwerpen aan bod: Ben had weer nieuws over zijn rijdende robotkarretje Madeleine. Hij vertelde dat ze uit logeren was bij Abraham. Nadat pogingen om haar afstandssensor aan de praat te krijgen zonder resultaat waren gebleven, werd vermoed dat de oorzaak lag in een hardwareprobleempje — en inderdaad, Madeleine bleek te lijden aan een ondeugdelijke soldeerverbinding. Momenteel wordt ze nagekeken op verdere gebreken, en wordt het sensorgedrag nagemeten.De communicatie van Madeleine met de computer loopt goed en, met 115200 bits/sec, snel. Haar huidige mobiliteit beperkt zich tot voor- en achteruit rijden, keren-op-de plaats, en stoppen; bochtjes maken heeft ze nog niet geleerd. Ben hoopt haar op tijd klaar te kunnen stomen voor het onderdeel heen-en-weer-rijden van de Roboramawestrijden die de HCC Robotica interessegroep tegen het eind van dit jaar weer zal organiseren. We zijn benieuwd… Theo was wat aan het grasduinen gegaan op het internet, en vertelde dat de technologie achter de Transputer-taal Occam nog lang niet dood is: er bestaat een Python-module python-csp, waarin CSP staat voor Communicating Sequential Processes, de formele taal ontworpen door C.A.R. Hoare waarop ook Occam is gebaseerd. (Tony Hoare ontving in 1980 de ACM A.M.Turing award).Vervolgens ontspon zich een discussie, waarbij Jan zich afvroeg of python-csp ook snel (d.w.z. zonder boekhouding) tussen taken kon switchen, en zei geen performanceverbetering te verwachten omdat Python ook op gewone PC's draait. Gerard vond dat je onderscheid moest maken tussen het abstracte idee en de implementatie: CSP is een methode om diverse systemen te laten samenwerken, en kan op diverse platformen worden geïmplementeerd; maar alleen als het werkt op meerdere processoren is een performanceverbetering te verwachten. Gerard dacht overigens dat die verwerkingssnelheid slechts lineair (= evenredig) of hooguit polynoom (bijv. kwadratisch, of volgens een hogere macht) toeneemt met het aantal processoren. Hij verwacht dan ook niet dat concurrency (gelijktijdigheid) een oplossing vormt voor de echt weerspannige problemen, waarbij de benodigde verwerkingstijd meer dan polynoom (d.w.z. exponentieel, of zelfs nog sneller) toeneemt met de omvang van het probleem. Titus vertelde dat hij zich weer had gebogen over Cartesiaans genetisch programmeren. Daarbij is het de bedoeling om "een virtuele chip te bakken", bestaande uit "poorten" die rekenkundige bewerkingen uitvoeren. Hij kon nog geen resultaat laten zien; het programma verbetert de fitness van het netwerkje wel, maar slaagt er nog niet in om de stelling van Pythagoras (a2 + b2 = c2) te leren.Voor verdere informatie over Cartesiaans genetisch programmeren verwees Titus naar het internet (m.n. YouTube), waar hij zelf ook zijn informatie vandaan had gehaald. Gerard kwam terug op de bijdrage van Ronald over "intelligente" LEDjes, enkele maanden geleden. Op de bijeenkomst van HCC!programmeren had hij aan Ronald voorgesteld om er een Kohonen self-organizing feature map onder te zetten, en Ronald vond dat een leuke toepassing. Ter verduidelijking demonstreerde Gerard het Kohonen-simulatieprogrammaatje, dat hij jaren geleden zelf in Borland C had geschreven. Verder had Gerard de afgelopen maand gekeken naar het perceptron-programma van Titus. Hij had een kleine wijziging aangebracht in de codering van de chromosomen, hetgeen leidde tot een vereenvoudiging van de kruisings- en mutatieroutines. Het programma vindt nu al in de eerste generatie een goede fitness, maar daarna blijven verdere verbeteringen gewoonlijk uit — Gerard dacht doordat Titus' voortplantingsselectiemethode de variatie te snel uit de populatie haalt. Hij hoopt hier nog iets op te bedenken. Verder wilde hij ook de dataset aanpassen (floating-pointgetallen i.p.v. gehele getallen), en het uiteindelijke perceptron laten testen op andere data dan voor de training is gebruikt. Peter wilde graag van gedachten wisselen over AlphaGo, het computerprogramma dat in een tweekamp van 5 partijen de op-één-na beste go-speler van de wereld overtuigend versloeg. Deze mijlpaal in de AI-geschiedenis was vóór de planaire sessie in Peters afwezigheid ook al enigzins ter sprake gekomen. AlphaGo werkt met deep learning, een aanpak die de laatste tijd sterk aan kracht heeft gewonnen door snellere hardware (m.n. het gebruik van grafische processors), tweaks in het algoritme, en de beschikbaarheid van allerlei reusachtige dataverzamelingen. De basis, gelegen in recurrente neurale netwerken ("backpropagation in time") en Boltzmann machines, was echter al sinds de jaren '80 bekend. Nadere informatie is o.a. te vinden in een artikel in PC Active nr. 287 (april/mei 2016) en natuurlijk op de website van Google DeepMind. (GV 22 april 2016) Kort verslag van de bijeenkomst op 5 maart 2016 Voorafgaand aan de plenaire sessie waren er twee belangrijke aktiviteiten: Zoals afgesproken tijdens de laatste bijeenkomst van de HCC retro interessegroep had Jan een transputersysteem neergezet om mee te stoeien. Gerard en Albert zijn die uitdaging niet uit de weg gegaan, en slaagden er in om het in OCCAM geschreven "Hello World!"-programma om te bouwen tot een simpel rekenprogrammaatje dat de gebruiker vraagt om twee (gehele) getallen in te voeren, en vervolgens de som van die getallen afdrukt. Het begin is gemaakt! Cor van Rooij van het HCC hoofdbestuur kwam overleggen met de besturen van AI en Robotica. Er is besloten om "Robotica en AI" als seizoensthema voor de maanden april t/m juli te vervangen door een ander thema, dat volgens de programmaraad op een bredere belangstelling binnen de HCC kan rekenen. Maar Cor vertelde ons dat we toch onze interesses en aktiviteiten onder de aandacht van andere HCC-leden kunnen brengen door samen met één van de HCC videoteams een video te maken. Dat kan live zijn, b.v. een als stream uitgezonden presentatie, of een webinar, waarbij mensen vragen kunnen stellen; maar de gedachten gaan vooral uit naar een opgenomen en zorgvuldig gemonteerde "documentaire" over een of meer onderwerpen of projecten, die via de HCC-portal te zien zal zijn. U hoort hier in de toekomst waarschijnlijk meer van. Daarnaast kwamen in de plenaire sessie nog de volgende onderwerpen aan bod: Titus had een steen-schaar-papier-programmaatje geschreven in JustBasic. Het werkt ongeveer hetzelfde als het eerder door Gerard geschreven programma: het onthoudt een aantal (in dit geval 3) zetten van de tegenstander en bepaalt aan de hand daarvan zijn volgende zet. Als er in de taktiek van de menselijke opponent een patroon zit, dan profiteert de computer daarvan en wint meer dan de 33,3 procent die bij optimaal tegenspel maximaal haalbaar is. Om het programma te testen hebben we een sessie van 100 spelletjes gespeeld. Gerard hoopte de computer te slim af te zijn door alle negen aanwezigen bij toerbeurt een keuze te laten maken, en daarbij ook nog eens halverwege de richting om te draaien. Helaas mocht dat niet baten: de computer won 45%, de mensen 22%, en 29% eindigde in gelijkspel.Het is niet duidelijk waarom deze getallen samen geen 100% zijn. (Misschien is de uitslag niet geheel correct overgenomen?) Ook is van de aanwezigen niet per persoon vastgelegd hoeveel spelletjes ieder afzonderlijk heeft gewonnen, verloren en gelijk gespeeld. Wat in ieder geval wel duidelijk is, is dat een groep mensen niet duidelijk beter is in het genereren van een willekeurige keuze dan één persoon afzonderlijk — in ieder geval niet, wanneer ze kunnen horen wat er door de vorige persoon is gekozen. Dat vráágt natuurlijk om een experiment waarbij mensen vanuit verschillende locaties (bijv. via het Internet) samen tegen een computer spelen! Ook het idee om Gerards programma tegen dat van Titus te laten spelen kwam nog even ter sprake … Behalve met dit programma heeft Titus zich de afgelopen weken ook met OpenGL bezig gehouden: hij is begonnen om diverse met het pakket meegeleverde voorbeelden om te bouwen. In het kader van het aanwezige Transputersysteem en de programmeeractiviteit voorafgaand aan de plenaire sessie, verklaarde Jan zich bereid om op een toekomstige bijeeenkomst nogmaals iets te vertellen over concurrent programmeren en de werkingsprincipes van de Transputer. De programmeertechniek backtracking is een regelmatig terugkerend onderwerp in onze plenaire sessies. Op een vraag van Henk vertelde Ben dat backtracken in de AI-taal Prolog niet alleen mogelijk is, het is er zelfs gewoon ingebouwd. Oftewel: je krijgt het cadeau, je hoeft het niet zelf te schrijven. Ben zei dat hij op een van de volgende bijeenkomsten wel een simpele demonstratie wou geven. Terugkomend op een eerdere discussie vertelde Jan tijdens zijn vakantie het boek Superintelligentie. Kansen, gevaren, strategieën van Nick Bostrom te hebben gelezen. Hij heeft daarbij ook op het Internet nog interessante informatie over dit onderwerp gevonden. Er lijkt weinig twijfel te bestaan dat zo'n superintelligentie er ooit zal komen, hoewel de meningen verschillen over de termijn waarop dat gaat gebeuren. Er zijn zelfs al claims dat er m.b.v. genetisch programmeren vorderingen zijn gemaakt in de richting van een superintelligentie. Jan zag in genetisch programmeren een goede toepassing van concurrency. Daarna ging het nog even over besturing, ook een onderdeel van AI. Jan merkte op dat er op dat gebied nog wel het een en ander te doen is, getuige het feit dat de Google-auto onlangs zèlf een aanrijding heeft veroorzaakt. In dit kader kwam ook het besturen van apparaten door menselijke "hersengolven" of spierspanningen ter tafel; over dit onderwerp bleken de interpretaties en meningen van de aanwezigen nogal uiteen te lopen. Gerard kwam in een artikel van Donald E. Knuth over het "dancing links"-algoritme een merkwaardige instructie tegen: kies een rij (van een matrix) niet-deterministisch. Knuth legt dit uit: "De niet-deterministische keuze betekent dat het algoritme zichzelf in feite kloont in onafhankelijke subalgoritmes". Gerard heeft dit geprogrammeerd met een herhalingslus, waarin het algoritme zichzelf recursief aanroept. Maar hij denkt dat deze beschrijving ook kan worden uitgevoerd door het werk te verdelen over de verschillende concurrente processoren van een transputer, of miscchien zelfs door een "superpositie van toestanden" in een kwantumcomputer. Tot slot kwam Gerard nog even terug op het (nog niet werkende) programmaatje dat Titus de vorige keer presenteerde. Volgens Gerard komt Titus vaak met interessante kleine AI-projecten op de proppen, doordat hij relatief simpele ideeën op een leuke manier weet te combineren en toe te passen. In dit geval wil Titus een perceptron laten aangeven welke van zijn twee inputs de grootste is; de gewichten moeten m.b.v. een genetisch algoritme worden bepaald. Gerard beredeneerde dat het perceptron in dat geval geen bias-ingang nodig heeft, en dat de gewichten van de beide inputs ongeveer even groot en tegengesteld van teken moeten zijn. (GV 14 maart 2016) Kort verslag van de bijeenkomst op 13 februari 2016 Ook deze maand weer veel verschillende onderwerpen: Ben praatte ons bij over zijn robotkarretje Madeleine. Ze is weer bij bewustzijn, en nu ook voorzien van een real-time clock (RTC), zodat ze ook bij de tijd is. Deze hardwareklok kan timersignalen afgeven, die nu worden gebruikt om Madeleine haar "dansje" (4 seconden vooruit, 4 seconden achteruit, en dan stoppen) te laten uitvoeren. Daarnaast is Madeleine uitgerust met Bluetooth, zodat ze draadloos kan communiceren met Bens laptop; dat is handig bij het debuggen, en voorkomt dat Ben voortdurend achter haar aan moet hollen. Momenteel is Ben bezig ook een infrarood-afstandssensor aan te brengen. (Volgens Pedro zijn afstandssensoren op basis van geluid nauwkeuriger.) De sensor kan obstakels waarnemen die tussen 10 en 80 cm verwijderd zijn; maar op dit moment werkt de data-overdracht van de sensor naar het processorbordje nog niet goed, waarschijnlijk wegens een te instabiele voedingsspanning. We houden U op de hoogte. Gerard kondigde aan om zich op de bijeenkomsten voortaan vooral op de echte AI-onderwerpen te richten, en zijn programmeeractiviteiten voor zover die wat meer mainstream zijn (zoals programmaatjes ter illustratie bij onderwerpen uit de theoretische informatica en voor het oplossen van puzzels) te presenteren op de bijeenkomsten van de HCC interessegroep programmeren, waar ze nu ook een plenaire sessie houden. Overigens zondigde Gerard tegen het einde van de bijeenkomst meteen al tegen dit voornemen door de aandacht te vestigen op het werk van Donald E. Knuth. Diens meerdelige The Art Of Computer Programming is hèt standaardwerk over algoritmen. Momenteel werkt Knuth aan hoofdstuk 7, over combinatorische algoritmen. Om zijn werk zo volledig en foutloos mogelijk te maken, publiceert hij zijn boeken in gedeelten voor, eerst op het internet en daarna nog in de vorm van relatief dunne paperbacks die hij fascicles noemt, zodat experts verbeteringen en aanvullingen kunnen suggereren. De meest recente voorpublicatie op het internet gaat over backtracking, een programmeertechniek die ook op onze bijeenkomsten al de aanleiding tot menige discussie is geweest. Peter kwam met enige bijzonderheden uit de ledenstatistiek van onze interessegroep. We hebben momenteel nog 255 leden. Van 33 leden is geen e-mailadres bekend; bent U daar één van, en wilt U graag onze nieuwsbrief ontvangen, dan kunt U uw e-mailadres doorgeven aan HCC. Het totale aantal geabonneerden op onze nieuwsbrief is bijna tweemaal zo groot als het aantal leden.Ook kregen we de verdeling van onze leden over de regio's te zien. Als u onze bijeenkomsten te ver weg vindt, of de dag komt nooit gelegen, maar U wilt toch wel eens spreken met andere in AI geïnteresseerde hobbyisten, dan is het misschien een interessant idee om namens onze interessegroep naar regiobijeenkomsten te gaan. Wie hier wel wat in ziet, kan natuurlijk altijd contact opnemen met het bestuur van deze interessegroep.Tenslotte kregen we de overlap met andere interessegroepen te zien. Opvallend was o.a. het aantal AI-leden dat ook lid is van HCC!beleggen. Volgens Jan van den Broek is dat wel begrijpelijk; immers, voor beleggen is snel beslissen vaak van cruciaal belang, en AI-technieken kunnen hierbij zeker een rol spelen. Hij dacht dat het misschien nuttig zou zijn als beide interessegroepen op bestuursniveau contact zouden leggen. Nu hij het boek Kunstmatige Intelligentie op uw Computer, geschreven door John Krutch, zo'n beetje doorgewerkt heeft, en de daarin opgenomen BASIC-programma's naar Python heeft "vertaald", wil Gerard wil zich de komende maanden wijden aan het bestuderen van AI for Game Developers van David M. Bourg en Glenn Seemann. Uit het eerste hoofdstuk blijkt dat bij game AI sommige karakters met opzet juist tamelijk "dom" gedrag vertonen; enerzijds omdat het er vooral om gaat het gedrag van de tegenstanders zo realistisch mogelijk te maken, en anderzijds omdat de speler waarschijnlijk zijn belangstelling verliest als hij het idee heeft dat het spel onmogelijk te winnen is. Het boek bevat geen complete programma's, maar de diverse technieken worden wel geïllustreerd met codevoorbeelden in C(++). Gerard is van plan om deze ideeën toe te gaan passen in JS Robots en eventueel ook in Scratch-programma's, en stelde voor om dat op de bijeenkomsten voorafgaande aan de plenaire sessie te gaan doen. Verschillende anderen leken daarin geïnteresseerd, mits ze zelf ook een exemplaar van het boek kunnen bemachtigen. Peter wees erop dat er momenteel een versnelling van de ontwikkelingen op het gebied van AI en Robotica gaande lijkt te zijn, en illustreerde dat met twee voorbeelden. Het eerste was een artikel over het World Economic Forum in Davos, waaruit blijkt dat ook veel belangrijke politici en topmanagers zich zorgen beginnen te maken over de maatschappelijke gevolgen van de ontwikkelingen op deze gebieden. Het tweede was een artikel over AlphaGo, het eerste computerprogramma dat er in slaagde een professionele go-speler te verslaan. Dit succes kwam jaren eerder dan experts verwachtten, en was mede te danken aan deep learning in een neuraal netwerk. Tevens werd door Peter en Gerard aandacht besteed aan het overlijden van Marvin Minsky, een van de belangrijke onderzoekers op het gebied van de AI. In een krantenartikel werden de bijdragen van Minsky aan het vakgebied uiteengezet. Een eerdere versie van dit artikel, waarin nog geen verband werd gelegd tussen Minsky en de zege van AlphaGo, bevat enkele interessante internetlinks. Hierna kwam het gesprek weer eens op de Rubik-kubus. Op YouTube staat een filmpje over een gespecialiseerde robot die de kubus oplost. Op een ander filmpje is te zien hoe deze robot het wereldrecord (voor robots) bemachtigt. Overigens zijn ook de wereldrecords voor mensen (zo te zien allemaal tieners) zeer indrukwekkend! Gerard had bij de kringloopwinkel een puzzel gevonden die wel wat aan Rubik's kubus doet denken: Planets van Recent Toys. Het gaat daarbij om 4 bollen (de planeten), ingesloten in een tetraeder (viervlak). Elke bol heeft instulpingen (kraters) die het een naastgelegen bol mogelijk maken te draaien. De bedoeling is om door draaiing van de bollen elke zijde van het viervlak één kleur te geven. Gerards belangstelling ging verder dan alleen het oplossen van de puzzel op zich: omdat de draaiingsassen van Planets onderling net zulke (niet loodrechte!) hoeken hebben als de takken van TetraBot, hoopt hij door het spelen met de puzzel zijn intuïtie m.b.t. de bewegingsmogelijkheden van TetraBot te verbeteren. Titus is bezig met het programmeren van een perceptron. Hij werkt aan twee versies: één in Just BASIC, en één in FreeBASIC. Die in FreeBASIC is sneller, maar geen van beide versies doet vooralsnog wat van ze wordt verwacht, namelijk m.b.v. een genetisch algoritme leren beslissen welk van twee inputs (gehele getallen) groter is. Peter maakte ons attent op Blockly, een "bibliotheek voor het bouwen van visuele programma-editors". Het gaat hierbij om programmeren in Scratch-achtige blokken, met twee belangrijke verschillen: enerzijds wordt het blokkenprogramma omgezet naar programmacode in een tekstgeoriënteerde programmeertaal (JavaScript, Python, PHP, of Dart), en anderzijds is het mogelijk om bijv. in JavaScript zelf nieuwe blokken te definiëren. De presentatie van Peter leidde uiteraard tot een discussie over de relatieve sterktes en zwaktes van diverse programmeertalen; Gerard merkte hierbij op dat hij steeds probeert een programmeertaal te kiezen die geschikt is voor de klus, zoals een timmerman een zaag ter hand neemt wanneer er moet worden gezaagd, en een hamer als er spijkers moeten worden ingeslagen. Aan het eind van de bijeenkomst opperde Gerard nog om naast Artificiële Intelligentie en Artificial Life ook Artificiële Creativiteit in het officiële "mission statement" van onze interessegroep op te nemen. Onder artificial creativity, ook wel computational creativity, mechanical creativity of creative computation genoemd, valt volgens hem het voortbrengen van kunst door de computer, maar niet door mensen met behulp van de computer. De reacties waren verdeeld: met name Peter was mordicus tegen, vooral vanwege de eeuwigdurende meningsverschillen over wat kunst nu eigenlijk is, terwijl de meeste anderen er het nut niet zo van inzagen, hetzij omdat deze activiteit toch al onder kunstmatige intelligentie valt, hetzij omdat onze bijeenkomsten altijd wel gelegenheid bieden om allerlei al dan niet direct aan AI gerelateerde onderwerpen te berde te brengen. Het ziet er dus naar uit dat dit idee een zachte dood sterft. (GV 15 februari 2016) Kort verslag van de bijeenkomst op 2 januari 2016 Op deze eerste bijeenkomst van het nieuwe jaar kwamen veel verschillende onderwerpen aan bod, voornamelijk in de vorm van mededelingen en tips: Gerard presenteerde de onderstaande 4×4 mini-sudoku, die hij ontworpen had om er zijn sudoku-oplossende programma mee te testen.Albert gaf een korte introductie van de HCC Retro interessegroep. Deze groep is ontstaan door een fusie van de NewBrain interessegroep en de Amstrad interessegroep, maar beperkt zich niet tot deze twee vintage computermerken: iedereen die het leuk vindt om allerlei oude hardware en/of software weer aan de praat te krijgen of aan het werk te zien, is welkom. Theo meldde dat HCC!programmeren inmiddels zijn eerste plenaire sessie achter de rug heeft. Een kort verslag hiervan is op de website van deze interessegroep te vinden. Ook vestigde Theo onze aandacht op Codecombat, een programmeercursus binnen een spelomgeving, die met name voor jongeren erg aantrekkelijk zou kunnen zijn. Zowel Javascript als Python worden aangeboden. Er zijn ook de nodige filmpjes over Codecombat te vinden op YouTube. Abraham maakte ons opmerkzaam op VoiceNote, een plug-in voor de Google Chrome webbrowser die gesproken woorden omzet in tekst. Je moet daarbij opgeven in welke taal er wordt gesproken; het programma herkent dus niet alleen Engels. Abraham heeft 'm uitgeprobeerd voor een dove kennis, en was zeer te spreken over de kwaliteit ervan. Titus vroeg zich af hoe deze software het zou doen op het Nationaal Dictee … Titus deelde mee dat hij zijn poging om m.b.v. genetisch programmeren de halfwaardetijd van isotopen te voorspellen, en zo het door theoretische natuurkundigen voorspelde "eiland van stabiliteit" te vinden, heeft opgegeven. De methode zal waarschijnlijk te langzaam zijn: waar een genetisch programma binnen 1 seconde een benadering voor pi geeft, heeft hij voor de stelling van Pythagoras (100 datapunten) al 20 seconden per generatie nodig — en het isotopenprobleem heeft zo'n 10000 datapunten! Ronald gaf ons een gecomprimeerde versie van het verhaal over "intelligente LEDs" dat hij voor HCC!programmeren had gehouden; bij ons bezigde hij echter voorzichtigheidshalve de term "LEDs met ingebouwde controllers". Voor de technische details verwijs ik naar het uitstekende verslag op de website van HCC!programmeren. Interessant is dat in een achter elkaar geschakelde reeks elke LED een aantal bits van de data afhaalt, en de rest doorstuurt naar zijn buurman. Dit doet sterk denken aan de manier waarop bijv. in LISP een recursieve functie iets doet met het eerste element van een lijst, en de rest ter afhandeling doorgeeft aan een kopie van zichzelf …Gerard dacht dat een bordje met 10×10 LEDs, zoals Ronald ter demonstratie had meegebracht, misschien bruikbaar zou zijn om (bijv. op een rijdend robotkarretje) de inwendige toestand van een neuraal netwerk weer te geven. Ben deelde ons mee dat zijn rijdend robotkarretje Madeleine wegens een verkeerd geprogrammeerd bitje helaas tijdelijk buiten bewustzijn was. Hij was bezig geweest met het programma dat de communicatie met de PC verzorgde: de door hem gebruikte programmeertaal Visual Prolog kan namelijk uit diverse objectgeoriënteerde klassen het gemeenschappelijke halen, wat natuurlijk een geweldig hulpmiddel is om een stuk software te stroomlijnen en/of te herstructureren. Peter kwam met een interessant artikel in American Scientist van november/december 2015 (vol.103, nr.6): Computer Vision and Computer Hallucinations. Dit gaat over de interessante resultaten die naar voren komen bij het gebruik van deep learning neural networks bij beeldherkenning (computer vision). Een ander onderwerp dat door Peter naar voren werd gebracht is JSRobots, een omgeving waarin gesimuleerde rijdende gevechtsrobots elkaar te lijf gaan. Je kunt daarin je eigen robot programmeren, en Peter dacht dat het misschien leuk was om in het kader van het komende Robotica/AI seizoensthema een programmeerwedstrijd te organiseren m.b.v. deze omgeving. De algemene stemming was dat de hiervoor benodigde voorbereidingstijd helaas de beschikbare tijd te boven ging. Wat natuurlijk niet uitsluit dat JS Robots in de toekomst nog wel een rol in onze aktiviteiten zou kunnen gaam spelen. Henk kwam nog even terug op zijn programma om de 2×2×2 Rubik's kubus op te lossen. Hij bouwt daarvoor een array op met daarin voor elke toestand van de kubus het niveau van de "oplossingsboomstructuur". Omdat die boom 11 niveaus heeft, zijn er 4 bits opslagruimte per kubusconfiguratie nodig; voor alle 7!×36 = 3.674.160 standen dus 1.837.080 bytes. Henks oplossingsmethode hoeft echter niet het absolute boomniveau te weten, maar slechts twee boomniveau's te vergelijken (hoger of lager); daarom kan hij volstaan met een codering m.b.v. één ternair cijfer (0, 1, of 2). Omdat 35 = 243, terwijl er 256 waarden in een byte gaan, kunnen we 5 standen in één byte kwijt; er zouden dus nog maar 734.832 bytes nodig zijn om de hele zoekboom van die kubuspuzzel op te slaan. Jan was weer op de programmeertaal Occam gedoken. Hij vond deze taal bij eerdere pogingen lastig te leren. Nu is hij opnieuw begonnen, en het doel dat hij zich hierbij heeft gesteld om ieder woordje te begrijpen, werpt zijn vruchten af: hij voelt dat er nu een goede bodem is gelegd. Tot slot vroeg Jan onze aandacht voor opgave 2(a) in de AIVD kerstpuzzel. Niemand kon daar in de korte nog beschikbare tijd enig licht op werpen, hoewel Titus nog wel in de muzieknoten van opgave 2(b) brailleschrift herkende. Overigens staan de uitwerkingen inmiddels ook online. (GV 3 februari 2016)

20 april 2020

...

Bijeenkomsten gehouden in 2017

  Kort verslag van de bijeenkomst op 2 december 2017 Voorafgaand aan de plenaire sessie hield de studiegroep "neurale netwerken" een bespreking. Deze discussie ging voor een belangrijk deel over het gebruik van fleep. Ook werd er besloten om niet te veel de breedte of de diepte in te gaan, maar zich vooral tot het boek te beperken. Verder passeerden op deze laatste bijeenkomst van het jaar o.a. de volgende onderwerpen de revue: Theo vestigde de aandacht op een artikel in de nederlandstalige editie van het computertijdschrift c't van december 2017, over Lang korte-termijngeheugen (Long Short-Term Memory, afgekort tot LSTM). Dit is een neuraal-netwerkarchitectuur behorend tot de recurrente netwerken, die worden gebruikt wanneer de volgorde van de input een belangrijke rol speelt. Belangrijke toepassingsgebieden zijn bijv. spraakherkenning en automatisch vertalen. Het artikel in c't (pagina 113-117) vertelt hoe zo'n netwerk in elkaar zit en werkt, en geeft aanwijzingen (met een web-link naar de software) om zelf met TensorFlow een LSTM te maken dat kan leren om websites te taggen (d.w.z. omschrijven met één of meer steekwoorden). Interessant is ook nog dat het programma daarbij gebruik maakt van de grafische kaart van de computer, Jan deelde mee dat Abraham, die vandaag zelf helaas niet aanwezig kon zijn, de transputersimulator (voor 1 transputer) goed werkend heeft gekregen op Windows-systemen. (Theoretisch op Windows XP t/m Windows 10, maar dat is niet allemaal getest.) Het is dus niet meer nodig om het fysieke transputersysteem naar elke bijeenkomst mee te nemen; we kunnen nu immers ook Occam-programma's schrijven en testen op het gesimuleerde systeem. Jan heeft het werkboek voor de transputer-insteekkaart nu ook gedigitaliseerd; de INMOS-handleiding van Dick Pountain sluit daar goed op aan. Jan zal deze bestanden aan de geïnteresseerden, met name Albert en Gerard, toemailen zodat er nu in ernst voor de transputer kan worden geprogrammeerd. Ben merkte op dat het idee achter transputers (concurrency) tegenwoordig wordt uitgevoerd met grafische kaarten; Jan betwijfelt echter of dit wel op precies dezelfde manier gebeurt. Arjan vertelde ons over enkele boeiende onderwerpen die naar voren kwamen op de ITNext conferentie: Een lezing over het inzetten van Watson, het kunstmatig intelligente computersysteem van IBM, bij de beveiliging van datanetwerken. Dit gebeurt door Watson artikelen over dit onderwerp te laten lezen die voor mensen zijn geschreven, waarna het systeem er vragen over kan beantwoorden. Ook was er een presentatie over het klassificeren van kledingstukken op foto's voor het samenstellen van een verkoopcatalogus. Uit een lezing door een medewerker van de online supermarkt Picnic werd duidelijk dat dit bedrijf er nog niet in slaagt om heel nauwkeurig iemands boodschappen te voorspellen. Een mogelijke oorzaak is dat het neurale netwerk getraind is op de bestellingen van alle klanten samen i.p.v. individuele klanten. Ook kwam Arjan weer met een aantal interessante weblinks: De beide websites moleculenet en deepchem bevatten nuttige hulpmiddelen als je m.b.v. AI wilt onderzoeken of bepaalde chemische substanties mogelijk bruikbaar zijn als geneesmiddel. Een beschrijving van hoe je de C++-softwarebibliotheek TensorRT van NVidia, een hardwarefabrikant van o.a. grafische processoren, kunt gebruiken voor het construeren en optimaliseren van neurale netwerken. Een website met een gegevensbestand dat kan worden gebruikt om een AI te leren herkennen wat er te zien is op (foto- of video-)beelden die in de stad zijn gemaakt: mensen, voertuigen, verkeersborden, gebouwen, obstakels, enzovoort. De dia's (in PDF-vorm) van een lezing met als titel How Will Linux Handle Quantum Computing? De lezing behandelt in een notedop het nut van quantumcomputers, de problemen, de huidige stand van zaken, mogelijke toepassingen, en de manier waarop Linux kan samenwerken met, of gebruik maken van, quantumcomputerhardware. Titus merkte naar aanleiding van dit punt nog op dat je door te googlen op "IBM Q" informatie kunt vinden over het zelf via "de cloud" uitvoeren van algoritmen en experimenten op de quantumcomputer van IBM. Titus kwam met drie onderwerpen. Als eerste liet hij zien hoe ver hij was met genetisch programmeren in Python. Hij had twee problemen geprobeerd: Het benaderen van π uit één of meer constanten m.b.v. de bewerkingen × (maal), / (gedeeld door), + (plus), - (min) en √ (wortel). Dit programma bleek niet goed te leren; toch kwam het met een ruwe benadering, namelijk √10, die ook in de natuurkunde wel regelmatig gebruikt wordt. De stelling van Pythagoras, oftewel het "ontdekken" van de formule √(a2+b2). Ook aan deze variant moet nog wel wat tijd worden besteed voordat hij helemaal naar wens werkt. Als tweede bracht Titus een spelletje onder onze aandacht dat hij not 3 noemt. Dit spel, dat verwant is met boter, kaas en eieren, staat beschreven in 2 artikelen in het wiskundetijdschrift Pythagoras. Het eerste artikel, van maart 1981 (p.118-119) zet de regels van het spel uiteen; en het tweede artikel september 1981 (p.14-17) kijkt of er een winnende strategie voor een van beide spelers bestaat. Titus had een BASIC-programma gemaakt om dit spel tegen de computer te spelen, waarbij de computer niet "nadenkt" maar gewoon willekeurige zetten doet. Als derde vertelde Titus een anecdote over een auto die op de vluchtstrook stond en 30 keer werd "geflitst" omdat langsrijdende auto's te snel reden. Hij wilde hiermee illustreren dat automatische systemen nog niet helemaal toe zijn aan het juridisch afwerken van verkeersovertredingen. Tenslotte praatte Gerard de aanwezigen bij over zijn vorderingen op het gebied van Self-Organized Criticality. Hij had zijn "dominostenenprogramma" aangepast zodat er voortdurend automatisch rijtjes werden neergezet en "omgegooid". Het lijkt er inderdaad op dat het systeem na enige tijd een semi-stabiele toestand bereikt; de vraag is nu of de kenmerken die theoretisch voor een zelforganiserend kritiek systeem worden voorspeld hier ook inderdaad in terug te vinden zijn. Dat zal nog wel de nodige programmeerarbeid en statistische analyse vergen… In het nieuwe jaar gaan we weer met frisse moed aan de slag, waarbij we niet alleen reeds bekende onderwerpen gaan uitdiepen en oude projecten uitbouwen of nieuw leven inblazen, maar ongetwijfeld ook nieuwe onderwerpen zullen verkennen en nieuwe initiatieven ondernemen! (GV 5 januari 2018) Kort verslag van de bijeenkomst op 4 november 2017 Traditiegetrouw is november de maand waarin de jaarlijkse Roborama-wedstrijden, georganiseerd door HCC-Robotica, worden uitgevochten. Dit jaar was Jan de enige die daar de kleuren van onze AI interessegroep verdedigde. Bij de spaarzame gelegenheden die we hadden om daarbij de toeschouwer uit te hangen, leek het erop dat zijn robotkarretje (MOOF geheten) naar verwachting presteerde; we zijn in elk geval geen getuige geweest van flagrante robot-blunders of technische katastrofes. Maar we kunnen voor een definitieve eindevaluatie beter het verslag van Jan zelf afwachten… En terwijl Jan en zijn robot zich inspanden, hebben wij toch maar een plenaire sessie gehouden: Het overleg van de studiegroep neurale netwerken ging vooral over de organisatorische kant. Er bestaat namelijk in het gebruikte communicatiemiddel fleep de mogelijkheid om taken toe te kennen aan personen of groepen, en die taken na uitvoering als "gedaan" te markeren; maar dit "afvinken" is taakgericht (i.p.v. "persoonlijk"), zodat wanneer één persoon aangeeft een bepaalde passage uit het boek bestudeerd te hebben, dat onderdeel in fleep bij iedereen als "klaar" te boek staat. Dat maakt het lastig voor de deelnemers om bij te houden hoe ver ze zijn; en de studiegroepcoördinator, Peter, krijgt zo natuurlijk geen overzicht over de vorderingen van elke deelnemer afzonderlijk.Er is geruime tijd gesproken over mogelijke alternatieven, zoals slack, GitLab, en Google documenten (eventueel in combinatie met Google Groups). Gerard en Ben dachten dat de communicatie ook gewoon via een e-maillijst kon plaatsvinden, maar Peter vond de toenemende lengte van de e-mails (als gevolg van het toevoegen van alle voorgaande berichten) een groot bezwaar. Een echte oplossing is nog niet gevonden; voorlopig gaat de groep verder met fleep. Een nieuwe bezoeker stelde zich kort voor: Dimitri. Hij is programmeur geweest en heeft belangstelling voor AI; hij hoopt op onze bijeenkomsten het nodige op te kunnen steken van de andere aanwezigen. Op de Roborama vorig jaar was Bens Madeleine onder de deelnemende robotkarretjes tamelijk uniek: enerzijds omdat haar "hogere" besturingsfuncties "op afstand" werden vervuld door een programma op een laptop-computer, en anderzijds omdat dit programma is geschreven in de logische AI-taal Visual Prolog in plaats van de meer gangbare talen BASIC of C. Ben deed welwillend nogmaals uit de doeken waarom Madeleine dit jaar niet deelnam. Ondanks een perfecte uitvoering op de tests waaraan Ben haar vooraf onderwierp bleek Madeleine, toen het er vorig jaar op aankwam, het keren (een 180° richtingsverandering) toch niet echt onder de knie te hebben. Mogelijk speelde de andere ondergrond daarbij een ontregelende rol. Ben overweegt op dit moment twee mogelijke oplossingen. Één aanpak is om Madeleine uit te rusten met een kompas-sensor, naast de drie afstandssensoren (vooruit, links, en rechts, met een bereik tot 80 cm.) waarover ze nu beschikt. Maar, geïnspireerd door het tot stand komen van de bovengenoemde studiegroep, is zijn huidige "plan A" om Madeleine te gaan besturen met een neuraal netwerk. Peter vestigde de aandacht op de campagne Nederland leest, met dit jaar robotica als thema. Tijdens deze actie krijg je bij deelnemende bibliotheken, in ruil voor je mening over robots, een speciale Nederlandstalige uitgave van Isaac Asimovs beroemde verhalenbundel "Ik, Robot". In deze uitgave is een extra verhaal toegevoegd, geschreven door Ronald Giphart met behulp van (of: "in samenwerking met"?) de "literaire robot" Asibot. Gerard vertelde dat hij op 1 november de start van de campagne, die dit jaar in Amersfoort werd verricht, had bijgewoond; het helaas wat wazige kiekje hieronder, met links Ronald Giphart, geeft daarvan een indruk. Diederik vroeg of iemand van de aanwezigen ervaringen had met de programmeertaal R in verband met kunstmatige intelligentie. Zelf had hij in deze taal, die vooral voor statistische toepassingen wordt gebruikt, GIS-kaartjes voor zijn zoon vervaardigd. Helaas had niemand enige ervaring op dit gebied; wel wist men te melden dat R een zeer populaire taal is, die toch wel duidelijk verschilt van Python. Volgens Peter geeft googlen op "r vs python for AI" een schat aan waardevolle informatie en adviezen. Henk had voor de aanwezigen wat informatie meegenomen, uit het Filosofen lexicon, over de door hem bewonderde wijsgeer Democritus. Volgens Henk was dat de eerste die inzag dat de wereld was "opgebouwd" (uit atomen), een idee dat een belangrijke rol speelt in Henks eigen ideeën over De computer en de vrije wil. Ook werd er enige tijd gediscussieerd over Henks opvatting dat je eigenlijk moet weten hoe microprocessors werken om te kunnen programmeren. Albert merkte op dat er tegenwoordig juist diverse softwarelagen tussen de processor en het programma zitten om programmeren zonder gedetailleerde hardwarekennis mogelijk te maken. Aan de andere kant, zo werd opgemerkt, leiden de tussenliggende lagen wel tot programma's die abstracter, en dus misschien moeilijker te begrijpen zijn. Diederik merkte op dat kennis van binaire logica wel echt nodig is om iets van schaakcomputers en -programma's te snappen. Arjan kwam met twee interessante weblinks. Als eerste de 14th European Conference on Computer Vision (ECCV), die in oktober vorig jaar in Amsterdam gehouden is, met een enorme hoeveelheid informatie over beeldherkenning, waaronder een poster met aanvullende informatie over het geven van verbale uitleg bij herkenning van vogels op foto's. En als tweede een blog en paper over het voorspellen van golfhoogtes in een baai aan de Stille Oceaan, dat een deep learning neuraal netwerk veel sneller kan dan een traditioneel natuurkundig model. Als laatste was Gerard aan de beurt, die weer een oud projectje aan het reanimeren was: zijn dominostenen-programma. In een artikel over self-organized criticality in het tijdschrift Scientific American van januari 1991 werd de kritieke toestand van een systeem verduidelijkt aan de hand van een ruitvormig patroon van rijtjes dominostenen. Gerard had dit destijds met een zelfgemaakt Turbo-C-programmaatje onder Windows 95 onderzocht. Hij heeft het programma nu geport naar Linux (met gebruikmaking van de karakterterminal-besturingsfuncties van de softwarebibliotheek curses), en demonstreerde daarmee dat het systeem bij de kritieke dichtheid (of daaromtrent) inderdaad, zoals de theorie stelt, "interessant" (want: meer gevarieerd) gedrag gaat vertonen. Met alle activiteiten die momenteel gaande zijn verwachten we ook volgende maand weer een boeiende plenaire sessie! (GV 16 november 2017) Kort verslag van de bijeenkomst op 7 oktober 2017 Het verhaal van Arjan, dat vorige keer noodgedwongen werd onderbroken, kreeg vandaag een vervolg in de vorm van een heuse lezing, die natuurlijk als eerste aan bod kwam op het plenaire gedeelte van de bijeenkomst: De lezing van Arjan ging over convolutionele neurale netwerken. Dergelijke deep learning netwerken worden o.a. succesvol aangewend voor beeldherkenning. Belangrijk in dit verband is de Large Scale Visual Recognition Challenge, een jaarlijkse wedstrijd waarbij deelnemers de prestaties van hun computerprogramma's kunnen vergelijken door ze los te laten op ImageNet, een database van afbeeldingen met bijbehorende beschrijvingen,. Een van de winnaars was ZF-Net, en Arjan had zich ten doel gesteld om dit na te bouwen in Python. Door daarbij gebruik te maken van de open source software library TensorFlow kon hij zich het zelf schrijven van veel programmalussen besparen. Als toepassing heeft hij gekozen voor het herkennen van handgeschreven cijfers uit de MNIST-dataset. Alle details van dit project kunt u uitpluizen met behulp van de PowerPoint pagina's van Arjans lezing en het Jupyter notebook van zijn programma, die zijn terug te vinden bij de eigen maaksels op deze website. Na de lezing werd er overleg gevoerd door en over de studiegroep neurale netwerken, die door Peter geleid (dan wel gecoördineerd) zal worden. De groep telt momenteel naast Peter zelf (die wel voldoende weet van neurale netwerken, maar in deze groep Python hoopt te leren) nog 10 anderen, plus één waarnemer (Gerard). Eerder was al besloten dat ze aan de slag gaan met het boek Make Your Own Neural Network van Tariq Rashid, waarvan het eerste deel in gewone taal en wat middelbare-schoolwiskunde – maar zonder programmeercode – uitlegt hoe een standaard "backpropagation" neuraal netwerk werkt, en het tweede deel je vertelt hoe je zoiets dan zelf programmeert in Python. Vandaag is besloten om te gaan werken met het groupware-communicatieprogramma fleep, ondanks wat opstartproblemen en een algemene onbekendheid met deze software. De deelnemers gaan de komende maand beginnen met het lezen van deel 1 van het boek, en zullen de vragen die bij hen opkomen aan de anderen voorleggen via fleep. We zullen volgende maand zien hoe dit werkt… Theo kwam met een goede leestip: het oktober/novembernummer (editie 296) van ons HCC-verenigingsblad PC-Active gaat met een viertal artikelen uitvoerig in op het HCC-seizoensthema de "slimme auto". In hetzelfde nummer staat ook nog een interessant artikel over deep learning. Uiteraard is dit nummer voor leden "achter de inlog" ook digitaal te raadplegen op de HCC-website, via de rode menubalk bovenaan. Op verzoek van Gerard deed Theo ook kort verslag van de themabijeenkomst over programmeertalen die HCC-programmeren op 15 september j.l. had georganiseerd op hun nieuwe locatie in De Bilt. Daarbij werd over een (ruime) handvol programmeertalen in meer of minder kort bestek wat informatie gegeven over ontstaan, voor- en nadelen, en mogelijke toepassingsgebieden, vergezeld van een kort voorbeeldprogrammaatje. Een geschreven verslag, de Powerpoint-slides en aanvullende pdf-bestanden zijn te vinden op de website van HCC-programmeren. De besproken talen zijn PHP, Perl, Scratch, Python, Forth, en C. Een overweging voor de keuze van juist deze talen (en het afvallen van andere) was o.a. "geschiktheid voor beginners". Verder kondigde Theo nog aan dat er op de eerstvolgende bijeenkomst van HCC-programmeren, in oktober, een lezing zal worden gehouden over cryptografie. Ben had slechts twee korte mededelingen. Hij vertelde, voor degenen die het nog niet wisten, dat er een handtekeningenactie gaande is om een referendum aan te vragen over de zogenaamde sleepwet, die inlichtingendiensten machtigt om ook (digitale) data te verzamelen over en uit de communicatie van personen waartegen geen concrete verdenking bestaat. Inmiddels is bekend dat er voldoende handtekeningen zijn verzameld, en dat het referendum dus inderdaad gehouden zal worden. En verder meldde Ben dat hij nog altijd aan het overwegen is hoe hij het gaat aanleggen om Madeleine met een neuraal netwerk uit te rusten. Arjan maakte ons attent op het boek Bayesian Methods for Hackers. Daarin wordt de Bayesiaanse kansrekening, ook veel gebruikt in machine learning, uitgelegd en toegepast in Python m.b.v. de PyMC softwarebibliotheek. Volgens Arjan is het duidelijk geschreven – in het Engels, weliswaar –, maar bevat het pittige wiskunde die niet echt wordt uitgelegd. Een goede informatiebron dus, maar niet voor de terloops geïnteresseerde! Het boek schijnt ook online te lezen te zijn. De geplande drie bijdragen van Titus konden helaas niet aan bod komen omdat zijn computer op het cruciale moment onverwacht kuren vertoonde. Omdat er bovendien nog maar weinig tijd over was, is besloten om dit onderdeel naar een volgende bijeenkomst te verschuiven. (GV 13 november 2017) Kort verslag van de bijeenkomst op 2 september 2017 Ook dit keer weer een keur aan onderwerpen die direct of indirect iets met kunstmatige intelligentie te maken hebben: Henk vestigde de aandacht op een artikel over computerhackers in De Volkskrant van 8 juli j.l. Hierover ontspon zich enige discussie, waarbij werd opgemerkt dat virusscanners veel achterdeurtjes met opzet niet afsluiten. Arjan vertelde n.a.v. dit onderwerp dat de VPRO (NPO televisie) op 23 augustus de documentaire Zero Days over de computer"worm" Stuxnet heeft uitgezonden. Albert had onlangs op BNR Nieuwsradio een interessante aflevering van de serie "De Nieuwe Wereld" gehoord. Het is al langer bekend dat bedrijven computerprogramma's gebruiken om een eerste filtering van sollicitanten te maken op basis van hun cv's. De uitzending op BNR, die nog steeds als podcast te beluisteren is, bekeek de andere kant van de medaille: men is ook bezig om computerprogramma's ("robots") te bouwen die jouw sollicitatie kunnen verzorgen. Het zou in de toekomst dus zo kunnen zijn dat robots onderling uitmaken wie waar komt te werken… Een nieuwe bezoeker stelde zich voor: Diederik. Hij programmeert in Pascal, en is bovendien hobbyschaker. Naar aanleiding hiervan ontstond er een korte discussie over computerschaak en schaakprogramma's, waarbij Gerard de stelling verkondigde dat, ondanks het feit dat Deep Blue de toenmalige menselijke wereldkampioen Kasparov heeft verslagen, dit nog lang geen uitgekauwd onderwerp is; er liggen nog behoorlijk wat mogelijkheden voor onderzoek dat het inzicht in intelligentie en in het schaakspel kan vergroten. Ed maakte ons attent op het boek De quantumcomputer. Een digitale revolutie op het punt van uitbreken. Dit boek geeft de huidige stand van zaken op dit gebied, en besteedt ook aandacht aan de verschillen tussen quantum- en klassieke computers. Bens robotkarretje "Madeleine" heeft moeite met keren (een belangrijke component in het Roborama-onderdeel "Heen en weer"), en hij is begonnen om dit probleem aan te pakken. Omdat het bij de demonstratie op onze bijeenkomst wèl goed ging, vermoedt Ben dat het op de Roborama-wedstrijd fout ging door een andere (stroevere?) vloer; hij wil proberen om het keren minder afhankelijk van de ondergrond te maken door het inzetten van extra sensoren. Verder wil Ben graag Madeleine uitrusten met een backpropagation neuraal netwerk voor de besturing. Daarnaast had Ben een relaas over zijn avonturen met zijn favoriete programmeertaal Visual Prolog. Daarvan was onlangs Versie 8 verschenen, en natuurlijk moesten al zijn programma's onder deze nieuwe versie worden uitgetest. Dat ging allemaal goed, met één uitzondering: zijn personal-informationprogramma "Gregorius", waarbij Prolog liet weten last te hebben van een "internal error". Dus contact gelegd met de helpdesk, in Rusland, die hem vroeg om de code op te sturen. Vreemd genoeg werkte het in Rusland probleemloos. In plaats van het hele probleem van tafel te vegen, stuurden ze Ben een aangepaste compiler, met uitgebreidere foutmeldingen, om het opnieuw te proberen. Afijn, uiteindelijk wist Ben een testprogrammaatje te maken om het probleem te isoleren, waarna de compilerfout kon worden verholpen. Het hele verhaal, dat zowel van de programmeerkwaliteiten van Ben als ook van de uitstekende service van de helpdesk van Visual Prolog getuigt, was erg interessant! Peter was erg enthousiast over het boek Make Your Own Neural Network van Tariq Rashid. Dit boek, dat te begrijpen zou moeten zijn met voorkennis op VWO-niveau, bestaat uit twee gedeelten: een inleiding waarin wordt uitgelegd hoe een backpropagation neuraal netwerk werkt, en daarna een doe-het-zelf-gedeelte waarin zo'n netwerk daadwerkelijk wordt geprogrammeerd in Python. Er is besloten om een studiegroep op te zetten die met dit boek aan de slag gaat; van de aanwezigen wilden er zes zeker meedoen, en nog zes overwogen om deel te nemen. Er wordt nog overlegd of we ook andere interessegroepen bij deze activiteit gaan betrekken. Jan gaf ruiterlijk toe dat zijn voorbereiding op de vorige Roborama-wedstrijd niet optimaal was; om dit jaar een beter resultaat te behalen is hij zo'n 3 weken geleden opnieuw begonnen voor de volgende editie, in november. Daarbij stuitte hij meteen al op problemen met een controlelusje in zijn programma. Ook doen de lichtjes van zijn lijnvolger het niet; misschien een hardwaredefect in de robot? Kortom, ook dit jaar gaat het niet van een leien dakje. Als alles weer werkt, is er hooguit nog maar één zaterdag, in oktober, om te oefenen. Als dat maar goed gaat… Door het werk aan zijn robotkarretje heeft Jan maar weinig aan zijn andere interesse, de transputer, kunnen doen. Hij ontkende overigens met klem dat de transputers "retro" zijn: de technieken die daarin gebruikt zijn, zoals message passing, worden tegenwoordig nog overal toegepast! Abraham had daarentegen wel aardig wat tijd aan de transputer besteed: hij is nu, samen met Ronald, bezig om de transputers aan te sturen via een USB-bus. Ze kunnen al een bericht ontvangen van 23 bytes, met daarin een code voor het processortype (AA of AA AA). Ook demonstreerde Abraham een programma dat de Mandelbrot-fractal op een EGA- of VGA-scherm zichtbaar maakt, met de mogelijkheid om herhaald in te zoomen op een bepaald gebiedje. (Zie de foto hieronder.) Van het programma was geen sourcecode beschikbaar; volgens Jan bestond het uit 5 of 6 processen, ook al draaide het nu op maar één processor. Hierop ontspon zich een discussie over de vraag of hercompilatie nodig is als je de hardwareconfiguratie verandert door extra transputers toe te voegen. Gerard veronderstelde van niet; diverse anderen dachten van wel. Ook kwam er nog een interessant stukje transputerinfo langs: er is voor transputers ooit een operating system geschreven, namelijk "HeliOS". Tot slot had Arjan nog drie tips: de tentoonstelling Meet Baby in het Museum of Science and Industry in Manchester (Engeland), met een replica van de eerste computer die in zijn geheugen niet alleen de te bewerken gegevens, maar ook het programma opsloeg. het Handboek Python van Robert Smallshire en Austin Bingham, volgens Arjan een "aanrader". het boek Getting Started with TensorFlow, door Giancarlo Zaccone. TensorFlow is een Python software library van Google voor het zelf samenstellen en gebruiken van neurale netwerken. Helaas moest de uiteenzetting over dit laatste onderwerp worden afgebroken omdat het al weer tijd was om naar huis te gaan. Wordt volgende maand vervolgd… (GV 29 oktober 2017) Kort verslag van de bijeenkomst op 1 juli 2017 Ook ditmaal kwam weer een grote verscheidenheid aan onderwerpen aan bod: Ronald had zijn 16×16-matrix van gekleurde LEDs meegenomen om het Kohonen-netwerk op te demonstreren. Omdat niet iedereen de eerdere demonstratie op een 10×10 LED-array en de bijbehorende uitleg had bijgewoond, heeft Gerard nogmaals uiteengezet wat een Kohonen-netwerk doet — zonder op de details van het "hoe" in te gaan. Maar, zoals iedereen kon zien en al eerder bij Ronald thuis was gebleken, werkte de 16×16-versie niet naar behoren: de kleuren rangschikten zich niet netjes van rand tot rand op de display. Gerard legde uit dat dit een bekend verschijnsel was, dat misschien te verhelpen was door te sleutelen aan de leerfactor van het netwerk. In het begin, als de gewichten van de neuronen nog een grote warboel zijn, krijgt deze leerfactor een relatief hoge waarde, zodat het netwerk door de invoerdata sterk in de goede richting wordt gedwongen. Naarmate het leren vordert en de gewichten dichter bij hun uiteindelijke gewenste waarde komen, neemt de leerfactor af en nadert asymptotisch tot een minimumwaarde. Hierdoor kunnen de (willekeurige) invoergegevens alleen nog maar kleine aanpassingen teweeg brengen, en geen grote verstoringen meer veroorzaken in het netwerk. Wanneer het netwerk, zoals in dit geval, niet tot een goede rangschikking van de inputs komt, dan komt dat doordat de leerfactor op zeker moment te klein wordt om de benodigde gewichtsaanpassingen te bewerkstelligen. Dit kan worden verholpen door drie mogelijke ingrepen, die natuurlijk elk ook weer een nadeel hebben: De beginwaarde van de leerfactor verhogen. De minimumwaarde (asymptotische eindwaarde) van de leerfactor verhogen. De snelheid verminderen waarmee de leerfactor afneemt. Een kant-en-klaar recept is hierbij echter niet te geven; Gerard adviseerde Ronald dan ook om zelf met de drie parameters te experimenteren. Ed had twee mededelingen: Ed heeft samen met Abraham het plan opgevat om een robotje te bouwen dat gebruik maakt van kunstmatige intelligentie. De bedoeling is dat de robot zelf een route gaat vinden door te kijken naar wegwijzerbordjes die hij tegenkomt. De letters op die bordjes zouden herkend (d.w.z., ontcijferd) moeten worden door een neuraal netwerk; bij het programmeren van dit netwerk hopen ze de nodige informatie op te doen uit het boek Make Your Own Neural Network van Tariq Rashid. Daarnaast deelde Ed mee dat de Robotica-interessegroep op de regiobijeenkomst in Haarlem op 11 november a.s. een presentatie van zo'n 30 à 45 minuten over zichzelf en hun activiteiten gaan geven. Hij vroeg zich af of het een goed idee zou zijn als AI zich daar ook zou presenteren, hetzij samen met Robotica, hetzij op een andere dag. Het AI-bestuur gaat er over in beraad. In ieder geval hopen we dat de robotici op onze december-bijeenkomst kort verslag willen doen van deze expeditie. Ook Titus kwam met twee onderwerpen: Hij had een grafisch simulatieprogramma geschreven van OBB's: Oriented Building Blocks. Titus' OBB's waren kubussen opgebouwd uit 5 viervlakken die door de ruimte zweefden; het moeilijke gedeelte bestond in het detecteren van botsingen en de resulterende verandering in bewegingsrichting en -snelheid. De simulatie zag er goed uit! Ook demonstreerde Titus "AI voor beginners": een programmaatje van slechts 17 regels dat achterhaalt welk getal iemand in gedachten heeft. Dat gebeurt door het stellen van vragen ("groter dan ...?", of "kleiner dan ...?"); het programma zou dus gezien kunnen worden als een soort expertsysteempje. De methode om het getal te bepalen staat bekend als binair zoeken; hetzelfde idee vinden we ook in de "binaire zeef", die achter een bekend "goocheltruukje" voor kinderen zit. Abraham had hard gewerkt aan de transputer-hardware. Om de transputers aan te sturen gebruikten we altijd een computer met Windows 98 en een ISA-slot voor insteekkaarten. Helaas is Windows 98 aardig in onbruik geraakt; en PC's met ISA-slot zijn al helemaal zeldzaam geworden. Abraham heeft nu een eigen interface gebouwd, zodat d.m.v. "peek"- en "poke"-opdrachten via een USB-bus met de transputer kan worden gecommuniceerd, en de ISA interfacekaart niet meer nodig zou zijn. Theo maakte ons attent op het juli/augustus-nummer van het tijdschrift c't Magazine voor computertechniek, waarin een vijftal voor ons interessante artikelen staat, o.m. een artikel over beeldbewerking met AI en een artikel over het werken met Google TensorFlow. Arjan had een programma geschreven om sudokupuzzels op te lossen met behulp van het dancing-linksalgoritme. Dit is een door Donald E. Knuth beschreven methode om zgn. exact-coverproblemen, waartoe sudoku's behoren, efficiënt in een computergeheugen te coderen en op te lossen. Arjan gaf een interessante demonstratie met goede uitleg. Ronald vroeg welke programmeertalen goed kunnen omgaan met grote getallen (d.w.z. getallen met veel cijfers, hetzij "voor" hetzij "achter de komma"); hij was namelijk door het lezen in het boek De geheimen van PI geïnteresseerd geraakt in het benaderen van de wiskundige constante π. Gerard kwam met een mogelijke benaderingsmethode: neem een vierkant, met daarin een kwartcirkel waarvan de straal gelijk is aan de zijden van het vierkant en het middelpunt op een van de hoekpunten van het vierkant ligt. Door van een groot aantal willekeurige punten in het vierkant te bepalen welke fractie ervan in de kwartcirkel ligt, krijg je een benadering van π/4. Gerard kwam op die methode door het eerder vandaag besproken Kohonenprogramma, dat eveneens wordt "gevoed" door random punten in een vierkant. Diverse andere aanwezigen wisten nog verbeteringen in deze methode te bedenken. We hebben ons dus weer prima vermaakt, deze zaterdag… (GV 5 oktober 2017) Kort verslag van de bijeenkomst op 3 juni 2017 Op deze bijeenkomst kwamen o.a. de volgende onderwerpen voorbij: Arjan hield een goed voorbereide, vrij uitvoerige en zeer interessante lezing over het boek How to Create a Mind van de Amerikaanse auteur, uitvinder en zakenman Ray Kurzweil. Op basis van gedachtenexperimenten en bevindingen uit de (neuro)biologie beschouwt Kurzweil het menselijk brein als een systeem van miljoenen "patroonherkenners". Opmerkelijk is dat Kurzweils ideeën over het creëren van een "kunstmatig brein" het menselijk brein als voorbeeld en inspiratiebron hebben genomen, maar dat hij voor de implementatie ervan niets ziet in neurale netwerken; in plaats daarvan denkt hij zijn doel te bereiken met Hidden Markov Models. Het boek behandelt niet alleen de biologische en "technische" aspecten van de menselijke geest en eventuele kunstmatige intelligenties, maar beschouwt tevens diverse bekende filosofische kwesties (zoals "vrije wil", bewustzijn, en de aard van creativiteit) die daarmee in verband staan, waarbij ook oudere ideeën worden meegenomen. Al met al lijkt dit boek een echte aanrader voor wie in kunstmatige intelligentie is geïnteresseerd! Titus liet ons drie voorbeelden zien van draaiende 3D-bomen, die hij zelf had geprogrammeerd in FreeBasic met OpenGL. De bomen zijn geprogrammeerd met behulp van L-systems, waarmee een soort van Turtle Graphics-commando's worden gegenereerd. Peter vertelde dat hij The Information: A History, a Theory, a Flood van de Amerikaanse schrijver en wetenschapshistoricus James Gleick aan het lezen was. Zoals de titel al aangeeft gaat dit boek, dat ook in het Nederlands vertaald is, over de geschiedenis van het begrip "informatie", over de informatietheorie, en over het omgaan met de huidige "tsunami" van informatie. Peter beval het boek van harte aan. Ronald maakte ons attent op een leerzame webpagina over floating-pointgetallen. Deze pagina laat op een interactieve manier zien hoe decimale breuken volgens de IEEE Standard for Floating-Point Arithmetic (IEEE 754) binair (en hexadecimaal) in de computer worden opgeslagen, en welke afrondingsfouten daarbij optreden. Helaas beperkt de pagina zich tot single-precision-getallen (32 bits); Ronald zou hiervan graag ook een double-precision-versie (64 bits) willen zien. Ook Theo had een zeer interessante webpagina gevonden: een uitgebreide uitleg, met animaties, van het A*-algoritme. Het A*-algoritme is een methode om te zoeken naar de kortste weg tussen twee punten op een graaf (dat is: een verzameling punten verbonden door een netwerk van lijnen). Dit is bijvoorbeeld erg nuttig om wegen door doolhoven te vinden, en wordt dan ook regelmatig gebruikt in de kunstmatige intelligentie, de robotica, en bij het programmeren van games. Deze pagina is onderdeel van een interessante website over computer-games; de auteur heeft ook een goed leesbare beschrijving van de theoretische achtergrond van het A*-algoritme gemaakt. Jan is zich nog steeds aan het bezinnen op zijn toekomstige activiteiten. Zijn eerder geuite idee over het bouwen van een simulatie van schepen op zee (als transputer-project) heeft een laag AI-gehalte. Zijn interesse in neurale netwerken is wat bekoeld toen hij informatie die hij op een website had gevonden probeerde na te rekenen: hij kwam op een andere uitkomst… Één uitgangspunt blijft voor hem recht overeind, namelijk zijn interesse in hardware: draadjes, chips, databoeken, enzovoort. Dat zijn immers dingen waar hij al zeer veel van af weet, en die hij begrijpt. Deze belangstelling kan hij volledig kwijt bij zijn Transputersysteem, en dat zal dan ook wel het centrale punt blijven van zijn bezigheden. Hij heeft nu de grote lijn in een 2-stappenplan gevat. De eerste stap is het (goed) leren programmeren in Occam, de "voertaal" van de Transputer. De tweede stap is om iets met die taal te gaan doen. Wat precies staat nog niet vast; gezien zijn interesse in (klassieke) muziek zou het iets in die richting kunnen worden. Er zijn alles bij elkaar tijdens deze "plenaire sessie" genoeg ideeën en tips uitgewisseld om weer een maandje mee aan de slag te kunnen. Wordt vervolgd, dus… (GV 14 september 2017) Kort verslag van de bijeenkomst op 6 mei 2017 Op deze vrij rustige bijeenkomst kwamen onder andere de volgende onderwerpen aan de orde: Als eerste werd een per e-mail door Jan ingediend voorstel besproken om de bijeenkomsten wat "gerichter" te maken. Dit voorstel was gebaseerd op twee uitgangspunten. Ten eerste was Jan zeer geïntrigeerd geraakt door neurale netwerken, maar zijn pogingen om iets van dat onderwerp te begrijpen hadden vooralsnog niets opgeleverd. En ten tweede vond hij dat hardware en verslagen van programmeeraktiviteiten, onderwerpen waaraan de meeste bijeenkomsttijd werd besteed, eigenlijk geen AI waren. Hij stelde dan ook voor om met de gehele groep een project over neurale netwerken te beginnen, en de plenaire sessie voor dat doel te gaan gebruiken.Tegen dit voorstel waren een aantal tegenwerpingen te maken: Ook al valt niet alle denkbare programmeeraktiviteit onder het kopje "AI", en ook al kun je prima zinvol bezig zijn met AI zonder zelf te programmeren, toch is programmeren binnen het vakgebied AI wel degelijk een "kernaktiviteit". AI is ruimer dan alleen "neurale netwerken". Wij hebben in het verleden altijd ruimte geboden aan andere richtingen, zoals fuzzy logic, genetische algoritmen, en ook "Good Old-Fashioned AI" op basis van symboolmanipulatie. Dit willen we blijven doen, opdat mensen met interesse in deze "takken van sport" niet teleurgesteld afhaken. Veel van de door ons besproken programmeerproblemen, met name die waarbij "combinatorische explosie" optreedt, vormen een dankbaar toepassingsgebied voor AI-technieken. Ook sterk verwante vakgebieden, zoals artificial life en robotica, kunnen vanwege hun sterke verwevenheid met AI niet zomaar terzijde worden geschoven. Natuurlijk werd Jans voorstel niet zomaar "afgebrand" zonder een alternatief te suggereren, want ook binnen het huidige "format" kan Jan zijn AI-gerelateerde interesses prima volgen: Hij kan onder de bezoekers van de bijeenkomsten, of via een oproep op deze webpagina, op zoek gaan naar mensen met dezelfde of soortgelijke interesses. Met deze "medestanders" (of desnoods alleen) kan Jan een werkgroep of studiegroep vormen, en zich tijdens het informele gedeelte van de bijeenkomsten, en/of d.m.v. persoonlijk of e-mailcontact tussen de bijeenkomsten in, verdiepen in de onderwerpen waar zij belang in stellen en waar ze meer over willen weten. Natuurlijk kunnen werkgroepen en individuele bezoekers tijdens de plenaire sessie altijd gerichte vragen stellen over dingen waar ze niet uitkomen, of waarover ze meer willen weten. Vaak levert dat nuttige suggesties of stukken informatie op, doordat anderen meer of simpelweg andere literatuur hebben geraadpleegd, of zelfs persoonlijke programmeer- of toepassingservaring hebben opgedaan. Aan de andere kant is er op de plenaire sessie ook gelegenheid om te vertellen wat je hebt opgestoken of uitgeprobeerd; dergelijke voortgangsrapporten kunnen gewoonlijk rekenen op een warme belangstelling van de overige bezoekers. Kortom, het voorstel van Jan om de werkwijze van onze interessegroep grondig op de schop te nemen kreeg weinig bijval, en besloten werd om alles (voorlopig?) bij het oude te laten. Arjan vond het boek How to Create a Mind van Ray Kurzweil erg interessant, en was bereid hierover op een van de volgende bijeenkomsten wat meer te vertellen. Rudolf maakte ons attent op Darknet, een open source neuraal netwerk geschreven in C. Een interessante toepassing daarvan is Yolo (You Only Look Once), een real-time systeem om objecten op foto's te herkennen. Rudolf wil zelf neurale netwerken gaan toepassen voor het bepalen van grondsoorten op basis van sonderingsdata, waarbij de trainings( en test- )data afkomstig zijn van locaties waarvoor behalve sonderingen ook boringen zijn verricht. Titus had, geïnspireerd door het boek The Computational Beauty of Nature van G.W.Flake, een simulatie van nestbouwende mieren geprogrammeerd, maar die werkte nog niet naar verwachting. Het bleek dat mieren regelmatig heel snel gingen lopen, alsof ze een pepmiddel hadden geslikt; en ook brachten ze het nestmateriaal vooral naar de rand van het scherm, in plaats van er over het hele gebied structuren van te bouwen. Ter ondersteuning van zijn visie op de "opgebouwde wereld" en de vrije wil, had Henk wat passages uit het boek De Bètacanon gekopieerd. Dit deelde hij uit aan de aanwezigen. Op de achterkant stond zijn eigen artikel De computer en de vrije wil, dat ook op deze website na te lezen is. Reacties op dit artikel zijn nog steeds welkom. Ondanks het besluit om de activiteiten van onze interessegroep niet volledig op neurale netwerken te richten, speelt deze techniek wel een hele grote, om niet te zeggen overheersende, rol in de hedendaagse AI-aktiviteiten van de "grote spelers" — multinationals, onderzoeksinstituten, enz. Ter illustratie daarvan werd gewezen op het door Google gebruikte TensorFlow-systeem voor machinaal leren. Voor dit systeem is nu ook speciale hardware ontwikkeld. In het voorbijgaan werd ook Apple's "intelligente" personal assistant Siri genoemd, en het idee kwam op om de intelligentie daarvan eens te gaan testen. Helaas bleek niemand van de aanwezigen een iPhone te gebruiken… Als voorbeeld van combinatorische explosie werd nog de 16×16 sudoku genoemd die met Pasen in de Volkskrant stond. Henk had daar zijn backtrack-programma op losgelaten, en aan Gerard verteld dat dit zo'n 7 uur aan het werk was geweest. Daarbij moet wel worden aangetekend dat het programma erg veel naar het beeldscherm schrijft (alle probeersels worden weergegeven), wat behoorlijk wat extra tijd kost, en dat het programma na het vinden van een oplossing blijft doorzoeken om te kijken of er meer oplossingen zijn. Voor een "gewone" 9×9 sudoku heeft het programma hooguit slechts enkele minuten nodig. En als een sprong van 9 naar 16 al zo'n toename in verwerkingstijd tot resultaat heeft, kan men zich voorstellen dat nog grotere sudoku's (bijv. 100×100) al gauw praktisch onoplosbaar worden. Bedenk daarbij dat voor problemen in het "echte leven" 100 nog maar een heel klein getal is…Er is echter een hoop te winnen met betere algoritmen: Henks had ook een programma geschreven dat eliminatie van mogelijkheden toepast (dus ongeveer zoals mensen sudoku's oplossen), en dat gaf voor de 16×16-paassudoku een oplossing in een veel kortere tijd. En zelfs backtracking kan slimmer: Gerard's exact-coverprogramma loste de paassudoku op in enkele minuten. Er waren dus weer genoeg onderwerpen ingebracht om op voort te borduren; we wachten af wat dit gaat opleveren! (GV 10 juli 2017) Kort verslag van de bijeenkomst op 1 april 2017 Op deze bijeenkomst, die goed bezocht werd, werd eerst de verplichte jaarlijkse ALV (Algemene LedenVergadering) gehouden. Daarvan worden door de secretaris afzonderlijke notulen gemaakt, zodat dit verslag beperkt kan blijven tot de inhoudelijke punten die op de plenaire sessie aan de orde kwamen: Jan deelde mee dat hij het transputersysteem voortaan weer (in principe maandelijks) mee zal nemen naar onze bijeenkomsten. Dat heeft twee duidelijke voordelen: voor ons is het veel inspirerender en handiger om direct op het systeem zelf te werken in plaats van via een internetverbinding; en bij hem thuis hoeft er dan niet elke maand een kabel dwars door de woonkamer te worden getrokken! Op de vorige bijeenkomst is door Gerard de zeeslagpuzzel weer onder de aandacht gebracht. In een ver verleden, toen we onze bijeenkomsten nog in Gouda hadden, had Henk een backtrack-programma geschreven om dergelijke puzzels op te lossen. Vandaag had hij het meegenomen, en hij gaf een duidelijke demonstratie van hoe het werkt. Omdat backtracking het depth-first doorlopen van een boomstructuur is, ontspon zich enige discussie over waar die boom dan in Henks programma was terug te vinden. Gerard heeft uitgelegd dat de boomstructuur die wordt doorlopen wel conceptueel achter het algoritme zit, maar nooit volledig in het geheugen of de voortgangsdisplay van het programma is terug te vinden, omdat de boom als het ware steeds naar behoefte wordt opgebouwd en weer afgebroken. Er wordt in onze interessegroep de laatste tijd regelmatig gesproken over het organiseren van een workshop neurale netwerken, en over de programmeertaal waarin die workshop zou moeten worden gegeven. Daarbij zijn talen als JavaScript en Processing genoemd, waarmee grafisch oogstrelende dingen te bouwen zijn; maar als we die workshop bijvoorbeeld ook voor leden van de HCC Robotica interessegroep aantrekkelijk willen maken, zouden talen als C of Python misschien interessanter zijn. Gerard kwam met een nieuw idee op de proppen. Volgens hem heb je twee dingen nodig om een neuraal netwerk te programmeren: ten eerste moet je kunnen programmeren; en ten tweede moet je snappen hoe een neuraal netwerk werkt. Naar zijn mening moeten de deelnemers aan de workshop de programmeervaardigheid zelf meebrengen; onze rol kan dan "beperkt blijven" tot het uitleggen van neurale netwerken en het geven van een reeks programmeeropgaven van toenemende complexiteit. Het voordeel van deze aanpak zou zijn dat elke deelnemer in zijn of haar eigen favoriete taal aan de workshop kan deelnemen. Diverse aanwezigen zouden het een goed idee vinden als de workshop voorbeelden in pseudo-code zou aanbieden, omdat "dat de manier is waarop mensen leren"; maar volgens Gerard stuurt pseudocode het denken wel erg sterk in de richting van een imperatieve (procedurele) programmeerwijze, terwijl hij andere programmeerparadigma's niet bij voorbaat wil uitsluiten. Abraham had wat rondgekeken naar hardware-bordjes voor robotbesturing waarvoor in Python kan worden geprogrammeerd. Hij kwam met drie mogelijkheden: de Arduino Zero, met een Atmel SAMD21 ARM processor, waarop programma's in MicroPython kunnen worden geschreven; het ESP8266 Wifi-controllerbordje dat ook in MicroPython kan worden geprogrammeerd; en, voor het geval MicroPython onvoldoende is en er een "volledige" Pythonversie vereist is, de Raspberri Pi Zero — waarbij het onderliggende besturingssysteem Raspbian wel een vertragende factor zal vormen. Voor dit laatste platform was Abraham bij zijn speurtocht ook nog een interessant boek tegengekomen: Make Your Own Neural Network, door Tariq Rashid. Ben praatte ons nog even bij over de verrichtingen van zijn robotkarretje Madeleine op de Roborama-wedstrijden van afgelopen november. Ze was ingeschreven voor het onderdeel "heen-en-weer" en, zoals Ben dat treffend formuleerde, "het ging bijna goed". Het probleem was dat de vloer bij de wedstrijden blijkbaar stroever was dan die waarop Madeleine geoefend had, zodat ze niet ver genoeg keerde. (De bedoeling was 180° in twee draaien van 90°.) Toch was haar prestatie nog goed voor een vierde plaats in de beginnersklasse, met 5 deelnemers. Theo was op het internet op een tweetal interessante dingen gestuit. Ten eerste zijn er blijkbaar websites die .ai als hoofdniveau (TLD, het laatste stukje) in hun domeinnaam hebben. De lettercombinatie duidt op Anguilla, een Brits overzees gebiedsdeel in de Caribische zee. Als tweede vond hij een neuraal netwerk in 11 regels Python-code. Een speurtocht via Google met de zoektermen "neural network", "Python" en "lines" levert meer van zulke voorbeelden op. Pedro wees ons er op dat Daniel Shiffman is begonnen met de colleges over het tweede deel van The Nature Of Code, dat over machine learning gaat. Tot slot vertelde Gerard nog iets over zijn eigen zeeslag-programma, waarin hij een expertsysteem-achtige rule-based methode gebruikt. Door zelf een aantal puzzels handmatig op te lossen, en te kijken welke redeneringen hij daarbij volgt, kwam hij met een 9-tal oplossingsregels op de proppen. Deze regels heeft hij, voorlopig tamelijk quick and dirty, in Python gecodeerd, samen met een programmalus die telkens kijkt of er één van deze regels kan worden toegepast. Als er in een situatie geen bruikbare regels meer zijn, kan dat verschillende dingen betekenen. Ten eerste kan de puzzel opgelost zijn; het programma controleert dit door alle gevonden scheepsdelen te tellen. Ten tweede is het mogelijk dat het programma nog een oplossingsregel (of meerdere) mist; deze moet(en) dan alsnog worden toegevoegd. Ten derde kan het eventueel voorkomen dat een puzzel meerdere oplossingen heeft. Henk wees er op dat dan alsnog backtracking zal moeten worden toegepast; maar volgens Gerard zou dit geval zich bij goed geconstrueerde puzzels eigenlijk niet mogen voordoen.De huidige regelverzameling voldoet voor de eerste 12 puzzels die Gerard uit de Metro heeft verzameld. Hij demonstreerde het programma dan ook door het los te laten op één van deze testvoorbeelden en de uitvoer daarvan, bestaande uit telkens een vermelding van de toegepaste regel gevolgd door het resulterende diagram, stapsgewijs te doorlopen. Het was dus gewoontegetrouw weer een interessante bijeenkomst, en we kijken nu al weer uit naar de volgende! (GV 3 april 2017) Kort verslag van de bijeenkomst op 4 maart 2017 Gedurende het informele gedeelte, dat door de meeste bezoekers werd benut om geanimeerde gesprekken te voeren, kwamen Albert en Gerard er achter dat de transputer bij Jan thuis niet meer met hen leek te willen praten, en dat hun kennis van het Occam compileer- en linkproces nogal te kort schoot. Tijdens de plenaire sessie werd o.a. het volgende besproken: Twee nieuwe bezoekers stelden zich voor: Andries en Arjan. Hun interesses lijken goed te passen bij de activiteiten van onze groep, waaraan ze hopelijk met hun specifieke kennis en vaardigheden in de toekomst ook het nodige zullen kunnen bijdragen! Jan deelde mee dat hij, mede door onze bijeenkomsten, zeer geïnteresseerd was geraakt in AI, maar dat hij bij zijn pogingen om er meer van te weten te komen een beetje was stukgelopen op de hoeveelheid wiskundige kennis die daarvoor nodig was. Hij heeft besloten zijn werkzaamheden gedeeltelijk te verleggen naar een andere interesse van hem: de simulatie van scheepsbewegingen. Hij wil daarvoor nog steeds wel zijn transputers en de bijbehorende programmeertaal Occam blijven gebruiken. Volgens Gerard had dit (voor ons) nieuwe onderwerp zoveel raakvlakken met artificial life — bijvoorbeeld botsingsvermijding en flocking behaviour (zwermgedrag) — dat Jan ook met deze belangstelling uitstekend bij onze groepering op zijn plaats is. Daarnaast is Jan van plan om ook dit jaar weer met zijn karretje MOOF deel te nemen aan de Roborama-wedstrijden, en zijn ook zijn ambities voor Conapp nog altijd springlevend. Titus demonstreerde een door hemzelf geschreven FreeBasic-programma dat met zichzelf het spel Angels and Devils speelt, dat hij had leren kennen door de gelijknamige aflevering van de televisieserie Numb3rs. In dit spel, dat zich afspeelt op een "willekeurig groot vel ruitjespapier", moet een Engel, met een bepaalde gegeven maximale spronggrootte, zien te ontsnappen naar de oneindigheid, terwijl een Duivel dat probeert te verhinderen door posities voor de Engel ontoegankelijk te maken. In de demonstratie van Titus verscheen een patroon dat Gerard en Peter sterk aan het spel Go deed denken. Ook had Titus een poging gedaan om in Python iets met Genetisch Programmeren te doen. Eerst liet hij zien hoe (gedeelten van) twee rekenkundige expressies werden gecombineerd tot een nieuwe expressie, en daarna hoe er in een rekenkundige expressie een mutatie kan worden aangebracht. Tenslotte liet hij zien dat het programma er nog niet in slaagde om m.b.v. deze bewerkingen een goede benadering van π te vinden, ook al zat er wel verbetering in de uitkomsten van de verschillende opeenvolgende generaties. Arjan had aan de hand van het boek C++ Neural Networks and Fuzzy Logic, geschreven door Valluru B. Rao en Hayagriva V. Rao, een backpropagation neuraal netwerk geprogrammeerd. Hij legde eerst op het whiteboard uit hoe een dergelijk netwerk in elkaar zit en hoe het functioneert, en demonstreerde daarna dat zijn programma onderscheid kon leren maken tussen de letters A, X, H, B, en I, wanneer deze in de vorm van 6×5 bitmaps werden aangeboden. Naar aanleiding hiervan ontspon zich enige discussie over beeldherkenning vanaf (digitale) foto's, waarop al dan niet bepaalde voorbewerkingen waren uitgevoerd. Gerard kwam met het nieuws dat de zeeslagpuzzels, die vroeger regelmatig in het gratis treinkrantje Sp!ts stonden, nu regelmatig in het eveneens gratis treinkrantje Metro te vinden zijn. Destijds hebben diverse mensen van onze interessegroep geprobeerd deze puzzels met de computer op te lossen; enerzijds met een genetisch algoritme, wat niet zo goed werkte, en anderzijds m.b.v. backtracking, waarmee altijd een oplossing werd gevonden (of meer, als er meerdere mogelijk waren). Gerard had hieruit geconcludeerd dat genetische algoritmen minder geschikt zijn voor dergelijke constraint statisfaction problemen, maar een eerdere opmerking van Arjan dat deze er in was geslaagd om met die methode magische vierkanten te maken stemde hem tot nadenken.Daarnaast liet Gerard nog enkele soortgelijke puzzels de revue passeren, met name de tectonic en de tentje-boompje-puzzel, die ook in de Metro te vinden zijn. Volgens hem waren dergelijke puzzels een goede "proeftuin" om de kracht en beperkingen van diverse AI-technieken te bepalen. Hij overwoog om te gaan onderzoeken of de zeeslagpuzzels goed kunnen worden opgelost met een op regels gebaseerd systeem, d.w.z. met een expertsysteem-achtige aanpak. Tenslotte deelde Gerard mee bezig te zijn met het bestuderen van het algoritme van Bresenham: een efficiënte methode om lijnen te tekenen op het computerscherm. Het algoritme kan echter ook gebruikt worden om stappen te plannen in een discrete ruimte, bijv. een schaakbord of een vel ruitjespapier; het vormt dan ook een aanvulling op de zes benaderingen van het "Koningszet"-probleem die Gerard zelf in zijn lezing over dit probleem op een rijtje had gezet. Het was Theo die Gerard destijds het eerst op deze mogelijkheid wees. Al met al dus weer een gezellige en leerzame bijeenkomst! (GV 6 maart 2017) Kort verslag van de bijeenkomst op 4 februari 2017 De volgende onderwerpen kwamen langs: Gerard rakelde een oude activiteit op: het "lamprei-project". (Een lamprei is een primitieve, palingachtige vis.) Aan de hand van een artikel uit Scientific American werd een event-driven BASIC-programma geschreven om het neurale netwerk van één segment uit het ruggemerg van een lamprei te simuleren. Behalve dit programma, dat door Gerard werd gedemonstreerd, leverde het project ook een drietal artikelen voor ons toenmalige tijdschrift "Kennisgeving" op. Volgens Gerard was dit dan ook een van de beter geslaagde projecten waaraan hij heeft (mee)gewerkt. Abraham meldde dat hij een Occam-simulator aan de praat heeft gekregen onder Windows XP en Windows 10. Dit zal het schrijven en testen van programma's voor de transputers van Jan zeker eenvoudiger maken! Een nieuwe bezoeker stelde zich voor: Hens. Hij is geïnteresseerd in "zo slim mogelijk programmeren", vooral van programma's die veel rekenen. Hij zal weinig zaterdagen in de gelegenheid zijn onze bijeenkomsten te bezoeken, en hoopt daarom kennis uit te kunnen wisselen per e-mail tussen de bijeenkomsten door. Henk kwam met wat interessant "leesvoer": Het boek Basics of Digital Computers van John S. Murphy uit 1958, dat vooral historisch interessant is. Het boek Microprocessor Programming for Computer Hobbyists van Neill Graham uit 1977, dat nog steeds nuttig kan zijn, vooral voor mensen die in assembleertaal (willen gaan) programmeren. Het boek De droom der rede. Een geschiedenis van de filosofie van de Grieken tot de Renaissance van Anthony Gottlieb. Een artikel uit De Volkskrant over de Leidse criminoloog Buikhuisen, wiens belangstelling voor het verband tussen hersenen en crimineel gedrag destijds (eind jaren '70) verketterd werd, maar nu weerklank begint te vinden. De column van Herbert Blankestein in PC-Active 292 (feb/maart 2017) over Linux, waarin Henk zelf veel herkenbaars vindt. Titus heeft zich geworpen op beeldherkenning: hij is begonnen met het ombouwen van een programma dat de wortelfunctie leert, tot iets dat een vierkant van een cirkel kan onderscheiden in een zwart-witafbeelding van 63 bij 63 pixels. Hij heeft daarmee, zoals we van hem gewend zijn, een ingewikkeld probleem teruggebracht tot een sterk vereenvoudigde (en dus in principe behapbare), maar toch niet triviale opgave. Helaas werkt het programma nog niet helemaal naar behoren… Pedro vestigde nogmaals onze aandacht op Processing, een softwarepakket om grafisch te programmeren. De huidige versie, 3.2.3, omvat een IDE en veel libraries, o.a. voor natuurkundige simulaties. Zelf werkt Pedro met p5js, dat dezelfde doelstellingen nastreeft, maar dan in JavaScript. Hij doet veel inspiratie op uit de video's van Daniel Shiffman: korte presentaties over alle hoofdstukken van zijn boek The Nature Of Code, behalve – op dit moment – de hoofdstukken over neurale netwerken.Pedro liet twee voorbeelden zien die hij zelf in p5js had geprogrammeerd: Een simulatie van de bewegingspatronen van roofdieren (zoals katachtigen of haaien) op zoek naar een prooi. Een programma dat het Traveling Salesman Problem met 10 steden aanpakt d.m.v. random search: telkens worden 2 punten in de route verwisseld. Pedro "deed" de versie waarbij de handelsreiziger wel alle steden moet bezoeken, maar niet terug hoeft naar zijn uitgangspunt; deze versie geeft meestal een andere oplossing dan de standaardversie waarbij wel in de startplaats moet worden geëindigd. Peter liet ons kennis maken met de digicortex-software, een neurobiologische hersensimulator die hij op het Internet had aangetroffen. Hij demonstreerde hoe je ergens een hersengebiedje kon stimuleren, en hoe dit signaal zich dan verspreidde naar andere gebieden van de hersenen. Heel indrukwekkend programmeerwerk, maar je hebt waarschijnlijk nogal wat kennis van de neuro-anatomie nodig om er zinvol mee te kunnen experimenteren. Wat natuurlijk wel weer een goede aanleiding is om ook eens dieper in dàt onderwerp te duiken! Op de valreep kwam Ronald, na de I2C-workshop van Robotica, nog even melden dat hij het Kohonen-programma had aangepast voor zijn 16×16 array van bestuurbare gekeurde LEDjes. We hopen hier op een van de volgende bijeenkomsten nader op in te kunnen gaan. (GV 5 maart 2017) Kort verslag van de bijeenkomst op 7 januari 2017 De weg-omstandigheden waren bar en boos: wegens sneeuw en ijzel gold een waarschuwing code oranje. Toch waren er van heinde en verre nog 6 mensen naar onze bijeenkomst gekomen, waar op de plenaire sessie de volgende onderwerpen aan bod kwamen: Henk liet op de beamer zien hoe zijn 4-op-een-rij-programma tegen zichzelf speelde. "Net een screensaver", vond hij zelf — temeer daar hij de animatie-effecten heeft uitgebreid: na het beëindigen van een spel stijgt het hele speelbord langzaam ten hemel. Dat oogt erg leuk, maar voegt verder functioneel weinig toe (aldus Henk). Belangrijker is dan ook, dat hij is begonnen met het bedenken van een systeem om alle bordstanden op te slaan. Gebruik makend van het feit dat de kolommen van de onderkant af worden "opgebouwd", heeft Henk een vernuftig systeem bedacht dat slechts 7 bytes per stand vergt. Dit systeem werd door hem met behulp van zijn programma en het whiteboard duidelijk uitgelegd. Er blijft zelfs nog wat ruimte over, die desgewenst gevuld kan worden met signaalbits ("vlaggen") om het programma "slimmer" te laten spelen. Henks uiteindelijke doel is om, met een vergelijkbare methode als door hem toegepast bij de schuifpuzzel en de 2×2×2 Rubik's kubus, vanuit een willekeurige bordstand voor de computer een weg naar de overwinning te vinden. Helaas is het aantal verschillende standen, zelfs als we links-rechtsspiegelingen eruit halen, heel erg groot: voor het aantal bordstanden na 15 zetten (dus met exact 15 vakjes gevuld) blijkt meer dan 1 gigabyte nodig! Het is dus nog maar de vraag of dit doel wel bereikbaar is… Behalve het ruimtegebruik, is ook de volgorde waarin alle bordstanden worden opgeslagen van belang. Die standen moeten dus niet alleen uitputtend worden opgesomd, maar ook nog gesorteerd! Henk gebruikt hiervoor een merge sort, die enige discussie uitlokte. Het ging daarbij vooral over de manier waarop (= de volgorde waarin) de gesorteerde deelrijtjes door Henk werden gerecombineerd. Tijdens het gesprek over de sortering had Ronald een relevante wikipediapagina op de beamer gezet, waarin een animatie van de odd-even sort was opgenomen. Gerard merkte op dat hij een sterke neiging had om vooral in het begin van deze animatie een rotatie te zien, een indruk die door diverse aanwezigen werd gedeeld. Dat is des te merkwaardiger omdat het plaatje zuiver 2-dimensionaal bedoeld moet zijn (horizontaal: rangnummer van het te sorteren item in de reeks, vertikaal: grootte van het item). Waarschijnlijk zijn hieruit interessante lessen over het menselijke visuele waarnemingssysteem te leren… Henk had ook nog het boek De bétacanon. Wat iedereen moet weten van de natuurwetenschappen, dat op de vorige bijeenkomst ter sprake kwam, meegenomen, zodat alle aanwezigen zich er zelf van konden overtuigen dat Democritus en zijn atoomtheorie hierin geen eigen hoofdstuk hebben gekregen. Ronald vestigde de aandacht op het boek Computerschaak, schaakwereld en kunstmatige intelligentie van Jaap van den Herik. Hij heeft het zelf als PDF. Verder meldde Ronald dat het tijdschrift Elektor een zogenaamde "kattendoku", dat is een hexadoku (16-cijferige sudoku) in de vorm van een kattekop, heeft gepubliceerd. Het was niet helemaal duidelijk wat de beperkende voorwaarde (constraint) is bij het invullen, omdat niet alle rijen, kolommen en (onregelmatig gevormde) vakjes precies 16 hokjes tellen. Ook had Ronald weer een nieuwe 2-dimensionale array van "intelligente" (d.w.z. programmeerbare) LEDjes bij zich; ditmaal 16 × 16. Een complicatie is dat de LEDs op de opeenvolgende rijen niet steeds in dezelfde richting zijn doorverbonden, maar a.h.w. "heen-en-weer"; dat vergt natuurlijk extra slimme programmeertrucs als je er bijvoorbeeld een lichtkrant of zo van wil maken. Als laatste bijdrage liet Ronald weten dat de door Henk gebruikte programmeertaal en IDE QBasic ook voor nieuwere Windows-versies (zoals Windows 7) beschikbaar was, onder de naam qb64.exe. Natuurlijk zit de "recursie", d.w.z. de mogelijkheid om een in een programma gebouwde instructiestring meteen weer ter evaluatie aan de interpreter aan te bieden, er dan niet in; deze nuttige faciliteit is door Henk zelf in zijn BASIC-interpreter "gehackt". Abraham had op de winkel- en veilingsite ebay een stropdas van de Association for the Advancement of Artificial Intelligence (AAAI) op de kop getikt. Natuurlijk moest dit worden vastgelegd: onderstaande collage, gebaseerd op een door Kees gemaakte foto, geeft een goede indruk van de das en enkele saillante details. Abraham had ook nog iets te vertellen over zijn lijnvolgrobot PLV, die hij dit jaar wil gaan inzetten op het Roborama-onderdeel "doolhof". Bij dit onderdeel wordt de robot door de scheidsrechter tweemaal op dezelfde willekeurige plek in het lijndoolhof gedropt. De eerste keer mag hij het doolhof gaan verkennen om de weg van de neerzetplaats naar de uitgang te bepalen; de tweede keer moet hij die weg zo snel mogelijk afleggen. Bij de verkenningsfase denkt Abraham het feit te benutten dat weliswaar de neerzetplaats niet van te voren bekend is, maar de plattegrond van het doolhof wel! Hij hoopt dat zijn robot daar gebruik van kan maken om er na een stukje rijden achter te komen waar hij is neergezet. Gerard dacht dat het misschien voordelig kon zijn om de robot tijdens de verkenningsfase gewoon kris-kras over het doolhof te laten rijden i.p.v. strikt de lijn te volgen, maar het was niet bekend of dat wel is toegestaan; en bovendien valt daar weinig mee te winnen, omdat het eerste onderdeel niet op tijd wordt beoordeeld. Abraham had ook nog een technisch probleempje op te lossen: als er zich een heldere lichtbron boven de robot bevindt, kan de schaduw van de arm waarop de camera is gemonteerd door de robot worden aangezien voor een lijn! Hiervoor zijn twee oplossingen mogelijk. Abraham voelt er het meeste voor om de schaduw te laten wegvallen door de grond extra te verlichten met op de robot gemonteerde LEDs. Maar het is natuurlijk ook mogelijk om eventuele storende lichtbronnen af te schermen door een plaatje materiaal als een soort horizontaal lichtscherm boven de camera te monteren. Op zo'n plaatje zou dan tevens een displayschermpje of iets dergelijks gemonteerd kunnen worden. De tijd zal leren welke oplossing het beste werkt. Peter M. was afgekomen op de I2C workshop van Robotica, omdat hij graag wilde weten hoe hij multisensor fusion kan realiseren. Hij heeft namelijk een MPU-6050 sensor, die versnellingen en rotaties in 3 richtingen kan meten. Deze sensor wordt door een Arduino microcontrollerbordje uitgelezen via de I2C-bus. Peter had een mooi programma geschreven dat de veranderingen in de stand (kantelingen) van het Arduino-bordje (met sensor) duidelijk zichtbaar maakte op het scherm van zijn computer. Tot zover geen probleem; maar Peter wil graag ook nog andere sensoren via de Arduino uitlezen, en had gehoopt daar bij Robotica meer over te leren. Helaas, door de sneeuw en ijzel was de workshop afgelast — feitelijk bleek zelfs de hele Roboticabijeenkomst niet door te gaan. Gelukkig zijn Abraham en Ronald ook ervaren hardwareknutselaars. Zij wisten te vertellen dat elke sensor zijn eigen I2C-adres heeft; en mochten die toevallig eens samenvallen, dan kan via een (programmeerbare) switch een extra I2C-poort worden toegevoegd. Al met al vormde deze bijeenkomst toch weer de geslaagde aftrap van een heel nieuw jaar gevuld met interessante AI- en robotica-activiteiten! (GV 23 januari 2017)

20 april 2020

...

Bijeenkomsten gehouden in 2018

  Kort verslag van de bijeenkomst op 8 december 2018 Tijdens het informele gedeelte van de bijeenkomst heeft Pieter Frans de nieuwe laptop en beamer uitgepakt en in gebruik genomen. Alles bleek naar behoren te werken, tot en met de draadloze verbinding van computer naar beamer. (Hiervoor moet wel extra software op de computer worden geïnstalleerd.) In de plenaire sessie kwamen de volgende onderwerpen voorbij: Het hexapawn-project, dat vorige maand door Gerard werd afgesloten, kreeg toch nog een staartje: Thijs gaf een interessante presentatie over de experimenten die hij zelf met hexapawn had uitgevoerd, en de resultaten daarvan. Om te beginnen had hij met depth-first search een game-tree gegenereerd, en hiervan m.b.v. het programma graphviz een tekening (graaf) gemaakt. Uit dat diagram blijkt dat zwart, na het leren van een perfecte strategie, nog maar 10 verschillende bordstanden tegen kan komen. Daarna liet hij diverse programma's het tegen zichzelf en elkaar opnemen: een random-speler, die volkomen willekeurige zetten doet; HER, de luciferdoosjesspeler die het studie-object van de projectgroep vormde; en een programma dat het spel onder de knie probeert te krijgen d.m.v. Q-learning. Enkele interessante resultaten waren: Wanneer twee random-spelers het tegen elkaar opnemen, wint wit in ±60% van de gevallen — opmerkelijk, omdat zwart bij perfect spel altijd wint! De meeste routes door de spelboom leiden dus tot verlies voor zwart, maar door de goede zetten te doen kan hij ze allemaal vermijden. Als HER een optimaal spel leert spelen, zijn daar gemiddeld 31 spellen voor nodig. Bij Thijs had HER die perfecte strategie in slechts ±40% van de gevallen onder de knie gekregen, hetgeen Gerard nogal verbaasde; het bleek dat Thijs het leeralgoritme van HER niet helemaal goed had geïnterpreteerd. Q-learning vond in 99.8% het optimale beleid, na gemiddeld 11 spellen. Ook heeft Thijs nog een MINIMAX-speler geprogrammeerd, die telkens de beste zet kiest door de spelboom te analyseren, en dus geen tegenspeler nodig heeft om het spel te leren. Daarna heeft hij al deze benaderingen ook nog eens toegepast op twee andere spelen: octapawn en boter-kaas-en-eieren. Hiervan deed hij geen verslag, maar misschien komt dat in een latere bijeenkomst nog eens aan de orde. Als vervolg hierop liet Aad aan de hand van een wiskundige formule uit het boek van Barto en Sutton over reinforcement learning zien dat de door HER (de luciferdoosjesspeler) toegepaste leermethode feitelijk een speciaal, simpel geval van Q-learning is. Arjan sloot daar weer naadloos op aan door te vertellen wat er in het eerste gedeelte van het boek van Barto en Sutton zoal te lezen staat. Daarbij verduidelijkte hij o.a. wat jargon (bijvoorbeeld: de value van een actie is de kans dat je wint, en de policy is wat je doet om die kans zo groot mogelijk te maken), en besprak enkele toepassingsvoorbeelden (de keus tussen een driver en een putter bij het golfspel, en het computerspelletje Gridworld). Theo kwam met een aantal nuttige web-adressen van sites waar gratis digitale en e-books zijn te vinden: De home page van Richard. S. Sutton, incompleteideas.net, waar ook het hierboven genoemde boek Reinforcement Learning: An Introduction te downloaden is, dat Sutton samen met Andrew G. Barto schreef; De site bookboon.com, met meest engelstalige boeken over allerlei onderwerpen, waaronder IT & Programmeren, wiskunde, en biologie; goalkicker.com, waar boeken uit de serie Programming Notes for Professionals over diverse programmeertalen en -omgevingen te vinden zijn; Packt met boeken over o.a. machine learning; op deze site moet je wel een account aanmaken. Theo vertelde ook dat de HCC in het kader van het tweede seizoensthema van 2019 iets wil doen met Drones, Robots, en programmeren. Omdat er weinig of geen aandacht zal zijn voor actuele ontwikkelingen in Kunstmatige Intelligentie — het gaat vooral over het zelf programmeren van apparaatbesturingen in bijvoorbeeld Scratch —, zal het bestuur van onze interessegroep dit initiatief belangstellend, maar met enige distantie volgen. Jan wist nog niet op welke plaats hij tijdens de laatste Roborama-wedstrijd met zijn Lego®-karretje was geëindigd, maar was wel op een belangrijke beperking gestuit: hij kon de ultrasone sensoren niet naar wens programmeren, omdat hij geen toegang had tot de ruwe data. Hij wil zich dus meer gaan concentreren op een nieuwe robotwagen, gebouwd uit afvalmateriaal en uitgerust met een aandrijfsysteem met tachogeneratoren. Jan vroeg ons mee te denken over het implementeren van AI-onderwerpen in deze robot. Één idee is om iets te gaan doen met een cameraatje, waarvan de beelden met een Raspberry Pi zouden kunnen worden verwerkt. Zo'n AI-beeldverwerkingssysteem zou bijvoorbeeld goede diensten kunnen bewijzen bij het Roborama-onderdeel blikjes verzamelen. Een suggestie uit de groep is om een neuraal netwerk in te bouwen dat kan worden getraind door activiteiten eerst met handbesturing uit te voeren. (GV 23 januari 2019) Kort verslag van de bijeenkomst op 3 november 2018 Gelijktijdig met onze bijeenkomst vonden ook weer de Roborama-wedstrijden van HCC-robotica plaats, zodat enkele vaste klanten vandaag afwezig waren. In de plenaire sessie kwamen de volgende onderwerpen aan de orde: Zoals aangekondigd op de vorige bijeenkomst hebben Aad, Arjan en Gerard op 10 en 11 oktober de World AI Summit 2018 in Amsterdam bezocht. Arjan gaf een korte, met enkele zelfgemaakte foto's geïllustreerde impressie van dit evenement. Twee onderwerpen noemde hij met name: de unicorn story van het bedrijf Darktrace, dat cyberaanvallen wil pareren met een soort immuunsysteem voor computers en netwerken; en de presentatie van autofabrikant Nissan over het streven om auto's te laten gedachtenlezen door het oppikken van de hersenactiviteiten van hun bestuurder. Aad merkte op dat AI-conferenties tegenwoordig minder over theoretische vorderingen gaan, maar vooral over toepassingen — met alle problemen die daarbij komen kijken. Een kort stukje over de AI Summit, geschreven door Aad, verscheen in PC-Active 303 (december 2018 / januari 2019, pag. 81). Roel maakte ons attent op de aflevering Mens in de machine van het VPRO-programma Tegenlicht, uitgezonden op 21 oktober, waarin wordt gesproken over de vraag hoe we richting moeten en kunnen geven aan de toepassing van AI in de wereld. Kunnen we potentieel superintelligente systemen nog wel beheersen, en hun normen en waarden in overeenstemming brengen met die van de mensheid? Roel legde verband met het sprookje van Lilith, die volgens hem de overgang van matriarchaat naar patriarchaat symboliseerde, en liet merken dat hij zelf ook wel twijfels en vraagtekens had. Thijs dacht dat een oplossing misschien kon worden gevonden in het begrenzen van de actiemogelijkheden van artificiële intelligenties, en Ed stelde dat we ons niet specifiek zorgen moeten maken over bewegende robots, maar over intelligente algoritmen in het algemeen. Peter bracht ons op de hoogte van de voortgang m.b.t. de Introductiecursus Neurale Netwerken. Er hebben zich tot nu toe twee mensen opgegeven. Om een kritische massa te bereiken is besloten de cursus ook open te stellen voor belangstellenden uit de HCC-interessegroepen robotica, programmeren en forth. Leden van onze AI interessegroep die zich al in het kader van de studiegroep neurale netwerken in het gebruikte boek van Tariq Rashid hebben verdiept, kunnen zich desgewenst melden als waarnemer, om van de ontwikkelingen op de hoogte te blijven en eventueel vragen van cursisten te helpen beantwoorden. Peter kwam ook nog met een idee voor een mogelijk project. Hij was op het Internet enkele zeer korte programma's tegengekomen om een neuraal netwerk te implementeren, waaronder één in 11-regels Python en een daarvan afgeleid programma in 11 regels JavaScript. Die 11 regels zijn overigens wat geflatteerd: de python-versie maakt gebruik van de wiskundige programmabibliotheek numpy — waarvan je dus in ieder geval de in dit programma gebruikte functies zult moeten snappen — en ook in de JavaScript-versie zijn de definities van de matrixbewerkingen en de sigmoide activeringsfunctie niet meegeteld. Het leek Peter interessant om deze programmaatjes in een projectgroep te analyseren en onderling te vergelijken. Wanneer hij zijn bedoelingen nog wat meer heeft kunnen concretiseren, horen we hier ongetwijfeld meer over. De rest van de plenaire sessie werd gevuld door leden van de projectgroep hexapawn, die gedurende een maand (in dit geval: 5 weken) aan de slag waren gegaan met een artikel van Martin Gardner in Scientific American van maart 1962. Hierin wordt beschreven hoe je met luciferdoosjes en gekleurde kralen een zelflerend systeem kunt construeren om een eenvoudig spelletje te spelen. Voor dit doel heeft Gardner zelf het spel Hexapawn bedacht, dat gespeeld wordt met 6 schaakpionnen op een 3×3-bordje en waarvoor slechts 19 luciferdoosjes nodig zijn. Ter vergelijking: Tic-Tac-Toe (boter-kaas-en-eieren) vereist zo'n 300 luciferdoosjes! Gerard, die het initiatief tot het project had genomen, legde eerst de spelregels van hexapawn en het doel van het project uit. De opzet was niet om het luciferdoosjessysteem daadwerkelijk te bouwen, maar om het in een zelfgekozen programmeertaal te simuleren, en zo de achterliggende leermethode (een vorm van reinforcement learning) beter te begrijpen. Omdat een hardware-versie echter erg nuttig kan zijn voor demonstratiedoeleinden, had Gerard toch 19 luciferdoosjes opgescharreld en van de benodigde etiketten voorzien; gevuld met M&M's kan dit op diverse evenementen als een leuke aandachttrekker dienen. Daarna demonstreerde Theo zijn versie: een Python-programma dat alle mogelijke bordstanden van hexapawn genereert en vastlegt in een HTML-met-CSS-bestand. Met een browser kan de gebruiker deze game tree doorlopen; programmacode in JavaScript zorgt ervoor dat het systeem zijn tegenzet kiest en slechte zetten afleert. Het resultaat ziet er fraai uit en is (met mogelijke enkele aanpassingen) zeer geschikt om op onze website te worden geplaatst. Otto had een mooi zelflerend hexapawn-programma in Microsoft Excel gemaakt, waarin de gebruiker zetten kan invoeren door de hokjes van herkomst en bestemming aan te geven. Helaas was hij door ziekte verhinderd het zelf te komen demonstreren, en Gerard kon het onder LibreOffice onder Linux niet aan de praat krijgen; maar dankzij de Windows-computer van Rudolf konden we Otto's versie toch in actie zien. Gerards eigen versie was geschreven in C en had een simpele command-line interface. Hij had nog diverse ideeën om zijn eigen programma te verbeteren, en om met alternatieve leerregels te experimenteren, en ook om het spel hexapawn zelf nader te analyseren, waarover we in de toekomst misschien nog wel meer zullen horen. Het huidige project werd door hem echter officieel voor beëindigd verklaard. Twee onderwerpen kwamen vandaag niet aan bod. Titus had zelfgeschreven BASIC-programma's over neurale netten en duiven en haviken op een USB-stick, maar helaas geen computer bij zich; en Aad wilde iets vertellen over hexapawn i.v.m. het boek van Sutton en Barto over reinforcement learning, maar moest helaas eerder weg. Hopelijk komen deze interessante bijdragen op een volgende bijeenkomst alsnog aan de beurt. (GV 6 december 2018) Kort verslag van de bijeenkomst op 6 oktober 2018 Ook deze maand kwamen er in de plenaire sessie weer verscheidene interessante onderwerpen aan bod: Gerard begon met twee korte mededelingen. Ten eerste: hij gaat op 10 en 11 oktober met Aad en Arjan naar de World Summit AI 2018 in Amsterdam. En ten tweede: Enno Diekema, die in het verleden voorzitter van onze AI interessegroep was, hoopt (en verwacht) in november bij de Faculteit der Natuurwetenschappen, Wiskunde en Informatica van de Universiteit van Amsterdam tot doctor gepromoveerd te worden. Daarna nam Gerard het initiatief tot de oprichting van een nieuwe projectgroep. Hij was een oud artikel van Martin Gardner tegengekomen, oorspronkelijk verschenen in Scientific American van maart 1962, en enkele jaren later gebundeld in het boekje Further Mathematical Diversions (dat ook verschenen is onder de titel The Unexpected Hanging). In dit artikel beschrijft Gardner de constructie van een machine, gemaakt van luciferdoosjes en kralen, die leert hexapawn te spelen, een uiterst simpel van het schaakspel afgeleid 2-persoonsspelletje. Gerard heeft geconstateerd dat deze constructie leert d.m.v. reinforcement learning en hoopt dat de projectgroepleden door bestudering van het artikel, programmering van de Hexapawn Educable Robot (HER), en raadpleging van informatie over reinforcement learning (bijv. de Wikipedia-pagina over dit onderwerp) meer van deze leermethode zullen gaan begrijpen. Als deelnemers hebben (naast Gerard zelf) Otto, Roel, Ronald en Theo zich aangemeld; Aad, Ed, Peter en Pieter Frans wilden graag als waarnemer op de hoogte gehouden worden van de vorderingen van de projectgroep. De geplande projectduur is één maand — in dit geval vier weken. Peter vroeg nogmaals of hij het Trello-bord "Introductie Neurale Netwerken" als Massive Open Online Course aan de buitenwereld kon aanbieden. Cursisten zijn daarbij zelf verantwoordelijk voor hun eigen leerproces a.d.h.v. het boek Make Your Own Neural Network van Tariq Rashid; het bord biedt echter enige aanvullende en verdiepende informatie, en moet vooral gaan fungeren als middel om met medeleerlingen en cursusleiding te communiceren. Er is momenteel al wel een online cursus op educative.io op basis van het boek van Rashid, maar daar is weinig inhoudelijke feedback bij. Het plan is om de cursus op Trello voorlopig alleen binnen de HCC aan te bieden en het initiatief na een half jaar te evalueren; tien of meer deelnemers zou een leuk resultaat zijn. Ruim de helft van de aanwezigen betuigde steun aan het plan, niemand uitte er ernstige bezwaren tegen. Roel lichtte nogmaals beknopt zijn ambities toe: kinderen bezig krijgen met techniek in het algemeen, en robotica en AI in het bijzonder, door ze iets moois te laten zien, en vervolgens te laten zien wat de eerste stap is om dat te bereiken. Hij zou daar nog steeds graag onze interessegroep bij willen betrekken. Henk had een BASIC-programma geschreven om rikudo-puzzels op te lossen. Bij zulke puzzels is de opdracht om op een zeshoekig vakjespatroon, waarin sommige vakjes al van een getal zijn voorzien, een doorlopende route van aangrenzende hokjes te construeren waarbij op elke achtereenvolgende stap het getal in het hokje één hoger wordt. De puzzelaar wordt daarbij geholpen (en beperkt!) door een zwart balletje op sommige grenzen tussen twee hokjes, dat aangeeft dat die hokjes opeenvolgende getallen moeten krijgen.Henks programma maakt gebruik van backtracking; het afbreken van een probeersel wanneer er een groepje van één of meer vakjes geïsoleerd raakt, werkt daarbij sterk versnellend. Wel vroeg Henk zich af of het programma niet intelligenter kon: alle intelligentie in het programma komt nu van de programmeur, en bovendien is backtracken meestal een tijdrovende methode. Ben suggereerde dat genetisch programmeren of best-first search misschien mogelijkheden bieden, en Ronald vermoedde dat het efficiënter zou kunnen zijn om ergens in het midden van de gezochte keten te beginnen. Theo kwam met een kijktip: het actualiteitenprogramma Nieuwsuur heeft recent enkele reportages over kunstmatige intelligentie uitgezonden. A Bright New World: de impact van Artificial Intelligence, een serie van 5 korte (±6 min.) videofilmpjes, waarin experts worden geïnterviewd over diverse maatschappelijke gevolgen van AI; AI-special: het spanningsvlak tussen mens en machine, een gesprek met twee Nederlandse deskundigen over bovenstaande filmpjes; Op de NPO-site staat ook een tot nadenken stemmend internet-artikel, geïllustreerd met enkele korte video's en een wat langer audiofragment, over de risico's van autonome wapensystemen, ook wel Killer Robots genoemd. Otto, een nieuwe bezoeker, stelde zich voor. Hij was al langer HCC-lid, maar deed niets meer met zijn oude interesse (videobewerking); en omdat zijn zoon AI studeert wil hij zich, nu hij gestopt is met werken, zelf ook in dat onderwerp verdiepen. Zoals eerder gemeld, heeft Ben zich gestort op Transputer-prolog. Omdat documentatie daarvan ontbrak is hij begonnen zich in te lezen in concurrent programming. In een geschikt (d.w.z. niet te theoretisch) boek hoopt hij binnenkort toe te komen aan de timingsaspecten; deze kennis denkt hij ook te kunnen gebruiken voor Madeleine (zijn robotwagentje), die helaas niet op tijd klaar zal zijn voor de Roborama-wedstrijden volgende maand. Bens verhaal gaf aanleiding tot een discussie over wat deadlock precies is; ook werd de relevante vraag gesteld — maar (nog) niet beantwoord — wat dit alles met AI te maken heeft. Tot slot vertelde Aad waarmee hij momenteel bezig is. Eerst demonstreerde hij zijn lerende muis, die hij naar de Java-programmeeromgeving NetBeans had overgezet. Vervolgens liet hij zien hoe het neurale netwerk van de muis, in de oorspronkelijke versie door hemzelf ontworpen, nu werd geconstrueerd op basis van een bouwplan dat uit genen van 11 bytes bestaat. Het aantal genen en de precieze inhoud ervan zijn het product van een genetisch algoritme (evolutie in de computer), dat probeert m.b.v. crossover en een mutatiekans van 10% de beste netwerkarchitecturen te vinden vanuit een beginpopulatie van 200 random individuen. Interessant was dat er ook netwerken ontstonden die vals spelen door bij de groene (lekkere) plant rondjes te gaan draaien! Naar aanleiding hiervan wees Thijs ons nog op een artikel van Kenneth O. Stanley en Risto Miikulainen over Neuroevolution of Augmenting Topologies (NEAT), waarin ook het (laten) evolueren van neurale netwerken in de computer wordt besproken. Er werden vandaag dus vooral veel lopende activiteiten gepresenteerd, en hopelijk gaan we daar in de nabije toekomst meer over horen. (GV 28 oktober 2018) Kort verslag van de bijeenkomst op 1 september 2018 Voorafgaand aan de plenaire sessie kwam de projectgroep JavaScript voor het laatst bijeen. Er was gedurende de vakantiemaanden nauwelijks per e-mail gecommuniceerd, en Gerard ontbond de groep omdat de houdbaarheidsduur van dit project naar zijn mening was verstreken. De projectdoelstellingen waren niet gehaald, en Gerard moest dan ook bekennen dat die misschien iets te ambitieus waren geweest. Toch is het geen verspilde tijd en moeite geweest: Niek, voor wie dit project de eerste kennismaking met programmeren was, wil zich met hulp van Gerard graag verder in JavaScript bekwamen; Peter had op het Internet veel gezocht naar informatie over JavaScript en JavaScriptprogramma's; en Pieter Frans verwacht bij het programmeren in Processing (dat gebaseerd is op JavaScript) profijt te hebben van de opgedane basiskennis. Gerard liet zien hoever hij gekomen was met de JavaScript-woordenlijst (die niet in de oorspronkelijke projectopzet zat) en het programma (n-grambenaderingen van een Nederlandse tekst). Hoewel onvoltooid, waren deze maaksels toch erg leuk om te zien, en Gerard is vast van plan om ze in de toekomst nog eens af te maken. In de plenaire sessie kwam verder nog het volgende naar voren: Roel, die in de jaren '90 aktief was in de toenmalige werkgroep neurale netwerken (niet te verwarren met de huidige studiegroep!), las een zelfgeschreven stukje voor als inleiding op een belangrijke vraag die hij aan de groep wou voorleggen: Hoe dragen we onze kennis, met name op AI-gebied, over op de jeugd (en eventuele andere belangstellenden)? Roels vraag had een dubbele achtergrond: de wens om bij zijn kleinkinderen belangstelling voor techniek te wekken en ze daarover van informatie te voorzien; en de gedachte dat de AI interessegroep in zijn 30-jarige bestaan toch wel een schat aan expertise moet hebben verzameld. De uitgebreide discussie die hierop volgde had geen duidelijke slotsom. Niemand bood zich aan om cursussen en/of studieboeken samen te stellen. Daarnaast werd de opvatting geuit dat de jeugd tòch liever zelf op Internet op zoek gaat naar informatie — als ze überhaupt al geïnteresseerd zijn in techniek; veel jongeren kiezen liever rijke en beroemde voetballers, zangeressen of filmsterren als rolmodel. En vermoedelijk is onze deskundigheid veel minder groot dan Roel ons toedicht: 30 jaar lijkt wel lang, maar door het verloop onder de aktieve leden heeft er ook kennisverlies plaatsgevonden; en bovendien is het hobby, vrijetijdsbesteding, en dus veel minder intensief en doelgericht dan een echte studie of beroepsmatige aktiviteit. Pieter Frans demonstreerde een tweetal Processing-programma's die hij had gemaakt naar aanleiding van het YouTube-kanaal The Coding Train van Daniel Shiffman: Het eerste programma toont een soort beestjes in een wereld met spontaan her en der verschijnende voedzame en giftige planten. Omdat de energievoorraad van de beestjes lineair afneemt met de tijd, moeten ze voedzame planten verorberen om op te laden; nuttigen ze echter een giftige plant, dan neemt hun energie ineens nog een stuk verder af. Doordat het langstlevende beestje zichzelf kopieert (met een mutatie), vormen de afstanden waarop ze resp. voedsel en gif bespeuren een selectiecriterium dat hun evolutie stuurt. Dit gaf aanleiding tot enkele reacties: Thijs merkte op dat genetische algoritmen ook wel worden gebruikt om de structuur van een neuraal netwerk te laten evolueren; Ben meldde dat genetic programming bij classificatieproblemen soms beter werkt dan een neuraal netwerk; en Peter vroeg zich af of je een neuraal netwerk ook een programma kunt laten schrijven. Het tweede programma toont een ander soort beestjes, die enkele muren moeten omzeilen om een doel te bereiken. Ze hebben een chromosoom bestaande uit 800 verplaatsingsvectoren. Met een populatiegrootte van 1000 was er een duidelijke vooruitgang zichtbaar: uiteindelijk werd het doel bijna bereikt. Peter vroeg wie er op 29 september namens onze interessegroep aanwezig wilde zijn op de MegaCompUfair die jaarlijks door de HCC-interessegroep CompUsers wordt georganiseerd; Aad bood zich aan om samen met Gerard de stand te bemannen. Peter wilde graag het Trellobord over het boek Make Your Own Neural Network van Tariq Rashid openstellen voor belangstellenden uit andere HCC-interessegroepen. Het bord bevat communicatie van de studiegroep neurale netwerken, en Peter wil het aanbieden als een soort massive open online course. De bedoeling is dat cursisten het boek gebruiken voor zelfstudie, en dat ze over de leerstof vragen kunnen stellen en discussies kunnen voeren via Trello. Gerard vond dat het bord vooralsnog te weinig extra informatie en structuur bevat om als cursus of workshop aangeboden te worden, en Ben vroeg zich af waarom de vraagbaak- en discussiemogelijkheid, die dus blijkbaar de hoofdmoot van het aanbod uitmaakt, dan niet via een forum in bijv. Google Groups kan worden gerealiseerd. Ed stelde voor dat Peter een concept gaat maken van de aankondiging waarmee hij dit bord wil openstellen, en Peter zegde dat toe. Ben memoreerde nogmaals de stand van zaken met Transputer-Prolog, waarvan de voortgang wegens omstandigheden al geruime tijd stagneert. Abraham had Brain Aid Prolog op een Transputersysteem geïnstalleerd. Nu wil Ben hierop de Torens van Hanoi, in Prolog een populaire programmeeropgave, aan de praat krijgen om te kijken of parallel processing een snellere verwerking oplevert. Dit is nog niet zeker, omdat de standaardoplossing gebruik maakt van recursie en de voortzetting best wel eens zou kunnen moeten wachten op de afhandeling van de recursieve aanroep. Ben benadrukte nog dat er verschil is tussen parallel en distributed (zoals server/client) computing. Niek vestigde de aandacht op de interview-reeks Kijken in de ziel, waarin dit seizoen geestelijke leiders aan het woord kwamen. Daarbij kwam natuurlijk ook het geest-lichaamprobleem aan de orde. Hij liet het boek The Animal Spirit Doctrine and the Origins of Neurophysiology rondgaan, dat beschrijft hoe filosofische opvattingen over de werking van de geest na vele eeuwen uiteindelijk plaats maakten voor wetenschappelijke. Roel vroeg zich af of er onderscheid gemaakt moet worden tussen geest en ziel, naar analogie met wijn, waar de ziel bij de fles hoort — de ruimte onder de holle bodem — en de geest (dat is: de alcohol) bij de wijn. Er werd opgemerkt dat de bekende Nederlandse neurobioloog Dick Swaab dit onderscheid niet schijnt te maken. Tenslotte was het woord aan Arjan, die geïllustreerd met wat beelden kort vertelde over zijn vakantiebezoek aan Bletchley Park in Engeland, waar hij in het National Museum of Computing o.a. de gereconstrueerde Bombe en de Harwell Dekatron Computer heeft gezien. (GV 1 oktober 2018) Kort verslag van de bijeenkomst op 7 juli 2018 Op deze bijeenkomst werd o.a. het volgende besproken: Een nieuwe bezoeker stelde zich voor: Aad was in de jaren '90 een zeer actief lid van de toenmalige werkgroep Neurale Netwerken, kwam sindsdien niet meer naar onze bijeenkomsten, maar wil deze interesse weer oppakken nu hij daarvoor weer wat meer gelegenheid heeft. Hij is de schrijver van een Pascalprogramma over een lerende muis en het bijbehorende toelichtende artikel (Reinforcement Learning, de moeite van het lezen nog steeds dubbel en dwars waard!), en in onze bibliotheek zijn ook de leesmappen over neurale netwerken nog aanwezig die hij destijds heeft samengesteld. Gerard vertelde dat de projectgroep JavaScript, die hij op de vorige bijeenkomst had opgestart en die een geplande looptijd van één maand zou hebben, niet alle voorgenomen werkzaamheden had kunnen afronden. Omdat dit mede werd veroorzaakt door onvoorziene omstandigheden (waaronder zijn medewerking aan het artikel over onze interessegroep in PC-Active 301), wil hij het project tijdens de vakantiemaanden voortzetten. Arjan heeft Demystifying Deep Reinforcement Learning" van Tambet Matiisen, dat vorige keer door Thijs werd aanbevolen, gelezen en vond het een verhelderend artikel. Hij heeft geprobeerd om het Deep Q netwerk, dat in het artikel wordt uitgelegd, toe te passen op tectonic-puzzels (m.b.v. Keras, NumPy en TensorFlow), maar vooralsnog zonder succes. Dat kan komen door de reward die hij het netwerk bij iedere poging geeft: het aantal toegestane (maar niet per se correcte) cijferplaatsingen. Gerard merkte op, dat naarmate het ingevulde diagram meer toegestane cijfers bevatte, er waarschijnlijk ook een hoger percentage correct is; dus correctheid zou misschien kunnen worden meegenomen door de reward sterker dan lineair te laten toenemen met het aantal toegestane cijfers. Diederik suggereerde om ook naastgelegenheid op een of andere manier in de reward op te nemen. Ed bracht het boek Homo Deus van de Israelische historicus Harari onder onze aandacht. Harari schreef eerder het boek Sapiens, waarin hij het succes van de menselijke soort beschrijft en tracht te verklaren. In Homo Deus (de titel is een variatie op een uitspraak van Spinoza, Natura deus: God, dat is de natuur) borduurt hij hier op voort, en probeert daarbij ook naar de toekomst te kijken. Dat leidt tot vele vragen, van min of meer filosofische aard: De mens streeft naar eeuwig leven en eeuwig geluk; waar zal dat toe leiden? In de Industriële Revolutie is handwerk vervangen door denkwerk; wat komt er binnenkort voor het denkwerk in de plaats? Welk recht hebben wij om door superieure intelligenties beter behandeld te worden dan wij met bijv. varkens en kippen doen? Als mensen algoritmen zijn, waar blijft dan de vrije wil? Is bewustzijn meer dan alleen het verhalende ik? En hoe hard is het nodig, met name voor intelligentie? Henk had QBasic-programma's geschreven voor twee puzzeltypes die regelmatig in de Metro verschijnen: Tentje-boompje, waarin op een vierkant van ruitjespapier een aantal bomen zijn geplaatst. Naast elke boom (horizontaal of vertikaal) moet precies één tentje worden geplaatst, maar tentjes mogen elkaar niet raken, ook niet diagonaal. (Bomen kunnen elkaar wel raken, en doen dat ook dikwijls.) Kamertje verhuur, ook op een ruitjesvierkant, waarbij een gesloten polygonale lijn moet worden getrokken tussen de ruitjes door. De lijn mag zichzelf niet raken of snijden, en diverse vakjes bevatten een cijfer (van 0 tot 3) dat aangeeft hoeveel zijden (van de vier) deel uitmaken van de lijn. Ook kunnen sommige segmenten van de polygonale lijn gegeven zijn. Henks maakt hierbij geen gebruik van backtracking, maar van logische gevolgtrekkingsregels die specifiek zijn voor het probleem, en die in zijn BASIC-programma zitten ingebakken. Daardoor vormen die programma's dus een soort expertsystemen. Gerard memoreerde dat Titus al eens, voorlopig zonder succes, geprobeerd heeft om kamertje verhuur aan te pakken met een genetisch algoritme. Zelf vroeg hij zich af of het met een cellulaire automaat zou kunnen; hij had ooit een artikel gelezen waarin cellulaire automaten werden gebruikt om doolhoven op te lossen. Ronald heeft op zijn Arduino-bordje een potentiometer aangesloten: een draaiknop, waarvan de stand door het bordje kan worden uitgelezen. Hij wil deze voorziening, op advies van Gerard, gaan gebruiken om de leerfactor van zijn Kohonennetwerk handmatig te controleren. Dat helpt om een intuïtief gevoel te krijgen voor het effect van die leerfactor, en zodoende te achterhalen welk verloop deze moet hebben om het netwerk in een gewenste toestand tot rust te laten komen. Titus liet weer een interessant programmaatje-in-aanbouw van eigen hand zien: vortaro.bas. Vortaro betekent woordenboek in het Esperanto, een taal die niet is geëvolueerd maar ontworpen, en daardoor meer consistentie en logica vertoont dan andere talen. Dit is ook goed te zien bij de woordvorming, waar ingewikkelde begrippen kunnen worden uitgedrukt met behulp van voor- en achtervoegsels die rondom een stamwoord zijn gegroepeerd. Een voorbeeld is malsanulejo, bestaande uit mal- (niet), san- (gezond, stamwoord), -ul (persoon), -ej (plaats) en de uitgang -o die alle zelfstandige naamwoorden krijgen. De betekenis is dus plaats waar ongezonde mensen zijn: ziekenhuis. En samideano, van sam- (zelfde), ide- (idee, stamwoord), -an (volgeling, aanhanger), en -o, betekent geestverwant. Het programma van Titus moet dergelijke woorden gaan uiteenrafelen in hun samenstellende delen, en die vertalen naar het Nederlands en het Engels. We zullen in september zien hoe het verder gaat met al deze activiteiten, en welke nieuwe bezigheden er zoal in de vakantie zijn verzonnen. (GV 24 september 2018) Kort verslag van de bijeenkomst op 2 juni 2018 Gewoontegetrouw was er voorafgaand aan de plenaire sessie weer een overleg van de studiegroep neurale netwerken. Peter gaf een wat uitgebreidere toelichting op Trello, de website die nu door de studiegroep wordt gebruikt om de activiteiten te plannen en coördineren. In Trello wordt een project of activiteit georganiseerd op een board, de digitale versie van een planningsbord uit de "echte wereld". Op zo'n bord vind je een aantal lijsten, analoog aan de kolommen op een echt planningsbord. Die lijsten kunnen voor van alles gebruikt worden: deeltaken, tijdsperioden, stadia waarin (deel)activiteiten verkeren, enz. In elke lijst kunnen dan weer kaarten worden aangemaakt, met informatie, vragen, opmerkingen, aantekeningen, enz. Een behoorlijk flexibele opzet dus, die door de gebruikers op veel verschillende manieren kan worden ingevuld om vorm te geven aan diverse vormen van samenwerking op allerlei gebieden. Tijdens dit overleg kwam ook nog een interessante web-link langs: een (Engelstalige) algemene inleiding in de AI. Geen programmacode en nauwelijks wiskunde, maar wel verklaringen van termen, schema's, en lijstjes over zo ongeveer alle deel- en toepassingsgebieden van Kunstmatige Intelligentie — dit alles samengevoegd tot een samenhangend overzicht, zij het in soms wat krom Engels. Een waardevolle informatiebron voor beginners en gevorderden! Op de website waar dit staat, tutorialspoint, kunnen overigens nog veel meer tutorials worden gevonden, ook over AI-onderwerpen en programmeren. In de plenaire sessie kwamen de volgende onderwerpen ter sprake: Gerard wilde een projectgroep Javascript opstarten. De bedoeling was om de basisbeginselen van deze programmeertaal onder de knie te krijgen aan de hand van een drietal artikelen uit het computertijdschrift c't (november en december 2014, jan/feb 2015). De geplande projectduur was 1 maand (in dit geval 5 weken): één week voor elk artikel, één voor het schrijven van een eigen programmaatje (wat dat moet doen was nog nader te bepalen), en de laatste week als uitloopmogelijkheid (reservetijd). Gerard had naast zichzelf plaats voor drie andere deelnemers; Pieter Frans, Niek en Peter meldden zich aan. Diederik kwam terug op de open source deep learning chess engine Leela Chess. Mensen kunnen m.b.v. hun computer schaakpartijen aanleveren als trainingsdata, hetzij door zelf tegen Leela Chess te spelen, hetzij door via een interface als Arena Chess een (ander) schaakprogramma tegen Leela Chess in te zetten. Ook vestigde Diederik de aandacht op het forum, waarop interessante discussies en informatie te vinden zijn. Niek vertelde zelf een exemplaar van Gödel, Escher, Bach te hebben aangeschaft. Het aantal geïnteresseerden in dit boeiende boek lijkt dus te groeien; misschien zit er in de toekomst een project- of studiegroepje in…? Thijs hield een zeer leerzame presentatie over reinforcement learning, waarbij het systeem niet getraind wordt met een verzameling juiste antwoorden, maar op basis van goed/fout-signalen zelf moet uitzoeken hoe het moet. Daarbij kwamen begrippen aan bod als discounted rewards (je moet acties die verder in het verleden liggen minder zwaar meewegen dan recentere handelingen), exploration (voor een optimaal leereffect moet je af en toe iets anders doen dan de aanbevolen actie), en de Bellman-vergelijking, die een rol speelt bij dit soort optimalisatieproblemen. Wie het naadje van de kous wil weten kan het nalezen in het artikel Demystifying Deep Reinforcement Learning dat door Thijs is geraadpleegd. Verder liet Thijs ons kennismaken met de website OpenAI Gym (ook te vinden op GitHub), met allerlei omgevingen om programma's voor reinforcement learning uit te proberen en te trainen. Zelf was hij bezig om met behulp van een SELU (Scaled Exponential Linear Unit) activatiefunctie en TensorFlow de maanlander een zachte landing te laten maken, maar dat was nog niet gelukt. Pieter Frans vertelde dat hij bezig was geweest met een systeem dat Tic-Tac-Toe (boter, kaas en eieren) leerde spelen m.b.v. reinforcement learning, maar had daar (nog) geen echt verhaal over te vertellen. Op Quick-Draw ging hij wel wat uitgebreider in. Dat is een online AI-experiment van Google, waarbij de gebruiker een zestal meestal concrete begrippen krijgt voorgeschoteld, en van elk begrip binnen 20 seconden — en dat is niet erg lang, probeer het maar! — een tekeningetje moet maken. Het achterliggende neurale netwerk probeert dan te achterhalen wat jouw krabbeltjes voorstellen. Wanneer QuickDraw één of meer tekeningetjes goed heeft geïnterpreteerd — dat hangt natuurlijk sterk van jouw tekenkunsten af, en die komen waarschijnlijk een stuk beter uit de verf als je een touchscreen hebt dan wanneer je het met een computermuis moet doen —, wordt de eer geheel aan de tekenaar gegeven: Well drawn, krijg je te lezen. Alleen wanneer geen van de zes probeersels wordt herkend, reageert het systeem met oops. Je kunt ook kijken in de database met tekeningetjes waarmee jouw krabbels worden vergeleken. De tekeningen worden dynamisch opgeslagen, d.w.z. de volgorde waarin de lijntjes, cirkeltjes, enz. op het scherm zijn gezet wordt ook geregistreerd. Behalve als experiment in AI (waarvan Google er nog meer heeft), kan een systeem als dit omgekeerd ook gebruikt worden om te leren tekenen of schrijven… Ben heeft door omstandigheden niets met Prolog voor de Transputer kunnen doen. Theo vroeg de aandacht voor ROS (Robot Operating System), dat het aansturen van robots voor programmeurs moet vereenvoudigen zoals een gewoon Operating System het gebruik van de computer vergemakkelijkt. In tegenstelling tot wat de naam suggereert, is ROS, evenals andere, soortgelijke systemen, echter geen besturingssysteem in de geijkte betekenis van het woord, maar een verzameling middleware. Theo kwam hiermee omdat bij HCC Robotica een studiegroepje is gevormd om zich in dit onderwerp te verdiepen. Arjan is bezig met het boek Deep Learning with Python van Francois Chollet. De eerste vier hoofdstukken vormen een algemene inleiding, het vijfde gaat over convolutionele netwerken voor computer-visie. Een interessant punt is dat de NN-programmabibliotheek keras een image data generator bevat, die de hoeveelheid trainingsdata kan vergroten door van gegeven voorbeelden varianten te verzinnen. Klaas had proefondervindelijk ervaren dat de prestaties van een cijfer-herkennend neuraal netwerk verslechteren als je de trainingsdata op cijfer sorteert. Volgens Peter was dit effect uit de literatuur al wel bekend. (GV 13 september 2018) Kort verslag van de bijeenkomst op 5 mei 2018 Voorafgaand aan de plenaire sessie vond weer een overleg van de studiegroep "Neurale Netwerken" plaats. Peter gaf een korte demonstratie van Trello, een website die kan worden gebruikt om de activiteiten binnen (werk)groepen te coördineren. Hij stelde voor om van fleep af te stappen en de communicatie voortaan via Trello te laten verlopen. Er leken geen grote bezwaren tegen deze stap te bestaan; Klaas vond Trello "overzichtelijker dan fleep".Arjan stelde voor om verder te gaan met Deep Learning with Python van François Chollet na afronding van Tariq Rashids Make Your Own Neural Network. Er was wel belangstelling voor dit boek, maar de meeste deelnemers zijn nog niet zo ver, dus er is nog tijd om ook alternatieven te bekijken.Tenslotte werd er nog gesproken over de vraag wat we deelnemers aan de studiegroep aanbieden, wat we willen aanbieden, en wat we kunnen aanbieden. Dit onderwerp komt vermoedelijk in de toekomst nog wel vaker ter sprake. In de plenaire sessie kwamen nog de volgende onderwerpen aan bod: Kees attendeerde ons op een on-line cursus Neural Networks for Machine Learning. De cursus wordt gegeven door Geoffrey Hinton, een grote naam op het gebied van neurale netwerken, en wordt aangeboden door de universiteit van Toronto in het kader van coursera. (Coursera is een samenwerkingsverband waarin universiteiten uit diverse landen on-line cursussen aanbieden.) De cusus start op 14 mei, bestaat uit 16 lessen van één week, en is gratis — tenzij je een certificaat wilt. Gerard zocht nog wat gegadigden om de stand van onze AI-interessegroep te bemannen op de HCC!Expo, te houden op zaterdag 12 mei. Arjan en Edwin waren bereid om namens de studiegroep Neurale Netwerken de bezoekers te woord te staan. Daarnaast zal Peter aanwezig zijn om het onderwerp "AI en ethiek" te belichten, Abraham voor het verband tussen AI en Robotica, en Gerard als "regelneef" (oftewel: coördinator). Arjan vestigde de aandacht op twee YouTube-kanalen: Op Arxiv Insights worden recente wetenschappelijke artikelen over machine learning uitgelegd in video's van ongeveer een kwartier. Arjan toonde een stuk van de uitleg van adversarial examples: datavoorbeelden (zoals afbeeldingen die herkend moeten worden) die speciaal geconstrueerd kunnen worden om een neuraal netwerk het bos in te sturen, terwijl op het oog niet daarvan te onderscheiden plaatjes wèl correct worden geklassificeerd. Een reeks van 18 colleges over machine learning, gegeven door Andrew Ng van Stanford University. Deze cursus is ook te vinden op Coursera. Klaas voegde daar nòg een interessante YouTube-tip aan toe: de MIT-OpenCourseWare lezingenreeks van Patrick Henry Winston over Artificial Intelligence. Ben vertelde dat hij en Abraham nu een werkende Prolog op de Transputer hebben. Het betreft een speciale Prolog-compiler voor concurrent programming uit 1994, gebaseerd op de versie van Clocksin & Mellish (die in de jaren '80 een standaard leerboek over Prolog schreven) met een aantal uitbreidingen. Ben demonstreerde een eenvoudig programmaatje waarbij Prolog een aantal uitspraken over genegenheid tussen personen kreeg voorgeschoteld, en daarover vragen (queries) beantwoordde. Het volgende doel is de Torens van Hanoi in Prolog, waarbij misschien te zien zal zijn of het toevoegen van extra Transputers aan het systeem de oplossing versnelt… Edwin was bezig in het boek Machine Learning for Hackers, van Drew Conway en John Myles White. Er worden technieken als classificatie, rangschikking, regressie, clustering en optimalisatie behandeld, met leuke toepassingen als spam-filtering, het breken van een simpel geheimschrift, en het analyseren van het stemgedrag van Amerikaanse senatoren. Edwin vindt het een leesbaar boek, al wordt er wel een stevig beroep gedaan op kennis van de in het boek gebezigde programmeertaal R. Tot slot demonstreerde Titus zijn droids-programma, geschreven in Liberty BASIC; het werkt ook in het (gratis verkrijgbare) JustBasic 2.0. Droids zijn abstracte wezentjes op het computerscherm — bij Titus beeldt dat scherm een donutvormige torusruimte af —, die zich voortbewegen op grond van enkele eenvoudige regeltjes: vermijd botsingen met je buren probeer naar het centrum van de zwerm te komen beweeg je in dezelfde (gemiddelde) richting als je buren voeg een eigen willekeurige component toe aan je beweging vlucht voor een eventueel roofdier Doordat deze regels elkaar in sommige situaties versterken, maar in andere gevallen elkaar tegenwerken, kan er een complex zwermgedrag ontstaan, zoals van een school vissen of een vlucht spreeuwen. Genoeg ideeën en tips dus om ons weer een maandje bezig te houden! (GV 20 augustus 2018) Kort verslag van de bijeenkomst op 7 april 2018 De bijeenkomst begon vandaag met het overleg van de studiegroep "Neurale Netwerken". Besloten werd tot de oprichting van een nieuwe beginnersgroep, voor deelnemers die de aansluiting met de "eerste lichting" kwijt zijn, en ook voor degenen die pas na de oprichting van die studiegroep onze bijeenkomsten zijn gaan bijwonen. Op aandringen van Ed zal de beginnersgroep waarschijnlijk met Skype gaan communiceren. Daarna stond de Algemene Ledenvergadering (ALV) op het programma. Dit verplichte jaarlijks terugkerende ritueel, voor een belangrijk deel gevuld met formaliteiten, werd in vrij korte tijd afgehandeld. In de plenaire sessie werden de volgende onderwerpen besproken: Ben en Abraham waren bezig om te kijken of de Transputer ook in de AI-taal Prolog kan worden geprogrammeerd. Voorlopig zonder duidelijk succes; maar ze werkten tijdens de bijeenkomst nog stug door, en boekten daarbij ook wel enige vorderingen. Diederik was er (in het kader van de studiegroep NN) nog niet in geslaagd om een backpropagation neural network, geprogrammeerd in Pascal, goed te laten leren, ook niet met een klein aantal neuronen en lagen. Gerard kwam met het idee om het met een XOR-netwerkje te proberen; niet alleen vanwege het geringe formaat (2 inputneuronen, 2 hidden neuronen, en 1 uitgangsneuron), maar ook omdat de gewichten voor dat probleem goed "met de hand" kunnen worden vastgesteld (en dus gecontroleerd). Verder had Diederik twee web-tips: Op de ontwikkelsite GitHub staat een project dat een open source equivalent voor het schakende neurale netwerk AlphaZero wil bieden, onder de naam Leela-Chess In een interessant opinieartikel op de website van de Britse krant wordt betoogd dat de menselijke geest geen "diepere" lagen en motivaties kent. Dit heeft natuurlijk ook implicaties voor de discussies over de "vrije wil"… Peter wilde graag weten of de web-links, die hij regelmatig in de nieuwsbrief opneemt, ook worden gelezen en op prijs gesteld. Dat bleek inderdaad het geval, waaruit Peter concludeerde dat het zinvol is om deze informatie op deze manier te blijven verstrekken. Ook Arjan had een paar web-tips: Een artikel over een neuraal netwerk dat een auto bestuurt. Het netwerk wordt gevoed met camerabeelden (30 per seconde), en heeft 1 ingangslaag, 5 convolutielagen, en daarna nog 3 lagen om de uiteindelijke uitvoer te produceren. In verband hiermee wilde Arjan tevens de aandacht vestigen op een website over een zelf-sturende boot. Tenslotte wees Arjan op een podcast waarin Jelle Brandt Corstius een bijna 3 uur durend marathon-interview met Max Welling houdt over deep learning en de gevolgen daarvan. Max Welling is professor in Machine Learning aan de Universiteit van Amsterdam. Titus had weer iets geweldigs meegenomen: een door hem jaren geleden uit hout en scharnieren opgebouwd model van een menselijke hand. De bedoeling is dat dit project uiteindelijk een robothand gaat opleveren. Hoewel er in dit model geen motoren zitten, voelt de hand door zijn gewicht en "gewrichten" al opvallend levensecht aan! Momenteel is Titus bezig met een tweede, digitale versie (in POV-Ray), die echter ook nog niet beweegt.   Verder droeg Titus een nieuw puzzeltje aan: "Kamertje verhuur", af en toe te vinden in de gratis krant Metro (o.a. verkrijgbaar op de grotere treinstations). Hij had geprobeerd dat op te lossen met een genetisch algoritme, voorlopig nog zonder succes. Bovendien had Titus zijn "lijnvolger" meegenomen. Het betreft een standaard LEGO-Mindstorms©-robot, die hij had uitgerust met een extra, schuin naar beneden gerichte afstandssensor om te voorkomen dat hij van de tafel af rijdt. De robot is geprogrammeerd in de EV3-taal, waarin je (net als bijv. in LabVIEW) blokken van parameters voorziet en met elkaar verbindt. Henk had een programmakrant van de ISVW (Internationale School voor Wijsbegeerte) meegenomen, met daarin een lijstje van "Grote Denkers". Hij constateerde teleurgesteld dat Democritus daar niet in voorkwam. Een andere filosoof, Descartes, met specifieke opvattingen over het mind-body-problem, stond er overigens wel bij. Daarna liet Henk de backtrack-programma's zien, die hij had gemaakt om de sudoku mix en de calcudoku's uit de zaterdagbijlage van De Volkskrant op te lossen. Aanvankelijk leek het niet helemaal te werken, door een tikfoutje — in een 4×4 calcudoku kan het getal 95 als rekenkundig product nu eenmaal niet voorkomen, omdat het cijfer 5 er niet in voorkomt —, maar toen dat hersteld was kwam de oplossing er vlot uitrollen! Tot slot kwam Gerard nog met twee recente artikelen uit het tijdschrift Scientific American: In een artikel in het april(2018)-nummer wordt de theorie besproken dat zenuwcellen niet zozeer op elektrische, maar vooral op mechanische wijze pulsen aan elkaar doorgeven, dus door elkaar a.h.w. "aan te stoten". In het maart(2018-)nummer staat een artikel over de poging om robots te laten leren als kinderen, dus door ze de wereld te laten verkennen om te kijken of hun "model" over hoe de wereld in elkaar zit, klopt. Gerard had het idee dat dit zou kunnen worden verwezenlijkt door twee neurale netwerken van elkaar te laten leren. Er is dus weer ruim voldoende informatie uitgewisseld om een maandje thuis over na te denken en er de volgende bijeenkomst op voort te borduren. (GV 28 mei 2018) Kort verslag van de bijeenkomst op 3 maart 2018 In het informele gedeelte van de bijeenkomst waren Albert en Gerard bij elkaar gaan zitten om weer eens naar de programmeertaal occam te kijken. Gerard wou voor het oplossen van logische puzzels alle mogelijke waar/onwaar-combinaties voor een aantal uitspraken genereren. Dit is een tamelijk simpel probleem, dat neerkomt op "binair tellen" en een mogelijkheid biedt om wat te experimenteren met verschillende processen die onderling moeten communiceren. Gerard gaf aan dat je in eerste instantie heel eenvoudig kunt beginnen met twee uitspraken, die elk door één proces worden gerepresenteerd. Dit idee werd enthousiast begroet door Abraham, die er bij was komen zitten. Het bleek dat Abraham op het Internet de ontwikkelomgeving met bijbehorende documentatie van een occam-versie voor de Arduino had gevonden. De LEDjes op de Arduino kunnen natuurlijk prima worden gebruikt om waarheid (LED "aan") of onwaarheid ("uit") van een uitspraak aan te geven; Abraham zou gaan proberen om een 2-bits versie van Gerards idee in occam te programmeren. Op de onderstaande foto's, gemaakt door Abraham, zijn links Albert en Gerard aan het beraadslagen; vóór hen op de tafel ligt de occam-Arduino van Abraham, die op de rechterfoto nog wat beter te zien is.       In de plenaire sessie passeerden onder meer de volgende onderwerpen de revue: Als eerste kreeg een nieuwe bezoeker, Frans, de gelegenheid zichzelf voor te stellen. Hij vertelde o.a. dat hij werkzaam is in de procesindustrie, belangstelling heeft gekregen voor AI door het boek Gödel, Escher, Bach van Douglas Hofstadter, en dat hij wat meer tijd aan die interesse kan besteden nu zijn kinderen ouder zijn. Theo had een nuttige internet-tip: de nieuws-site Reddit, die ook een speciale sectie over AI heeft. Diederik voegde daar een goede tip aan toe: voor nieuws op technisch en wetenschappelijk gebied gaat hij regelmatig naar de site ScienceDaily, ook met een speciale AI-pagina. Wie dagelijks deze beide sites bezoekt, blijft vast en zeker uitstekend op de hoogte van alle actuele ontwikkelingen op het gebied van kunstmatige intelligentie! Zoals ook uit vorige bijeenkomstverslagen blijkt, is Henk o.a. geïnteresseerd in filosofie, en vooral in Democritus, de "geestelijke vader" van de atoomtheorie. Op zoek naar meer informatie over deze onderwerpen las hij De droom der rede van Anthony Gottlieb. Hij kan het boek aanbevelen als een goed overzicht over de vroege westerse filosofie. Wel viel hem op dat filosofie bij Democritus nog simpel was, maar dat het bij Plato en Aristoteles aanzienlijk ingewikkelder werd. Hij vergeleek dit met programmeren: Henk zelf vindt assembly simpel, omdat je het contact met de processor nog hebt; dit i.t.t. een taal als bijv. Scratch, die geen direct verband meer houdt met hoe een computer eigenlijk werkt. Ook had Henk zitten lezen in "Het mysterie van de tijd", geschreven door Carlo Rovelli. (Rovelli schreef eerder het boek "Zeven korte beschouwingen over natuurkunde".) Henk bekende dat hij het boek niet helemaal had uitgelezen, en dat hij er ook weinig wijzer van was geworden. De "studiegroep neurale netwerken" had vandaag veel te bespreken: "Waar zijn we mee bezig, en waar gaan we naartoe?". Wederom werd geconstateerd dat fleep als communicatie- en coördinatiemiddel niet aan de verwachtingen beantwoordt ("Fleep is flut!"); maar er werd ook, terecht, opgemerkt dat je er mee moet leren werken, en Gerard voegde er aan toe dat, of het nu via fleep of via e-mail is, een efficiënte communicatie meestal wel gebaat is bij een beetje zelfdiscipline van de deelnemers. De vorderingen van de deelnemers lopen nog steeds sterk uiteen, en lijken samen te hangen met de hoeveelheid tijd die ieder in het onderwerp wil c.q. kan steken. Albert, die ergens in het begin van het boek is blijven hangen, zei dat hij vooral wil weten wat een neuraal netwerk nu eigenlijk precies is, en dat het voor hem beter was geweest als de stof in kleine brokjes was bestudeerd – meer als een soort lesprogramma. Edwin vond het gebruikte boek — "An introduction to Neural Networks" van Tariq Rashid — overigens, voor amateurs/hobbyisten zoals wij, wel een goed boek om met het onderwerp "neurale netwerken" kennis te maken. Gerard vestigde nog eens de aandacht op het onderscheid dat hij maakt tussen werk- en projectgroepen. Volgens hem had de studiegroep het karakter van een werkgroep: een groep met een (min of meer) gemeenschappelijke interesse waarover regelmatig of bij vlagen van gedachten wordt gewisseld. Naar zijn ervaring leveren dergelijke groepen meestal niet zo veel op omdat ze nogal vrijblijvend van karakter zijn. Hij ziet meer in projectgroepen, met één of meer concrete doelstellingen, een beperkte, vooraf vastgelegde bestaansduur, en een tijdplanning. Toch worden er ook door leden van de studiegroep wel degelijk resultaten geboekt: Theo had Anaconda en Jupyter nu werkend; Diederik is druk bezig een klein backpropagation-netwerk in Pascal te programmeren en moet nu gaan debuggen — zijn neuronen geven een output groter dan één, wat theoretisch niet mag kunnen! —; en Edwin kondigde aan nu ook te gaan "bouwen". We zijn dus benieuwd naar de verdere ontwikkelingen. Tot slot verkondigde Gerard de stelling dat neurale netwerken feitelijk geen programma's of algoritmes zijn, maar computers (in de theoretische betekenis van het woord). Dat veroorzaakte nogal wat verwarring, dus deze opvatting zal waarschijnlijk ook in de toekomst nog wel onderwerp van discussie worden… (GV 1 april 2018) Kort verslag van de bijeenkomst op 3 februari 2018 Op de plenaire sessie kwamen de volgende onderwerpen aan de orde: Als eerste stelden drie nieuwe bezoekers zich voor: Niek, Thijs en André. Daarna was de studiegroep Neurale Netwerken aan bod; dit keer binnen de plenaire sessie omdat Ed de hele ochtend bij Robotica aanwezig moest zijn. Bij deze discussie werd duidelijk dat niet alleen de vorderingen nog steeds sterk uiteenlopen, maar ook de insteek van de deelnemers: sommigen zijn vooral geïnteresseerd in de theorie; anderen willen juist weten hoe je een neuraal netwerk programmeert zonder al te veel theoretische bagage; terwijl weer anderen uit zijn op toepassing (zoals karakterherkenning, waardoor een robot wegwijzers zou kunnen gaan lezen). Verder was gebleken dat de studiegroep vandaag tijdens het informele gedeelte, vóór de plenaire sessie, wel verhelderende discussies had gevoerd, en dat dit overleg "in real life" efficiënter is dan de berichtenuitwisseling via fleep. Het idee werd opgeworpen om de onderwerpen (vragen en problemen waarmee men zit) wèl van te voren via fleep te communiceren, zodat iedereen van te voren enigzins weet waarover het zal gaan. Jan wilde nog maar eens benadrukken dat de Transputer het enige concurrency-systeem is dat voor de hobbyist bereikbaar is. Daarnaast zijn er alleen maar hele grote, en vooral dure, professionele systemen. In de jaren '80 en '90 was de Transputer voor minder draagkrachtige onderzoeksgroepen dan ook een reëel alternatief voor de grote (Cray) supercomputers. De huidige multi-core processoren zijn niet echt vergelijkbaar, omdat die als één module fungeren, en niet zoals een transputersysteem stapsgewijs tot in het oneindige kunnen worden uitgebreid. En de grafische processoren (GPUs), die tegenwoordig ook veel worden gebruikt voor de matrixberekeningen in neurale netwerken, zijn een specialistische toevoeging aan een "gewone" CPU — ongeveer zoals in de jaren '80 een computer met een Intel-8086- of 8088 processor kon worden uitgebreid met een 8087 numerieke (floating point) coprocessor. Titus had een tweetal computeranimaties gemaakt, die hij graag op het Internet geplaatst wou zien. Hij had ze echter alleen als BASIC-programma beschikbaar; er moesten dus eerst met een screen-captureprogramma filmpjes van worden gemaakt, die dan vervolgens op YouTube konden worden geplaatst. Abraham verklaarde zich bereid om dat te doen, en heeft de beide animaties — één verhaaltje zonder woorden, met de titel Pilko, gebaseerd op een grap die door Titus zelf is bedacht; en één reeks van bewegende mensen, dieren, bomen en voorwerpen — inmiddels op zijn eigen YouTube-kanaal gezet. Op dit kanaal stond al enige tijd een filmpje gemaakt op een van onze vorige bijeenkomsten, waarin Titus al eens wat van zijn animaties presenteerde. Titus had ook nog wat doolhof-programma's geschreven. Als eerste een 3-dimensionaal doolhof van 3×3×3 (in een 6×6×6 ruimte), vanuit het perspectief van iemand die zich er in bevindt en de uitweg moet vinden. En als tweede een 2-dimensionaal doolhof, waarbij het programma niet alleen het doolhof maakt, maar ook de weg er doorheen berekent; dit doolhof werd van boven in beeld gebracht. Helaas kon Titus niet in detail uitleggen hoe zijn programma's werken, omdat hij de doolhofalgoritmen van het Internet had geplukt, maar ze niet in detail had geanalyseerd. Tot slot vertelde Gerard wat hem momenteel bezig hield. Hij had in deel 4 van The Art of Computer Programming van de "algoritme-goeroe" Donald Knuth een beschrijving gevonden van een uit logische poorten opgebouwde automaat die boter-kaas-en-eieren (tic-tac-toe) kan spelen. Zoals gebruikelijk laat Knuth, met zijn bondige wiskundige schrijfstijl, veel aan de lezer over om zelf uit te pluizen; hiermee had Gerard al menig uurtje aangenaam doorgebracht, en hij was er nog lang niet klaar mee — temeer daar Knuth zoals gewoonlijk bepaalde essentiële ontwerpdetails naar de opgaven delegeert. Niettemin had Gerard goede hoop er uiteindelijk uit te komen. Daarna zou het natuurlijk leuk zijn om de machine ook daadwerkelijk te gaan bouwen… Een demo die Thijs wilde laten zien over reinforcement learning kwam helaas niet meer aan bod; we hopen die op een van de komende bijeenkomsten alsnog te kunnen bekijken… (GV 22 februari 2018) Kort verslag van de bijeenkomst op 6 januari 2018 Doordat Peter er in geslaagd was de HCC-seizoensthemalezing naar Hooglanderveen te halen, was het programma wat anders dan gebruikelijk: Voorafgaand aan de lezing kwam de studiegroep neurale netwerken voor overleg bijeen. Wat vooral duidelijk werd is dat de vorderingen van de deelnemers hemelsbreed uiteenliepen: één persoon was nog niet met het boek begonnen, anderen hadden het theorie-gedeelte al doorgewerkt maar waren nog niet begonnen met het installeren van de software; weer anderen waren daar wel mee bezig maar stuitten op problemen — waarbij misschien ook het hardwareplatform (Raspberry Pi of PC) en het operating system (Raspbian, "gewoon" Linux, Windows) een rol speelde —, terwijl nog weer anderen de software wel hadden geïnstalleerd maar nog niet met programmeren waren begonnen. En één deelnemer (Arjan) was zelfs al helemaal klaar! Daarnaast was het gebrek aan vragen op fleep punt van discussie. Gerard suggereerde dat er ook oefenvragen kunnen worden geformuleerd waarmee leden van de studiegroep hun begrip van de stof kunnen testen; dit zou kunnen gebeuren door Peter of door Gerard zelf, in zijn rol als waarnemer. De lezing van Rob van Geuns, over het HCC seizoensthema "slimme auto's", werd gehouden voor 29 toehoorders, van de interessegroepen Robotica en AI samen. Er werd een goed inzicht gegeven in de stand van zaken en de huidige activiteiten en plannen van diverse autofabrikanten; tevens werd duidelijk hoe het toevoegen van sensoren aan auto's, en het reageren op die sensorgegevens, zou kunnen leiden tot een bijna naadloze overgang naar "zelfrijdende" auto's. ("Zelfbesturend" zou een betere term zijn, want het woord "auto-mobiel" betekent al "zelf-bewegend"…) Door de lezing was de plenaire sessie helaas wat korter en zonder beamer, maar daarom niet minder interessant: Jan heeft uitgelegd waarom hij zijn deelname aan de studiegroep neurale netwerken beëindigt. Hij vindt het onderwerp "uitzonderlijk interessant", maar heeft zich voorgenomen om nu echt aan de slag te gaan met transputers en besturingen. Arjan bracht het boek "Elegant SciPy" (van uitgeverij O'Reilly) onder onze aandacht. Dit boek, dat ook online te vinden is, behandelt onder andere beeldherkenning, fouriertransformatie, sparse matrices, en kruistabellen (contingency tables). Verder bood Arjan aan om op een latere bijeenkomst een recapitulatie te geven van zijn lezing over convolutionele neurale netwerken. Henk was bezig met een boek over computerschaak en hoopte daar volgende maand iets meer over te kunnen vertellen. Titus had een "algoritme" bedacht om een minderwaardigheidscomplex te overwinnen: Vind je talent. Ontwikkel dat. Let op je gevoel. Omdat het voorschrift niet aan alle strenge eisen van bijv. Knuth voldoet, kan het misschien beter een "recept" worden genoemd dan een "algoritme"; maar het zou zeker interessant zijn om het "therapieprogramma" Eliza uit te rusten met dit soort richtlijnen! Theo kwam met een tip die goed aansloot bij de lezing: in c't van januari/februari 2018 staat een vijftal artikelen over hoe de 3 grote visies, nl. elektrisch, connected en autonoom naar verwachting in de nabije toekomst een revolutie in het autovervoer teweeg gaan brengen, met speciale aandacht voor o.a. parkeren, tanken, auto-ontwerp, en autonoom rijden. Diederik had een artikel van bijna 20 pagina's gelezen over de overwinning van AlphaZero op de open source schaakengine "Stockfish" en wou daarover van gedachten wisselen. Hoewel nog niet alle details van deze match duidelijk zijn — van de 100 partijen zijn er maar 10 gepubliceerd — en er wel iets op af te dingen valt — Stockfish was niet geoptimaliseerd voor de hardware, en kreeg maar 1 minuut per zet bedenktijd toegewezen —, is het toch een interessant resultaat. Zo blijkt uit een analyse van de gepubliceerde partijen door een Amerikeense internationaal schaakmeester, dat AlphaZero eerder wordt gekenmerkt door een "romantische", aanvallende speelstijl dan door risicoloos geschuif dat tracht kleine voordeeltjes om te zetten in winst. Al met al was het intrigerend genoeg om bij Diederik een grotere belangstelling voor neurale netwerken op te wekken… Het was dus een geslaagde aftrap voor een nieuw jaar gevuld met AI-aktiviteiten! (GV 12 februari 2018)  

20 april 2020

...

Bijeenkomsten gehouden in 2019

  Kort verslag van de bijeenkomst op 8 december 2019 In de plenaire sessie werden de volgende onderwerpen besproken: Het HCC-forum heeft nu ook een afdeling voor discussies over Artificiële Intelligentie. Aad's verslag van de "World Summit AI 2019 (Europe)" is gepubliceerd in PC-Active 309 (dec 2019 / jan 2020, p.74). Ben heeft nu een eigen domein voor zijn website. Johan had het boek Make Your Own Neural Network van Tariq Rashid en wilde weten of daar bij onze interessegroep nog aan gewerkt werd. De Massive Open Online Course via Trello functioneerde niet goed en is beëindigd, maar problemen en vragen kunnen natuurlijk altijd op onze bijeenkomsten in de groep worden gegooid. Niek was halverwege blijven steken, en gaat het boek nu samen met Johan vanaf het begin doornemen. Arjan gaf een korte technische lezing over de Intel® Movidius™ Neural Compute Stick en de daarin opgenomen SHAVE processor core. Klaas kwam met twee internet-studietips: Een artikel getiteld Tackling Climate Change With Machine Learning. De Neural Network Zoo van het Asimov Institute, waarop een groot aantal architecturen van neurale netwerken te vinden zijn. Klaas stelde voor om er met een werkgroep maandelijks één te gaan bestuderen. Hoewel het volgens hem weinig met AI te maken heeft, vroeg Ed aandacht voor de HCC-interessegroep (in oprichting) die zich bezig gaat houden met domotica. Gerard merkte op dat je in domotica net zoveel AI kunt stoppen als je wilt. Vorige maand startte Gerard een projectgroep op om te proberen het puzzeltje "Kamertje Verhuur", dat regelmatig in de Metro staat, met een genetisch algoritme (GA) op te lossen. Als opwarmertje zou even een genetisch algoritme worden gemaakt voor het Handelsreizigersprobleem (Travelling Salesman Problem, TSP). Zowel aan het TSP als aan het GA bleek echter meer vast te zitten dan gedacht, zodat dat even 5 weken in beslag nam. Pieter Frans en Gerard lieten hun programma's zien (in resp. Python en JavaScript). Komende maand wordt de aandacht dan toch verplaatst naar Kamertje Verhuur. Daarmee werd de laatste bijeenkomst van dit jaar besloten. Ook volgend jaar zullen op onze bijeenkomsten ongetwijfeld weer veel interessante AI-onderwerpen de revue passeren. (GV 9 december 2019) Kort verslag van de bijeenkomst op 2 november 2019 Terwijl bij HCC-robotica de jaarlijkse Roborama-wedstrijden werden uitgevochten, kwamen bij ons de volgende onderwerpen aan bod: Een nieuwe bezoeker, Hans, stelde zich kort voor. Hij programmeert in Microsoft Excel. Roel legde de groep de vraag voor of, en hoe, AI kan worden ingezet bij de hulp aan dyslectische personen, mogelijk in combinatie met het Chinese karakterschrift. Hij deelde een korte hand-out uit (2 pagina's A4) met daarop wat ideeën n.a.v. zijn eigen ervaringen met dyslectici. Peter had het boek Reinforcement Learning van Sutton gelezen en kon hierover van gedachten wisselen met Aad en Arjan. Rudolf vertelde over de problemen sie hij ondervindt bij zijn pogingen om met deep learning en TensorFlow een programma te schrijven dat beurskoersen voorspelt. Aad was namens het HCC-verenigingsblad PC-Active naar de jaarlijkse World AI Summit in Zaandam geweest, en deed daar voortreffelijk verslag van. Het door hem geschreven artikel ligt bij de redactie van PC-Active te wachten op foto-illustraties. Gerard bracht enkele tijdschriftartikelen onder de aandacht; ze staan hieronder op de leesplank. Tenslotte kwam Gerard met het plan om met een projectgroep de Kamertje-verhuurpuzzel uit de Metro op te lossen m.b.v. een genetisch algoritme. Dit idee was afkomstig van Titus, die vandaag helaas niet aanwezig was, maar wel aan de projectgroep deel wou nemen. De overige deelnemers zijn Pieter-Frans, Theo en Diederik. (GV 3 november 2019) Kort verslag van de bijeenkomst op 5 oktober 2019 Er waren wat minder bezoekers dan normaal, maar de variatie en het niveau van de bijdragen was er niet minder om: De HCC vraagt moderatoren uit onze interessegroep voor het AI-gedeelte van het nieuwe forum op hun website. Peter en Aad waren namens onze interessegroep aanwezig op de CompUfair en deden daar kort verslag van. Aad gaf een interessante presentatie over het gebruik van een genetisch algoritme om de elementen van een relatiediagram overzichtelijk op een computerscherm te plaatsen. Diederik vertelde dat hij bij zijn onderzoek van spelletjes lerende AI-programma's bij de dam-variant draughts was beland. Ben liet wat interessante artikelen zien die op de website van de Duitse uitgever van het computertijdschrift c't staan. Daarbij kwam ook het vertaalprogramma deepl ter sprake. Gerard maakte in een kort verhaaltje duidelijk wat het Hopfield-netwerk nu eigenlijk precies doet. (GV 5 oktober 2019) Kort verslag van de bijeenkomst op 7 september 2019 De volgende onderwerpen kwamen aan bod: Peter kondigde aan dat de zelfstudiecursus neurale netwerken niet zal worden voortgezet. Gerard wil misschien alsnog een workshop over dit onderwerp gaan opzetten, maar geeft dit geen hoge prioriteit. De AI interessegroep zal aanwezig zijn op de MegaCompUfair van HCC-CompUsers in de Bilt, en op de HCC kennisdag in Houten. Roel deelde een A4'tje uit met daarop zijn nieuwste activiteiten en plannen om technische kennis (over computers, AI en robotica) over te dragen aan de schoolgaande jeugd. Ook liet hij een viertal interessante boeken die hij had aangeschaft, rondgaan ter inzage. Henk liet zien hoe de schuifpuzzel waarvoor hij een programma had geschreven, door het kiezen van primaire kleuren (rood, wit, blauw, geel en zwart) voor de stukjes, op een bewegend Mondriaanschilderij ging lijken. Aad vertelde over het onderzoek dat hij m.b.v. een zelfgeschreven Java-programma deed aan een speciale versie van het Hopfield-netwerk, en over enkele manieren waarop dit netwerk verband houdt met processen in kristalstructuren. Gerard demonstreerde de JavaScriptversie van de lerende muis, die hij voor deze website had geschreven, en gaf er een uitgebreide toelichting bij. (GV 7 september 2019) Kort verslag van de bijeenkomst op 5 januari 2019 In de plenaire sessie werd de beschikbare tijd geheel besteed aan slechts 4 onderwerpen: Om ook buiten onze interessegroep de bekendheid met Artificiële Intelligentie wat te vergroten, had Peter een presentatie over Autonomous Intelligent Agents gemaakt. Daarin legt hij uit hoe systemen zelfstandig beslissingen nemen en acties uitvoeren op grond van informatie uit hun omgeving. Natuurlijk kwamen de waarnemings- en beslissingsmogelijkheden van neurale netwerken daarbij aan de orde, maar ook morele en ethische aspecten. Dat gebeurde o.a. aan de hand van Moral Machine (een website van de Amerikaanse onderzoeksuniversiteit M.I.T. waarop wordt gepeild hoe mensen zelf nu eigenlijk over ethische dilemma's denken), en fragmenten uit de klassieke science-fictionfilm 2001: A Space Odyssey (waarin een intelligente computer uiteindelijk wordt uitgeschakeld omdat hij een gevaar vormt voor de astronauten van een interplanetair ruimtevaartuig). De presentatie gaf aanleiding tot verscheidene reacties en commentaren uit de groep, en Peters voorstel om hiermee namens onze interessegroep de boer op te gaan werd goedgekeurd. Als vervolg op zijn bijdrage op de vorige bijeenkomst vertelde Arjan wat er zoal in het tweede deel van het boek van Sutton en Barto over Reinforcement Learning te vinden is. Daarbij kwam het GridWorld-voorbeeld ook weer langs. Tevens vertelde Arjan hoe hij de theorie zelf had toegepast op hexapawn; de resultaten hiervan leken de bevindingen van Thijs, die hierover vorige maand uitgebreid had gerapporteerd, te bevestigen. Arjan maakte ons ook attent op een interessant stukje hardware, naar aanleiding van de vraag die Jan de vorige keer in de groep had gegooid: zijn er mensen met ideeën over AI-onderwerpen die Jan in zijn rijdende robot zou kunnen inbouwen? Arjan is onder meer geïnteresseerd in beeldherkenning met neurale netwerken, en had nu een MovidiusTM Neural Compute Stick van Intel® besteld. Deze bevat een Visual Processing Unit, een speciale neuraal-netwerkprocessor, en kan via een USB-poort op een Raspberry Pi of een PC met Ubuntu worden aangesloten. Omdat Arjan dit gadget nog niet in huis had, kon hij er nog niet veel over vertellen, laat staan demonstreren; maar we zullen er in de toekomst zeker meer over horen! Tot slot kwam Peter weer aan het woord, voor een uitgebreide uitleg van het Trello-bord dat hij heeft opgezet voor de MOOC (Massive Open Online Cursus) over Neurale Netwerken. Deze toelichting was vooral bedoeld voor nieuwe cursisten, die zich hebben aangemeld n.a.v. oproepen in de nieuwsbrieven van diverse interessegroepen. Volgens Peter waren er 10 aanmeldingen vanuit onze AI interessegroep, 6 vanuit HCC-robotica, en 6 vanuit HCC-programmeren. Er lijkt dus een kritieke massa te zijn bereikt, die nodig is om voldoende interactie tussen cursisten teweeg te brengen, zodat ze van elkaars problemen en ervaringen kunnen leren. We zijn in het nieuwe jaar dus weer goed van start gegaan! (GV 24 januari 2019)

20 april 2020

Actueel

'Meld je aan voor de nieuwsbrief' van HCC!artificieleintelligentie

'Abonneer je nu op de nieuwsbrief en blijf op de hoogte van onze activiteiten!'

Aanmelden