Deze bijeenkomst was op zaterdag 19 maart 2016 's middags van 13:00 tot 17:00 uur in De Hilt in Eemnes.

Naast de gebruikelijke inloop in de Tuinzaal hielden we op deze dag om 14:00 uur weer een plenaire sessie in de Eemzaal.

De volgende onderwerpen zijn besproken tijdens deze plenaire sessie:

Transputers en Occam

Gerard meldt kort dat bij HCC!artificiƫle intelligentie wordt gewerkt met transputers en de programmeertaal Occam, tijdens de bijeenkomsten op de eerste zaterdag van de maand in Hooglanderveen bij Amersfoort.

Werkgroepen en projectgroepen

Gerard vertelt over zijn ervaringen met werkgroepen en projectgroepen. Een groep kan ook op een onderwerp zijn gericht in plaats van op een programmeertaal, zoals nu vaak het geval is.

Bijvoorbeeld:

  • ai: simulaties
  • games
  • graphics: animaties
  • security: encryptie
  • data compressie
  • compilers en interpreters
  • numerieke berekeningen: nauwkeurigheid precisie
  • operating systems
  • quantum computers: superpositie
  • administratie: boekhouden
  • databases,
  • spreadsheets: cellulaire automaten
  • besturing: cybernetica, apparaten, netwerken

Je kunt onderscheid maken tussen werkgroepen en projectgroepen.

Een werkgroep heeft een open einde, het is niet bekend wanneer er een resultaat is. Het doel is met name kennis opbouwen.

Een projectgroep gaat gedurende een beperkte tijd over 1 bepaald onderwerp, meestal voor ongeveer 1 maand.

Een voorbeeld een artikel in de Scientific American ging over de beweging van de lamprei vis met een relatief eenvoudig zenuwstelsel. Het is een neuraal netwerk met 1 segment van de lamprei. Het vormt een demonstratie van een netwerk dat oscilleert waardoor er beweging optreedt. Een verslag van de projectgroep hierover staat in 3 delen in het AI-gg tijdschrift van 1999, met een programma geschreven in GW-Basic.

In de praktijk is het beste dat een projectgroep stopt na een maand en een verslag maakt over wat er is geleerd. De beperkte duur is belangrijk, en het werkt het beste met 1 tot 3 maximaal mensen. Daarna kan men deelnemen aan een andere projectgroep. Een aantal korte projecten kunnen mogelijk samen achter elkaar in 1 traject worden gedaan.

Een ander voorbeeld van neurale netwerken is het perceptron met slechts 1 neuron. Zie voor meer informatie over AI projecten de website http://ai.hcc.nl.

Vraag besturing met Raspberry Pi

Hendrik heeft een Raspberry Pi waarvoor hij een Python programma heeft gemaakt. Hij heeft een probleem, het programma werkt niet goed. Hij vraagt hoe je vanuit Python binaire codes kunt versturen.

Het programma wordt gebruikt om informatie over een zonnepaneel op te vragen. De communicatie gaat over een virtuele COM poort via USB en RS485. Een ander Python programma voor het aansturen van een slimme meter werkt wel goed.

Er worden diverse suggesties gedaan, maar het is niet duidelijk genoeg voor de aanwezigen wat het probleem precies is. Het is beter om de gebruikt code te kunnen zien. Er kan een email worden gestuurd met meer informatie over de vraag. We kunnen ook een volgende keer hier verder naar kijken.

Vraag overzicht functies als boomstructuur

Ronald vertelt over de LEDs waar hij eerder een introductie over heeft gehouden. (zie de bijeenkomst van zaterdag 19 december).

Hij heeft een vraag: hoe kun je een overzicht krijgen van een functie in een programma, als een boom structuur. Dus een overzicht van elke functie en hoe deze wordt aangeroepen door andere functies. Dit graag over meerdere source files. Daarmee kan hij een beter overzicht van de code krijgen en zien hoe een functie door andere functies wordt gebruikt.

Sommigen denken dat het niet moeilijk is om zelf een programma te maken hiervoor. Misschien is het mogelijk via een Eclipse plugin?

Op internet wordt een artikel uit het Dr. Dobb's magazine gevonden: A Call-Tree Generator For C Programs.

Er staan nog meer mogelijkheden op Stackoverflow.

Toepassing LEDs bij Kohonen netwerk

Gerard heeft een leuke toepassing voor de LEDjes van Ronald. Op het 10x10 matrix bord is elke LED apart te besturen, het zijn onafhankelijke RGB LEDs.

Je kunt daarmee een Kohonen netwerk demonstreren, dit is een neuraal netwerk. Dit is geĆÆnspireerd op biologische zenuwstelsels.

Zoals bij een oor: het signaal komt binnen en gaat via aambeeld, stijgbeugel en slakkenhuis naar het zenuwstelsel. De zenuwen reageren op tonen, op bepaalde frequenties. Bij tonen die dicht bij elkaar staan worden de zenuwen in het deel van de hersenen dat verbonden is met het oor actief. Dan reageren ook de neuronen die dicht bij elkaar liggen. Wanneer de hoogte van de tonen meer verschilt dan worden ook zenuwcellen actief die verder uit elkaar liggen.

Datzelfde geldt voor de ogen. Het gebied in de hersenen waarmee je ziet zit achterin. De signalen lopen vanaf de ogen via meerdere zenuwcellen naar achter. Als achterin 2 neuronen naast elkaar actief zijn dan is er licht op de cellen van het oog die dicht bij elkaar staan.

Dit kan niet in het DNA zijn vastgelegd, er moet een ander mechanisme zijn, hoe werkt dat?

Professor Teuvo Kohonen uit Finland heeft experimenten gedaan. Hij heeft een mechanisme gevonden dat werkt en simpel is, een theoretisch model.

Stel je hebt een scherm met 1 laag neuronen, in 2 dimensies, die reageren op licht op 1 pixel en nergens anders op. Deze neuronen zijn in een matrix verbonden met de buren links, rechts, boven en onder, behalve aan de rand. Dan worden er lichtflitsen afgevuurd op het scherm. In het begin reageren de neuronen volkomen willekeurig zonder verband met positie in het gezichtsveld. Een getroffen neuron en diens buren in het netwerk bewegen dan weinig naar elkaar toe. Op de overige neuronen heeft deze lichtflits geen invloed. Na vele lichtflitsen ontstaat er vanzelf een patroon. Dit wordt een self-organizing feature map genoemd.

Dan volgt een demonstratie met een grafisch programma op een oude Windows computer. Links staan de data points, blauwe puntjes in een vierkant. Rechts staan de weights, lijnen die willekeurig van 1 neuron naar enkele andere gaan. Dan gaat het programma lopen, met elke 100 stappen een nieuw beeld, met 10000 stappen totaal. Elke iteratie 100 lichtflitsen links, en rechts de lijnen die erbij horen.

Je kunt instellen: start level alpha: 5, limit level of alpha: 0.001, descent rate: 0.001. Dan blijkt dat de rechter figuur groeit naar een matrix met een 8x8 lijnen figuur.

Soms verschijnt in het lijnen programma geen dambord patroon maar een vlinderpatroon, met in het midden 1 punt waar veel neuronen naar elkaar gaan.

In plaats van links input puntjes met een x en y waarde kun je ook kleuren met een RGB waarde gebruiken zoals bij de LEDS, bijvoorbeeld met de 2 kleuren rood en blauw. Dan heb je in het begin heel verschillende kleuren, een willekeurig (random) mengsel. Na een tijdje worden steeds meer begrensde gekleurde vlakken zichtbaar: paars, zwart, rood en blauw. Linksonder zwart, linksboven rood, rechtsboven paars, rechtsonder blauw

Iets anders zijn Hinton diagrammen. Daarbij worden binnen een neuraal netwerk gewichten aangepast. Dat is echter niet goed met LEDjes te demonstreren.

Er is wel een tweede toepassing voor de LEDjes, namelijk self organising art. Dit zijn 10x10 gekleurde vlakken die na vele iteraties samenkomen tot deelvlakken in gelijke kleur.