1. Wprowadzenie
Ostatnia aktualizacja: 28.03.2022
Systemy uczące się
Uczenie maszynowe to dziedzina, która rozwija się w zawrotnym tempie. Każdego dnia pojawiają się nowe badania i możliwości, co pozwala na zastosowanie przypadków, które wcześniej nie były możliwe.
W takich wersjach zwykle powstaje model. Modele można rozumieć jako bardzo długie równania matematyczne, które dla danych wejściowych (np. obrazu) zwracają wynik (np. klasyfikację)
- A jeśli chcesz użyć jednego z tych nowych modeli z własnymi danymi?
- Jaką korzyść mogą przynieść te najnowocześniejsze modele w kontekście zastosowania lub aplikacji?
Dzięki nim dowiesz się, jak w łatwy sposób dostosowywać modele systemów uczących się do Twoich danych.
Tworzenie i trenowanie modeli systemów uczących się wiąże się z wieloma wyzwaniami:
- To zajmuje dużo czasu.
- Zużywają duże ilości danych
- Wymaga doświadczenia w takich dziedzinach jak matematyka i statystyka.
- Duża liczba zasobów: trenowanie niektórych modeli może zająć kilka dni.
Tworzenie nowych architektur modeli zajmuje dużo czasu i może wymagać wielu eksperymentów i wielu lat doświadczenia. A gdybyście mogli wykorzystać tę wiedzę i wykorzystać ją we własnych danych, dostosowując najnowocześniejsze badania do swojego problemu? Jest to możliwe, używając techniki Transfer Learning.
Z tego ćwiczenia w Codelabs dowiesz się, jak korzystać z Transfer Learning, dlaczego działa i kiedy go używać.
Czego się nauczysz
- Czym jest uczenie się transferowe i kiedy warto z niego korzystać.
- Jak korzystać z Transfer Learning?
- Jak dostrajać modele.
- Jak korzystać z Kreatora modeli TensorFlow Lite.
- Jak korzystać z TensorFlow Hub.
Czego potrzebujesz
- Cały kod jest wykonywany przy użyciu Google Colaboratory, więc nie musisz niczego instalować na swoim komputerze. Aby zalogować się w Colab, musisz tylko mieć dostęp do internetu i konto Google.
- Podstawowa znajomość TensorFlow i Keras API.
- znajomości Pythona.
Jeśli nie znasz jeszcze TensorFlow ani systemów uczących się, zapoznaj się z informacjami o Transfer Learning. Przeczytaj następny krok „Czym jest Transfer Learning” omówię teorię stojącą za tą techniką, a następnie przejdź do tematu „Transfer Learning with Model Maker”. Jeśli chcesz dowiedzieć się więcej i zobaczyć ten proces bardziej szczegółowo, znajdziesz go w sekcjach poświęconych nauce transferu przez TensorFlow Hub.
2. Czym jest Transfer Learning?
Wytrenowany model to zapisana sieć, która została wcześniej wytrenowana na dużym zbiorze danych, zwykle na podstawie zadania klasyfikacji obrazów na dużą skalę. Możesz użyć już wytrenowanego modelu w niezmienionej postaci lub dostosować go do konkretnego zadania za pomocą transferu uczenia się.
W przypadku uczenia się transferu metod w przypadku klasyfikacji obrazów zakłada się, że jeśli model zostanie wytrenowany na odpowiednio dużym i wystarczająco ogólnym zbiorze danych, będzie skutecznie służyć jako ogólny model świata wizualnego. Następnie możesz wykorzystać te mapy cech bez konieczności zaczynania od zera przez trenowanie dużego modelu na dużym zbiorze danych.
Istnieją 2 sposoby dostosowywania modelu uczenia maszynowego
- Wyodrębnianie cech: użyj reprezentacji zapamiętanych przez poprzednią sieć, aby wyodrębnić istotne funkcje z nowych próbek. Wystarczy, że dodasz do wytrenowanego modelu nowy klasyfikator, trenowany od zera, dzięki czemu możesz ponownie wykorzystać nauczone wcześniej mapy cech dla zbioru danych. Nie musisz ponownie trenować całego modelu. Podstawowa sieć splotowa zawiera już funkcje, które są ogólnie przydatne do klasyfikowania zdjęć. Jednak ostateczna część klasyfikacji wytrenowanego modelu jest związana z oryginalnym zadaniem klasyfikacji, a następnie związana ze zbiorem klas, na których model został wytrenowany.
- Dostrajanie: odblokuj kilka górnych warstw zablokowanej bazy modelu i trenuj wspólnie zarówno nowo dodane warstwy klasyfikatorów, jak i ostatnie warstwy modelu podstawowego. Dzięki temu możemy „dostroić” reprezentacji funkcji wyższego rzędu w modelu podstawowym, aby były one lepiej dopasowane do danego zadania.
Wyodrębnianie funkcji trwa krócej, ale dzięki dostrajaniu możesz osiągnąć lepsze wyniki.
Wypróbujesz obie metody (wyodrębnianie funkcji i dostrajanie) na dwa różne sposoby:
- Biblioteka Kreatora modeli TensorFlow Lite automatycznie wykonuje większość potoków danych i modeli, co znacznie ułatwia proces tworzenia. Powstały model można łatwo wyeksportować, aby użyć go na urządzeniu mobilnym i w przeglądarce.
- Modele TensorFlow Hub wykorzystują ogromne repozytorium modeli systemów uczących się dostępnych w TensorFlow Hub. Badacze i cała społeczność przyczyniają się do tych modeli, dzięki którym najnowocześniejsze modele są znacznie szybciej i bardziej zróżnicowane.
3. Przenoszenie nauki z użyciem Kreatora modeli
Skoro już wiesz, co kryje się za Transfer Learning, zacznijmy od biblioteki Kreatora modeli TensorFlow Lite – narzędzia, które ułatwi Ci pracę.
Biblioteka TensorFlow Lite Model Maker to biblioteka typu open source, która upraszcza proces Transfer Learning i sprawia, że jest on znacznie bardziej przystępny dla programistów, którzy nie korzystają z ML, np. programistów aplikacji mobilnych i stron internetowych.
Notatnik Colab przeprowadzi Cię przez te czynności:
- Wczytaj dane.
- Podziel dane.
- Tworzenie i trenowanie modelu
- ocenić model,
- Wyeksportuj model.
Gdy to zrobisz, możesz zacząć przeprowadzać uczenie się w transferze z użyciem własnych danych, dokładnie w ten sam sposób.
Colaboratory
Następnie przejdźmy do Google Colab, aby wytrenować model niestandardowy.
Omówienie wyjaśnienia i zapoznanie się z podstawami notatnika powinno zająć około 15 minut.
Zalety:
- Łatwy sposób dostosowywania modeli.
- Nie musisz znać TensorFlow ani Keras API.
- Narzędzie open source, które można zmienić, jeśli użytkownik potrzebuje czegoś konkretnego, co nie zostało jeszcze wdrożone.
- Eksportuje model bezpośrednio do uruchomienia na urządzeniu mobilnym lub w przeglądarce.
Wady
- Mniejsze możliwości konfiguracji niż samodzielne tworzenie pełnego potoku i modelowanie, tak jak w przypadku 2 wcześniejszych metod.
- Nawet jeśli wybierzesz model podstawowy, nie wszystkie modele będą mogły zostać użyte jako podstawa.
- Nie sprawdza się w przypadku dużych ilości danych, w których potok danych jest bardziej złożony.
4. Znajdź model w TensorFlow Hub
Tematy w tej sekcji:
- Znajdź modele systemów uczących się w TensorFlow Hub.
- Informacje o kolekcjach
- Poznaj różne typy modeli.
Aby przeprowadzić nauczanie transferowe, musisz zacząć od 2 rzeczy:
- danych, na przykład obrazów dotyczących tematów, które chcesz rozpoznać;
- Model podstawowy, który możesz dostosować do swoich danych.
Część danych zależy zwykle od firmy, ale najprostszym sposobem jest zrobienie dużej liczby zdjęć elementów, które chcesz rozpoznać. A co z modelem podstawowym? Gdzie go znaleźć? w tej dziedzinie może pomóc TensorFlow Hub.
TensorFlow Hub to repozytorium modeli na potrzeby modeli TensorFlow.
Możesz przeszukiwać i czytać dokumentację tysięcy modeli, od razu dostępnych do użycia, a wiele z nich jest gotowych do transferu i dostrajania.
Wyszukiwanie modelu
Najpierw wyszukajmy w TensorFlow Hub proste modele, których możesz użyć później w kodzie.
Krok 1. W przeglądarce otwórz stronę tfhub.dev.
Do przenoszenia nauki w domenie obrazu potrzebne są wektory cech. Wektory cech przypominają modele klasyfikacji, ale bez nagłówka klasyfikacji.
Wektory cech mogą konwertować obrazy na reprezentację liczbową w n-tej przestrzeni (gdzie N to liczba wymiarów warstwy wyjściowej modelu).
W TFHub możesz wyszukać konkretne wektory cech, klikając konkretną kartę.
Możesz też wyszukać nazwę modelu, używając filtra po lewej stronie, aby wyświetlić tylko Image feature vectors
.
Karty z niebieskimi ikonami to kolekcje modeli. Po kliknięciu kolekcji obrazów uzyskasz dostęp do wielu podobnych modeli do wyboru. Wybierzmy kolekcję obrazów.
Przewiń w dół i wybierz MobileNet V3
. Wystarczą dowolny z wektorów cech.
Na stronie ze szczegółami modelu możesz zapoznać się z całą dokumentacją modelu, zobaczyć fragmenty kodu, aby wypróbować model, a nawet wypróbować go bezpośrednio w notatniku Colab.
Na razie potrzebujesz tylko adresu URL na górze. To jest uchwyt modelu i sposób łatwego dostępu do modelu z biblioteki TensorFlow Hub.
5. Przekazanie nauki za pomocą TensorFlow Hub
Po wybraniu modelu do dostosowania możesz go dostosować, wczytając go za pomocą metody KerasLayer z biblioteki TensorFlow Hub.
Ta metoda wczytuje model w taki sposób, że może być używany jako warstwa w modelu, dzięki czemu możesz oprzeć go na tej warstwie.
Wcześniej, gdy uczyliśmy się korzystać z Kreatora modeli, wszystkie elementy wewnętrzne były ukryte, aby ułatwić ich zrozumienie. Nie, zobaczysz, co robi Kreator modeli za kulisami.
Colaboratory
Następnie przejdźmy do Google Colab, aby wytrenować model niestandardowy.
Omówienie wyjaśnienia i zapoznanie się z podstawami notatnika powinno zająć około 20 minut.
Zalety:
- Tysiące dostępnych modeli pochodzących od badaczy i społeczności wytrenowanych na różnych zbiorach danych.
- Modele do wszystkich zadań, np. rozpoznawania tekstu, obrazu i dźwięku.
- Łatwo jest eksperymentować z różnymi podobnymi modelami. Zmiana modelu podstawowego może wymagać zmiany tylko jednego ciągu znaków.
Wady
- Aby korzystać z tych modeli, nadal potrzebuje pewnej wiedzy na temat TensorFlow/Keras.
Jeśli chcesz dowiedzieć się więcej, możesz skorzystać z metody Transfer Learning using Keras Application Application (Przenieś naukę za pomocą aplikacji Keras). Jest to proces bardzo podobny do TensorFlow Hub, ale wykorzystujący tylko podstawowe interfejsy API TensorFlow.
6. Gratulacje
Gratulacje. Wiesz już, czym jest Transfer Learning i jak zastosować go do swoich danych.
Dzięki tym ćwiczeniom z programowania omówiliśmy, jak dostosowywać modele systemów uczących się do własnych danych, korzystając z metody Transfer Learning.
Wypróbowano 2 metody Transfer Learning:
- Za pomocą narzędzia takiego jak TensorFlow Lite Model Maker.
- Korzystanie z wektora cech z TensorFlow Hub.
Obie opcje mają swoje zalety i wady, a także wiele możliwych konfiguracji dostosowanych do konkretnych potrzeb.
Wiesz też, że można pójść o krok dalej i dostroić modele, modyfikując ich wagi, aby lepiej pasowały do danych.
Obie opcje umożliwiają dostrajanie modeli.
Uczenie się transferowe i dostrajanie nie tylko w przypadku modeli związanych z obrazami. Chodzi o użycie nauczonej reprezentacji domeny w celu dostrojenia do zbioru danych, więc można go też użyć w przypadku domen tekstowych i audio.
Następne kroki
- Wypróbuj z własnymi danymi.
- Podziel się z nami tym, co tworzysz, i oznaczaj tagami TensorFlow w mediach społecznościowych w swoich projektach.
Więcej informacji
- Więcej informacji o dostrajaniu modeli State of the Art, takich jak BERT, znajdziesz w artykule o dostrajaniu modelu BERT.
- Więcej informacji o Transfer Learning w modelach audio znajdziesz w artykule Przenoszenie uczenia się za pomocą YAMNet do klasyfikacji dźwięków środowiskowych.