Den första grafen ovan visar att de större batchstorlekarna faktiskt avverkar mindre avstånd per epok. För batch 32-träningsepokens avstånd varierar mellan 0,15 och 0,4, medan det för batch 256-träning ligger runt 0,02-0,04. Som vi kan se i den andra diagrammet ökar förhållandet mellan epokavstånden med tiden!
Men varför går en stor batchträning över mindre avstånd per epok? Är det för att vi har färre batcher och därmed färre uppdateringar per epok? Eller beror det på att varje uppdatering av en batch sträcker sig över mindre avstånd? Eller är svaret en kombination av båda?
För att besvara denna fråga kan vi mäta storleken på varje batchuppdatering.
Median batch update norm for batch size 32: 3.3e-3 Median batch update norm for batch size 256: 1.5e-3
Vi kan se att varje batchuppdatering är mindre när batchstorleken är större. Varför skulle detta vara fallet?
För att förstå detta beteende kan vi skapa ett dummy-scenario där vi har två gradientvektorer a och b, som var och en representerar gradienten för ett träningsexempel. Låt oss fundera på hur den genomsnittliga uppdateringsstorleken för batchstorlek=1 jämför med den för batchstorlek=2.
Om vi använder en batchstorlek på ett, kommer vi att ta ett steg i riktning mot a, sedan b, för att hamna i den punkt som representeras av a+b. (Tekniskt sett skulle gradienten för b beräknas på nytt efter tillämpning av a, men vi struntar i det för tillfället). Detta resulterar i en genomsnittlig satsuppdateringsstorlek på (|a|+|b|)/2 – summan av satsuppdateringsstorlekarna, dividerat med antalet satsuppdateringar.
Och om vi använder en satsstorlek på två, representeras satsuppdateringen i stället av vektorn (a+b)/2 – den röda pilen i figur 12. Således är den genomsnittliga storleken på batchuppdateringen |(a+b)/2| / 1 = |a+b|/2.
Nu ska vi jämföra de två genomsnittliga storlekarna på batchuppdateringen:
Blodtryck 102/50 – vad betyder det?Blodtryck 102/50 på blodtrycksdiagrammetKontrollera ett annat värde?Blodtryck 102/50 på blodtrycksskalanVad du bör veta om ett…