Binaire neurale netwerken (BNN)

Terwijl neurale netwerken steeds krachtiger worden en meer en meer toepassingen vinden, stijgt ook de vraag naar eenvoudige varianten die op een beperkte hardware kunnen draaien (edge devices, ASICísÖ). Binaire neurale netwerken (BNN) bieden hierop een antwoord, al vragen ze wel om een specifieke benadering bij het trainen ervan.

De komst van krachtige CPUís, en eigenlijk vooral GPUís (Graphics Processing Unit), is cruciaal geweest voor de doorbraak van deep learning Ė de discipline in artificiŽle intelligentie die gebruikmaakt van neurale netwerken.

Grafische kaarten lenen zich uitstekend voor het parallel uitvoeren van het rekenwerk dat zo typisch is voor neurale netwerken. In een neuraal netwerk wordt een ďorganisch algoritmeĒ tot stand gebracht door opeenvolgende lagen van nodes berekeningen te laten doen op de output van de nodes in de vorige laag en hun resultaten weer door te geven aan de volgende laag. De berekening in een node komt typisch neer op het maken van een soort gewogen gemiddelde van outputs in de vorige laag. De training van een netwerk kan gezien worden als het zoeken naar de juiste parameters voor deze berekeningen.

Voor complexe toepassingen zoals beeldherkenning is al snel een omvangrijk netwerk en dus ook veel rekenkracht vereist. Toch zijn er ook heel wat toepassingen van AI Ė zoals het detecteren van anomalieŽn in een real-time signaal Ė die even goed op een compacte hardware uitgevoerd kunnen worden. Het is dan zaak om een neuraal netwerk zodanig te optimaliseren dat de vereiste rekenkracht beperkt kan worden.

Zwevendekommagetallen

Een van de methodes die gebruikt worden in het optimaliseren van neurale netwerken is het zoeken en elimineren van nodes waarvan de output nauwelijks bijdraagt tot het eindresultaat. Met andere woorden: indien een neuraal netwerk na het trainen slechts een beperkt gewicht toegekend heeft aan de output van een bepaalde node maakt het niet zoveel verschil wanneer men de berekening in die node simpelweg vervangt door een constante waarde.

Een andere methode om het nodige rekenwerk te reduceren bestaat erin om de gewichten en andere variabelen in het netwerk minder nauwkeurig te maken. Traditioneel worden in neurale netwerken 32-bits zwevendekommagetallen (wat een woord hť) gebruikt maar voor heel wat toepassingen volstaan lichtere datatypes die dan ook minder rekencapaciteit vergen. Net als bij de eliminatie van nodes gaat dit onvermijdelijk ten koste van de betrouwbaarheid van het eindresultaat, waarbij dus per toepassing bekeken moet worden hoe ver men daar in kan gaan.

Het gebruik van lichtere datatypes kan men doortrekken tot men finaal eindigt bij binaire data en zo komen we bij binaire neurale netwerken (BNN). In zo een netwerk geeft elke node -1 of +1 als output en ook voor de gewichten bij het berekenen van de volgende laag worden alleen deze waarden gebruikt. Qua vereiste rekenkracht is zo een netwerk a walk in the park voor alles wat zich ook maar enigszins CPU noemt.

Bayesiaanse interferentie

De keuze voor binaire netwerken is een goede oplossing om AI naar het niveau van controllers en embedded systemen te brengen, ten minste voor het runnen van een applicatie (wat men in de wereld van neurale netwerken ďinferenceĒ noemt). Het trainen van het netwerk is een apart verhaal, dat in het geval van binaire netwerken ook een heel aparte benadering vraagt.

In een ďklassiekĒ neuraal netwerk bestaat het trainen er in om met gelabelde data (een verzameling van inputs waarvan telkens de verwachte output gekend is) op zoek te gaan naar de paramaters met het beste resultaat. Dat doet men door de parameters bij elke nieuwe dataset lichtjes aan te passen tot het netwerk in staat is om te doen wat het moet doen.

Bij een binair netwerk is het lichtjes aanpassen van de parameters echter niet mogelijk. Een oplossing hiervoor is dat men de klassieke manier van trainen toepast, met een netwerk met reŽle getallen en dat men dat netwerk na het trainen vertaalt naar een binair netwerk dat in de inference fase gebruikt kan worden. Het trainen kan dan wel niet in situ op de beperkte hardware gebeuren.

Een andere oplossing is het toepassen van Bayesiaanse interferentie om de binaire parameters te bepalen. Het is een methode die in de statistiek gebruikt wordt om de waarschijnlijkheid voor een bepaalde hypothese bij te werken telkens wanneer zich nieuwe, bijkomende informatie aandient. En dat is nu net wat er bij het trainen van een neuraal netwerk gebeurt. Bayesiaanse interferentie komt er in feite op neer dat de black box benadering van neurale netwerken vervangen wordt door een eerder deterministische methode om de parameters in een netwerk te bepalen. Je zou de vraag kunnen stellen of het dan nog deep learning moet heten, maar dat hoeft voor de toepassing uiteraard geen verschil te maken.

© Productivity.be


Feel free to share



Productivity.be

is een publicatie van
Redactiebureau ConScript

Contact

Erwin Vanvuchelen
+32 (0)475 64 99 34
erwin@conscript.be
erwinvanvuchelen