1. Wprowadzenie

Ostatnia aktualizacja: 28.03.2022
Uczenie maszynowe
Uczenie maszynowe to dziedzina, która rozwija się w błyskawicznym tempie. Każdego dnia pojawiają się nowe badania i możliwości, które umożliwiają zastosowania, które wcześniej nie były możliwe.
Wydania te zwykle skutkują powstaniem modelu. Modele można rozumieć jako bardzo długie równania matematyczne, które na podstawie danych wejściowych (np. obrazu) generują wynik (np. klasyfikację).
- Co zrobić, jeśli chcesz użyć jednego z tych nowych modeli z własnymi danymi?
- Jak możesz wykorzystać te najnowocześniejsze modele w swoim przypadku użycia lub w aplikacji?
Z tego przewodnika dowiesz się, jak w prosty sposób dostosować modele uczenia maszynowego do własnych danych.
Tworzenie i trenowanie modeli systemów uczących się wiąże się z wieloma wyzwaniami:
- Zajmuje dużo czasu.
- Zużywa duże ilości danych.
- Wymagają one wiedzy z zakresu matematyki i statystyki.
- Wymagające zasobów: trenowanie niektórych modeli może trwać kilka dni.
Tworzenie nowych architektur modeli zajmuje dużo czasu i może wymagać wielu eksperymentów oraz wieloletniego doświadczenia. A gdyby tak wykorzystać całą tę wiedzę i zastosować ją do własnych danych, dostosowując najnowocześniejsze badania do swojego problemu? Jest to możliwe dzięki technice zwanej Transfer Learning.
Z tego laboratorium dowiesz się, jak przeprowadzać uczenie transferowe, dlaczego działa i kiedy warto z niego korzystać.
Czego się nauczysz
- czym jest uczenie przez przeniesienie i kiedy go używać;
- Jak korzystać z uczenia transferowego.
- Jak dostrajać modele.
- Jak korzystać z TensorFlow Lite Model Maker.
- Jak korzystać z TensorFlow Hub.
Czego potrzebujesz
- Cały kod jest wykonywany w Google Colaboratory, więc nie musisz niczego instalować na swoim komputerze. Aby zalogować się w Colab, wystarczy dostęp do internetu i konto Google.
- Podstawowa wiedza o TensorFlow i interfejsie Keras API.
- znajomość Pythona,
Jeśli nie masz podstawowej wiedzy o TensorFlow ani uczeniu maszynowym, nadal możesz dowiedzieć się więcej o uczeniu przez przenoszenie. W kolejnym kroku „Czym jest uczenie transferowe” znajdziesz teorię tej techniki, a potem przejdziesz do sekcji „Uczenie transferowe za pomocą narzędzia Model Maker”. Jeśli chcesz dowiedzieć się więcej o tym procesie, zapoznaj się z sekcjami dotyczącymi uczenia transferowego za pomocą TensorFlow Hub.
2. Czym jest uczenie się przez transfer?
Wytrenowany model to zapisana sieć, która została wcześniej wytrenowana na dużym zbiorze danych, zwykle w ramach zadania klasyfikacji obrazów na dużą skalę. Możesz użyć wstępnie wytrenowanego modelu w niezmienionej formie lub skorzystać z nauki transferu, aby dostosować go do konkretnego zadania.
Intuicja stojąca za uczeniem przez przenoszenie w przypadku klasyfikacji obrazów jest taka, że jeśli model zostanie wytrenowany na dużym i wystarczająco ogólnym zbiorze danych, będzie skutecznie służyć jako ogólny model świata wizualnego. Możesz wtedy wykorzystać te wyuczone mapy cech bez konieczności rozpoczynania od zera trenowania dużego modelu na dużym zbiorze danych.
Model systemu uczącego się możesz dostosować na 2 sposoby:
- Ekstrakcja cech: używaj reprezentacji wyuczonych przez poprzednią sieć do wyodrębniania istotnych cech z nowych próbek. Wystarczy dodać nowy klasyfikator, który jest trenowany od zera, na podstawie wstępnie wytrenowanego modelu, aby można było ponownie wykorzystać mapy funkcji wyuczone wcześniej na potrzeby zbioru danych. Nie musisz (ponownie) trenować całego modelu. Podstawowa sieć konwolucyjna zawiera już funkcje, które są ogólnie przydatne do klasyfikowania zdjęć. Ostatnia część klasyfikacji wytrenowanego modelu jest jednak specyficzna dla pierwotnego zadania klasyfikacji, a co za tym idzie – dla zbioru klas, na których model został wytrenowany.
- Dostrajanie: odblokuj kilka górnych warstw zamrożonego modelu podstawowego i wspólnie wytrenuj nowo dodane warstwy klasyfikatora oraz ostatnie warstwy modelu podstawowego. Dzięki temu możemy „dostroić” reprezentacje cech wyższego rzędu w modelu podstawowym, aby były bardziej odpowiednie do konkretnego zadania.
Wyodrębnianie cech jest szybsze w trenowaniu, ale dostrajanie pozwala uzyskać lepsze wyniki.
Wypróbujesz obie metody (ekstrakcję cech i dostrajanie) za pomocą 2 różnych sposobów uczenia transferowego:
- Biblioteka TensorFlow Lite Model Maker automatycznie wykonuje większość zadań związanych z potokiem danych i tworzeniem modelu, co znacznie ułatwia ten proces. Wynikowy model można też łatwo wyeksportować, aby używać go na urządzeniach mobilnych i w przeglądarce.
- Modele TensorFlow Hub korzystają z ogromnego repozytorium modeli uczenia maszynowego dostępnego w TensorFlow Hub. Modele te są tworzone przez badaczy i społeczność, dzięki czemu najnowocześniejsze modele są dostępne znacznie szybciej i w większej różnorodności.
3. Uczenie transferowe za pomocą narzędzia Model Maker
Znasz już ideę uczenia transferowego, więc zacznijmy korzystać z biblioteki TensorFlow Lite Model Maker, narzędzia, które ułatwia to zadanie.
Biblioteka TensorFlow Lite Model Maker to biblioteka open source, która upraszcza proces uczenia transferowego i sprawia, że jest on znacznie bardziej przystępny dla deweloperów niezajmujących się uczeniem maszynowym, takich jak programiści aplikacji mobilnych i internetowych.
Notatnik Colab przeprowadzi Cię przez te kroki:
- Wczytaj dane.
- Podziel dane.
- Tworzenie i trenowanie modelu
- ocenić model,
- wyeksportować model,
Po wykonaniu tego kroku możesz rozpocząć uczenie przez przenoszenie wiedzy przy użyciu własnych danych, postępując dokładnie tak samo.
Colaboratory
Następnie przejdźmy do Google Colab, aby wytrenować model niestandardowy.
Zapoznanie się z wyjaśnieniem i zrozumienie podstaw notatnika zajmie około 15 minut.
Zalety:
- Łatwy sposób dostosowywania modeli.
- Nie musisz rozumieć TensorFlow ani interfejsu Keras API.
- Narzędzie open source, które można zmienić, jeśli użytkownik potrzebuje czegoś, co nie zostało jeszcze wdrożone.
- Eksportuje model bezpośrednio do wykonania na urządzeniu mobilnym lub w przeglądarce.
Wady
- Mniej możliwości konfiguracji niż w przypadku samodzielnego tworzenia pełnej ścieżki i modelu, jak w 2 poprzednich metodach.
- Nawet jeśli wybierzesz model bazowy, nie wszystkie modele mogą być używane jako modele bazowe.
- Nie nadaje się do dużych ilości danych, w przypadku których potok danych jest bardziej złożony.
4. Znajdowanie modelu w TensorFlow Hub
Po zakończeniu tej sekcji będziesz w stanie:
- Modele uczenia maszynowego znajdziesz w TensorFlow Hub.
- Dowiedz się więcej o kolekcjach.
- Poznaj różne typy modeli.
Aby zastosować uczenie transferowe, musisz zacząć od 2 rzeczy:
- Dane, np. obrazy przedstawiające obiekty, które chcesz rozpoznać.
- Model podstawowy, który możesz dostosować do swoich danych.
Dane zależą zwykle od firmy, ale najłatwiej jest zrobić wiele zdjęć tego, co chcesz rozpoznać. A co z modelem podstawowym? Gdzie można je znaleźć? W tym może Ci pomóc TensorFlow Hub.
TensorFlow Hub to repozytorium modeli TensorFlow, które spełni Twoje potrzeby.
Możesz wyszukiwać i czytać dokumentację tysięcy modeli, które są dostępne do użycia. Wiele z nich jest gotowych do uczenia transferowego i dostrajania.
Wyszukiwanie modelu
Najpierw wyszukajmy proste modele do użycia w TensorFlow Hub, które możesz później wykorzystać w swoim kodzie.
Krok 1. W przeglądarce otwórz witrynę tfhub.dev.

W przypadku uczenia transferowego w domenie obrazów potrzebujemy wektorów cech. Wektory cech są podobne do modeli klasyfikacji, ale nie mają głowicy klasyfikacji.
Wektory cech mogą przekształcać obrazy w reprezentację liczbową w przestrzeni N-wymiarowej (gdzie N to liczba wymiarów warstwy wyjściowej modelu).
Na TFHub możesz wyszukiwać wektory cech, klikając konkretną kartę.

Możesz też wyszukać nazwę modelu, korzystając z filtra po lewej stronie, aby wyświetlić tylko Image feature vectors.

Karty z niebieskimi ikonami to kolekcje modeli. Jeśli klikniesz kolekcję obrazów, uzyskasz dostęp do wielu podobnych modeli, z których możesz wybrać odpowiedni. Wybierzmy kolekcję obrazów.

Przewiń w dół i wybierz MobileNet V3. Wystarczy dowolny wektor cech.

Na stronie z informacjami o modelu możesz przeczytać całą dokumentację, zobaczyć fragmenty kodu, aby wypróbować model, a nawet wypróbować go bezpośrednio w notatniku Colab.

Na razie wystarczy Ci adres URL u góry. To jest uchwyt modelu, który umożliwia łatwy dostęp do modelu z biblioteki TensorFlow Hub.
5. Transfer Learning z TensorFlow Hub
Po wybraniu modelu, którego chcesz użyć, dostosuj go, wczytując go za pomocą metody KerasLayer z biblioteki TensorFlow Hub.
Ta metoda wczytuje model w taki sposób, aby można go było używać jako warstwy w Twoim modelu, co umożliwia budowanie modelu wokół tej warstwy.
Wcześniej, gdy uczyłeś się korzystać z Model Maker, wszystkie wewnętrzne szczegóły były ukryte, aby ułatwić Ci zrozumienie. Nie, zobaczysz, co Model Maker robi za kulisami.
Colaboratory
Następnie przejdźmy do Google Colab, aby wytrenować model niestandardowy.
Zapoznanie się z wyjaśnieniem i zrozumienie podstaw notatnika zajmuje około 20 minut.
Zalety:
- Tysiące dostępnych modeli udostępnionych przez badaczy i społeczność, wytrenowanych na różnych zbiorach danych.
- Modele do wszystkich zadań, takich jak przetwarzanie obrazu, tekstu i dźwięku.
- Łatwe eksperymentowanie z różnymi podobnymi modelami. Zmiana modelu podstawowego może wymagać zmiany tylko jednego ciągu znaków.
Wady
- Korzystanie z tych modeli nadal wymaga pewnej wiedzy na temat TensorFlow/Keras.
Jeśli chcesz dowiedzieć się więcej, możesz też skorzystać z uczenia transferowego za pomocą aplikacji Keras. Jest to proces bardzo podobny do korzystania z TensorFlow Hub, ale z użyciem tylko podstawowych interfejsów TensorFlow API.
6. Gratulacje
Gratulacje! Wiesz już, czym jest uczenie przez przenoszenie wiedzy i jak zastosować je do własnych danych.
W tym ćwiczeniu w Codelabs dowiesz się, jak dostosowywać modele uczenia maszynowego do własnych danych za pomocą techniki uczenia transferowego.
Wypróbowano 2 formy uczenia transferowego:
- Za pomocą narzędzia takiego jak TensorFlow Lite Model Maker.
- Korzystanie z wektora cech z TensorFlow Hub.
Obie opcje mają swoje zalety i wady oraz wiele możliwych konfiguracji dostosowanych do Twoich potrzeb.
Dowiedziałeś się też, że możesz pójść o krok dalej i dostroić modele, nieznacznie modyfikując ich wagi, aby lepiej dopasować je do swoich danych.
Obie opcje umożliwiają dostrajanie modeli.
Transfer Learning i dostrajanie nie są przeznaczone tylko dla modeli związanych z obrazami. Ponieważ chodzi o wykorzystanie wyuczonej reprezentacji domeny do dostrajania zbioru danych, można jej używać także w przypadku domen tekstowych i audio.
Następne kroki
- Wypróbuj to na własnych danych.
- Podziel się z nami swoimi projektami i oznacz TensorFlow w mediach społecznościowych.
Więcej informacji
- Więcej informacji o dostrajaniu modeli State of the Art, takich jak BERT, znajdziesz w artykule Dostrajanie modelu BERT.
- Więcej informacji o uczeniu transferowym w przypadku modeli audio znajdziesz w artykule Uczenie transferowe z użyciem YAMNet do klasyfikacji dźwięków otoczenia.