AI 101

Co to jest Transfer Learning?

mm

Co to jest Transfer Learning?

Podczas praktykowania machine learningu, szkolenie modelu może zająć dużo czasu. Tworzenie architektury modelu od podstaw, szkolenie modelu, a następnie dostosowywanie modelu to ogromna ilość czasu i wysiłku. O wiele bardziej efektywny sposób szkolenia modelu machine learningowego jest użycie architektury, która już została zdefiniowana, potencjalnie z wagami, które już zostały obliczone. To jest główny pomysł za transfer learning, pobranie modelu, który już został użyty i przystosowanie go do nowego zadania.

Przed zagłębieniem się w różne sposoby, w jakie transfer learning może być użyty, spójrzmy na to, dlaczego transfer learning jest tak potężną i użyteczną techniką.

Rozwiązywanie problemu Deep Learning

Kiedy próbujesz rozwiązać problem głębokiego uczenia, jak budowanie klasyfikatora obrazów, musisz stworzyć architekturę modelu, a następnie wyszkolić model na Twoich danych. Szkolenie klasyfikatora modelu obejmuje dostosowywanie wag sieci, proces, który może zająć godziny lub nawet dni, w zależności od złożoności modelu i danych. Czas szkolenia będzie skalował się wraz z rozmiarem danych i złożonością architektury modelu.

Jeśli model nie osiąga pożądanej dokładności dla zadania, najprawdopodobniej konieczne będzie dostosowanie modelu, a następnie ponowne szkolenie. Oznacza to kolejne godziny szkolenia, aż do znalezienia optymalnej architektury, długości szkolenia i podziału danych. Kiedy uwzględnisz, ile zmiennych musi być dopasowanych do siebie, aby klasyfikator był użyteczny, ma sens, że inżynierowie machine learningu zawsze szukają łatwiejszych, bardziej efektywnych sposobów szkolenia i wdrażania modeli. Dlatego też powstała technika transfer learningu.

Po zaprojektowaniu i przetestowaniu modelu, jeśli model okazał się przydatny, może być zapisany i ponownie użyty później do podobnych problemów.

Typy Transfer Learning

Ogólnie rzecz biorąc, istnieją dwa różne rodzaje transfer learning: tworzenie modelu od podstaw i użycie wstępnie wyszkolonego modelu.

Kiedy tworzysz model od podstaw, musisz stworzyć architekturę modelu, która może interpretować Twoje dane szkoleniowe i wyodrębnić z nich wzorce. Po pierwszym szkoleniu modelu najprawdopodobniej będziesz musiał wprowadzić zmiany, aby uzyskać optymalną wydajność modelu. Możesz następnie zapisać architekturę modelu i użyć jej jako punktu wyjścia dla modelu, który będzie używany do podobnego zadania.

W drugim przypadku – użyciu wstępnie wyszkolonego modelu – musisz po prostu wybrać wstępnie wyszkolony model do użycia. Wiele uczelni i zespołów badawczych udostępnia specyfikacje swoich modeli do ogólnego użycia. Architektura modelu może być pobrana wraz z wagami.

Podczas przeprowadzania transfer learningu cała architektura modelu i wagi mogą być użyte do zadania, lub tylko niektóre części/warstwy modelu mogą być użyte. Użycie tylko części wstępnie wyszkolonego modelu i szkolenie reszty modelu nazywa się fine-tuningiem.

Dopracowywanie sieci

Dopracowywanie sieci opisuje proces szkolenia tylko niektórych warstw sieci. Jeśli nowy zestaw danych szkoleniowych jest bardzo podobny do zestawu danych użytego do szkolenia oryginalnego modelu, wiele tych samych wag może być użytych.

Liczba warstw w sieci, które powinny być odblokowane i przeszkolone, powinna skalować się wraz z rozmiarem nowego zestawu danych. Jeśli zestaw danych, na którym szkolisz, jest mały, lepszą praktyką jest pozostawienie większości warstw takimi, jakie są, i szkolenie tylko kilku ostatnich warstw. To w celu zapobiegania przeuczeniu się sieci. Alternatywnie, ostatnie warstwy wstępnie wyszkolonej sieci mogą być usunięte, a nowe warstwy mogą być dodane, które są następnie szkolone. Z drugiej strony, jeśli zestaw danych jest duży, potencjalnie większy niż oryginalny zestaw danych, cała sieć powinna być przeszkolona. Aby użyć sieci jako stałego wyodrębniania cech, większość sieci może być użyta do wyodrębniania cech, a tylko ostatnia warstwa sieci może być odblokowana i szkolona.

Kiedy dopracowujesz sieć, pamiętaj, że wczesne warstwy sieci ConvNet zawierają informacje reprezentujące bardziej ogólne cechy obrazów. Są to cechy takie jak krawędzie i kolory. Z drugiej strony, późniejsze warstwy sieci ConvNet zawierają szczegóły, które są bardziej specyficzne dla poszczególnych klas zawartych w zestawie danych, na którym model był początkowo szkolony. Jeśli szkolisz model na zestawie danych, który jest bardzo różny od oryginalnego zestawu danych, najprawdopodobniej będziesz chciał użyć wczesnych warstw modelu do wyodrębniania cech i tylko resztę modelu przeszkolić.

Przykłady Transfer Learning

Najczęstsze zastosowania transfer learningu to prawdopodobnie te, które wykorzystują dane obrazowe jako dane wejściowe. Są to często zadania predykcji/klasyfikacji. Sposób, w jaki sieci neuronowe konwolucyjne interpretują dane obrazowe, sprzyja ponownemu użyciu aspektów modeli, ponieważ warstwy konwolucyjne często rozróżniają bardzo podobne cechy. Jednym z przykładów powszechnego problemu transfer learningu jest zadanie ImageNet 1000, ogromny zestaw danych zawierający 1000 różnych klas obiektów. Firmy, które rozwijają modele, które osiągają wysoką wydajność na tym zestawie danych, często udostępniają swoje modele na licencjach, które pozwalają innym na ich ponowne użycie. Niektóre z modeli, które powstały w wyniku tego procesu, to model Microsoft ResNet, model Google Inception i grupa modeli Oxford VGG.

Blogger i programista ze specjalnościami w Machine Learning i Deep Learning tematy. Daniel liczy, że pomoże innym wykorzystać moc sztucznej inteligencji dla dobra społecznego.