Artificiellt neuronnät | ett slags dataprogram, inspirerat av biologiska neuroner
Ett neuralt nätverk (även kallat ANN eller artificiellt neuralt nätverk) är ett slags dataprogram som är inspirerat av biologiska neuroner. Biologiska hjärnor kan lösa svåra problem, men varje neuron är bara ansvarig för att lösa en mycket liten del av problemet. På samma sätt består ett neuralt nätverk av celler som arbetar tillsammans för att åstadkomma ett önskat resultat, även om varje enskild cell endast är ansvarig för att lösa en liten del av problemet. Detta är en metod för att skapa artificiellt intelligenta program.
Neurala nätverk är ett exempel på maskininlärning, där ett program kan förändras när det lär sig att lösa ett problem. Ett neuralt nätverk kan tränas och förbättras med varje exempel, men ju större det neurala nätverket är, desto fler exempel behöver det för att fungera bra - ofta behövs det miljontals eller miljarder exempel när det gäller djupinlärning.
Översikt
Ett neuralt nätverk modellerar ett nätverk av neuroner, som i den mänskliga hjärnan. Varje neuron utför enkla matematiska operationer: den tar emot data från andra neuroner, ändrar dem och skickar dem till andra neuroner. Neuronerna placeras i "lager": en neuron från ett lager tar emot data från neuronerna i andra lager, ändrar dem och skickar data till neuronerna i andra lager. Ett neuralt nätverk består av ett eller flera lager.
Det första lagret kallas "inmatningslagret" och tar emot data från omvärlden (t.ex. en bild eller text). Det sista lagret kallas "utgångslager". Uppgifterna från neuronerna i utgångslagret läses och används som nätverksresultat. De andra lagren kallas "dolda lager".
I ett enkelt "feed-forward"-nätverk är de data som neuronerna hanterar siffror. Varje neuron gör en vägd summa av värdet av neuronerna i det föregående lagret ( matematisk funktion på detta värde, som kallas "aktiveringsfunktion". Aktiveringsfunktionen är vanligtvis en funktion som ger ett värde mellan 0 och 1, som tanh. Resultatet av aktiveringsfunktionen ( i ekvationen nedan) skickas sedan till neuronerna i nästa lager.
i ekvationen nedan). Den lägger sedan till ett konstant värde (kallat "bias"). Slutligen tillämpas en
En förlustfunktion definieras för nätverket. Förlustfunktionen försöker uppskatta hur väl det neurala nätverket klarar av sin uppgift. Slutligen tillämpas en optimeringsteknik för att minimera utfallet av kostnadsfunktionen genom att ändra nätets vikter och bias. Denna process kallas träning. Träningen sker ett litet steg i taget. Efter tusentals steg kan nätverket vanligtvis utföra sin tilldelade uppgift ganska bra.
Exempel
Tänk på ett program som kontrollerar om en person är i livet. Det kontrollerar två saker - pulsen och andningen. Om en person antingen har puls eller andas kommer programmet att ge ut "levande", annars kommer det att ge ut "död". I ett program som inte lär sig med tiden skulle detta skrivas som:
function isAlive(puls, andning) { if(puls || andning) { return true; } else { return false; } }
Ett mycket enkelt neuralt nätverk, som består av bara en neuron och som löser samma problem, ser ut så här:
Värdena för puls, andning och levande är antingen 0 eller 1, vilket motsvarar falskt och sant. Om denna neuron får värdena (0,1), (1,0) eller (1,1) ska den alltså ge ut 1, och om den får (0,0) ska den ge ut 0. Neuronen gör detta genom att tillämpa en enkel matematisk operation på indata - den adderar de värden som den har fått tillsammans och lägger sedan till sitt eget dolda värde, som kallas "bias". Till att börja med är detta dolda värde slumpmässigt, och vi justerar det med tiden om neuronen inte ger oss det önskade resultatet.
Om vi adderar värden som (1,1) tillsammans kan vi få ett tal som är större än 1, men vi vill att vårt resultat ska ligga mellan 0 och 1! För att lösa detta kan vi tillämpa en funktion som begränsar vår faktiska utgång till 0 eller 1, även om resultatet av neuronens matematik inte låg inom intervallet. I mer komplicerade neurala nätverk tillämpar vi en funktion (t.ex. sigmoid) på neuronen, så att dess värde kommer att ligga mellan 0 och 1 (t.ex. 0,66), och sedan vidarebefordrar vi detta värde till nästa neuron hela vägen tills vi behöver vår utgång.
Inlärningsmetoder
Det finns tre sätt för ett neuralt nätverk att lära sig: övervakad inlärning, oövervakad inlärning och förstärkningsinlärning. Dessa metoder fungerar alla genom att antingen minimera eller maximera en kostnadsfunktion, men var och en av dem är bättre för vissa uppgifter.
Nyligen använde en forskargrupp från University of Hertfordshire i Storbritannien förstärkningsinlärning för att få en humanoid robot iCub att lära sig att säga enkla ord genom att babbla.
Frågor och svar
F: Vad är ett neuralt nätverk?
S: Ett neuralt nätverk (även kallat ANN eller artificiellt neuralt nätverk) är en sorts dataprogram som är inspirerat av biologiska neuroner. Det består av celler som arbetar tillsammans för att åstadkomma ett önskat resultat, även om varje enskild cell endast är ansvarig för att lösa en liten del av problemet.
F: Hur kan ett neuralt nätverk jämföras med biologiska hjärnor?
S: Biologiska hjärnor kan lösa svåra problem, men varje neuron är bara ansvarig för att lösa en mycket liten del av problemet. På samma sätt består ett neuralt nätverk av celler som arbetar tillsammans för att åstadkomma ett önskat resultat, även om varje enskild cell bara är ansvarig för att lösa en liten del av problemet.
F: Vilken typ av program kan skapa artificiellt intelligenta program?
S: Neurala nätverk är ett exempel på maskininlärning, där ett program kan förändras när det lär sig att lösa ett problem.
F: Hur kan man träna och förbättra sig med varje exempel för att använda djupinlärning?
S: Ett neuralt nätverk kan tränas och förbättras med varje exempel, men ju större det neurala nätverket är, desto fler exempel behöver det för att prestera bra - ofta krävs det miljontals eller miljarder exempel i fallet med djup inlärning.
F: Vad behövs för att djup inlärning ska lyckas?
S: För att djupinlärning ska lyckas krävs miljontals eller miljarder exempel, beroende på hur stort det neurala nätverket är.
F: Hur förhåller sig maskininlärning till att skapa artificiellt intelligenta program?
S: Maskininlärning har samband med skapandet av artificiellt intelligenta program eftersom det gör det möjligt för program att förändras när de lär sig att lösa problem.