- Terminologia (A do D)
- Kontrola zdolności AI
- Operacje AI
- Albumentacje
- Wydajność aktywów
- Autokoder
- Propagacja wsteczna
- Twierdzenie Bayesa
- Big Data
- Chatbot: przewodnik dla początkujących
- Myślenie obliczeniowe
- Wizja komputerowa
- Macierz zamieszania
- Konwolucyjne sieci neuronowe
- Bezpieczeństwo cybernetyczne
- Tkanina danych
- Opowiadanie historii
- Nauka danych
- Magazyn danych
- Drzewo decyzyjne
- Deepfakes
- głęboki Learning
- Uczenie się o głębokim wzmocnieniu
- DevOps
- DevSecOps
- Modele dyfuzyjne
- Cyfrowy bliźniak
- Redukcja wymiarowości
- Terminologia (E do K)
- Sztuczna inteligencja
- Emocje AI
- Nauka zespołowa
- Etyczne hakowanie
- ETL
- Wytłumaczalne AI
- Sfederowane uczenie się
- FinOps
- generatywna sztuczna inteligencja
- Generatywna sieć przeciwników
- Generatywny a dyskryminacyjny
- Wzmocnienie gradientu
- Gradientowe zejście
- Nauka kilku strzałów
- Klasyfikacja obrazu
- Operacje IT (ITops)
- Automatyzacja incydentów
- Inżynieria wpływu
- Klastrowanie K-średnich
- K-Najbliżsi sąsiedzi
- Terminologia (od L do Q)
- Terminologia (od R do Z)
- Uczenie się ze wzmocnieniem
- Odpowiedzialna sztuczna inteligencja
- RLHF
- Automatyzacja procesów robotycznych
- Strukturalne vs niestrukturalne
- Analiza sentymentów
- Nadzorowany kontra bez nadzoru
- Wsparcie maszyn wektorowych
- Dane syntetyczne
- Media syntetyczne
- Klasyfikacja tekstu
- TinyML
- Przenieś naukę
- Transformatorowe sieci neuronowe
- Test Turinga
- Wyszukiwanie podobieństwa wektorów
AI 101
Co to jest autoenkoder?
Spis treści
Jeśli czytałeś już o technikach uczenia się bez nadzoru, być może spotkałeś się z terminem „autokoder”. Autoenkodery to jeden z głównych sposobów opracowywania modeli uczenia się bez nadzoru. Czym dokładnie jest autoenkoder?
W skrócie, autoenkodery działają poprzez pobieranie danych, kompresję i kodowanie danych, a następnie rekonstrukcję danych z reprezentacji kodowania. Model jest szkolony do momentu zminimalizowania strat i możliwie najwierniejszego odtworzenia danych. Dzięki temu procesowi autoenkoder może poznać ważne cechy danych. Chociaż jest to krótka definicja autoenkodera, warto przyjrzeć się bliżej autoenkoderom i lepiej zrozumieć ich działanie. W tym artykule postaramy się wyjaśnić tajemnice autoenkoderów, wyjaśniając architekturę autoenkoderów i ich zastosowania.
Co to jest autoenkoder?
Autoencodery są sieci neuronowe. Sieci neuronowe składają się z wielu warstw, a cechą charakterystyczną autoenkodera jest to, że warstwy wejściowe zawierają dokładnie tyle samo informacji, co warstwa wyjściowa. Powodem, dla którego warstwa wejściowa i warstwa wyjściowa mają dokładnie tę samą liczbę jednostek, jest to, że autoenkoder ma na celu replikację danych wejściowych. Generuje kopię danych po ich przeanalizowaniu i zrekonstruowaniu bez nadzoru.
Dane przechodzące przez autoenkoder nie są po prostu mapowane bezpośrednio z wejścia na wyjście, co oznacza, że sieć nie tylko kopiuje dane wejściowe. Autoenkoder składa się z trzech komponentów: część kodująca (wejściowa), która kompresuje dane, komponent obsługujący skompresowane dane (lub wąskie gardło) oraz część dekodera (wyjściowa). Gdy dane są wprowadzane do autoenkodera, są kodowane, a następnie kompresowane do mniejszego rozmiaru. Sieć jest następnie szkolona na zakodowanych/skompresowanych danych i generuje odtworzenie tych danych.
Dlaczego więc chcesz szkolić sieć, aby po prostu rekonstruowała dane, które są jej przekazywane? Dzieje się tak dlatego, że sieć uczy się „istoty”, czyli najważniejszych cech danych wejściowych. Po przeszkoleniu sieci można utworzyć model, który może syntetyzować podobne dane, dodając lub odejmując pewne cechy docelowe. Można na przykład wytrenować autoenkoder na ziarnistych obrazach, a następnie użyć wyszkolonego modelu do usunięcia ziarna/szumu z obrazu.
Architektura autoenkodera
Rzućmy okiem na architektura autoenkodera. Omówimy tutaj główną architekturę autoenkodera. Istnieją odmiany tej ogólnej architektury, które omówimy w poniższej sekcji.
Jak wspomniano wcześniej, autoenkoder można zasadniczo podzielić na trzy różne elementy: koder, wąskie gardło i dekoder.
Część kodera autoenkodera to zazwyczaj gęsto połączona sieć z wyprzedzeniem. Celem warstw kodowania jest pobranie danych wejściowych i skompresowanie ich w reprezentację w przestrzeni ukrytej, generując nową reprezentację danych o zmniejszonej wymiarowości.
Warstwy kodu, czyli wąskie gardło, zajmują się skompresowaną reprezentacją danych. Kod wąskiego gardła jest starannie zaprojektowany, aby określić najbardziej istotne części obserwowanych danych lub, inaczej mówiąc, cechy danych, które są najważniejsze dla rekonstrukcji danych. Celem jest określenie, które aspekty danych należy zachować, a które można odrzucić. Kod wąskiego gardła musi równoważyć dwa różne czynniki: rozmiar reprezentacji (jak zwarta jest reprezentacja) i znaczenie zmiennych/cech. Wąskie gardło powoduje aktywację elementarną na podstawie wag i odchyleń sieci. Warstwa wąskiego gardła jest czasami nazywana ukrytą reprezentacją lub ukrytymi zmiennymi.
Warstwa dekodera jest odpowiedzialna za pobranie skompresowanych danych i przekształcenie ich z powrotem w reprezentację o tych samych wymiarach, co oryginalne, niezmienione dane. Konwersja odbywa się za pomocą reprezentacji przestrzeni ukrytej utworzonej przez koder.
Najbardziej podstawową architekturą autoenkodera jest architektura ze sprzężeniem zwrotnym, której struktura przypomina perceptron jednowarstwowy stosowany w perceptronach wielowarstwowych. Podobnie jak w przypadku zwykłych sieci neuronowych ze sprzężeniem zwrotnym, autokoder jest szkolony przy użyciu propagacji wstecznej.
Atrybuty autoenkodera
Istnieje wiele typów autoenkoderów, ale wszystkie mają pewne właściwości, które je łączą.
Autoenkodery uczą się automatycznie. Nie wymagają etykiet, a jeśli ma się wystarczającą ilość danych, łatwo jest uzyskać autoenkoder, który osiągnie wysoką wydajność dla określonego rodzaju danych wejściowych.
Autoenkodery są specyficzne dla danych. Oznacza to, że mogą kompresować tylko dane, które są bardzo podobne do danych, na których autoenkoder został już przeszkolony. Autoenkodery są również stratne, co oznacza, że dane wyjściowe modelu będą degradowane w porównaniu z danymi wejściowymi.
Projektując autoenkoder, inżynierowie zajmujący się uczeniem maszynowym muszą zwrócić uwagę na cztery różne hiperparametry modelu: rozmiar kodu, liczbę warstw, węzły na warstwę i funkcję straty.
Rozmiar kodu decyduje o tym, ile węzłów rozpoczyna środkową część sieci, a mniejsza liczba węzłów powoduje większą kompresję danych. W głębokim autokoderze liczba warstw może być dowolna, jaką inżynier uzna za odpowiednią, liczba węzłów w warstwie powinna zmniejszać się w miarę pracy kodera. Tymczasem w dekoderze jest odwrotnie, co oznacza, że liczba węzłów na warstwę powinna rosnąć w miarę zbliżania się warstw dekodera do warstwy końcowej. Wreszcie funkcja straty autoenkodera jest zwykle albo binarną entropią krzyżową, albo błędem średniokwadratowym. Binarna entropia krzyżowa jest odpowiednia w przypadkach, gdy wartości wejściowe danych mieszczą się w zakresie 0–1.
Typy autoenkodera
Jak wspomniano powyżej, istnieją odmiany klasycznej architektury autoenkodera. Przyjrzyjmy się różnym architekturom autoenkodera.
Rzadki
Chociaż autoenkodery zazwyczaj mają wąskie gardło, które kompresuje dane poprzez redukcję węzłów, rzadki autokoders stanowią alternatywę dla tego typowego formatu operacyjnego. W sieci rzadkiej warstwy ukryte zachowują ten sam rozmiar co warstwy kodera i dekodera. Zamiast tego karane są aktywacje w obrębie danej warstwy, ustawiając ją tak, aby funkcja straty lepiej oddawała cechy statystyczne danych wejściowych. Inaczej mówiąc, chociaż ukryte warstwy rzadkiego autoenkodera mają więcej jednostek niż tradycyjny autoenkoder, tylko określony procent z nich jest aktywny w danym momencie. Najbardziej wpływowe funkcje aktywacji są zachowywane, inne są ignorowane, a to ograniczenie pomaga sieci określić tylko najbardziej istotne cechy danych wejściowych.
Skurczowe
Autoenkodery kontraktowe zostały zaprojektowane tak, aby były odporne na niewielkie zmiany danych, zachowując spójną reprezentację danych. Osiąga się to poprzez zastosowanie kary do funkcji straty. Ta technika regularyzacji opiera się na normie Frobeniusa macierzy Jacobiego dla aktywacji enkodera wejściowego. Efektem tej techniki regularyzacji jest to, że model jest zmuszony do skonstruowania kodowania, w którym podobne dane wejściowe będą miały podobne kodowanie.
Konwolucyjny
Autoenkodery splotowe kodować dane wejściowe, dzieląc dane na podsekcje, a następnie przekształcając te podsekcje w proste sygnały, które są sumowane w celu utworzenia nowej reprezentacji danych. Podobnie jak splotowe sieci neuronowe, autoenkoder splotowy specjalizuje się w uczeniu się danych obrazu i wykorzystuje filtr przesuwany po całym obrazie sekcja po sekcji. Kodowania wygenerowane przez warstwę kodującą można wykorzystać do rekonstrukcji obrazu, odzwierciedlenia obrazu lub modyfikacji geometrii obrazu. Gdy sieć nauczy się filtrów, można ich użyć na dowolnym wystarczająco podobnym wejściu w celu wyodrębnienia cech obrazu.
Odszumianie
Autokodery odszumiajace wprowadzają szum do kodowania, w wyniku czego kodowanie jest uszkodzoną wersją oryginalnych danych wejściowych. Ta uszkodzona wersja danych służy do uczenia modelu, ale funkcja straty porównuje wartości wyjściowe z oryginalnymi danymi wejściowymi, a nie z uszkodzonymi danymi wejściowymi. Celem jest umożliwienie sieci odtworzenia oryginalnej, nieuszkodzonej wersji obrazu. Porównując uszkodzone dane z danymi oryginalnymi, sieć dowiaduje się, które cechy danych są najważniejsze, a które nieistotne/uszkodzone. Innymi słowy, aby model odszumił uszkodzone obrazy, musi wyodrębnić ważne cechy danych obrazu.
Wariacja
Autoenkodery wariacyjne działają poprzez przyjęcie założeń dotyczących rozkładu ukrytych zmiennych danych. Wariacyjny autoenkoder generuje rozkład prawdopodobieństwa dla różnych cech obrazów szkoleniowych/ukrytych atrybutów. Podczas uczenia koder tworzy utajone rozkłady dla różnych cech obrazów wejściowych.
Ponieważ model uczy się cech lub obrazów w postaci rozkładów Gaussa, a nie wartości dyskretnych, można go wykorzystać do wygenerowania nowych obrazów. Rozkład Gaussa jest próbkowany w celu utworzenia wektora, który jest wprowadzany do sieci dekodującej, która renderuje obraz na podstawie tego wektora próbek. Zasadniczo model uczy się wspólnych cech obrazów szkoleniowych i przypisuje im pewne prawdopodobieństwo ich wystąpienia. Rozkład prawdopodobieństwa można następnie wykorzystać do inżynierii wstecznej obrazu, generując nowe obrazy przypominające oryginalne obrazy szkoleniowe.
Podczas uczenia sieci zakodowane dane są analizowane, a model rozpoznawania generuje dwa wektory, rysujące średnią i odchylenie standardowe obrazów. Na podstawie tych wartości tworzony jest rozkład. Odbywa się to dla różnych stanów ukrytych. Następnie dekoder pobiera losowe próbki z odpowiedniej dystrybucji i wykorzystuje je do rekonstrukcji początkowych danych wejściowych do sieci.
Aplikacje autoenkodera
Autoenkodery mogą być używane w szerokim zakresie różnorodność zastosowań, ale są one zwykle używane do zadań takich jak redukcja wymiarowości, odszumianie danych, ekstrakcja cech, generowanie obrazu, przewidywanie sekwencji po sekwencji i systemy rekomendacji.
Odszumianie danych polega na użyciu autoenkoderów w celu usunięcia ziarna/szumu z obrazów. Podobnie autoenkoderów można używać do naprawy innych rodzajów uszkodzeń obrazu, takich jak rozmazane obrazy lub brakujące fragmenty obrazów. Redukcja wymiarowości może pomóc sieciom o dużej przepustowości w nauce przydatnych cech obrazów, co oznacza, że autoenkodery można wykorzystać do wspomagania uczenia innych typów sieci neuronowych. Dotyczy to również używania autoenkoderów do ekstrakcji cech, ponieważ autoenkoderów można używać do identyfikowania cech innych zbiorów danych szkoleniowych w celu uczenia innych modeli.
Jeśli chodzi o generowanie obrazu, autoenkodery mogą służyć do generowania fałszywych obrazów ludzkich lub animowanych postaci, co ma zastosowanie w projektowaniu systemów rozpoznawania twarzy lub automatyzacji niektórych aspektów animacji.
Modele przewidywania sekwencji po sekwencji można wykorzystać do określenia czasowej struktury danych, co oznacza, że autoenkoder może zostać użyty do wygenerowania następnego, nawet w sekwencji. Z tego powodu do generowania filmów można wykorzystać autoenkoder. Wreszcie, głębokie autoenkodery można wykorzystać do tworzenia systemów rekomendacji, wychwytując wzorce związane z zainteresowaniami użytkowników, przy czym koder analizuje dane dotyczące zaangażowania użytkowników, a dekoder tworzy rekomendacje pasujące do ustalonych wzorców.
Bloger i programista specjalizujący się w Nauczanie maszynowe i głęboki Learning tematy. Daniel ma nadzieję pomóc innym wykorzystać moc sztucznej inteligencji dla dobra społecznego.
Możesz polubić
W jaki sposób szkolone są modele uczenia maszynowego?
Jak poznać, że systemy syntezy obrazu wytwarzają rzeczywiście „oryginalny” materiał
Microsoft proponuje GODIVA, strukturę uczenia maszynowego zamiany tekstu na wideo
Naukowcy zajmujący się sztuczną inteligencją opracowują metodę ponownego wykorzystania istniejących leków do walki z Covid-19
Co to jest grupowanie K-średnich?
Uczenie nadzorowane i nienadzorowane