**Budowanie i Trenowanie Prostej Sieci Neuronowej

W dzisiejszej lekcji nauczymy się, jak zbudować i wytrenować prostą sieć neuronową od podstaw, skupiając się na praktycznym aspekcie głębokiego uczenia. Będziemy używać biblioteki TensorFlow i Keras, aby zrozumieć, jak dane przepływają przez sieć i jak dostosować parametry, aby uzyskać pożądane wyniki.

Learning Objectives

  • Zrozumienie podstawowych bloków budulcowych sieci neuronowych (warstwy, funkcje aktywacji).
  • Implementacja prostej sieci neuronowej z użyciem biblioteki Keras w Pythonie.
  • Trenowanie sieci na prostym zestawie danych i ocena jej wydajności.
  • Interpretacja wyników i zrozumienie, jak optymalizować proces uczenia.

Lesson Content

Podstawy Sieci Neuronowych: Warstwy i Funkcje Aktywacji

Sieci neuronowe to systemy inspirowane biologią, zbudowane z połączonych warstw neuronów. Każda warstwa przetwarza dane i przekazuje je do kolejnej warstwy. Kluczowymi elementami są:

  • Warstwy (Layers): Podstawowe bloki konstrukcyjne sieci. Mogą być warstwami gęstymi (fully connected), konwolucyjnymi (dla obrazów) lub rekurencyjnymi (dla sekwencji danych).
  • Neurony (Neurons): Podstawowe jednostki obliczeniowe w warstwach. Otrzymują wejścia, dokonują obliczeń (mnożenie wejść przez wagi, sumowanie i dodanie biasu) i przekazują wynik do funkcji aktywacji.
  • Funkcje Aktywacji (Activation Functions): Wprowadzają nieliniowość do modelu, umożliwiając sieci modelowanie bardziej złożonych wzorców. Przykłady: sigmoid, ReLU (Rectified Linear Unit), tanh.

Przykład: Wyobraź sobie warstwę gęstą z 3 neuronami. Każdy neuron ma wagę dla każdego wejścia i bias. Dane wejściowe (np. cechy obrazu) trafiają do warstwy, są przetwarzane przez neurony i przechodzą przez funkcję aktywacji, generując wyjście.

Budowanie Prostej Sieci Neuronowej w Keras

Keras to wysokopoziomowa biblioteka API do budowy i trenowania modeli uczenia maszynowego, uruchamiana na TensorFlow, Theano lub CNTK. Ułatwia budowę sieci neuronowych.

Krok 1: Importowanie bibliotek:

import tensorflow as tf
from tensorflow import keras

Krok 2: Definiowanie modelu:

model = keras.Sequential([
    keras.layers.Dense(128, activation='relu', input_shape=(784,)), # Warstwa gęsta, ReLU, 784 wejść
    keras.layers.Dense(10, activation='softmax')                   # Warstwa wyjściowa, Softmax, 10 wyjść (np. cyfry 0-9)
])

Krok 3: Kompilacja modelu:

model.compile(optimizer='adam',  # Optymalizator
              loss='sparse_categorical_crossentropy', # Funkcja straty
              metrics=['accuracy'])   # Metryki oceny

Krok 4: Trenowanie modelu:

(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data() # MNIST dataset
x_train = x_train.reshape(60000, 784) # Reshape do 784
x_test = x_test.reshape(10000, 784) 
x_train = x_train.astype('float32') / 255 # Normalizacja
x_test = x_test.astype('float32') / 255

model.fit(x_train, y_train, epochs=5) # Trenowanie, 5 epok

Krok 5: Ocena modelu:

loss, accuracy = model.evaluate(x_test, y_test)
print(f'Dokładność na zbiorze testowym: {accuracy}')

Ten kod tworzy prostą sieć do rozpoznawania cyfr z zestawu danych MNIST. Zwróć uwagę na użycie Sequential do budowy modelu warstwa po warstwie, funkcje relu i softmax, oraz adam jako optymalizator.

Optymalizacja i Interpretacja Wyników

Po wytrenowaniu, ważne jest zrozumienie, jak dobrze sieć działa i jak ją ulepszyć.

  • Metryki: Dokładność (accuracy), precyzja, czułość (recall), F1-score – pomagają ocenić wydajność.
  • Funkcja Straty (Loss Function): Mierzy, jak dobrze model dopasowuje się do danych treningowych. Przykład: sparse_categorical_crossentropy. Model stara się zminimalizować tę stratę.
  • Optymalizatory: Algorytmy, które modyfikują wagi sieci w celu minimalizacji funkcji straty. Przykłady: adam, sgd.
  • Epoki (Epochs): Liczba iteracji przez cały zbiór danych treningowych. Zbyt mała liczba epok może prowadzić do niedouczenia (underfitting), a zbyt duża do przeuczenia (overfitting).
  • Walidacja: Używanie osobnego zestawu danych walidacyjnych do oceny wydajności modelu podczas treningu, pomaga w wykrywaniu przeuczenia.

Dostrajanie Parametrów: Eksperymentuj z różnymi funkcjami aktywacji, liczbą warstw, liczbą neuronów w warstwach i parametrami optymalizatora, aby poprawić wyniki.

Deep Dive

Explore advanced insights, examples, and bonus exercises to deepen understanding.

Rozszerzone Nauczanie: Głębokie Uczenie - Dzień 5

Witaj! Kontynuujemy naszą podróż po świecie głębokiego uczenia. Dzisiaj, po zbudowaniu i wytrenowaniu prostej sieci neuronowej, zagłębimy się bardziej w szczegóły, poszerzając naszą wiedzę i umiejętności. Przygotuj się na jeszcze więcej praktyki i ciekawych aspektów!

Deep Dive: Architektura Sieci Neuronowych

Poza podstawowymi warstwami (wejściowa, ukryte, wyjściowa) i funkcjami aktywacji (np. ReLU, Sigmoid), warto zrozumieć różne typy warstw i ich specyficzne zastosowania. Na przykład, warstwy konwolucyjne (Conv2D) są kluczowe w przetwarzaniu obrazów, wykrywaniu cech i rozpoznawaniu wzorców. Z kolei warstwy rekurencyjne (LSTM, GRU) świetnie radzą sobie z danymi sekwencyjnymi, jak tekst czy szeregi czasowe.

Architektura Sieci:

  • Warstwy Konwolucyjne (Conv2D): Używane w przetwarzaniu obrazów do wykrywania cech (krawędzie, kształty) przez zastosowanie filtrów.
  • Warstwy Max Pooling: Redukują wymiary, zachowując najważniejsze cechy, co przyspiesza uczenie i redukuje ryzyko przeuczenia.
  • Warstwy Rekurencyjne (LSTM, GRU): Zaprojektowane do analizy danych sekwencyjnych, takich jak język naturalny (NLP) czy dane czasowe. Posiadają pamięć, która pozwala im analizować kontekst.

Dodatkowo, zrozumienie różnych strategii optymalizacji (np. Adam, SGD) i funkcji kosztu (np. entropia krzyżowa, błąd średniokwadratowy) jest kluczowe dla efektywnego uczenia. Pamiętaj, dobór odpowiednich parametrów to klucz do sukcesu! Można to porównać do doboru składników w przepisie – źle dobrane składniki (parametry) prowadzą do niesmacznego rezultatu (słabej wydajności modelu).

Bonus Exercises

Ćwiczenie 1: Eksperymentowanie z Warstwami

Zmodyfikuj prostą sieć neuronową, którą zbudowałeś wcześniej. Dodaj kolejną warstwę ukrytą. Zmień funkcję aktywacji w jednej z warstw (np. z ReLU na Tanh). Sprawdź, jak te zmiany wpływają na wydajność sieci na tym samym zestawie danych. Zanotuj i porównaj wyniki.

Ćwiczenie 2: Optymalizacja Hiperparametrów

Wykorzystaj różne optymalizatory (np. Adam, SGD) i dostosuj współczynnik uczenia (learning rate). Wykorzystaj różne funkcje kosztu (np. mean_squared_error, categorical_crossentropy), jeśli to odpowiednie dla Twojego problemu. Które kombinacje dają najlepsze wyniki na Twoim zestawie danych? Pamiętaj, aby kontrolować proces i dokumentować swoje eksperymenty!

Real-World Connections: Zastosowania w Rzeczywistości

Głębokie uczenie to wszechobecne narzędzie. Wyobraź sobie:

  • Rozpoznawanie Obrazów: Automatyczne diagnozowanie chorób na podstawie zdjęć rentgenowskich, identyfikacja obiektów na zdjęciach satelitarnych (np. monitorowanie lasów). W Polsce wykorzystuje się to np. w rozpoznawaniu nowotworów skóry z wykorzystaniem zdjęć dermatoskopowych.
  • Przetwarzanie Języka Naturalnego (NLP): Tłumaczenie automatyczne (np. Google Translate), analiza sentymentu (rozpoznawanie pozytywnych i negatywnych opinii o produktach). Może być wykorzystywane do automatycznego generowania odpowiedzi na zapytania w języku polskim w obsłudze klienta.
  • Systemy Rekomendacji: Sugestie produktów na Allegro, rekomendacje filmów na Netflixie – wszystko oparte na głębokim uczeniu, analizujące Twoje preferencje.

Challenge Yourself: Zaawansowane Zadania

Wyzwanie: Spróbuj zaimplementować sieć neuronową dla bardziej złożonego zestawu danych, na przykład datasetu MNIST (rozpoznawanie cyfr pisanych ręcznie) lub CIFAR-10 (rozpoznawanie obrazów). Użyj warstw konwolucyjnych, aby uzyskać lepsze wyniki. Porównaj z prostą siecią opartą na warstwach gęstych.

Further Learning: Gdzie Szukać Dalej?

  • Dokumentacja TensorFlow i Keras: Sprawdź oficjalne dokumentacje, aby pogłębić swoją wiedzę na temat poszczególnych funkcji i metod.
  • Kursy Online: Platformy takie jak Coursera, Udacity, czy edX oferują zaawansowane kursy z głębokiego uczenia. Wyszukaj kursy prowadzone przez polskich wykładowców, aby ułatwić sobie naukę.
  • Artykuły Naukowe: Zapoznaj się z artykułami naukowymi (np. na ArXiv) dotyczącymi najnowszych osiągnięć w dziedzinie głębokiego uczenia.
  • Kaggle: Weź udział w konkursach na Kaggle, aby przetestować swoje umiejętności i uczyć się od innych.

Interactive Exercises

Ćwiczenie 1: Budowanie i Trenowanie w Google Colab

Uruchom powyższy kod budowy i trenowania prostej sieci dla MNIST w Google Colab. Zmodyfikuj liczbę epok i oceń wpływ na dokładność. Dodaj kolejną warstwę gęstą i sprawdź, czy to poprawia wyniki. Zapisz i udostępnij swoje notatki w Colab.

Ćwiczenie 2: Zmiana Parametrów

Zmień funkcję aktywacji w pierwszej warstwie na `sigmoid`. Porównaj wyniki z użyciem `relu`. Co zauważasz? Dlaczego `relu` jest często preferowane?

Ćwiczenie 3: Eksperyment z Optymalizatorem

Zmień optymalizator na `sgd` i ustaw parametr `learning_rate` na 0.01. Jak to wpływa na proces uczenia i dokładność? Porównaj z `adam`.

Knowledge Check

Question 1: Co robi funkcja aktywacji w sieci neuronowej?

Question 2: Która biblioteka jest używana do budowy sieci neuronowych w Keras?

Question 3: Co to jest 'epoch' podczas trenowania sieci neuronowej?

Question 4: Jaka funkcja straty jest często używana do problemów klasyfikacji wieloklasowej?

Question 5: Jak nazywa się proces, w którym model uczy się zbyt dobrze na danych treningowych i słabo na nowych danych?

Practical Application

Zbuduj prosty model klasyfikacji obrazów dla zbioru danych Fashion MNIST (ubrania) zamiast cyfr MNIST. Spróbuj zróżnicować wyniki od tego, co otrzymujesz z MNIST.

Key Takeaways

Next Steps

Zapoznaj się z konwolucyjnymi sieciami neuronowymi (CNN) i ich zastosowaniem do przetwarzania obrazów. Przeczytaj o popularnych metodach optymalizacji i o walidacji danych.

Your Progress is Being Saved!

We're automatically tracking your progress. Sign up for free to keep your learning paths forever and unlock advanced features like detailed analytics and personalized recommendations.

Next Lesson (Day 6)