Grunderna i AI
Vad är Backpropagation?
Vad är Backpropagation?
Deep learning-system är kapabla att lära sig extremt komplexa mönster, och de åstadkommer detta genom att justera sina vikter. Hur justeras vikterna i ett djupt neuronnätverk exakt? De justeras genom en process som kallas backpropagation. Utan backpropagation skulle djupa neuronnätverk inte kunna utföra uppgifter som att känna igen bilder och tolka naturligt språk. Att förstå hur backpropagation fungerar är avgörande för att förstå djupa neuronnätverk i allmänhet, så låt oss diskutera backpropagation och se hur processen används för att justera en nätverks vikter.
Backpropagation kan vara svårt att förstå, och beräkningarna som används för att utföra backpropagation kan vara ganska komplexa. Den här artikeln kommer att försöka ge dig en intuitiv förståelse av backpropagation, med lite komplex matematik. Emellertid är någon diskussion om matematiken bakom backpropagation nödvändig.
Målet med Backpropagation
Låt oss börja med att definiera målet med backpropagation. Vikterna i ett djupt neuronnätverk är styrkan i anslutningarna mellan enheterna i ett neuronnätverk. När neuronnätverket etableras görs antaganden om hur enheterna i en lager är anslutna till de lager som är anslutna till dem. När data flyttar genom neuronnätverket beräknas vikterna och antaganden görs. När data når det sista lagret i nätverket görs en förutsägelse om hur funktionerna är relaterade till klasserna i datamängden. Skillnaden mellan de förutsagda värdena och de faktiska värdena är förlusten/fel, och målet med backpropagation är att minska förlusten. Detta uppnås genom att justera vikterna i nätverket, vilket gör antagandena mer lika de sanna relationerna mellan indatafunktionerna.
Träning av ett Djupt Neuronnätverk
Innan backpropagation kan utföras på ett neuronnätverk måste den vanliga/framåtriktade träningspassen av ett neuronnätverk utföras. När ett neuronnätverk skapas initieras en uppsättning vikter. Värdet på vikterna kommer att ändras när nätverket tränas. Den framåtriktade träningspassen av ett neuronnätverk kan ses som tre diskreta steg: neuronaktivering, neurontilldelning och framåtriktad propagation.
När du tränar ett djupt neuronnätverk måste du använda flera matematiska funktioner. Neuroner i ett djupt neuronnätverk består av inkommande data och en aktiveringsfunktion, som avgör värdet som krävs för att aktivera noden. Aktiveringsvärdet för en neuron beräknas med flera komponenter, vilket är en viktad summa av indata. Vikterna och indatavärdet beror på indexet för noderna som används för att beräkna aktiveringen. Ett annat nummer måste beaktas när aktiveringsvärdet beräknas, en bias-värde. Bias-värden varierar inte, så de multipliceras inte med vikten och indata, de läggs bara till. Allt detta betyder att följande ekvation kan användas för att beräkna aktiveringsvärdet:
Aktivering = summa(vikt * indata) + bias
Efter att neuronen har aktiverats används en aktiveringsfunktion för att bestämma vad den faktiska utmatningen från neuronen kommer att vara. Olika aktiveringsfunktioner är optimala för olika inlärningsuppgifter, men vanligtvis använda aktiveringsfunktioner inkluderar sigmoidfunktionen, Tanh-funktionen och ReLU-funktionen.
När utmatningarna från neuronen har beräknats genom att köra aktiveringsvärdet genom den önskade aktiveringsfunktionen, är framåtriktad propagation klar. Framåtriktad propagation är bara att ta utmatningarna från ett lager och göra dem till indata för nästa lager. De nya indata används sedan för att beräkna de nya aktiveringsfunktionerna, och utmatningen från denna operation skickas till följande lager. Denna process fortsätter hela vägen till slutet av neuronnätverket.
Backpropagation i Nätverket
Processen med backpropagation tar emot de slutliga besluten från en modells träningspass, och sedan bestäms felen i dessa beslut. Felen beräknas genom att kontrastera utmatningarna/besluten från nätverket och de förväntade/önskade utmatningarna från nätverket.
När felen i nätverkets beslut har beräknats, skickas denna information tillbaka genom nätverket och parametrarna i nätverket ändras längs vägen. Metoden som används för att uppdatera vikterna i nätverket baseras på kalkyl, specifikt, det baseras på kedjeregeln. Emellertid behövs ingen förståelse av kalkyl för att förstå idén bakom backpropagation. Bara veta att när en utmatningsvärde tillhandahålls från en neuron, beräknas lutningen på utmatningsvärdet med en överföringsfunktion, vilket producerar en härledd utmatning. När backpropagation utförs, beräknas felet för en specifik neuron enligt följande formel:
fel = (förväntat utmatningsvärde – faktiskt utmatningsvärde) * lutning på neuronens utmatningsvärde
När man arbetar med neuroner i utmatningslagret, används klassvärdet som det förväntade värdet. Efter att felet har beräknats, används felet som indata för neuroner i det dolda lagret, vilket innebär att felet för detta dolda lager är de viktade felen från neuroner i utmatningslagret. Felmätningarna reser bakåt genom nätverket längs vikterna i nätverket.
Efter att felen för nätverket har beräknats, måste vikterna i nätverket uppdateras. Som nämnts, beräkning av felet innebär att bestämma lutningen på utmatningsvärdet. Efter att lutningen har beräknats, kan en process som kallas gradientnedstigning användas för att justera vikterna i nätverket. En gradient är en lutning, vars vinkel/branthet kan mätas. Lutning beräknas genom att plotta “y över” eller “stigning” över “löp”. I fallet med neuronnätverket och felet, är “y” det beräknade felet, medan “x” är nätverkets parametrar. Nätverkets parametrar har ett förhållande till de beräknade feletvärdena, och när nätverkets vikter justeras, ökar eller minskar felet.
“Gradientnedstigning” är processen att uppdatera vikterna så att felet minskar. Backpropagation används för att förutsäga förhållandet mellan neuronnätverkets parametrar och felet, vilket förbereder nätverket för gradientnedstigning. Träning av ett nätverk med gradientnedstigning innebär att beräkna vikterna genom framåtriktad propagation, backpropagera felet och sedan uppdatera vikterna i nätverket.












