Neurale nettverk: Du har det så enkelt

nevrale nettverk er alle raseri akkurat nå med økende antall hackere, studenter, forskere, samt bedrifter blir involvert. Den siste gjenoppblomsten var på 80-tallet, så vel som 90-tallet, da det var lite eller ingen World Wide Web, så vel som få nevrale nettverksverktøy. Nåværende gjenoppblomstring startet rundt 2006. Fra et hackerperspektiv, hvilke verktøy så vel som andre ressurser ble tilbudt da, hva som tilbys nå, og hva skal vi forvente for fremtiden? For meg selv ville en GPU på Raspberry Pi være fint.

80-tallet så vel som 90-tallet

Neural Network 80s / 90s bøker samt mags
For Young’uns som leser dette, som lurer på hvordan amerikanske gamle geezere klarte å gjøre noe før World Wide Web, spilte hardcopy-magasiner en stor rolle i å gjøre oss bevisst på nye ting. I tillegg til så var det vitenskapelig amerikansk magasin i september 1992 Spesielt spørsmål om tankene, så vel som hjerne som introduserte meg til nevrale nettverk, både de biologiske og kunstige typer.

Tilbake da hadde du muligheten til å skrive dine egne nevrale nettverk fra grunnen eller bestille kildekoden fra noen andre, som du ville motta på en diskett i posten. Jeg bestilte selv en diskett fra amatørforsker-kolonnen til det vitenskapelige amerikanske problemet. Du kan også kjøpe et neural nettverksbibliotek som ville gjøre alt lavt nivå, komplisert matte for deg. Det var også en gratis simulator kalt Xerion fra University of Toronto.

Å holde øye med bookstore vitenskapsdelene gjorde opp en og annen bok om emnet. Den tradisjonelle var to-volum utforskninger i parallell distribuert behandling, av Rumelhart, McClelland et al. En foretrukket av meg var neural beregning, så vel som selvorganiserende kart: en introduksjon, nyttig hvis du var interessert i nevrale nettverk som styrer en robotarm.

Det var også korte kurs, så vel som konferanser du måtte delta. Seminaret jeg deltok i 1994 var en gratis to-dagers en satt på Geoffrey Hinton, deretter på University of Toronto, både så så vel som nå en leder i feltet. Det beste anerkjente årlige seminaret på det tidspunktet var den nevrale informasjonsbehandlingssystemkonferansen, som fortsatt går sterk i dag.

Og til slutt husker jeg å kamme bibliotekene for publiserte papirer. Min stabel med seminarpapir samt programutdelinger, fotokopierte artikler, samt håndskrevne notater fra den perioden er rundt 3 “tykk.

Så gikk det relativt stille. Mens nevrale nettverk hadde oppdaget bruk i noen få applikasjoner, hadde de ikke levd opp til deres hype, så vel som fra verdens perspektiv, utenfor et begrenset forskningsmiljø, opphørte de. Ting forblir stille som gradvise forbedringer ble gjort, sammen med noen få gjennombrudd, så vel som til slutt rundt 2006 eksploderte de på verden igjen.

Foreliggende ankomst

Vi fokuserer på verktøy her, men kort, disse gjennombruddene var hovedsakelig:

Nye teknikker for treningsnettverk som går mer enn tre eller fire lag dypt, nå kalt dype nevrale nettverk

Bruken av GPUer (Grafikkbehandlingsenheter) for å øke hastigheten på trening

Tilgjengeligheten av treningsdata som inneholder et stort antall prøver

Neurale nettverksrammer

Det er nå mange nevrale nettverksbiblioteker, vanligvis kalt rammer, tilbys for nedlasting gratis med ulike lisenser, mange av dem åpen kildekode rammer. De fleste av de mest populære, gjør at du kan kjøre dine nevrale nettverk på GPUer, så vel som er fleksible nok til å støtte de fleste typer nettverk.

Her er de fleste av de mest populære. De har alle GPU-støtte bortsett fra FNN.

Tensorflow.

Språk: Python, C ++ er i verkene

Tensorflow er Googles nyeste neurale nettverksramme. Den er designet for å distribuere nettverk på tvers av flere maskiner, så vel som GPUer. Det kan betraktes som et lavt nivå en, og gir stor fleksibilitet, men likevel en større læringskurve enn på høyt nivå som Keras, så vel som Tflearn, snakket begge om nedenfor. Imidlertid jobber de med å produsere en versjon av Keras integrert i Tensorflow.

Vi har sett denne i en hack på hackaday allerede i denne hammeren, så vel som ølflaske som gjenkjenner robot, så vel som selv har en introduksjon til å bruke Tensorflow.

Theano.

Språk: Python.

Dette er et åpen kildekodebibliotek for å gjøre effektive numeriske beregninger som involverer flerdimensjonale arrays. Det er fra University of Montreal, og kjører på Windows, Linux samt OS-X. Theano har eksistert i lang tid, 0,1 har blitt utgitt i 2009.

Caffe.

Språk: Kommandolinje, Python, så vel som Matlab

Caffe er utviklet av Berkeley AI forskning samt nabolaget bidragsytere. Modeller kan defineres i enkle tekstdata, og deretter behandles ved hjelp av et kommandolinjeverktøy. Det er også Python samt Matlab-grensesnitt. For eksempel kan du definere modellen din i en vanlig tekstfil, gi detaljer om hvordan du trener det i en annen vanlig tekstdata kalt en Solver, så vel som deretter passere disse til CAFFE Command Line Tool som deretter vil trene et nevralt nettverk. Du kan deretter laste dette utdannede nettet ved hjelp av et Python-program, så vel som å bruke det til å gjøre noe, for eksempel bildeklassifisering.

CNTK.

Språk: Python, C ++, C #

Dette er Microsoft Cognitive Toolkit (CNTK), så vel som kjører på Windows og Linux. De jobber for tiden med en versjon som skal brukes med Keras.

Keras.

Språk: Python.

Skrevet i Python, bruker Keras enten Tensorflow eller Theano under, noe som gjør det lettere å bruke disse rammene. Det er også planer å støtte CNTK også. Arbeidet pågår for å integrere Keras i TensorFlow, noe som resulterer i en separat Tensorflow-eneste versjon av Keras.

TF Lær

Språk: Python.

Som Keras er dette et høyt nivå bibliotek bygget på toppen av Tensorflow.

Fann.

Språk: Støtter over 15 språk, ingen GPU-støtte

Dette er et høyt nivå åpent kildebibliotek skrevet i C. Det er begrenset til fullt tilkoblet, så vel som sparsomt tilkoblede nevrale nettverk. Det har imidlertid vært populært gjennom årene, så vel som har til og med blitt inkludert i Linux-distribusjoner. Det er nylig vist her på Hackaday i en robot som lærte å gå med forsterkningslæring, en maskinlæringsteknikk som ofte bruker nevrale nettverk.

Lommelykt

Språk: Lua.

Open Source Library Skrevet i C. Interessant, sier de på forsiden av deres hjemmeside at Torch er innebygd, med havner til iOS, Andoid samt FPGA-backends.

Pytorch.

Språk: Python.

Pytorch er relativt ny, deres nettside sier at det er i tidlig utgivelsen beta, men det synes å være mye interesse for det. Den kjører på Linux og OS-X, så vel som bruker fakkel under.

Det er ingen tvil om andre som jeg har savnet. Hvis du har en bestemt foretrukket som ikke er her, vennligst gi oss beskjed i kommentarene.

Hvilken skal du bruke? Med mindre programmeringsspråket eller OS er et problem, er en mer faktor å huske på din ferdighetsnivå. Hvis du er ubehagelig med matte eller ikke vil grave dypt inn i nevrale nettverks nyanser, valgte du et høyt nivå. I så fall, hold deg borte fra Tensorflow, hvor du må lære mer om API enn Kera, Tflearn eller de andre høyt nivåene. Rammer som fremhever deres matematiske funksjonalitet krever vanligvis at du gjør mer arbeid for å produsere nettverket. En annen faktor er om du vil gjøre grunnleggende forskning eller ikke. Et høyt nivå rammeverk kan ikke gjøre det mulig for deg å få tilgang til innardene nok til å begynne å lage galne nettverk, kanskje med tilkoblinger som spenner over flere lag eller i lag, så vel som med data som strømmer i alle retninger.

Online-tjenester

Er du du ønsker å legge til noe et nevralt nettverk vil tilby til HACK, men ønsker ikke å ta deg tid til å lære intricacies av nevrale nettverk? For det er det tjenester som tilbys ved å koble hacken til Internett.

Vi har sett utallige eksempler som bruker Amazonas Alexa for talegjenkjenning. Google har også sin sky-maskinlæringstjenester som inkluderer visjon og tale. Visjonstjenesten har vist seg her ved hjelp av Raspberry PIs for godteri sortering, samt å lese menneskelige følelser. WeKinatoren er rettet mot kunstnere, så vel som musikere som vi har sett brukt til å trene et nevralt nettverk for å svare på ulike bevegelser for å snu ting på en av rundt huset, så vel som for å lage en virtuell verdens minste fiolin. Ikke å være utelatt, Microsoft har også sine kognitive tjenester APIer, inkludert: visjon, tale, språk så vel som andre.

GPUS samt TPUer

Iterating gjennom et nevralt nettverk
Trening Et nevralt nettverk krever iterating gjennom det nevrale nettverket, fremover, så vel som deretter bakover, hver gang forbedrer nettverkets nøyaktighet. Opp til et punkt, jo flere iterasjoner du kan gjøre, jo mye bedre vil den endelige nøyaktigheten være når du stopper. Antall iterasjoner kan være i hundrevis eller tusenvis. Med 1980-tallet samt 1990-tallet kan datamaskiner, oppnå nok iterasjoner, ta en uakseptabel tid. Ifølge artikkelen, dyp læring i nevrale nettverk: en oversikt, i 2004 en økning på 20 ganger hastigheten ble oppnådd med en GPU for et fullt tilkoblet nevralt nettverk. I 2006 ble en 4 ganger økning oppnådd for et konvolutt nevralt nettverk. I 2010 økte økningen så mye som 50 ganger raskere når man sammenligner opplæring på en CPU versus en GPU. As a result, accuracies were much higher.

Nvidia Titan Xp graphics card. image Credit: Nvidia
How do GPUs help? A huge part of training a neural network involves doing matrix multiplication, something which is done much faster on a GPU than on a CPU. Nvidia, a leader in making graphics cards and GPUs, created an API called CUDA which is used by neural network software to make use of the GPU. We point this out since you’ll see the term CUDA a lot. With the spread of deep learning, Nvidia has added more APIs, including CuDNN (CUDA for Deep Neural Networks), a library of finely tuned neural network primitives, as well as one more term you’ll see.

NviDia har også sin egen enkeltbrett datamaskin, Jetson TX2, designet for å være hjernen for selvkjørende biler, selvsagt, så vel som så videre. Men som vår [Brian Benchoff] har påpekt, er prispunktet litt høyt for den typiske hackeren.

Google har også jobbet med sin egen maskinvareakselerasjon i typen av sin tensorbehandlingsenhet (TPU). Du har kanskje lagt merke til likheten til navnet på Googles rammeverk over, Tensorflow. Tensorflow gjør tung bruk av tensorer (tenk på singel, så vel som flerdimensjonale arrays i programvare). Ifølge Googles papir på TPU er den designet for innledende fase av nevrale nettverk. Inferanse refererer til ikke å trene nevrale nettverk, men å bruke det nevrale nettverket etter at det er blitt trent. Vi har ikke sett det som brukes av noen form for rammer ennå, men det er noe å huske på.

Bruker andres maskinvare

Har du et nevralt nettverk som vil ta lang tid å trene, men har ikke en støttet GPU, eller vil ikke knytte dine ressurser? I den situasjonen er det maskinvare du kan bruke på andre maskiner som er tilgjengelige over Internett. En slik er Floydhub som, for en person, koster bare Penny’s per time uten månedlig betaling. En annen er Amazon EC2.

Datasett

Opplæring Neural Nettverk med merkede data
Vi sa at et av gjennombruddene i nevrale nettverk var tilgjengeligheten av treningsdata som inneholdt et stort antall prøver, i titusenvis. Trening av et nevralt nettverk som bruker en overvåket opplæringsalgoritme innebærer å gi dataene til nettverket på sine innganger, men også fortelle det hva den forventede utgangen skal være. I den situasjonen må dataene på samme måte merkes. Hvis du gir et bilde av en hest til nettverkets innganger, så vel som utgangene sier at det ser ut som en cheetah, må den vite at feilen er stor, så vel som mer trening er nødvendig. Den forventede utgangen kalles en etikett, så vel som dataene er “merkede data”.

Mange slike datasett tilbys på nettet for treningsformål. MNIST er en slik for håndskrevet karaktergjenkjenning. Imagenet og Cifar er to forskjellige datasett med merkede bilder. Mange flere er oppført på denne Wikipedia-siden. Mange av rammene som er nevnt ovenfor, har opplæringsprogrammer som inkluderer de nødvendige datasettene.

Det er ikke å si at du absolutt trenger et stort datasett for å få en respektabel nøyaktighet. Walking Robot vi tidligere nevnte som brukte FNN-rammen, brukte Servo-motorposisjonene som treningsdata.

Andre ressurser

I motsetning til 80-tallet, så vel som 90-tallet, mens du fortsatt kan kjøpe hardcopy-bøker om nevrale nettverk, er det mange online. To online bøker jeg har hatt glede av, er dyp læring av MIT-pressen, så vel som nevrale nettverk og dyp læring. Ovennevnte rammeverk har alle opplæringsprogrammer for å komme i gang. Og så er det utallige andre nettsteder, så vel som YouTube-videoer på alle typer emne du søker etter. Jeg oppdager YouTube-videoer av innspilte forelesninger, så vel som seminar snakker veldig nyttig.

Fremtiden

Raspberry Pi 7 med GPU
Uten tvil vil fremtiden se flere rammer som kommer sammen.

Vi har lenge sett spesialiserte neural chips samt brett på markedet, men ingen har noen gang oppdaget et stort marked, til og med tilbake på 90-tallet. Imidlertid er de ikke laget spesielt for å betjene det virkelige vekstområdet, den neurale nettverksprogramvaren som alle jobber med. GPUer tjener det markedet. Som nevrale nettverk med millioner av forbindelser for bilde samt stemmebehandling, språk, så vel som så videre i mindre, så vel som mindre forbrukerenheter, vil behovet for flere GPUer eller prosessorer skreddersydd for den programvaren forhåpentligvis resultere i noe som kan endte med å være et nytt element på en bringebær pi eller arduino bord. Selv om det er muligheten for at behandlingen vil forbli en online-tjeneste i stedet. Rediger: Det viser seg at det er en GPU på Raspberry Pi – se kommentarene nedenfor. Det betyr ikke at alle de ovennevnte rammene vil gjøre bruk av det skjønt. For eksempel støtter Tensorflow NVIDIA CUDA-kort. Men du kan fortsatt bruke GPU for din egen tilpassede neurale nettverkskode. Ulike lenker er også i kommentarene for det.

Det er allerede konkurranse om GPUer fra Asics som TPU, og det er mulig at vi får se flere av de som muligens slår av GPUer fra nevrale nettverk helt.

Som for vår nye datamaskin

Posted in Uncategorized

Leave a Reply

Your email address will not be published. Required fields are marked *