Tilbake til tidslinjen
hobby 2018 Mistet i tid

Mitt første nevrale nettverk

Et selvlærende nettverk som spilte nettleserspillet Slope. Modellen så ikke piksler direkte. Et håndskrevet preprosesseringsledd hentet ut banens geometri først, og nettet lærte å styre ut fra det.

Hvorfor preprosessere?

Å trene et convnet på rå piksler på en personlig GPU i 2018, som videregåendeelev, gikk rett og slett ikke. Så jeg jukset: et lite datasyn-ledd hentet ut banekantene og gjorde dem om til en liten featurevektor. Det nevrale nettet var lite nok til å trene hjemme, og lærte likevel spillet.

Sløyfen

  • Skjermfangst festet til nettleservinduet
  • Kantdeteksjon → banelinjer → en featurevektor med fast lengde
  • Nettverket gir ut en styringsbeslutning (venstre / rett frem / høyre)
  • Belønning fra overlevelsestid. Episoder batchet til treningsdata

Hva det lærte meg

At representasjon betyr mer enn arkitektur. Modellarkitekturen var et par dense-lag. Magien lå i hvilke features den fikk inn. Jeg tenker fortsatt på det. Det er en lekse som dukker opp igjen i hvert anvendt ML-prosjekt jeg har gjort senere.

Kildekoden ligger arkivert et sted på en død harddisk. Hvis jeg graver den frem, dukker den opp her.

Tilbake til tidslinjen