Home » Andet » Fokus: Maskinlæring
Fokus: Maskinlæring

Fokus: Maskinlæring

Share
Open source-læring

Python og NumPy, der inddrager effektive strukturer til numerisk computerarbejde, er de foretrukne FOSS-redskaber. Men det helt store navn indenfor maskinlæring er Googles TensorFlow, der er et open source-bibliotek, som man kan bruge med Python, C++, OpenCL eller en kombination af disse sprog. Ovenpå Tensorflow kan man bruge Keras-biblioteket til neurale netværk. Theano var populært og lancerede nogle af de teknikker, der er almindelige i nutidens værktøjer (navnlig transparent gpu-acceleration), men udviklingen standsede sidste år. Og lad os så prøve at afmystificere neurale netværk, der er et centralt begreb i maskinlæring.

Forskerne er blevet inspireret af de milliarder af neuroner, der findes i dyrs hjerner, og af de utallige forbindelser mellem dem. De har lavet deres egne (om end mindre) netværk, som på deres kunstige facon kan lære at udføre specifikke opgaver. Analogier til biologiske hjerner bryder ret hurtigt sammen, men det forhindrer dem ikke i at være meget stærke og anvendelige.

I den ene ende af vores netværk bliver inputdata repræsenteret af et lag (inputlager) af kunstige neuroner. Dette lag leverer så til et andet lag, idet hver neuron bliver forbundet til alle neuroner i det forrige lag. Hver neuron leverer en værdi, der er afhængig af det input, den modtager, og den værdi bliver leveret til alle neuronerne i det næste lag. Der er også et endeligt lag – outputlaget – der repræsenterer netværkets beslutning.

Det er enkelt at finde minima af 1- eller 2 D-funktioner. Det er lidt sværere i flere hundrede tusinde dimensioner.

For at netværket kan være anvendeligt skal effekten af hver neuron manipuleres. Vi begynder fra en indledende konfiguration med at levere data til netværket, og hvis vi ikke bryder os om konklusionerne, justerer vi netværket for at forbedre resultaterne. Efter tilstrækkelig træning og forudsat, at vores neurale netværk er en succes, bør vi være i stand til at føre nye data ind. Det var ikke en del af træningsprocessen, og netværket bør være i stand til at kategorisere dem korrekt.

Se også:  Telenor og Telia åbner for 5G

Dette er ret svært at få begreb om, men det bliver mere klart, når man illustrerer det med et eksempel. Og det klassiske eksempel er håndskriftanalyse eller i hvert fald den del, der drejer sig om at genkende tallene 0 til 9. Der findes et kanonisk datasæt (MNIST-databasen), som består af 70.000 billeder af håndskrevne tal i form af 28 x 28 grå-tonebilleder. Det er blevet de facto-standarden til bygning af “mit første neurale netværk”.

Det aktuelle problem

Her gemmer hver neuron i vores inputlag gråtoneværdien af en bestemt pixel. Hvert lag består af den nette sum af 784 neuroner, der hver har 256 mulige værdier (de er otte bit-billeder). Vi lader det midterste være lige nu og ser på outputlaget. Vi ønsker at klassificere et inputbillede som et af ti tal, og i det endelige lag vil vi derfor have 10 nodes (nu holder vi op med at kalde dem neuroner), og hver af dem måler “tæthed” til hvert tal.

Lad os se på et klassisk eksempel på 0-indekseret forvirring. Hvis vores netværk mener, at vi har givet det et billede af et A, skal værdien af den anden node i outputlaget være meget højere end værdierne for de ni andre nodes. Eftersom dette ikke er nogen eksakt proces, opstår der noget støj – de andre outputs bliver ikke nøjagtig nul. Vi kender alle til hurtigt nedskrevne tretaller, der ligner femtaller, og når vores netværk kommer ud for sådan noget, ville vi forvente, at nodes 4 og 6 har langt højere værdier end resten. Hvis netværket virkelig ikke har nogen anelse, ville vi forvente, at alle output-nodes har samme værdier.

Google Translate er primært blevet drevet af maskinlæring siden 2016.

Så vidt, så godt. Men vi er nødt til at forholde os til, hvad der sker mellem input- og outputlagene. Meget passende kalder man lagene indimellem for “skjulte lag”. Det er fristende at fundere over, hvad efterfølgende lag vil gøre, ved at tænke på, hvordan et menneske ville prøve at identificere eller beskrive et symbol. Kantgenkendelse er et forbløffende anvendeligt værktøj, og derfor kan vi forestille os, at der et eller andet sted i vores netværk er et lag, der genkender kanter, uanset om de er cirkelformede, buede eller lige. Vi er også glade for former (der er bestemte konfigurationer af kanter), og i talord finder vi nogle former: lige linjer, kurver og løkker.

Se også:  Islands tele-direktør: "Intet indikerer, at Huawei er usikkert"

Derfor kan vi forestille os et andet lag, der søger efter disse egenskaber.
Bemærk, at det faktisk ikke er det, der finder sted i noget talgenkendende neuralt netværk, men det er alligevel nyttigt at tænke i disse baner. I eksempler fra den virkelige verden er det svært at afgøre, hvilke fænomener lagene i et neuralt netværk sigter på, og det rejser nogle filosofiske spørgsmål. Men takket være den måde, de fungerer på, er det faktisk temmelig ligegyldigt.

TAGS
Maskinlæring
netværk
Open Source

DEL DENNE
Share


Mest populære
Populære
Nyeste
Tags

Find os på de sociale medier

Modtag dagligt IT-nyhedsbrev

Få gratis tech-nyheder i din mail-indbakke alle hverdage. Læs mere om IT-UPDATE her

Find os på FaceBook

AOD/AOD.dk

Brogårdsvej 22
DK-2820 Gentofte
Telefon: 33 91 28 33
redaktion@aod.dk

Audio Media A/S

CVR nr. 16315648,
Brogårdsvej 22
DK-2820 Gentofte
Telefon: 33 91 28 33
info@audio.dk
Annoncesalg:
Lars Bo Jensen: lbj@audio.dk Telefon: 40 80 44 53
Annoncer: Se medieinformation her


AOD/AOD.dk   © 2020
Privatlivspolitik og cookie information - Audio Media A/S