A fenti első ábrán látható, hogy a nagyobb kötegméretek valóban kevesebb távolságot tesznek meg epochánként. A 32 tételes tréning epocha távolsága 0,15 és 0,4 között változik, míg a 256 tételes tréning esetében 0,02-0,04 körül van. Sőt, ahogy a második ábrán is láthatjuk, az epochális távolságok aránya az idő múlásával növekszik!
De miért tesznek meg a nagy kötegek kisebb távolságot epochánként? Talán azért, mert kevesebb kötegünk van, és ezért kevesebb frissítés történik epochánként? Vagy azért, mert minden egyes kötegfrissítés kevesebb távolságot tesz meg? Vagy a válasz a kettő kombinációja?
A kérdés megválaszolásához mérjük meg az egyes kötegfrissítések méretét.
Median batch update norm for batch size 32: 3.3e-3
Median batch update norm for batch size 256: 1.5e-3
Láthatjuk, hogy minden kötegfrissítés kisebb, ha a kötegméret nagyobb. Miért van ez így?
Azért, hogy megértsük ezt a viselkedést, állítsunk fel egy dummy forgatókönyvet, ahol két a és b gradiensvektorunk van, amelyek mindegyike egy-egy képzési példa gradiensét képviseli. Gondoljuk végig, hogy a batch size=1 átlagos kötegfrissítési mérete hogyan viszonyul a batch size=2-hez.
Ha egy kötegméretet használunk, akkor egy lépést teszünk az a, majd a b irányába, és végül az a+b által reprezentált pontban kötünk ki. (Technikailag a b gradiensét az a alkalmazása után újra kiszámítanánk, de ezt most hagyjuk figyelmen kívül). Ez (|a|+|b|)/2 átlagos kötegfrissítési méretet eredményez – a kötegfrissítési méretek összegét osztva a kötegfrissítések számával.
Ha azonban két kötegméretet használunk, a kötegfrissítést ehelyett az (a+b)/2 vektor képviseli – a 12. ábra piros nyila. Így az átlagos kötegfrissítési méret |(a+b)/2| / 1 = |a+b|/2.
Most hasonlítsuk össze a két átlagos kötegfrissítési méretet:
Az utolsó sorban a háromszögegyenlőtlenség segítségével megmutattuk, hogy az 1. tételnagyság átlagos tételfrissítési mérete mindig nagyobb vagy egyenlő, mint a 2. tételnagyságé.
Másképpen fogalmazva: ahhoz, hogy az 1. és a 2. tételnagyság átlagos tételmérete egyenlő legyen, az a és b vektoroknak azonos irányba kell mutatniuk, hiszen ekkor |a| + |b| = |a+b|. Ezt az érvet kiterjeszthetjük n vektorra is – csak ha mind az n vektor ugyanabba az irányba mutat, akkor az átlagos tételfrissítési méretek a batch size=1 és a batch size=n esetén azonosak. Ez azonban szinte soha nem fordul elő, mivel a gradiens vektorok valószínűleg nem pontosan ugyanabba az irányba mutatnak.
Ha visszatérünk a 16. ábrán látható minitételfrissítési egyenlethez, bizonyos értelemben azt mondjuk, hogy a tételméret |B_k| növelésével a gradiensek összegének nagysága viszonylag kevésbé gyorsan növekszik. Ez annak köszönhető, hogy a gradiensvektorok különböző irányokba mutatnak, és így a tételméret (azaz az összegzendő gradiensvektorok száma) megduplázása nem duplázza meg a gradiensvektorok eredő összegének nagyságát. Ugyanakkor egy kétszer akkora nevezővel |B_k| osztunk, ami összességében kisebb frissítési lépést eredményez.
Ez megmagyarázhatja, hogy a nagyobb tételméretek esetén a kötegfrissítések általában miért kisebbek – a gradiensvektorok összege nagyobb lesz, de nem tudja teljesen ellensúlyozni a nagyobb nevezőt|B_k|.
2. hipotézis: A kis tételes képzés laposabb minimalizálókat talál
Mérjük most meg mindkét minimalizátor élességét, és értékeljük ki azt az állítást, hogy a kis tételes képzés laposabb minimalizálókat talál. (Megjegyezzük, hogy ez a második hipotézis az első hipotézissel együtt létezhet – nem zárják ki egymást). Ehhez két módszert kölcsönzünk Keskar et al.
Az elsőben a kis tételes minimalizáló (32-es tételméret) és a nagy tételes minimalizáló (256-os tételméret) közötti vonal mentén ábrázoljuk a képzési és a validálási veszteséget. Ezt a vonalat a következő egyenlet írja le:
ból, ahol x_l* a nagy tételminimalizáló és x_s* a kis tételminimalizáló, alfa pedig egy -1 és 2 közötti együttható.
Amint az ábrán látható, a kis tételes minimalizáló (alpha=0) sokkal laposabb, mint a nagy tételes minimalizáló (alpha=1), amely sokkal élesebben változik.
Megjegyezzük, hogy ez egy meglehetősen leegyszerűsített módja az élesség mérésének, mivel csak egy irányt vesz figyelembe. Ezért Keskar és társai egy olyan élesség-metrikát javasolnak, amely azt méri, hogy a veszteségfüggvény mennyire változik a minimalizáló körüli szomszédságban. Először is a következőképpen definiáljuk a szomszédságot:
ból, ahol az epsilon a szomszédság méretét meghatározó paraméter, x pedig a minimalizáló (a súlyok).
Ezután az élesség metrikát úgy definiáljuk, mint a maximális veszteséget ebben a minimalizátor körüli szomszédságban:
ból, ahol f a veszteségfüggvény, a bemenetek pedig a súlyok.
A fenti definíciókkal számítsuk ki a minimalizátorok élességét különböző tételméreteknél, 1e-3 epsilon értékkel:
Ez azt mutatja, hogy a nagy tételes minimalizátorok valóban élesebbek, ahogy azt az interpolációs diagramon is láttuk.
Végül próbáljuk meg a minimalizálók ábrázolását szűrőnormalizált veszteség ábrázolásával, ahogy azt Li et al. megfogalmazta. Ez a fajta ábrázolás két véletlenszerű irányt választ, amelyek mérete megegyezik a modellsúlyokkal, majd minden egyes konvolúciós szűrőt (vagy neuront, FC rétegek esetén) úgy normalizál, hogy a modellsúlyok megfelelő szűrőjével megegyező normával rendelkezzen. Ez biztosítja, hogy a minimalizátor élességét nem befolyásolja a súlyok nagysága. Ezután a veszteséget e két irány mentén ábrázolja, a grafikon középpontja pedig az a minimalizátor, amelyet jellemezni szeretnénk.