AI 101
Co to jest Transfer Learning?

Co to jest Transfer Learning?
Praktykując machine learning, trenowanie modelu może zająć dużo czasu. Tworzenie architektury modelu od podstaw, trenowanie modelu, a następnie dostosowywanie modelu to ogromna ilość czasu i wysiłku. O wiele bardziej efektywny sposób trenowania modelu machine learning 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, poświęćmy chwilę, aby zrozumieć, dlaczego transfer learning jest tak potężną i użyteczną techniką.
Rozwiązywanie problemu Deep Learning
Kiedy próbujesz rozwiązać problem deep learning, jak budowanie klasyfikatora obrazów, musisz stworzyć architekturę modelu, a następnie przeszkolić model na Twoich danych. Trenowanie 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 zbioru danych. Czas trenowania będzie skalowany w zależności od rozmiaru zbioru danych i złożoności architektury modelu.
Jeśli model nie osiąga pożądanej dokładności dla zadania, dostosowywanie modelu będzie prawdopodobnie wymagane, a następnie model będzie musiał zostać ponownie przeszkolony. Oznacza to więcej godzin trenowania, aż optymalna architektura, długość trenowania i partycja zbioru danych mogą zostać znalezione. Kiedy uwzględniasz, ile zmiennych musi być wyrównanych ze sobą, aby klasyfikator był użyteczny, ma sens, że inżynierowie machine learning szukają zawsze łatwiejszych, bardziej efektywnych sposobów trenowania i wdrażania modeli. Dlatego technika transfer learning została stworzona.
Po zaprojektowaniu i przetestowaniu modelu, jeśli model okazał się użyteczny, może zostać zapisany i ponownie użyty później dla podobnych problemów.
Typy Transfer Learning
Ogólnie, istnieją dwa różne rodzaje transfer learning: tworzenie modelu od podstaw i użycie wstępnie przeszkolonego modelu.
Kiedy tworzysz model od podstaw, musisz stworzyć architekturę modelu, która może interpretować Twoje dane trenujące i wyodrębnić wzorce z nich. Po tym, jak model zostanie po raz pierwszy przeszkolony, będziesz musiał wprowadzić zmiany w nim, aby uzyskać optymalną wydajność modelu. Możesz następnie zapisać architekturę modelu i użyć go jako punktu startowego dla modelu, który będzie używany do podobnego zadania.
W drugim przypadku – użyciu wstępnie przeszkolonego modelu – musisz po prostu wybrać wstępnie przeszkolony model do użycia. Wiele uniwersytetów i zespołów badawczych udostępnia specyfikacje swojego modelu do ogólnego użycia. Architektura modelu może zostać pobrana wraz z wagami.
Podczas przeprowadzania transfer learning, 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 niektórych części wstępnie przeszkolonego modelu i trenowanie reszty modelu nazywa się dostosowaniem.
Dostosowywanie sieci
Dostosowywanie sieci opisuje proces trenowania tylko niektórych warstw w sieci. Jeśli nowy zbiór danych trenujących jest podobny do zbioru danych, który został użyty do trenowania oryginalnego modelu, wiele tych samych wag może zostać użytych.
Liczba warstw w sieci, które powinny zostać odblokowane i ponownie przeszkolone, powinna skalować się w zależności od rozmiaru nowego zbioru danych. Jeśli zbiór danych, który jest trenowany, jest mały, jest to lepsza praktyka, aby trzymać większość warstw tak, jak są, i trenować tylko ostatnie kilka warstw. To jest, aby zapobiec przeuczeniu sieci. Alternatywnie, ostatnie warstwy wstępnie przeszkolonej sieci mogą zostać usunięte, a nowe warstwy mogą zostać dodane, które są następnie trenowane. W przeciwnym razie, jeśli zbiór danych jest duży, potencjalnie większy niż oryginalny zbiór danych, cała sieć powinna zostać ponownie przeszkolona. Aby użyć sieci jako stałego ekstraktora cech, większość sieci może być użyta do wyodrębnienia cech, a tylko ostatnia warstwa sieci może zostać odblokowana i przeszkolona.
Kiedy dostosowujesz sieć, po prostu pamiętaj, że wcześniejsze warstwy ConvNet zawierają informacje reprezentujące bardziej ogólne cechy obrazów. Są to cechy takie jak krawędzie i kolory. W przeciwieństwie do tego, późniejsze warstwy ConvNet zawierają szczegóły, które są bardziej specyficzne dla poszczególnych klas zawartych w zbiorze danych, na którym model został początkowo przeszkolony. Jeśli trenujesz model na zbiorze danych, który jest dość inny niż oryginalny zbiór danych, będziesz chciał użyć początkowych warstw modelu do wyodrębnienia cech i tylko resztę modelu przeszkolić.
Przykłady Transfer Learning
Najczęstsze zastosowania transfer learning to prawdopodobnie te, które używają danych obrazowych jako danych wejściowych. Są to często zadania predykcji/klasyfikacji. Sposób, w jaki Convolutional Neural Networks interpretują dane obrazowe, nadaje się do ponownego użycia aspektów modeli, ponieważ warstwy convolutionalne często rozróżniają bardzo podobne cechy. Jednym z przykładów powszechnego problemu transfer learning jest zadanie ImageNet 1000, ogromny zbiór danych zawierający 1000 różnych klas obiektów. Firmy, które rozwijają modele, które osiągają wysoką wydajność w tym zadaniu, często udostępniają swoje modele na licencjach, które pozwalają innym je ponownie użyć. Niektóre z modeli, które powstały w wyniku tego procesu, to model Microsoft ResNet, model Google Inception i model Oxford VGG grupy.








