Hogyan válasszuk ki a legjobb tanulási arányt a gépi tanulási projekthez

A gyakori probléma, amellyel mindannyian szembesülünk, amikor mély tanulási projekteken dolgozunk, a tanulási arány és az optimalizáló (a hiperparaméterek) kiválasztása. Ha olyan vagy, mint én, akkor találja ki magát, hogy kitalálja az optimalizálót és a tanulási sebességet, majd ellenőrizze, hogy működnek-e (és nem vagyunk egyedül).

Az optimalizáló és a tanulási sebesség választásának hatásának jobb megértése érdekében ugyanezt a modellt 500 alkalommal képeztem ki. Az eredmények azt mutatják, hogy a megfelelő hiperparaméterek döntő fontosságúak az edzés sikere szempontjából, mégis nehéz megtalálni őket.

Ebben a cikkben megvitatom a probléma megoldásait az optimális hiperparaméterek kiválasztásának automatizált módszerekkel.

Kísérleti elrendezés

Az alap konvolúciós ideghálózatot a TensorFlow oktató sorozatából képeztem ki, amely megtanulja felismerni az MNIST számjegyeit. Ez egy meglehetősen kicsi hálózat, két konvolúciós és két sűrű réteggel, összesen nagyjából 3400 tömeggel kell edzeni.Minden edzéshez ugyanazt a véletlenszerű magot használják.

Meg kell jegyezni, hogy az alábbi eredmények egy adott modellre és adatkészletre vonatkoznak. A többi modell és adatkészlet ideális hiperparaméterei eltérnek.

(Ha szeretne GPU-t felajánlani a kísérlet nagyobb verziójának futtatásához a CIFAR-10-en, vegye fel a kapcsolatot.)

Melyik tanulási arány működik a legjobban?

Az első dolog, amit megvizsgálunk, hogy a tanulási ráta hogyan befolyásolja a modellképzést. Minden egyes futtatáskor ugyanazt a modellt a semmiből oktatják, csak az optimalizálót és a tanulási sebességet változtatva.

A modellt 6 különböző optimalizálóval képezték ki: Gradient Descent, Adam, Adagrad, Adadelta, RMS Prop és Momentum. Minden optimalizáló esetében 48 különböző tanulási sebességgel, 0,000001 és 100 között, logaritmikus időközönként képezték ki.

Minden menetben a hálózat addig képzett, amíg el nem éri a vonat legalább 97% -os pontosságát. A megengedett maximális idő 120 másodperc volt. A kísérleteket egy Nvidia Tesla K80-on futtattuk, a FloydHub házigazdája. A forráskód letölthető.

Itt van a képzési idő a választott tanulási arány és optimalizáló számára:

A fenti grafikon érdekes. Láthatjuk, hogy:

  • Minden optimalizáló esetében a tanulási arány többsége nem tudja betanítani a modellt.
  • Minden optimalizálónak van egy völgy alakja: a túl alacsony tanulási arány soha nem halad, a túl magas tanulási arány instabilitást okoz, és soha nem konvergál. Közöttük van egy „csak megfelelő” tanulási arány, amely sikeresen edz.
  • Nincs olyan optimalizálók számára megfelelő tanulási arány.
  • A tanulási arány nagyságrenddel befolyásolhatja a képzési időt.

A fentiek összefoglalásához elengedhetetlen, hogy a megfelelő tanulási arányt válassza. Ellenkező esetben a hálózat vagy nem fog edzeni, vagy sokkal hosszabb ideig tart a konvergálás.

Annak szemléltetésére, hogy az egyes optimalizálók miben különböznek az optimális tanulási aránytól, itt olvasható a leggyorsabb és leglassabb modell, amely minden egyes optimalizálóban az egyes tanulási arányokhoz alkalmazható. Figyelje meg, hogy a maximális idő 120 másodperc (például a hálózat nem tudta edzeni) az egész grafikonon - nincs egyetlen tanulási sebesség, amely minden optimalizálónál működik:

Nézze meg a tanulási arányok széles skáláját (0,001 és 30 között), amelyek a fenti grafikon legalább egy optimalizálójával sikereket érnek el.

Melyik optimalizáló működik a legjobban?

Most, hogy meghatároztuk az egyes optimalizálók számára a legjobb tanulási arányokat, hasonlítsuk össze az egyes optimalizáló edzések teljesítményét az előző szakaszban talált legjobb tanulási aránnyal.

Itt található az egyes optimalizálók ellenőrzési pontossága az idő múlásával. Ez megfigyelheti, hogy milyen gyorsan, pontosan és stabilan teljesítenek:

Néhány megfigyelés:

  • Minden optimalizálók eltekintve RMSProp (lásd az utolsó pont) , kezelése közeledni ésszerű időben.
  • Adam a leggyorsabban tanul.
  • Adam stabilabb, mint a többi optimalizáló, és nem szenved jelentős pontossági csökkenést.
  • Az RMSProp-ot a TensorFlow alapértelmezett argumentumaival futtattuk (bomlási sebesség 0,9, epsilon 1e-10, momentum 0,0), és előfordulhat, hogy ezek nem működnek jól ehhez a feladathoz. Ez jó eset az automatizált hiperparaméteres kereséshez (erről az utolsó szakaszban olvashat bővebben).

Ádámnak az előző kísérlet során a sikeres tanulási aránya is viszonylag széles volt. Összességében Adam a hat optimalizáló közül a legjobb választás ehhez a modellhez és adatkészlethez.

Hogyan befolyásolja a modell mérete az edzés idejét?

Most megnézhetjük, hogy a modell mérete milyen hatással van edzésére.

A modell méretét lineáris tényezővel változtatjuk. Ez a tényező lineárisan skálázza a konvolúciós szűrők számát és az első sűrű réteg szélességét, ezáltal megközelítőleg lineárisan méretezzük a modell összes súlyának számát.

Két szempontot vizsgálunk meg:

  1. Hogyan változik az edzésidő a modell növekedésével, fix optimalizáló és edzési ráta érdekében?
  2. Melyik tanulási arány edzi a leggyorsabban a modell egyes méreteit, fix optimalizálóhoz?

Hogyan változik az edzés ideje a modell növekedésével?

Az alábbiakban bemutatjuk azt az időt, amely a 96% -os képzési pontosság eléréséhez szükséges, a modell méretének 1x-ről 10x-re növelésével. A korábbi hiperparaméterek egyikét használtuk:

  • Az edzés ideje lineárisan nő a modell méretével.
  • Ugyanaz a tanulási arány sikeresen képzi a hálózatot az összes modellméretben.

(Megjegyzés: A következő eredményekre csak az itt tesztelt adatkészletre és modellekre lehet támaszkodni, de érdemes lehet tesztelni a kísérleteit.)

Ez szép eredmény. A hiperparaméterek megválasztását nem érvénytelenítettük a modell lineáris méretezésével. Ez arra utalhat, hogy hiperparaméteres keresés hajtható végre a hálózat kicsinyített verzióján, a számítási idő megtakarítása érdekében.

Ez azt is mutatja, hogy amint a hálózat nagyobb lesz, a modell konvergálásakor semmilyen O (n²) munkát nem igényel (az idő lineáris növekedése az egyes súlyzók edzésénél felmerülő többletműveletekkel magyarázható).

Ez az eredmény még megnyugtatóbb, mivel a mély tanulási keretrendszerünket (itt a TensorFlow) hatékonyan skálázza.

Melyik tanulási arány teljesíti a legjobban a modell különböző méreteit?

Futtassuk ugyanazt a kísérletet több tanulási arány mellett, és nézzük meg, hogyan reagál a képzési idő a modell méretére:

  • A tanulási arány 0,0005, 0,001, 0,00146 teljesített a legjobban - ezek is az első kísérletben teljesítettek a legjobban. Itt ugyanazt a „sweet spot” bandát látjuk, mint az első kísérletben.
  • Az egyes tanulási arányok edzésének ideje lineárisan növekszik a modell méretével összhangban.
  • A tanulási sebesség teljesítménye nem függött a modell méretétől. Ugyanazok az arányok, amelyek az 1x méretnél a legjobban teljesítettek, a 10x méretnél a legjobban teljesítettek.
  • 0,001 felett a tanulási arány növelése megnövelte az edzéshez szükséges időt, és növelte a képzési idő szórását is (összehasonlítva a modell méretének lineáris függvényével).
  • A képzési idő nagyjából c + kn- ként modellezhető n súlyú, fix c költségű és k = f (tanulási sebesség) állandó állandó modell esetén .

Összefoglalva, a legjobban teljesítő tanulási arány az 1x mérethez a 10x méretű legjobb tanulási arány is volt.

A tanulási sebesség megválasztásának automatizálása

Ahogy a korábbi eredmények is mutatják, a modellképzés szempontjából döntő fontosságú az optimalizáló és a tanulási arány megfelelő megválasztása.

Ezeknek a hiperparamétereknek a kézi kiválasztása időigényes és hibára hajlamos. A modell változásával a hiperparaméterek korábbi választása már nem biztos, hogy ideális. Nem célszerű az új kereséseket folyamatosan kézzel végrehajtani.

A hiperparaméterek automatikus kiválasztásának számos módja van. Néhány különféle megközelítést vázolok fel itt.

Rács keresés

A rácsos keresést hajtottuk végre az első kísérletben - minden hiperparaméterhez hozzon létre egy listát a lehetséges értékekről. Ezután a lehetséges hiperparaméter-értékek minden kombinációja esetében képezze a hálózatot és mérje meg annak teljesítményét. A legjobb hiperparaméterek azok, amelyek a legjobb megfigyelt teljesítményt nyújtják.

A rácskeresés nagyon könnyen megvalósítható és érthető. Azt is könnyű ellenőrizni, hogy a paraméterkeresés kellően széles szakaszában keresett-e. Ezen okok miatt nagyon népszerű a kutatásban.

Népesség-alapú képzés

A populáció alapú képzés (DeepMind) egy elegáns megvalósítás, amely genetikai algoritmust használ a hiperparaméterek megválasztásához.

A PBT-ben modellek sokasága jön létre. Mindannyian folyamatosan párhuzamosan képzik őket. Amikor a populáció bármely tagjának elég hosszú ideje van edzeni ahhoz, hogy javulást mutasson, annak validációs pontosságát összehasonlítják a populáció többi részével. Ha a teljesítménye a legalacsonyabb 20% -ban van, akkor lemásolja és mutálja az egyik legjobb 20% -ban szereplő hiperparamétereit és változóit.

Ily módon a legsikeresebb hiperparaméterek sok enyhén mutált variánst szülnek, és valószínűleg a legjobb hiperparamétereket fedezik fel.

Következő lépések

Köszönjük, hogy elolvasta ezt a tanulmányt a tanulási arányról. Ezeket a kísérleteket saját kíváncsiságomból és csalódottságomból kezdtem a hiperparaméterek fordítása körül, és remélem, hogy ugyanúgy élvezik az eredményeket és a következtetéseket, mint nekem.

Ha van egy adott téma vagy kiterjesztés, amelyet érdekel, akkor szóljon. Továbbá, ha érdekel némi GPU-adomány felajánlása a kísérlet sokkal nagyobb verziójának futtatásához, szívesen beszélnék.

Ezek az írások az AI építészeti témák egy éves feltárásának részei. Kövesse ezt a kiadványt (és adjon némi tapsot a cikknek!), Hogy frissítéseket kapjon, amikor a következő darabok megjelennek.