AI kezdőknek · Számítógépes látás · Lecke 08

Előtanított hálók és transfer learning

Egy konvolúciós háló betanítása rengeteg időt és adatot igényel, mégis a legtöbb ilyen háló valójában ugyanazokat az alapvető mintákat tanulja meg élből. Ebben a leckében bemutatjuk, hogyan lehet előtanított hálókat újrahasznosítani, hogy sokkal kevesebb adatból és idő alatt is jó eredményt érjünk el.

Vissza a tananyaghoz


Előtanított alapmodelláltalános, nagy adathalmazon tanult tudásÚj, célzott rétega konkrét feladatra finomhangolva
A transfer learning egy már betanított modellre épít rá.

Miért ne kezdenénk mindig a nulláról?

Amikor egy konvolúciós neurális hálót (CNN) tanítunk, az idő nagy része nem a végső döntés meghozatalára megy el, hanem arra, hogy a háló megtanulja a legalapvetőbb szűrőket. Ezek a legkorábbi rétegek éleket, sarkokat, textúrákat és színátmeneteket ismernek fel, vagyis olyan általános mintákat, amelyek szinte minden képen előfordulnak, függetlenül attól, hogy macskát, autót vagy röntgenfelvételt nézünk éppen.

Innen ered a természetes kérdés. Ha egy háló egyszer már megtanulta ezeket az alapvető mintákat egy nagy, változatos képadathalmazon, miért kezdenénk újra a legelejéről minden egyes új feladatnál? Ezt a gondolatot hívjuk transfer learningnek, vagyis annak a folyamatnak, amikor egy már betanított neurális háló tudását átvisszük egy másik, rokon feladatra. A fogalom más tudományterületeken, például az oktatásban is használatos, ott arra utal, amikor egy területen megszerzett tudást egy másik területen alkalmazunk.


Előtanított modellek mint jellemzőkinyerők

A gyakorlatban a transfer learning úgy indul, hogy fogunk egy már betanított hálót, amelyet egy hatalmas, általános képadathalmazon (jellemzően az ImageNeten) tanítottak. Egy ilyen háló rétegei fokozatosan egyre bonyolultabb jellemzőket ismernek fel. Az alsó rétegek vonalakat és textúrákat, a középső rétegek formákat és mintázatokat, a felsőbb rétegek pedig már komplex, tárgyakhoz köthető mintázatokat, például egy szem vagy egy fül jellegzetes alakját.

Mind a Keras, mind a PyTorch beépített funkciókkal teszi lehetővé, hogy néhány sorban betöltsünk ilyen előtanított súlyokat. A leggyakrabban használt architektúrák a következők.

Ezek a hálók gyakorlatilag kész jellemzőkinyerőként funkcionálnak. Elég a végükre egy egyszerű, saját osztályozó réteget építeni, és a modell máris a mi konkrét feladatunkra specializálódik, anélkül hogy az alsóbb rétegeket újra kellene tanítani.


VGG-16 / VGG-19 egyszerű felépítés szolid pontosság ideális első kísérlethez kezdéshez ResNet sok réteg, nagy pontosság Microsoft Research, 2015 több erőforrást igényel pontosságra MobileNet kis méret, gyors futás mobil és beágyazott eszközre kis pontosságveszteség kevés erőforrásra
A három leggyakoribb előtanított architektúra más és más helyzetben a jó választás.

Jellemzőkinyerés vagy finomhangolás

A transfer learningnek két fő stratégiája van, és a választás azon múlik, mennyire hasonlít a saját adatunk az eredeti tanítóadathoz, illetve mennyi saját adat áll rendelkezésre.

Az első megközelítésnél, amit jellemzőkinyerésnek hívunk, az előtanított háló összes rétegét lefagyasztjuk, vagyis a súlyaikat nem engedjük változni. Csak az újonnan hozzáadott, végső osztályozó réteget tanítjuk be a saját adatunkon. Ez gyors, kevés adatot igényel, és jól működik, ha a saját feladatunk hasonlít az eredeti tanítóadathoz.

A második megközelítés a finomhangolás, angolul fine-tuning. Ilyenkor nemcsak az új osztályozó réteget tanítjuk, hanem az előtanított háló felsőbb rétegeit is engedjük kismértékben módosulni, jellemzően nagyon alacsony tanulási rátával. Ez pontosabb eredményt adhat, de több adatot és számítási kapacitást igényel, és nagyobb az esélye a túlillesztésnek, ha a saját adathalmaz kicsi.

A gyakorlatban gyakran a kettő kombinációját alkalmazzák. Először lefagyasztott réteggel tanítják be az osztályozót, majd egy második körben óvatosan finomhangolják a felsőbb rétegeket is, hogy a modell jobban illeszkedjen a konkrét feladathoz.


Jellemzőkinyerés

  • Az előtanított rétegek mind lefagyasztva
  • Csak az új osztályozó réteg tanul
  • Gyors, kevés adat is elég
  • Akkor jó, ha a feladat hasonlít az eredeti tanítóadathoz

Finomhangolás

  • A felsőbb rétegek is módosulhatnak, alacsony tanulási rátával
  • Pontosabb eredményt adhat
  • Több adatot és számítási kapacitást igényel
  • Kis adathalmazon nagyobb a túlillesztés esélye

  1. Előtanított háló betöltéseNéhány sor kód Kerasban vagy PyTorchban, a súlyok az ImageNeten tanultak.
  2. Rétegek lefagyasztásaAz általános vizuális tudás változatlan marad.
  3. Új osztályozó betanításaCsak a végére épített saját réteg tanul a kevés saját adaton.
  4. Óvatos finomhangolásMásodik körben a felsőbb rétegek is kismértékben igazodnak a feladathoz.

Mikor éri meg és milyen adaton

A klasszikus gyakorló feladat egy macskákat és kutyákat tartalmazó képhalmaz, amely jól szemlélteti, mennyire hasonlít a valós életbeli képosztályozási feladatokra. De a transfer learning haszna nem korlátozódik ilyen egyszerű példákra. Orvosi képalkotástól az ipari minőségellenőrzésig, mezőgazdasági drónfelvételek elemzésétől az e-kereskedelmi termékkategorizálásig sok olyan terület van, ahol a rendelkezésre álló saját adat szűkös, viszont egy előtanított háló általános vizuális tudása kiváló kiindulópontot ad.

Fontos ugyanakkor tudni, hogy a transfer learning nem csoda. Minél távolabb esik a saját feladatunk az eredeti tanítóadattól, annál kevésbé hasznos az átvitt tudás, és annál inkább finomhangolásra, esetleg részleges újratanításra van szükség. Egy teljesen új típusú kép, amely vizuálisan alig hasonlít hétköznapi fotókra, jóval kisebb előnyt hoz, mint egy hasonló, de új állatfajta felismerése.


Fagyasztott rétegekaz általános tudás megmarad, nem változikFinomhangolt rétegeka konkrét feladatra tanulnak tovább
Transfer learningnél csak a háló egy részét tanítjuk tovább.

Mit "lát" valójában a háló

Egy izgalmas kérdés, hogy egy előtanított háló belsejében valójában milyen mintázatok rejtőznek. Kutatók gradiens alapú optimalizációval próbálták megkeresni, milyen kép győzné meg a hálót arról, hogy egy adott kategóriát, például macskát lát. Egyszerű véletlen zajból indulva, apró lépésekkel módosítva a képet, a háló egyre magabiztosabban kezdi macskának minősíteni azt, ami elsőre kaotikus, szinte véletlenszerű mintázatnak tűnik. Egy simasági feltétel hozzáadásával a kép vizuálisan is felismerhetőbbé válik, és megjelennek benne a hálónak a kategóriáról alkotott, absztrakt "ideál" mintázatai.

Ugyanez a technika használható úgynevezett adverzális támadások bemutatására is. Ha egy kutyaként helyesen felismert kép pixeleit apró, szemmel alig látható lépésekben módosítjuk, előfordulhat, hogy a háló hirtelen macskaként fogja besorolni ugyanazt a képet, miközben az emberi szem szinte semmi változást nem érzékel. Ez fontos figyelmeztetés arra, hogy egy jól teljesítő modell megbízhatósága nem magától értetődő, és a modell valódi döntési logikájának megértése éppen ilyen vizualizációs technikákkal lehetséges.


Eredeti kép a háló szerint kutya + Apró zaj szemmel alig látható A háló szerint macska az ember változást sem lát
Az adverzális támadás lényege, hogy alig látható zaj is átbillentheti a háló döntését.

Összegzés

A transfer learning segítségével néhány óra vagy akár perc alatt összeállítható egy pontos, egyedi képosztályozó, ahol korábban napokig tartó tanítási folyamatra és hatalmas adathalmazra lett volna szükség. A módszer lényege, hogy egy nagy, általános adathalmazon már megtanult vizuális tudást hasznosítunk újra, és csak a feladatra jellemző, felső rétegeket kell testre szabni. Minél kifinomultabb feladatot oldunk meg, annál nagyobb számítási kapacitásra van szükség, ezért a gyakorlatban gyakran érdemes könnyebb architektúrákkal és okosabb tanítási trükkökkel is kísérletezni.


Gyakorlati kód

Aki szeretné saját maga is kipróbálni a jellemzőkinyerést és a finomhangolást PyTorchban, a Microsoft eredeti Jupyter notebookjában lépésről lépésre végigkövetheti a folyamatot. Megnyitás a GitHubon.


← Előző lecke Következő lecke →

Workshop

AI Transformation Day

Egésznapos, vezetőknek szóló program. Feltérképezzük, hol tart a szervezet, mi az első reális lépés, és milyen belső feltételek szükségesek a sikerhez. A nap végén konkrét, prioritizált cselekvési lista.

Érdekel a program →