Kunstigt neuralt netværk | en slags computersoftware, inspireret af biologiske neuroner
Et neuralt netværk (også kaldet ANN eller kunstigt neuralt netværk) er en slags computersoftware, der er inspireret af biologiske neuroner. Biologiske hjerner er i stand til at løse vanskelige problemer, men hver neuron er kun ansvarlig for at løse en meget lille del af problemet. På samme måde består et neuralt netværk af celler, der arbejder sammen for at opnå et ønsket resultat, selv om hver enkelt celle kun er ansvarlig for at løse en lille del af problemet. Dette er en metode til at skabe kunstigt intelligente programmer.
Neurale netværk er et eksempel på maskinlæring, hvor et program kan ændres, efterhånden som det lærer at løse et problem. Et neuralt netværk kan trænes og forbedres med hvert enkelt eksempel, men jo større det neurale netværk er, jo flere eksempler skal det bruge for at klare sig godt - ofte skal det bruge millioner eller milliarder af eksempler i tilfælde af dybdeindlæring.
Oversigt
Et neuralt netværk modellerer et netværk af neuroner, som dem i den menneskelige hjerne. Hver neuron udfører enkle matematiske operationer: den modtager data fra andre neuroner, ændrer dem og sender dem til andre neuroner. Neuroner er placeret i "lag": en neuron fra et lag modtager data fra neuroner i andre lag, ændrer dem og sender data til neuroner i andre lag. Et neuralt netværk består af et eller flere lag.
Det første lag kaldes "inputlaget" og modtager data fra omverdenen (f.eks. et billede eller tekst). Det sidste lag kaldes "udgangslaget". Dataene fra neuronerne i outputlaget læses og bruges som netværkets output. De andre lag kaldes de "skjulte lag".
I et simpelt "feed-forward"-netværk er de data, der behandles af neuronerne, tal. Hver neuron foretager en vægtet sum af værdien af neuronerne i det foregående lag ( matematisk funktion på denne værdi, kaldet "aktiveringsfunktionen". Aktiveringsfunktionen er normalt en funktion, der returnerer en værdi mellem 0 og 1, som f.eks. tanh. Resultatet af aktiveringsfunktionen ( i nedenstående ligning) sendes derefter til neuronerne i det næste lag.
i nedenstående ligning). Derefter lægges der en konstant værdi (kaldet "bias") til. Endelig anvender det en
Der defineres en tabsfunktion for netværket. Tabsfunktionen forsøger at vurdere, hvor godt det neurale netværk klarer den tildelte opgave. Endelig anvendes en optimeringsteknik til at minimere udfaldet af omkostningsfunktionen ved at ændre netværksvægtene og biaserne i netværket. Denne proces kaldes træning. Træning foregår et lille skridt ad gangen. Efter tusindvis af trin er netværket typisk i stand til at udføre sin tildelte opgave ret godt.
Eksempel
Overvej et program, der kontrollerer, om en person er i live. Det kontrollerer to ting - pulsen og åndedrættet. Hvis en person enten har en puls eller trækker vejret, vil programmet udgive "levende", ellers vil det udgive "død". I et program, der ikke lærer over tid, ville dette blive skrevet som:
function isAlive(puls, vejrtrækning) { if(puls || vejrtrækning) { return true; } else { return false; } }
Et meget simpelt neuralt netværk, der kun består af én neuron, og som løser det samme problem, ser således ud:
Værdierne for puls, vejrtrækning og levende vil være enten 0 eller 1, hvilket repræsenterer falsk og sandt. Hvis denne neuron får værdierne (0,1), (1,0) eller (1,1), skal den altså udstede 1, og hvis den får (0,0), skal den udstede 0. Neuronen gør dette ved at anvende en simpel matematisk operation på input - den lægger de værdier, den har fået, sammen og tilføjer derefter sin egen skjulte værdi, som kaldes en "bias". Til at begynde med er denne skjulte værdi tilfældig, og vi justerer den med tiden, hvis neuronet ikke giver os det ønskede output.
Hvis vi lægger værdier som (1,1) sammen, kan vi få tal større end 1, men vi ønsker, at vores output skal ligge mellem 0 og 1! For at løse dette kan vi anvende en funktion, som begrænser vores faktiske output til 0 eller 1, selv om resultatet af neuronets matematik ikke lå inden for intervallet. I mere komplicerede neurale netværk anvender vi en funktion (f.eks. sigmoid) på neuronet, så dets værdi bliver mellem 0 eller 1 (f.eks. 0,66), og derefter sender vi denne værdi videre til det næste neuron hele vejen, indtil vi har brug for vores output.
Indlæringsmetoder
Der er tre måder, hvorpå et neuralt netværk kan lære: overvåget læring, uovervåget læring og forstærkende læring. Disse metoder fungerer alle ved enten at minimere eller maksimere en omkostningsfunktion, men de er hver især bedre til bestemte opgaver.
For nylig brugte et forskerhold fra University of Hertfordshire i Storbritannien forstærkende læring til at få en iCub humanoid robot til at lære at sige enkle ord ved at pludre.
Spørgsmål og svar
Spørgsmål: Hvad er et neuralt netværk?
A: Et neuralt netværk (også kaldet ANN eller kunstigt neuralt netværk) er en slags computersoftware, der er inspireret af biologiske neuroner. Det består af celler, der arbejder sammen for at opnå et ønsket resultat, selv om hver enkelt celle kun er ansvarlig for at løse en lille del af problemet.
Spørgsmål: Hvordan kan et neuralt netværk sammenlignes med biologiske hjerner?
Svar: Biologiske hjerner er i stand til at løse vanskelige problemer, men hver enkelt neuron er kun ansvarlig for at løse en meget lille del af problemet. På samme måde består et neuralt netværk af celler, der arbejder sammen for at opnå et ønsket resultat, selv om hver enkelt celle kun er ansvarlig for at løse en lille del af problemet.
Spørgsmål: Hvilken type program kan skabe kunstigt intelligente programmer?
Svar: Neurale netværk er et eksempel på maskinlæring, hvor et program kan ændre sig, efterhånden som det lærer at løse et problem.
Spørgsmål: Hvordan kan man træne og forbedre sig med hvert enkelt eksempel for at bruge dyb læring?
Svar: Et neuralt netværk kan trænes og forbedres med hvert enkelt eksempel, men jo større det neurale netværk er, jo flere eksempler skal det bruge for at klare sig godt - ofte skal det bruge millioner eller milliarder af eksempler i forbindelse med dybdegående læring.
Spørgsmål: Hvad skal man bruge for at få succes med deep learning?
A: For at dybdeindlæring kan lykkes, skal man have millioner eller milliarder af eksempler, afhængigt af hvor stort det neurale netværk er.
Spørgsmål: Hvordan hænger maskinlæring sammen med at skabe kunstigt intelligente programmer?
A: Maskinlæring er relateret til at skabe kunstigt intelligente programmer, fordi den gør det muligt for programmer at ændre sig, efterhånden som de lærer at løse problemer.