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. Ez a lecke a Microsoft "AI kezdőknek" (AI For Beginners) tananyagának magyar adaptációja, és bemutatja, 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


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.


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.


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.


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.


Ö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.

Forrás

Ez a lecke a Microsoft nyílt forráskódú, MIT licenc alatt elérhető "AI For Beginners" tananyagának magyar adaptációja. Eredeti angol lecke. GitHub. Felhasznált magyar gépi fordítás. GitHub.


← 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 →