Pieter Edelman
23 June 2017

Het grote nadeel van diepe neurale netwerken is de grote rekentijd die nodig is, met name tijdens de training. Met een combinatie van optimalisatie- en databasetechnieken is die echter sterk te reduceren.

Met deep learning zijn snel heel aardige resultaten te boeken. Op een normale pc is een basaal neuraal netwerk met een beetje geduld wel te trainen om bijvoorbeeld beelden of handschriften te herkennen met een trefzekerheid boven de negentig procent.

Maar die laatste paar procenten zijn hardnekkig. Voor een beetje meer nauwkeurigheid moeten de netwerken gelijk veel groter worden, met navenant meer rekenwerk. En elke daaropvolgende verfijning vraagt om onevenredig meer moeite. Neurale netwerken lopen vandaag de dag behoorlijk uit de klauwen. Er worden al netwerken gerapporteerd met miljoenen kunstmatige neuronen.

Wie een lerend systeem nodig heeft dat én veel kan én ook nog eens nauwkeurig is, ziet de rekenkosten dus sterk oplopen. Vaak wordt daarom teruggegrepen naar krachtige cloudservers, met name voor de intensieve trainingsfase waarbij de berekeningen allemaal nog floating point-precisie vereisen en talloze malen herhaald moeten worden.

Op de aankomende KDD-conferentie in augustus presenteren twee onderzoekers van Rice University in Texas een manier om dit sterk te vereenvoudigen. Ze claimen een reductie tot wel een factor twintig.

Neuraal netwerk bc04 2017

Probaat middel

De Amerikaanse wetenschappers ‘misbruiken’ hiervoor een bekende optimalisatietechniek bij het trainen van neurale netwerken. Kunstmatige neuronen zijn niet-lineaire functies met meerdere waarden als input en een enkele waarde als output. Kort door de bocht zijn die georganiseerd in lagen van identieke neuronen die elk input ontvangen van alle neuronen in de vorige laag. Elk neuron stuurt op zijn beurt zijn input weer door naar alle neuronen in de volgende laag.

Tijdens de trainingsfase draait het erom te bepalen hoe sterk de neuronen onderling verbonden zijn. Als het goed is, leren neuronen zo te reageren op specifieke features in de input, of in de vorige laag. Maar het is niet altijd goed: het gevaar van overfitting ligt op de loer, waarbij het systeem geen algemene eigenschappen aanleert maar specifieke details van individuele voorbeelden. Als het vervolgens wordt ingezet, reageert het veel te sterk op eigenschappen die hierop lijken.

Een probaat middel hiervoor werd enkele jaren terug gevonden in de vorm van dropout. Tijdens elke trainingsstap wordt steeds willekeurig de helft van de verbindingen weggestreept, waardoor steeds andere neuronen betrokken worden bij het antwoord. Later werd dit verfijnd met selectieve dropout, waarbij alleen de meest actieve neuronen de kans krijgen om bij te dragen aan de volgende laag. Dit werkt niet alleen beter dan willekeurige dropout, het blijkt dat er ook veel meer neuronen uitgezet kunnen worden, tot wel 95 procent.

Uitsmeren

Het betekent echter niet dat er minder gerekend hoeft te worden. Om te weten welke neuronen uitgezet moeten worden in een laag, moeten ze namelijk eerst allemaal worden becijferd.

Maar de Rice-onderzoekers realiseerden zich dat dit ook anders benaderd kan worden. Namelijk als databaseprobleem. De lijst inputs kan als zoekopdracht worden beschouwd, met als antwoord de lijst neuronen die actief moeten worden. Natuurlijk is het lastig zoeken naar een exacte match voor een reeks floating point-getallen. Maar er zijn methodes bekend die efficiënt de dichtstbijzijnde match vinden.

De methode begint daarom met het opstellen van een tabel met een aantal willekeurige inputs waar de bijbehorende actieve neuronen voor worden berekend, uitgaande van de sterkte van de verbindingen op dat moment. Dit is een rekenintensieve stap, maar die hoeft maar één keer uitgevoerd te worden voor elke laag.

Die tabel geeft vervolgens voor elke input het setje neuronen dat actief moet worden. Alleen die worden gebruikt om de sterktes van de verbindingen bij te stellen. Daarna wordt de tabel bijgewerkt – opnieuw alleen de delen die veranderd zijn.

De methode bleek bij een aantal tests nagenoeg net zo goed te werken als normale adaptieve dropout – zelfs een klein beetje beter – maar met flink minder rekenwerk. Bijkomend voordeel is dat het proces zich makkelijker laat uitsmeren over meerdere processoren; de kans is klein dat parallelle processen aan dezelfde neuronen werken en elkaar in de weg zitten. De Amerikanen denken daarom dat hun methode de cloud overbodig kan maken voor veel deep learning-taken, zelfs voor smartphonegebruikers.