Uczenie głębokie

Ukończone

Uczenie głębokie to zaawansowana forma uczenia maszynowego, która próbuje naśladować sposób, w jaki ludzki mózg uczy się. Kluczem do uczenia głębokiego jest utworzenie sztucznej sieci neuronowej , która symuluje aktywność elektrochemiczną w neuronach biologicznych przy użyciu funkcji matematycznych, jak pokazano tutaj.

Biologiczna sieć neuronowa Sztuczna sieć neuronowa
Diagram naturalnej sieci neuronowej. Diagram sztucznej sieci neuronowej.
Neurony są wyzwalane w odpowiedzi na bodźce elektrochemiczne. Po wyzwoleniu sygnał jest przekazywany do połączonych neuronów. Każdy neuron to funkcja, która działa na wartości wejściowej (x) i wadze (w). Funkcja jest opakowana w funkcję aktywacji , która określa, czy przekazać dane wyjściowe.

Sztuczne sieci neuronowe składają się z wielu warstw neuronów - zasadniczo definiując głęboko zagnieżdżonych funkcji. Ta architektura jest powodem, dla którego technika jest określana jako uczenie głębokie , a modele tworzone przez nią są często nazywane głębokimi sieciami neuronowymi (DNN). Możesz użyć głębokich sieci neuronowych dla wielu rodzajów problemów z uczeniem maszynowymi, w tym regresji i klasyfikacji, a także bardziej wyspecjalizowanych modeli przetwarzania języka naturalnego i przetwarzania obrazów.

Podobnie jak inne techniki uczenia maszynowego omówione w tym module, uczenie głębokie obejmuje dopasowywanie danych szkoleniowych do funkcji, która może przewidywać etykietę (y) na podstawie wartości co najmniej jednej funkcji (x). Funkcja (f(x)) to zewnętrzna warstwa zagnieżdżonej funkcji, w której każda warstwa sieci neuronowej hermetyzuje funkcje działające na wartościach x i wagi (w) skojarzonych z nimi. Algorytm używany do trenowania modelu polega na iteracyjnym przekazaniu wartości funkcji (x) w danych treningowych do przodu przez warstwy w celu obliczenia wartości wyjściowych dla ŷ, weryfikacji modelu w celu oceny, jak daleko od obliczonych wartości ŷ pochodzą ze znanych wartości y (które kwantyfikują poziom błędu lub utraty w modelu) a następnie modyfikując wagi (w), aby zmniejszyć utratę. Wytrenowany model zawiera końcowe wartości wagi, które powodują najdokładniejsze przewidywania.

Przykład — używanie uczenia głębokiego do klasyfikacji

Aby lepiej zrozumieć, jak działa głęboki model sieci neuronowej, przyjrzyjmy się przykładowi, w którym sieć neuronowa jest używana do definiowania modelu klasyfikacji dla gatunków pingwinów.

Diagram sieci neuronowej używanej do klasyfikowania gatunków pingwinów.

Dane funkcji (x) składają się z niektórych pomiarów pingwina. W szczególności miary to:

  • Długość rachunku pingwina.
  • Głębokość rachunku pingwina.
  • Długość flipperów pingwina.
  • Waga pingwina.

W tym przypadku x jest wektorem czterech wartości lub matematycznie x=[x1,x2,x3,x4].

Etykieta, którą próbujemy przewidzieć (y) jest gatunkiem pingwina i że istnieje trzy możliwe gatunki, które może być:

  • Adelie
  • Gentoo
  • Chinstrap

Jest to przykład problemu klasyfikacji, w którym model uczenia maszynowego musi przewidzieć najbardziej prawdopodobną klasę, do której należy obserwacja. Model klasyfikacji umożliwia przewidywanie etykiety składającej się z prawdopodobieństwa dla każdej klasy. Innymi słowy, y jest wektorem trzech wartości prawdopodobieństwa; jeden dla każdej z możliwych klas: [P(y=0|x), P(y=1|x), P(y=2|x)].

Proces wnioskowania przewidywanej klasy pingwinów przy użyciu tej sieci jest następujący:

  1. Wektor funkcji obserwacji pingwina jest podawany do warstwy wejściowej sieci neuronowej, która składa się z neuronu dla każdej wartości x . W tym przykładzie jako dane wejściowe są używane następujące wektory x : [37.3, 16.8, 19.2, 30.0]
  2. Funkcje dla pierwszej warstwy neuronów obliczają ważoną sumę, łącząc wartość xi wagę , i przekażą ją do funkcji aktywacji, która określa, czy spełnia próg, który ma zostać przekazany do następnej warstwy.
  3. Każdy neuron w warstwie jest połączony ze wszystkimi neuronami w następnej warstwie (architektura czasami nazywana w pełni połączoną siecią), więc wyniki każdej warstwy są przekazywane przez sieć do momentu osiągnięcia warstwy wyjściowej.
  4. Warstwa wyjściowa tworzy wektor wartości; w tym przypadku użycie softmax lub podobnej funkcji do obliczenia rozkładu prawdopodobieństwa dla trzech możliwych klas pingwina. W tym przykładzie wektor wyjściowy to : [0.2, 0.7, 0.1]
  5. Elementy wektora reprezentują prawdopodobieństwa dla klas 0, 1 i 2. Druga wartość jest najwyższa, więc model przewiduje, że gatunek pingwina wynosi 1 (Gentoo).

Jak uczy się sieć neuronowa?

Wagi w sieci neuronowej są kluczowe dla sposobu obliczania przewidywanych wartości dla etykiet. Podczas procesu trenowania model uczy się wag, które spowodują najdokładniejsze przewidywania. Przyjrzyjmy się nieco bardziej szczegółowo procesowi trenowania, aby zrozumieć, jak odbywa się ta nauka.

Diagram przedstawiający trenowanie, ocenianie i optymalizowanie sieci neuronowej.

  1. Zestawy danych trenowania i walidacji są definiowane, a funkcje trenowania są przekazywane do warstwy wejściowej.
  2. Neurony w każdej warstwie sieci stosują swoje wagi (które są początkowo przypisywane losowo) i przekażą dane za pośrednictwem sieci.
  3. Warstwa wyjściowa tworzy wektor zawierający wartości obliczeniowe dla wartości ŷ. Na przykład dane wyjściowe przewidywania klasy pingwinów mogą mieć wartość [0.3. 0.1. 0.6].
  4. Funkcja utraty służy do porównywania przewidywanych wartości ŷ ze znanymi wartościami y i agregowania różnicy (nazywanej utratą). Jeśli na przykład znana klasa dla przypadku zwracającego dane wyjściowe w poprzednim kroku to Chinstrap, wartość y powinna być [0.0, 0.0, 1.0]. Różnica bezwzględna między tym a wektorem ŷ to [0.3, 0.1, 0.4]. W rzeczywistości funkcja utraty oblicza agregację wariancji dla wielu przypadków i podsumowuje ją jako pojedynczą wartość straty .
  5. Ponieważ cała sieć jest zasadniczo jedną dużą funkcją zagnieżdżona, funkcja optymalizacji może użyć różnicowego rachunku kalkulowego do oceny wpływu każdej wagi w sieci na utratę i określić, jak można je dostosować (w górę lub w dół), aby zmniejszyć ilość całkowitej utraty. Konkretna technika optymalizacji może się różnić, ale zwykle obejmuje podejście spadku gradientu , w którym każda waga jest zwiększana lub zmniejszana w celu zminimalizowania utraty.
  6. Zmiany wag są z powrotem propagowane do warstw w sieci, zastępując wcześniej używane wartości.
  7. Proces jest powtarzany w wielu iteracji (nazywanych epokami), dopóki strata nie zostanie zminimalizowana, a model będzie przewidywał prawidłowo.

Uwaga

Chociaż łatwiej jest myśleć o każdym przypadku w danych treningowych przekazywanych przez sieć pojedynczo, w rzeczywistości dane są wsadowe do macierzy i przetwarzane przy użyciu obliczeń algebraicznych liniowych. Z tego powodu trenowanie sieci neuronowej jest najlepiej wykonywane na komputerach z graficznymi jednostkami przetwarzania (GPU), które są zoptymalizowane pod kątem manipulowania wektorami i macierzami.