Základy AI
Co je to Transfer Learning?

Co je to Transfer Learning?
Při praktikování strojového učení může trénování modelu zabrat hodně času. Vytvoření modelové architektury od začátku, trénování modelu a následné úpravy modelu je obrovské množství času a úsilí. Mnohem efektivnějším způsobem, jak trénovat model strojového učení, je použít architekturu, která již byla definována, potentially s váhami, které již byly vypočteny. To je hlavní myšlenka za transfer learning, použití modelu, který již byl použit a repurposing jej pro novou úlohu.
Než se ponoříme do různých způsobů, jakými lze transfer learning použít, pojďme chvíli pochopit, proč je transfer learning tak silnou a užitečnou technikou.
Řešení hlubokého učení
Když se snažíte řešit hlubokou učení úlohu, jako je například stavba image klasifikátoru, musíte vytvořit modelovou architekturu a poté trénovat model na vašich datech. Trénování modelu klasifikátoru zahrnuje úpravu váhy sítě, proces, který může trvat hodiny nebo dokonce dny v závislosti na složitosti modelu a datasetu. Doba trénování se bude měnit v souladu se velikostí datasetu a složitostí modelové architektury.
<pPokud model nedosáhne požadované přesnosti pro úlohu, pravděpodobně bude nutné provést úpravy modelu a poté model znovu trénovat. To znamená další hodiny trénování, dokud nebude nalezen optimální architektura, délka trénování a rozdělení datasetu. Když uvážíme, kolik proměnných musí být sladěno pro to, aby klasifikátor byl užitečný, je jasné, proč inženýři strojového učení vždy hledají snadnější a efektivnější způsoby, jak trénovat a implementovat modely. Z tohoto důvodu byla vytvořena technika transfer learning.
Po navržení a testování modelu, pokud model prokázal užitečnost, může být uložen a znovu použit později pro podobné úlohy.
Typy Transfer Learning
Obecně existují dva různé typy transfer learning: vývoj modelu od začátku a použití předtrénovaného modelu.
<pKdyž vyvíjíte model od začátku, budete muset vytvořit modelovou architekturu, která bude schopna interpretovat vaše trénovací data a extrahovat z nich vzory. Po prvním trénování modelu budete pravděpodobně muset provést úpravy, aby jste získali optimální výkon z modelu. Poté můžete uložit modelovou architekturu a použít ji jako výchozí bod pro model, který bude použit pro podobnou úlohu.
<pVe druhé situaci – použití předtrénovaného modelu – stačí pouze vybrat předtrénovaný model k použití. Mnoho univerzit a výzkumných týmů zpřístupňuje specifikace svých modelů pro obecné použití. Architektura modelu lze stáhnout spolu s váhami.
Při provádění transfer learning lze použít celou modelovou architekturu a váhy pro úlohu, nebo pouze některé části/vrstvy modelu. Použití pouze části předtrénovaného modelu a trénování zbytku modelu se nazývá fine-tuning.
Finetuning sítě
Finetuning sítě popisuje proces trénování pouze některých vrstev v síti. Pokud je nový trénovací dataset velmi podobný datasetu, který byl použit pro trénování původního modelu, mnoho stejných váh lze použít.
<pPočet vrstev v síti, které by měly být unfrozen a znovu trénovány, by se měl měnit v souladu se velikostí nového datasetu. Pokud je dataset, na kterém se trénuje, malý, je lepší držet většinu vrstev, jak jsou, a trénovat pouze poslední几 vrstvy. To je pro prevenci předpovídání sítě. Naopak, poslední vrstvy předtrénované sítě lze odstranit a přidat nové vrstvy, které se poté trénují. Pokud je dataset velký, potenciálně větší než původní dataset, měla by být celá síť znovu trénována. Pro použití sítě jako pevného extraktoru funkcí lze většinu sítě použít k extrahování funkcí a pouze poslední vrstva sítě lze unfrozen a trénovat.
Když finetunujete síť, pamatujte, že dříve vrstvy ConvNet obsahují informace reprezentující obecnější funkce obrazů. Tyto funkce zahrnují hrany a barvy. Naopak, pozdější vrstvy ConvNet obsahují detaily, které jsou specifické pro jednotlivé třídy v datasetu, na kterém byl model původně trénován. Pokud trénujete model na datasetu, který je velmi odlišný od původního datasetu, pravděpodobně budete chtít použít počáteční vrstvy modelu k extrahování funkcí a pouze zbytek modelu znovu trénovat.
Příklady Transfer Learning
Nejběžnější aplikace transfer learning jsou pravděpodobně ty, které používají obrazová data jako vstupy. Tyto jsou často úkoly klasifikace/předpovědi. Způsob, jakým Convolutional Neural Networks interpretují obrazová data, se hodí k opětovnému použití částí modelů, protože konvoluční vrstvy často rozlišují velmi podobné funkce. Příkladem běžné úlohy transfer learning je ImageNet 1000 úkol, obrovský dataset se 1000 různých tříd objektů. Společnosti, které vyvíjejí modely, které dosahují vysokých výkonů na tomto datasetu, často uvolňují své modely pod licencemi, které umožňují ostatním je znovu použít. Některé z modelů, které vznikly z tohoto procesu, zahrnují Microsoft ResNet model, Google Inception Model a Oxford VGG Model skupina.












