stub Vad är Backpropagation? - Unite.AI
Anslut dig till vårt nätverk!

AI 101

Vad är Backpropagation?

mm
Uppdaterad on

Vad är Backpropagation?

System för djupinlärning kan lära sig extremt komplexa mönster, och de åstadkommer detta genom att justera sina vikter. Hur justeras vikten av ett djupt neuralt nätverk exakt? De är genomjusterade en process kallas tillbakaförökning. Utan backpropagation skulle djupa neurala nä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 neurala nätverk i allmänhet, så låt oss diskutera backpropagation och se hur processen används för att justera ett nätverks vikter.

Återförökning kan vara svårt att förstå, och beräkningarna som används för att utföra återförökning kan vara ganska komplicerade. Den här artikeln kommer att sträva efter att ge dig en intuitiv förståelse av backpropagation, med lite i vägen för komplex matematik. Men viss diskussion om matematiken bakom backpropagation är nödvändig.

Målet med backpropagation

Låt oss börja med att definiera målet för backpropagation. Vikterna hos ett djupt neuralt nätverk är styrkan i anslutningar mellan enheter i ett neuralt nätverk. När det neurala nätverket är etablerat görs antaganden om hur enheterna i ett lager är kopplade till de lager som är sammanfogade med det. När data rör sig genom det neurala nätverket beräknas vikterna och antaganden görs. När data når det sista lagret av 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/felet och målet med backpropagation är att minska förlusten. Detta uppnås genom att justera nätverkets vikter, vilket gör att antagandena mer liknar de verkliga förhållandena mellan ingångsfunktionerna.

Att träna ett djupt neuralt nätverk

Innan återförökning kan göras på en neurala nätverk, måste det vanliga/framåtträningspasset för ett neuralt nätverk utföras. När ett neuralt nätverk skapas initieras en uppsättning vikter. Värdet på vikterna kommer att ändras när nätverket tränas. Det framåtriktade träningspasset för ett neuralt nätverk kan uppfattas som tre diskreta steg: neuronaktivering, neuronöverföring och framåtriktad fortplantning.

När vi tränar ett djupt neuralt nätverk måste vi använda oss av flera matematiska funktioner. Neuroner i ett djupt neuralt nätverk består av inkommande data och en aktiveringsfunktion, som bestämmer det värde som krävs för att aktivera noden. Aktiveringsvärdet för en neuron beräknas med flera komponenter, som är en viktad summa av inmatningarna. Vikterna och ingångsvärdena beror på indexet för de noder som används för att beräkna aktiveringen. En annan siffra måste beaktas vid beräkning av aktiveringsvärdet, ett biasvärde. Biasvärdena fluktuerar 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 * ingång) + bias

Efter att neuronen har aktiverats används en aktiveringsfunktion för att bestämma vad utsignalen från den faktiska utsignalen från neuronen kommer att vara. Olika aktiveringsfunktioner är optimala för olika inlärningsuppgifter, men vanliga aktiveringsfunktioner inkluderar sigmoidfunktionen, Tanh-funktionen och ReLU-funktionen.

När utsignalerna från neuronen har beräknats genom att köra aktiveringsvärdet genom den önskade aktiveringsfunktionen, görs fortplantning framåt. Utbredning framåt är bara att ta utdata från ett lager och göra dem till ingångar för nästa lager. De nya ingångarna används sedan för att beräkna de nya aktiveringsfunktionerna, och utdata från denna operation skickas vidare till följande lager. Denna process fortsätter hela vägen fram till slutet av det neurala nätverket.

Återförökning i nätverket

Processen med backpropagation tar in de slutliga besluten av en modells träningspass, och sedan avgör den felen i dessa beslut. Felen beräknas genom att kontrastera nätverkets utdata/beslut och nätverkets förväntade/önskade utdata.

När felen i nätverkets beslut har beräknats, sprids denna information tillbaka genom nätverket och parametrarna för nätverket ändras under vägen. Metoden som används för att uppdatera nätverkets vikter är baserad i kalkyl, närmare bestämt är den baserad i kedjeregeln. En förståelse för kalkyl är dock inte nödvändig för att förstå tanken bakom backpropagation. Vet bara att när ett utdatavärde tillhandahålls från en neuron, beräknas lutningen på utdatavärdet med en överföringsfunktion, vilket ger en härledd utdata. När man gör backpropagation beräknas felet för en specifik neuron enligt följande formeln:

error = (expected_output – actual_output) * lutning av neurons utdatavärde

När man opererar på neuronerna i utgångsskiktet används klassvärdet som förväntat värde. Efter att felet har beräknats används felet som indata för neuronerna i det dolda skiktet, vilket innebär att felet för detta dolda skikt är de viktade felen för neuronerna som finns i utgångsskiktet. Felberäkningarna går bakåt genom nätverket längs viktnätverket.

Efter att felen för nätverket har beräknats måste vikterna i nätverket uppdateras. Som nämnts innebär beräkning av felet att bestämma lutningen för 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 lutning är en lutning, vars vinkel/branthet kan mätas. Lutningen beräknas genom att plotta "y över" eller "stigningen" över "loppet". När det gäller det neurala nätverket och felfrekvensen är "y" det beräknade felet, medan "x" är nätverkets parametrar. Nätverkets parametrar har ett samband med de beräknade felvärdena, och när nätverkets vikter justeras ökar eller minskar felet.

"Gradient descent" är processen att uppdatera vikterna så att felfrekvensen minskar. Backpropagation används för att förutsäga förhållandet mellan det neurala nätverkets parametrar och felfrekvensen, vilket ställer in nätverket för gradientnedstigning. Att träna ett nätverk med gradientnedstigning innebar att beräkna vikterna genom framåtriktad propagation, backpropagera felet och sedan uppdatera nätverkets vikter.

Bloggare och programmerare med specialiteter inom Maskininlärning och Deep Learning ämnen. Daniel hoppas kunna hjälpa andra att använda kraften i AI för socialt bästa.