Kezdőoldal » Tudományok » Alkalmazott tudományok » Egy előzetesen betanított...

Egy előzetesen betanított neurális hálót tudok tovább tanítani úgy hogy az eddigi tudása megmarad? (részletek! )

Figyelt kérdés
Ocr-re szeretnék csinálni egy neurális hálós megoldást úgy, hogy előre betanítok neki karaktereket. Kérdésem: futásidőben meg tudok neki tanítani néhány új karaktert úgy, hogy a régieket is felismerje és ne kelljen újra többször végigfuttatnom a teljes train adathalmazon? Mert az ugye igencsak hosszadalmas lenne és csak plusz néhány mintát tettem bele a trainhalmazba. Nekem az kéne, hogy azonnal képes legyen felismerni az új karaktert is de a régieket is, amikkel alapból trainelve volt.

2017. máj. 17. 00:14
 1/3 anonim ***** válasza:
Lehet romlás a régiekre nézve. Azt tanácsolom, hogy az új trainbe tedd be az új adatokat, és a régiből gondosan kiválasztott elemeket a régiek számára.
2017. máj. 17. 12:04
Hasznos számodra ez a válasz?
 2/3 A kérdező kommentje:
de akkor azt meg tudnám tenni, hogy például egy dokumentumon kiválasztok egy alakzatot, mint új felismerendő karakter és azt onnantól kezdve, hogy az ilymódon definiált karaktert (ha pontosan ilyen karaktert adok be neki) néhány másodpercen belül már képes lesz a továbbiakban felismerni? tehát 3-4 másodperc alatt mondjuk minden szükséges súlybeállítást elvégez és nincs szükség valami több óráig vagy hosszas percekig tartó trainelésre, hanem azonnal lehet folytatni a szövegfelismerést
2017. máj. 17. 21:23
 3/3 kori80 ***** válasza:
100%

Ha hajlandó vagy kissé mélyebben belemerülni a témában, akkor ajánlom figyelmedbe az ún. Elastic Weight Consolidation technológiát. Annyira friss az ötlet, hogy az ezt részletező dokumentumokat most januárban tették közzé.


[link]

[link]


A lényege, hogy miután betanítottuk a neurális hálót, minden súly esetén megvizsgáljuk, hogy az mennyi információt tartalmaz. A további tanításnál pedig azokat a súlyokat/paramétereket, amik sok információt tárolnak erősebben rögzítjük, nem hagyjuk, hogy sokat változhassanak. Ezzel tovább tudnád tanítani úgy, hogy zömmel megtartja az eddigi tudását.


Sikeresen tanítottak így meg egyszerre több feladatot is neurális hálóknak. Esetedben elég lenne egyszer kiszámítani az információtartalmat (súlyok Fisher információs mátrixának a főátlóját), és az alapján rögzíteni a súlyokat a további tanulás során.


Levezetés nélkül így lehetne megoldani:

Ha van egy korábban készre betanított súlyod: W0_i, a hozzá tartozó információ F_i és a jelenlegi súly (épp most tanított súly) W_i, akkor a súlyok gradienséhez kéne egy újabb tagot adni:

deltaW_i += -learningRate ( lambda * F_i(W_i - W0_i) )


lambda egy hyperparaméter, kb olyan mint az L2-regularizáció értéke, minél nagyobb annál jobban kötődik a régi formájához a neurális háló.

Ha van lehetőséged ilyen mélységben változtatni a neurális hálód update szabályán, akkor érdemes lenne kipróbálnod.

2017. júl. 14. 19:46
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!