tl;dr:

Syjamska sieć neuronowa (SNN) to klasyfikator podobieństwa, który wykorzystuje cechy dyskryminacyjne do uogólniania na nieznane kategorie w danym rozkładzie. SNN można wykorzystać jako ekstraktor funkcji, a później można zamontować inne mechanizmy ML, aby uzyskać etykietę prawdopodobieństwa i/lub klasy. Architektura sieci, inspirowana bliźniakami syjamskimi, obejmuje wiele identycznych podsieci neuronowych konwolucyjnych (CNN), które mają te same wagi i odchylenia. Podczas szkolenia CNN tworzy Osadzone treści, które są przetwarzane przez warstwę dystansową. Strata jest następnie obliczana przy użyciu Osadzania odległości i aktualizowana za pomocą Stochastycznego opadania gradientuz funkcją Propagacja wsteczna. Podczas wnioskowania CNN tworzy Osadzenia, które mogą być wykorzystywane przez maszynę wektorów nośnych (SVM).

Ten artykuł jest pierwszym z dwuczęściowej serii, która skupi się na zapewnieniu czytelnikowi ogólnego przeglądu tego, jak można wykorzystać SNN jako ekstraktor funkcji. Drugi artykuł z tej serii dostarczy informacji czytelnikowi samouczek Pythona, który wyjaśni, w jaki sposób wstępnie wytrenowany SNN, przeszkolony na zbiorze danych Omniglot, może zostać użyty do dokładnej klasyfikacji próbek obrazów ze zbioru danych MNIST.

Co to jest syjamska sieć neuronowa?

SNN to klasyfikator podobieństwa, który wykorzystuje cechy dyskryminacyjne do uogólniania na nieznane kategorie w danym rozkładzie. Jego architektura, inspirowana bliźniakami syjamskimi, może pochwalić się wieloma identycznymi konwolucyjnymi podsieciami neuronowymi (CNN), które mają te same wagi i odchylenia. Podsieci pracują wspólnie nad różnymi obrazami wejściowymi, aby wytworzyć porównywalne wektory wyjściowe – zwane Osadzeniem. Wartość straty oblicza się na podstawie Osadzonych, które są obliczane dla każdego odpowiedniego obrazu. Na koniec wartość straty jest wykorzystywana do jednoczesnej aktualizacji wag i odchyleń podsieci CNN, tak aby podsieci pozostały identyczne. Podobnie jak w przypadku większości tradycyjnych modeli głębokiego uczenia się, model jest optymalizowany za pomocą Stochastycznego opadania gradientu z propagacją wsteczną.

Profesjonaliści SNN

  • Sieci SNN uczą się funkcji podobieństwa i można ich używać do rozróżnienia, czy dwa obrazy należą do tej samej klasy, czy nie. Dlatego ten typ sieci neuronowej można wykorzystać do zadań klasyfikacji obrazów
  • Tradycyjne sieci neuronowe uczą się przewidywać klasy; stanowi to problem, gdy konieczne jest dodanie/usunięcie klasy. Po przeszkoleniu sieci SNN można jej użyć do kategoryzowania danych na klasy, których model nigdy „nie widział”
  • Sieci SNN można stosować do Klasyfikacji K-Shot —Ogólnie rzecz biorąc, Klasyfikacja obrazów k-shot ma na celu uczenie klasyfikatorów za pomocą tylko k-obrazów w każdej klasie. Co więcej, sieci SNN są bardziej odporne na brak równowagi klasowej w porównaniu z tradycyjnymi technikami Deep Learning

Wady SNN

  • Ostateczny wynik SNN to wartość podobieństwa, a nie prawdopodobieństwo. Jeśli wymagane jest prawdopodobieństwo, SNN można zaimplementować jako ekstraktor funkcji, a inne mechanizmy ML można zamontować w sieci neuronowej
  • Architektura sieci neuronowej jest bardziej skomplikowana. W zależności od używanej funkcji straty może być konieczne utworzenie niestandardowej pętli szkoleniowej (zakładając, że nie ma dostępnego repozytorium kodu, z którego można by skorzystać), aby umożliwić obliczenie straty i propagację wsteczną. Jeśli SNN ma być traktowany jako ekstraktor funkcji, należy dodać dodatkowe mechanizmy ML, np. warstwy w pełni/gęsto połączone, maszyny wektorów wsparcia twardego/miękkiego ) itp.
  • Wymaga więcej czasu na szkolenie w porównaniu z tradycyjnymi architekturami sieci neuronowych, ponieważ do wytworzenia dokładnego modelu wymagana jest duża liczba kombinacji próbek szkoleniowych, niezbędnych dla mechanizmu uczenia się SNN

Zastosowania sieci SNN w świecie rzeczywistym

Przykłady obejmują między innymi:

  • Rozpoznawanie twarzy
  • Weryfikacja podpisu
  • Wykrywanie oszustw związanych z banknotami
  • Klasyfikacja dźwięku

Podejmijmy zadanie wykrywania oszustw związanych z banknotami. Obecnie istnieje wiele różnych nominałów banknotów dla danej waluty. Podobnie istnieje wiele fałszywych nominałów banknotów dla danej waluty. Uczenie tradycyjnych sieci neuronowych klasyfikacji obrazów wymagałoby dużej liczby prawdziwych i fałszywych nominałów banknotów, aby umożliwić dokładne wykrywanie oszustw związanych z banknotami. W rzeczywistości tradycyjna sieć neuronowa musiałaby widzieć każdy prawdziwy nominał banknotu dla każdej waluty i dużą liczbę powiązanych z nią podróbek. Dla porównania, do tego zadania można zastosować SNN, który wymagałby mniej danych. Oto jeden ze sposobów wykorzystania SNN do wykrywania oszustw związanych z banknotami:

  1. Weź po kilka nominałów banknotów z każdej waluty – nie muszą to być wszystkie
  2. Szkolenie* SNN w zakresie kombinacji wybranych nominałów banknotów i powiązanych z nimi podróbek dla każdej waluty
  3. Weź pozostałe nominały banknotów dla każdej waluty i przepuść je przez SNN, aby uzyskać Osadzanie
  4. Znajdź i zapisz centroidy (wektor określający średnią wszystkich Osadzonychdla danego klastra) dla każdego klastra nominałów dla każdej waluty. Do utworzenia etykiety klasy można użyć wielu miękkich maszyn SVM
  5. Prześlij obraz nominału banknotu przez przeszkolony SNN i oceń odległość Osadzenia, która jest zwracana do każdego z centroidów
  6. Jeżeli banknot jest prawdziwy, powinien znajdować się w niewielkiej odległości pomiędzy powiązanym z nim środkiem ciężkości prawdziwego nominału. Powinien także charakteryzować się dużymi odległościami między centroidami innych rzeczywistych nominałów waluty
  7. Jeżeli banknot jest fałszywy, powinna znajdować się w dużej odległości pomiędzy powiązanym z nim środkiem ciężkości prawdziwego nominału. Powinien także charakteryzować się dużymi odległościami między centroidami innych rzeczywistych nominałów waluty

Jak wygląda architektura SNN?

Jak wspomniano wcześniej, SNN może służyć jako ekstraktor funkcji, a później można zamontować inne mechanizmy ML, aby uzyskać etykietę prawdopodobieństwa i/lub klasy. W tym artykule nazwa SNN zostanie wyjaśniona tak, jakby była ekstraktorem funkcji i dodana zostanie pojedyncza twarda maszyna SVM w celu utworzenia etykiety klasy. Ekstraktor funkcji SNN opisany w tym artykule charakteryzuje się siecią potrójną, czyli ma trzy identyczne podsieci CNN.

Należy zauważyć, że SNN w rzeczywistości nie ma wielu podsieci CNN załadowanych do pamięci procesora graficznego. Raczej przepuszczane są wszystkie dwu-, trójkowe lub poczwórne obrazy, w zależności od rodzaju przyjętej funkcji straty. Strata jest następnie obliczana na podstawie wyjściowych osadzania odległości, a wagi i odchylenia podsieci są aktualizowane za pomocą propagacji wstecznej. Powtarza się to aż do zbieżności.

SNN jako ekstraktor funkcji:

Konwolucyjna sieć neuronowa (CNN)

  • Tworzy Osadzenia, które w rzeczywistości są po prostu spłaszczonymi mapami obiektów 1D
  • W trybie Treningu Osadzeniasą przekazywane do warstwy odległości
  • W trybie Inferencja Osadzaniasą przekazywane do SVM
  • CNN (często określany jako model osadzania, koder lub szkielet) można wybrać z wcześniej ustalonej „fabryki szkieletu” dla danej aplikacji, dzięki czemu można wykorzystać Transfer Learning np. VGG16/Resnet50/InceptionV3 przeszkolony w zbiorze danych ImageNet

Warstwa odległości

  • Oblicza odległość pomiędzy Osadzeniem. W przypadku sieci potrójnej (definiowanej przez stratę potrójną) Osadzanie na odległość to:
    - Dodatnie Osadzanie na odległość (kotwiczenie i Osadzanie dodatnie )
    - Osadzanie negatywów na odległość (kotwiczenie i Osadzanie negatywów)
  • Odległość oblicza się na podstawie kwadratu euklidesowego (zwanego również normą L2)

Funkcja straty

  • Straty oblicza się na podstawie odległości obliczonych na podstawie Osadzenia
  • Aby zapobiec trywialnemu rozwiązaniu, używany jest hiperparametr, zwany marginesem, aby zapewnić, że Osadzanie na odległość ujemną jest znacznie większe niż Osadzanie na odległość dodatnią
  • Dostępnych jest kilka funkcji utraty:
    - Strata kontrastowa (architektura sieci podwójnej)
    - Strata potrójna (architektura sieci potrójnej)
    - Strata poczwórna (architektura sieci poczwórnej)

*Autor podejrzewa, że ​​strata poczwórna byłaby idealna do opisanego powyżej zadania wykrywania oszustw na banknotach. W porównaniu do straty potrójnej, strata poczwórna może prowadzić do wyniku modelu, który wytwarza większe zróżnicowanie międzyklasowe i mniejsze zróżnicowanie wewnątrzklasowe.

SVM jako klasyfikator

Liniowy SVM to technika nadzorowanego uczenia się, która umożliwia kategoryzację/klasyfikację danych poprzez oddzielenie danych liniową hiperpłaszczyzną (lub linią, jeśli dane są 2D). Jeśli danych nie można oddzielić liniowo, punkty danych można mapować do przestrzeni cech o wyższych wymiarach, dopóki SVM nie będzie w stanie oddzielić klas. SVM próbuje zoptymalizować położenie (położenie i orientację) hiperpłaszczyzny, tak aby zapewnić największy margines pomiędzy punktami danych różnych klas. Punkty danych dla każdej klasy, które leżą na największym marginesie (określanym jako prostopadła odległość między punktami danych różnych klas) nazywane są wektorami nośnymi. Niektóre kluczowe funkcje SVM to między innymi:

  • Pasuje do danych szkoleniowych (zamiast podzbioru szkoleniowego można zastosować podzbiór walidacyjny, aby dodać kolejny poziom regularyzacji) Osadzenia produkowane z CNN (warstwa odległości i funkcja utraty potrójnej są niepotrzebne po szkoleniu i dlatego są usuwane)
  • Potrafi implementować różne jądra, np. liniowe, gaussowskie, sigmoidalne, wielomianowe itp., aby oddzielić punkty danych o różnych rozkładach prawdopodobieństwa
  • Tworzy etykietę klasy

Dziękuję za przeczytanie. Rozważ subskrypcję i/lub wsparcie finansowe mnie https://gofund.me/c397684d