Mi a kötegméret a neurális hálózatban?

Az ideghálózatra Python Keras package -t használok. Ez a link . A batch_size megegyezik a tesztminták számával? A Wikipédiából van ez információ:

Más esetekben azonban az összeggradiens értékelése drága értékelést igényelhet az összes summand függvény gradiensének értékeléséről. Ha a képzési halmaz óriási és nem léteznek egyszerű képletek, a színátmenetek összegének értékelése nagyon költségessé válik, mert a gradiens értékeléséhez meg kell adni az összes summand függvény gradiensét. A számítási költségek megtakarításához minden iterációnál a sztochasztikus gradiens süllyedés minden lépésben a summand függvények egy részhalmazát veszi fel. Ez nagyon hatékony nagyszabású gépi tanulási problémák esetén.

A fenti információk leírják a tesztadatokat? Ez megegyezik a batch_size kerákkal (minták száma gradiens frissítéskor)?

Megjegyzések

Válasz

A kötegméret meghatározza a hálózaton keresztül terjesztendő minták számát.

Például , tegyük fel, hogy van 1050 képzési mintája, és egy batch_size értéket szeretne beállítani 100-nak. Az algoritmus az első 100 mintát (az 1.-től a 100.-ig) a képzési adatkészletből veszi és kiképzi a hálózatot. Ezután a második 100 mintát veszi (a 101.-től a 200-ig), és újra kiképezi a hálózatot. Ezt az eljárást addig folytathatjuk, amíg az összes mintát át nem terjesztjük a hálózaton. roblem történhet az utolsó mintacsomaggal. Példánkban 1050-et használtunk, amely nem osztható el 100-zal maradék nélkül. A legegyszerűbb megoldás csak az utolsó 50 minta megszerzése és a hálózat kiképzése.

A < az összes minta száma:

  • Kevesebb memóriát igényel. Mivel kevesebb mintát használva képezed a hálózatot, az általános képzési eljárás kevesebb memóriát igényel. “különösen fontosak, ha nem tudja a teljes adatkészletet beilleszteni a gép memóriájába.

  • A hálózatok általában gyorsabban edzenek a mini kötegekkel. Ez azért van, mert frissítjük az egyes terjedések utáni súlyokat. Példánkban 11 adagot szaporítottunk (10-ben 100 minta és 1-ben 50 minta volt), és mindegyik után frissítettük hálózatunk paramétereit. Ha az összes mintát felhasználnánk a terjesztés során, akkor csak 1 frissítést végeznénk. a hálózat paraméteréhez.

Az összes minta < kötegméret használatának hátrányai:

  • Minél kisebb a tétel, annál kevésbé lesz pontos a gradiens becslése. Az alábbi ábrán láthatja, hogy a mini-kötegelt gradiens iránya (zöld szín) sokkal jobban ingadozik, mint a teljes kötegelt gradiens iránya (kék szín).

Színátmenet irányai a különböző kötegelt beállításokhoz

A sztochasztikus csak egy mini köteg batch_size 1-gyel egyenlő. Ebben az esetben a színátmenet még gyakrabban változtatja az irányát, mint egy mini-kötegelt gradiens.

Megjegyzések

  • Nem, nem csináltam ‘ t. Ez a neurális hálózatokban népszerű technika, és ezt a terminológiát különböző könyvtárakban, könyvekben és cikkekben láthatja. Szeretne minden korszakban ellenőrizni a tesztadatok hibáját, vagy csak a modellt ellenőrizni edzés után?
  • A hálózat is gyorsabban konvergál, mivel a frissítések száma jelentősen nagyobb. A mini tételméret beállítása egyfajta művészet, túl kicsi, és megkockáztatja, hogy a tanulás túl sztochasztikus, gyorsabb lesz, de megbízhatatlan modellekké konvertálódik, túl nagyok, és nem férnek bele a memóriába, és még mindig életkorokat öltenek. > Ez azt jelenti, hogy a batch_size=<size of dataset> online tanulásnak minősül, vagy inkább batch_size=1? És mindez igaz marad az RNN-ekre is? Ha a batch_size elemet RNN-ekben használja, a köteg egyfajta virtuális idő lépcső nak számít, mivel a köteg összes példánya úgy lesz kiszámítva, mintha egyszerre történtek volna ?
  • Általában amikor az emberek azt mondják, hogy online tanulás, akkor batch_size=1. Az online tanulás ötlete az, hogy frissítse modelljét, amint meglátja a példát. Nagyobb kötegmérettel azt jelenti, hogy először a több mintát nézegeti, mielőtt frissítené. Az RNN-ben a köteg méretének különböző jelentése lehet.Általában ‘ gyakori, hogy az edzéssorozatot rögzített méretű ablakokra (például 10 szóra) osztja fel. Ebben az esetben ezeknek az ablakoknak a 100 felvétele a képzés során azt jelenti, hogy batch_size=100 van.
  • @Oleg Melnikov, ha az utolsó tétel jelentősen kisebb méretű ( ‘ s szerint 50 helyett 1 lenne), akkor a gradiensre vonatkozó becslés kevésbé pontos, és kissé elcsavarhatja a súlyokat. A fenti képen képzelje el, hogy 10 frissítést hajt végre egy 100-as (zöld vonalak) és egy az 1-es (piros vonal) köteggel. Ami azt jelenti, hogy a következő korszakban néhány első iteráció megkezdheti a probléma megoldását az előző korszak utolsó mini batch 1. frissítésével.

Válasz

Az idegi hálózati terminológiában:

  • egy korszak = egy előre és egy vissza az összes a képzési példa
  • kötegméret = képzési példák száma egy előre / hátra menetben. Minél nagyobb a kötegméret, annál több memóriaterületre lesz szüksége.
  • iterációk száma = passzok száma, minden egyes lépés a [kötegelt méret] példák számának felhasználásával. Az egyértelműség kedvéért egy lépés = egy előre és egy visszafelé haladás (az előre és hátra nem számítunk két különböző menetnek).

Példa: ha 1000 képzési példád van, és a kötegméreted 500, akkor az 1 korszak teljesítéséhez 2 ismétlés szükséges.

FYI: Kompromisszumos kötegméret és az ideghálózat kiképzéséhez szükséges iterációk száma

Megjegyzések

  • De mi a különbség a használja a [kötegelt méret] példaszámokat, és képezze ki a hálózatot az egyes példákra, és folytassa a következő [kötegelt méret] példákkal. Mivel átad egy példát a hálózaton, alkalmazza az SGD-t, és a következő példát veszi, így nem lesz különbség, ha a tétel mérete 10 vagy 1000 vagy 100000. Miután [batc h méret] példák száma elkészül, a következő tétel következő példája következik. Csak akkor van különbség, ha a [kötegméret] példaszámai átmennek a hálózat [iterációk száma] szorzatán, majd folytatják a következő [kötegméret] példákkal.
  • Fontos különbség, hogy a tanulási lépés (egy lépés) minden tételhez egyszer kerül alkalmazásra, miközben az összes köteget át kell tekerni egy korszak elkészítéséhez. Tehát a különbség algoritmikus nemcsak a memóriában: a nagyobb kötegek azt jelentik, hogy a gradienst több mintára átlagoljuk.
  • Mi a ‘ s a korszak és az iterációk közötti különbség ?
  • @Goldname 1 epoch tartalmazza az összes képzési példát, míg az 1 iteráció csak [batch size] számú képzési példát tartalmaz.
  • Tehát: Ha az epochák száma állandó, és mi ‘ ábrázolja a konvergencia diagramot úgy, hogy minden pont az eredményt képviseli az egyes korszakok után, arra számíthatunk, hogy a kapott diagram ‘ simább lesz ‘ (és az edzés lassabb legyen), ahogy csökkenünk batch_size?

Válasz

Amikor CPU-val vagy GPU-val megold egy optimalizálási problémát, akkor iteratív módon algoritmust alkalmaz néhány bemeneti adatra. Ezen iterációk mindegyikében rendszerint frissít egy problémamutatót, néhány számítást végezve az adatokon. Most, amikor nagy az adatmérete, jelentős időre lehet szükség az összes iteráció elvégzéséhez, és sok erőforrást igényelhet. Ezért időnként úgy dönt, hogy ezeket az iteratív számításokat az Adatok egy részén alkalmazza, hogy időt és számítási erőforrásokat takarítson meg. Ez a rész a batch_size, és a folyamatot (a Neural Network Lingo-ban) kötegelt adatfeldolgozásnak hívják. Amikor a számításokat minden adatra alkalmazza, akkor online adatfeldolgozást végez. Gondolom, a terminológia a 60-as évekből származik, és még azelőtt is. Emlékszik valaki a .bat DOS fájlokra? De természetesen a megtestesült koncepció a felhasznált adatok szálát vagy részét jelenti.

Válasz

A Keras kötegmérettel kapcsolatos dokumentációja a fit függvény a modellek (funkcionális API) oldalon

batch_size: Egész vagy Nincs. A minták száma gradiens frissítésenként. Ha nincs megadva, a batch_size alapértelmezés szerint 32.

Ha van egy kis adatkészlete, akkor a legjobb, ha a köteg méretét megegyezik a képzési adatok. Először próbáljon meg egy kis adaggal, majd növelje az időt. Mint itdxer említette, kompromisszum van a pontosság és a sebesség között.

Válasz

A kötegelt méret egy hiperparaméter, amely meghatározza a feldolgozandó minták számát a belső modellparaméterek frissítése előtt.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük