Sztuczna inteligencja (AI) zyskała w ostatnich latach znaczną popularność.
Jeśli jesteś inżynierem oprogramowania, informatykiem lub ogólnie entuzjastą nauki o danych, prawdopodobnie intrygują Cię niesamowite zastosowania przetwarzania obrazu, rozpoznawania wzorców i wykrywania obiektów oferowane przez tę dziedzinę.
Najważniejszą subdziedziną AI, o której prawdopodobnie słyszałeś, jest Deep Learning. Ta dziedzina koncentruje się na potężnych algorytmach (instrukcjach programów komputerowych) modelowanych na podstawie funkcji ludzkiego mózgu znanej jako Sieci neuronowe.
W tym artykule omówimy koncepcję sieci neuronowych oraz jak budować, kompilować, dopasowywać i oceniać te modele przy użyciu Python.
Sieci neuronowe
Sieci neuronowe lub NN to szereg algorytmów modelowanych na podstawie biologicznej aktywności ludzkiego mózgu. Sieci neuronowe składają się z węzłów, zwanych również neuronami.
Zbiór węzłów pionowych nazywany jest warstwami. Model składa się z jednego wejścia, jednego wyjścia i kilku warstw ukrytych. Każda warstwa składa się z węzłów, zwanych również neuronami, w których odbywają się obliczenia.
Na poniższym diagramie kółka reprezentują węzły, a pionowy zbiór węzłów reprezentują warstwy. W tym modelu są trzy warstwy.
Węzły jednej warstwy są połączone z kolejną warstwą liniami transmisyjnymi, jak pokazano poniżej.
Nasz zbiór danych składa się z oznaczonych danych. Oznacza to, że każdej jednostce danych przypisano określoną wartość nazwy.
Tak więc w przypadku zbioru danych klasyfikacji zwierząt będziemy mieć obrazy kotów i psów jako nasze dane, z etykietami „kot” i „pies”.
Ważne jest, aby pamiętać, że aby nasz model miał sens, etykiety muszą zostać przekonwertowane na wartości liczbowe, więc nasze etykiety zwierząt mają postać „0” dla kota i „1” dla psa. Zarówno dane, jak i etykiety są przepuszczane przez model.
Learning
Dane są wprowadzane do modelu po jednej jednostce na raz. Dane te są dzielone na porcje i przekazywane przez każdy węzeł modelu. Węzły wykonują operacje matematyczne na tych porcjach.
Nie musisz znać funkcji matematycznych ani obliczeń w tym samouczku, ale ważne jest, aby mieć ogólne pojęcie o działaniu tych modeli. Po serii obliczeń w jednej warstwie dane są przekazywane do następnej warstwy i tak dalej.
Po zakończeniu nasz model przewiduje etykietę danych w warstwie wyjściowej (na przykład w przypadku problemu klasyfikacji zwierząt otrzymujemy prognozę „0” dla kota).
Następnie model porównuje tę przewidywaną wartość z rzeczywistą wartością etykiety.
Jeśli wartości są zgodne, nasz model przyjmie następne dane wejściowe, ale jeśli wartości się różnią, model obliczy różnicę między obiema wartościami, zwaną stratą, i dostosuje obliczenia węzłów, aby następnym razem wytworzyć pasujące etykiety.
Ramy uczenia głębokiego
Aby zbudować sieci neuronowe w kodzie, musimy zaimportować Frameworki do głębokiego uczenia znane jako biblioteki korzystające z naszego zintegrowanego środowiska programistycznego (IDE).
Te frameworki to zbiór gotowych funkcji, które pomogą nam w tym samouczku. Do budowy naszego modelu użyjemy frameworka Keras.
Keras to biblioteka Pythona, która wykorzystuje backend głębokiego uczenia i sztucznej inteligencji o nazwie Tensorflow do łatwego tworzenia sieci NN w postaci prostych modeli sekwencyjnych.
Keras ma również własne, istniejące modele, które również można wykorzystać. W tym samouczku stworzymy własny model za pomocą Keras.
Możesz dowiedzieć się więcej o tej strukturze Deep Learning z Strona Keras.
Budowanie sieci neuronowej (samouczek)
Przejdźmy do budowania sieci neuronowej za pomocą Pythona.
Problem Statement
Sieci neuronowe są rodzajem rozwiązania problemów opartych na sztucznej inteligencji. W tym samouczku omówimy dostępne dane dotyczące cukrzycy Indian Pima tutaj.
UCI Uczenie maszynowe skompilowało ten zbiór danych i zawiera dokumentację medyczną pacjentów z Indii. Nasz model musi przewidywać, czy pacjent zachoruje na cukrzycę w ciągu 5 lat, czy nie.
Ładowanie zbioru danych
Nasz zbiór danych to pojedynczy plik CSV o nazwie „diabetes.csv”, którym można łatwo manipulować za pomocą programu Microsoft Excel.
Przed utworzeniem naszego modelu musimy zaimportować nasz zbiór danych. Możesz to zrobić za pomocą poniższego kodu:
importuj pandy jako pd
dane = pd.read_csv('cukrzyca.csv')
x = data.drop("Wynik")
y = dane[„Wynik”]
Tutaj używamy Pandy Aby móc manipulować danymi naszego pliku CSV, read_csv() jest wbudowaną funkcją Pand, która pozwala nam przechowywać wartości w naszym pliku w zmiennej o nazwie 'data'.
Zmienna x zawiera nasz zbiór danych bez danych wynikowych (etykiet). Osiągamy to dzięki funkcji data.drop(), która usuwa etykiety dla x, podczas gdy y zawiera tylko dane wynikowe (etykiety).
Budowanie modelu sekwencyjnego
Krok 1: Importowanie bibliotek
Najpierw musimy zaimportować TensorFlow i Keras, wraz z pewnymi parametrami wymaganymi dla naszego modelu. Poniższy kod pozwala nam to zrobić:
importuj tensorflow jako tf
z importu tensorflow keras
z tensorflow.keras.models import Sequential
z tensorflow.keras.layers import Aktywacja, Dense
z tensorflow.keras.optimizers importuj Adam
z tensorflow.keras.metrics import categorical_crossentropy
Dla naszego modelu importujemy gęste warstwy. Są to w pełni połączone warstwy; tj. każdy węzeł w warstwie jest w pełni połączony z innym węzłem w następnej warstwie.
Zajmujemy się również importem aktywacja funkcja potrzebna do skalowania danych wysyłanych do węzłów. Optymalizatory zostały również przywiezione, aby zminimalizować straty.
Adam jest znanym optymalizatorem, który sprawia, że obliczenia węzłów aktualizacji naszego modelu są wydajniejsze, a także categorical_crossentropy, czyli rodzaj funkcji straty (oblicza różnicę między rzeczywistymi i przewidywanymi wartościami etykiety), której będziemy używać.
Krok 2: Projektowanie naszego modelu
Tworzony przeze mnie model ma jedną warstwę wejściową (z 16 jednostkami), jedną ukrytą (z 32 jednostkami) i jedną wyjściową (z 2 jednostkami). Liczby te nie są stałe i będą całkowicie zależeć od danego problemu.
Ustawienie odpowiedniej liczby jednostek i warstw to proces, który można z czasem ulepszyć poprzez praktykę. Aktywacja odpowiada rodzajowi skalowania, jakie będziemy wykonywać na naszych danych przed przekazaniem ich przez węzeł.
Relu i Softmax to renomowane funkcje aktywacji do tego zadania.
model = sekwencyjny([
Gęstość(jednostki = 16, input_shape = (1,), aktywacja = 'relu'),
Gęstość (jednostki = 32, aktywacja = 'relu'),
Gęstość (jednostki = 2, aktywacja = 'softmax')
])
Oto jak powinno wyglądać podsumowanie modelu:
Trenowanie modelu
Nasz model zostanie przeszkolony w dwóch krokach, pierwszym jest kompilacja modelu (składanie modelu razem), a drugim dopasowanie modelu do danego zbioru danych.
Można to zrobić za pomocą funkcji model.compile(), a następnie funkcji model.fit().
model.compile(optimizer = Adam(learning_rate = 0.0001), strata = 'binary_crossentropy', metrics = ['accuracy'])
model.fit(x, y, epoki = 30, rozmiar_partia = 10)
Określenie metryki „dokładność” pozwala nam obserwować dokładność naszego modelu podczas uczenia.
Ponieważ nasze etykiety mają postać jedynek i zer, będziemy używać binarnej funkcji straty do obliczenia różnicy między rzeczywistymi a przewidywanymi etykietami.
Zestaw danych jest również dzielony na partie po 10 (batch_size) i zostanie przepuszczony przez model 30 razy (epok). Dla danego zbioru danych x byłoby danymi, a y byłyby etykietami odpowiadającymi danym.
Testowanie modelu za pomocą prognoz
Aby ocenić nasz model, wykonujemy prognozy na danych testowych za pomocą funkcji przewidywania().
prognozy = model.predict(x)
I to wszystko!
Powinieneś teraz dobrze rozumieć głęboki Learning aplikacji, sieci neuronowych, jak ogólnie działają i jak budować, trenować i testować model w kodzie Pythona.
Mam nadzieję, że ten samouczek ułatwi Ci tworzenie i wdrażanie własnych modeli Deep Learning.
Daj nam znać w komentarzach, czy artykuł był pomocny.
Dodaj komentarz