Model klasyfikacji wykorzystujący sztuczne sieci neuronowe (ANN)
Opublikowany: 2020-12-01W terminologii uczenia maszynowego Klasyfikacja odnosi się do problemu modelowania predykcyjnego, w którym dane wejściowe są klasyfikowane jako jedna z predefiniowanych klas oznaczonych etykietami. Na przykład przewidywanie Tak lub Nie, Prawda lub Fałsz należy do kategorii Klasyfikacji Binarnej, ponieważ liczba wyników jest ograniczona do dwóch etykiet.
Podobnie wyniki mające wiele klas, takie jak klasyfikowanie różnych grup wiekowych, nazywane są problemami klasyfikacji wieloklasowej. Problemy z klasyfikacją są jednym z najczęściej używanych lub definiowanych typów problemów ML, które można wykorzystać w różnych przypadkach użycia. Istnieją różne modele uczenia maszynowego, które można wykorzystać do problemów z klasyfikacją.
Począwszy od technik Bagging do Boosting, chociaż ML jest więcej niż zdolny do obsługi przypadków użycia klasyfikacji, sieci neuronowe pojawiają się, gdy mamy dużą liczbę klas wyjściowych i dużą ilość danych wspierających wydajność modelu. W przyszłości przyjrzymy się, jak możemy zaimplementować model klasyfikacji przy użyciu sieci neuronowych na Keras (Python).
Ucz się kursu Sztucznej Inteligencji z najlepszych światowych uniwersytetów. Zdobywaj programy Masters, Executive PGP lub Advanced Certificate Programy, aby przyspieszyć swoją karierę.
Spis treści
Sieci neuronowe
Sieci neuronowe są luźno reprezentatywne dla procesu uczenia się ludzkiego mózgu. Sztuczna sieć neuronowa składa się z neuronów, które z kolei odpowiadają za tworzenie warstw. Te neurony są również znane jako parametry dostrojone.
Dane wyjściowe z każdej warstwy są przekazywane do następnej warstwy. W każdej warstwie istnieją różne nieliniowe funkcje aktywacji, które pomagają w procesie uczenia się i uzyskiwaniu wyników każdej warstwy. Warstwa wyjściowa jest również znana jako neurony końcowe.

Źródło: Wikipedia
Wagi związane z neuronami i odpowiedzialne za ogólne przewidywania są aktualizowane w każdej epoce. Szybkość uczenia się jest zoptymalizowana za pomocą różnych optymalizatorów. Każda sieć neuronowa jest wyposażona w funkcję kosztów, która jest minimalizowana w miarę kontynuowania uczenia. Stosowane są wtedy najlepsze wagi, dla których funkcja kosztu daje najlepsze wyniki.
Przeczytaj: Samouczek wykrywania obiektów TensorFlow dla początkujących
Problem z klasyfikacją
W tym artykule użyjemy Keras do zbudowania sieci neuronowej. Keras można bezpośrednio importować w Pythonie za pomocą następujących poleceń.
importuj tensorflow jako tf
z tensorflow import keras
z keras.models import Sequential
z keras.layers importuj Dense
Zbiór danych i zmienna docelowa
Będziemy korzystać z zestawu danych Diabetes, który będzie miał następujące funkcje:
Zmienne wejściowe (X):
- Ciąże: Ile razy w ciąży
- Glukoza: Stężenie glukozy w osoczu po 2 godzinach w doustnym teście tolerancji glukozy
- Ciśnienie krwi: Rozkurczowe ciśnienie krwi (mm Hg)
- SkinThickness: Grubość fałdu skórnego w tricepsie (mm)
- Insulina: 2-godzinna insulina w surowicy (j.m./ml)
- BMI: Wskaźnik masy ciała (waga w kg/(wzrost w m)^2)
- DiabetesPedigreeFunction: Funkcja rodowodu cukrzycy
- Wiek: Wiek (lata)
Zmienne wyjściowe (y):
Wynik: zmienna klasy (0 lub 1) [pacjent ma cukrzycę lub nie]
# załaduj zbiór danych
df= loadtxt('pima-indianie-cukrzyca.csv', separator=',')
# Podziel dane na X (wejście) i Y (wyjście)
X = zbiór danych[:,0:8]
y = zbiór danych[:,8]
Zdefiniuj model Kerasa
Budowę sieci neuronowej możemy rozpocząć za pomocą modeli sekwencyjnych. To odgórne podejście pomaga zbudować architekturę sieci neuronowej i bawić się kształtem i warstwami. Pierwsza warstwa będzie miała liczbę funkcji, które można naprawić za pomocą input_dim. Ustawimy go na 8 w tym stanie.
Tworzenie sieci neuronowych nie jest bardzo łatwym procesem. Jest wiele prób i błędów, które mają miejsce przed zbudowaniem dobrego modelu. Zbudujemy strukturę sieci Fully Connected przy użyciu klasy Dense w Keras. Neuron liczy się jako pierwszy argument dostarczany do gęstej warstwy.
Funkcję aktywacji można ustawić za pomocą argumentu aktywacji. W tym przypadku użyjemy Rectified Linear Unit jako funkcji aktywacji. Istnieją inne opcje, takie jak Sigmoid lub TanH, ale RELU jest bardzo uogólnioną i lepszą opcją.

# zdefiniuj model keras
model = sekwencyjny()
model.add(Dense(12, input_dim=8, aktywacja='relu'))
model.add(Dense(8, aktywacja='relu'))
model.add(Gęsty(1, aktywacja='sigmoid'))
Skompiluj model Keras
Kompilacja modelu to kolejny krok po zdefiniowaniu modelu. Tensorflow służy do kompilacji modelu. Kompilacja to proces, w którym ustawiane są parametry do trenowania i prognozowania modelu. Procesor/GPU lub pamięci rozproszone mogą być używane w tle.
Musimy określić funkcję straty, która jest używana do oceny wag dla różnych warstw. Optymalizator dostosowuje szybkość uczenia się i przechodzi przez różne zestawy wag. W tym przypadku użyjemy Binary Cross Entropy jako funkcji straty. W przypadku optymalizatora użyjemy ADAM, który jest wydajnym algorytmem stochastycznego spadku gradientu.
Jest bardzo popularnie używany do strojenia. Wreszcie, ponieważ jest to problem z klasyfikacją, zbierzemy i zaraportujemy dokładność klasyfikacji, zdefiniowaną za pomocą argumentu metrics. W tym przypadku użyjemy dokładności.
# skompiluj model Keras
model.compile(loss='binary_crossentropy', Optimizer='adam', metrics=['accuracy'])
Dopasowanie i ocena modelu
Dopasowywanie modelu jest zasadniczo znane jako uczenie modelu. Po skompilowaniu modelu model jest gotowy do wydajnego przeglądania danych i samouczenia się. Funkcja fit() firmy Keras może być wykorzystana w procesie uczenia modelu. Dwa główne parametry używane przed uczeniem modelu to:
- Epoki: jedno przejście przez cały zbiór danych.
- Wielkość partii: Wagi są aktualizowane przy każdym rozmiarze partii. Epoki składają się z równomiernie rozłożonych partii danych.
# dopasuj model keras do zbioru danych
model.fit(X, y, epoki=150, rozmiar_partii=10)
W tym procesie wykorzystywany jest procesor graficzny lub procesor. Szkolenie może być bardzo długim procesem w zależności od epok, wielkości partii i, co najważniejsze, wielkości Danych.
Możemy również ocenić model w uczącym zbiorze danych za pomocą funkcji assessment(). Dane można podzielić na zbiory uczące i testujące, a testowanie X i Y można wykorzystać do oceny modelu.
Dla każdej pary danych wejściowych i wyjściowych wygeneruje to prognozę i zbierze wyniki, w tym średnią stratę i wszelkie zainstalowane przez nas pomiary, takie jak precyzja.
Lista dwóch wartości zostanie zwrócona przez funkcję assessment(). Pierwszym będzie utrata modelu w zestawie danych, a drugim dokładność modelu w zestawie danych. Interesuje nas tylko dokładność raportu, więc pominiemy wagę straty.
# oceń model Keras

_, dokładność = model.evaluate(Xtest, ytest)
print('Dokładność: %.2f' % (dokładność*100))
Przeczytaj także: Wprowadzenie do modelu sieci neuronowej
Wniosek
Stworzyliśmy i oceniliśmy opartą na klasyfikacji sieć neuronową. Chociaż w tym przypadku użyte dane były niewielkie, sieci neuronowe są w większości odpowiednie dla dużych liczbowych zestawów danych.
Zamówienie zaawansowanego programu certyfikatów upGrad w zakresie uczenia maszynowego i NLP. Ten kurs został stworzony z myślą o różnych rodzajach uczniów zainteresowanych uczeniem maszynowym, oferując mentoring 1-1 i wiele więcej.
Jak można wykorzystać sieci neuronowe do klasyfikacji?
Klasyfikacja polega na kategoryzowaniu obiektów w grupy. Typ klasyfikacji to taki, w którym przewiduje się wiele klas. W sieciach neuronowych jednostki neuronowe są zorganizowane w warstwy. W pierwszej warstwie dane wejściowe są przetwarzane i wytwarzane są dane wyjściowe. Ten wynik jest następnie przesyłany przez pozostałe warstwy w celu uzyskania ostatecznego wyniku. Te same dane wejściowe są przetwarzane przez warstwę w celu uzyskania różnych danych wyjściowych. Można to przedstawić za pomocą wielowarstwowego perceptronu. Typ sieci neuronowej używanej do klasyfikacji zależy od zbioru danych, ale sieci neuronowe zostały wykorzystane do problemów z klasyfikacją.
Dlaczego sztuczne sieci neuronowe nadają się do klasyfikacji?
Aby odpowiedzieć na to pytanie, musimy zrozumieć podstawową zasadę sieci neuronowych oraz problem, który sieci neuronowe mają rozwiązać. Jak sama nazwa wskazuje, sieci neuronowe są biologicznie inspirowanym modelem ludzkiego mózgu. Podstawowa idea jest taka, że chcemy modelować neuron jako funkcję matematyczną. Każdy neuron pobiera dane wejściowe od innych neuronów i oblicza dane wyjściowe. Następnie łączymy te neurony w sposób, który naśladuje sieć neuronową w mózgu. Celem jest nauczenie się sieci, która może pobierać niektóre dane i generować odpowiednie wyniki.
Kiedy powinniśmy używać sztucznych sieci neuronowych?
Sztuczne sieci neuronowe są używane w sytuacjach, w których próbujesz powielić działanie żywych organizmów lub wykryć wzorce w danych. Diagnozy medyczne, rozpoznawanie mowy, wizualizacja danych i przewidywanie odręcznych cyfr to dobre przypadki użycia SSN. Sztuczne sieci neuronowe są używane, gdy istnieje potrzeba zrozumienia złożonych relacji między wejściami i wyjściami. Na przykład w zmiennych może być dużo szumu i może być trudno zrozumieć relacje między tymi zmiennymi. Dlatego stosowanie sztucznych sieci neuronowych jest powszechną praktyką w celu zachowania wiedzy i danych.