Data: 2025.01.31 | Kategoria: Blog | Tagi: sieci neuronowe , glebokie uczenie , deep learning , LLM , AI , sztuczna inteligencja , SI
Architektura sieci neuronowych to struktura, która definiuje sposób organizacji i połączeń między neuronami (jednostkami obliczeniowymi) w modelu. Sieci neuronowe są inspirowane biologicznym układem nerwowym, ale w praktyce są to matematyczne modele przetwarzające dane. Poniżej szczegółowe wyjaśnienie:
Neuron to podstawowa jednostka obliczeniowa.
Działa w trzech krokach:
- Suma ważona: z=
: Wejścia (dane lub wyjścia z poprzednich neuronów).
: Wagi (parametry do nauki).
: Bias (stała przesunięcia).
- Funkcja aktywacji:
Przykłady funkcji: ReLU, sigmoid, tanh.
- Wyjście: jest przekazywane do kolejnych neuronów.
- Warstwa wejściowa: Przyjmuje dane (np. piksele obrazu, słowa tekstu).
- Warstwy ukryte: Wykonują transformacje nieliniowe.
- Warstwa wyjściowa: Generuje wynik (np. klasę, wartość liczbową).
- Każdy neuron w warstwie jest połączony z każdym neuronem w poprzedniej warstwie.
- Przykład:
from tensorflow.keras.layers import Dense
dense_layer = Dense(units=64, activation='relu')
- Używana w sieciach CNN do przetwarzania obrazów.
- Filtry (kernels): Przesuwane po obrazie, wykrywają lokalne wzorce (np. krawędzie, tekstury).
- Parametry: Rozmiar filtra (np. 3x3), liczba filtrów, krok (stride), dopełnienie (padding).
- Przykład:
from tensorflow.keras.layers import Conv2D
conv_layer = Conv2D(filters=32, kernel_size=(3, 3), activation='relu')
Redukuje wymiarowość danych, zachowując najważniejsze informacje.
Typy: Max pooling, Average pooling.
Przykład:
from tensorflow.keras.layers import MaxPooling2D
pooling_layer = MaxPooling2D(pool_size=(2, 2))
Używana w sieciach RNN do przetwarzania sekwencji (np. tekst, dane czasowe).
Pamięć: Przechowuje informacje z poprzednich kroków czasowych.
Przykład:
from tensorflow.keras.layers import SimpleRNN
rnn_layer = SimpleRNN(units=64, activation='tanh')
Zaawansowane wersje RNN, lepiej radzące sobie z długimi sekwencjami.
LSTM (Long Short-Term Memory): Używa bramek do kontrolowania przepływu informacji.
GRU (Gated Recurrent Unit): Uproszczona wersja LSTM.
Przykład:
from tensorflow.keras.layers import LSTM
lstm_layer = LSTM(units=128)
Używana w NLP do mapowania słów na wektory liczbowe.
Przykład:
from tensorflow.keras.layers import Embedding
embedding_layer = Embedding(input_dim=10000, output_dim=128)
Zapobiega overfittingowi przez losowe wyłączanie neuronów podczas treningu.
Przykład:
from tensorflow.keras.layers import Dropout
dropout_layer = Dropout(rate=0.5)
Funkcje aktywacji wprowadzają nieliniowość, co pozwala sieci uczyć się złożonych wzorców.
ReLU (Rectified Linear Unit): – najpopularniejsza.
Sigmoid: – używana w klasyfikacji binarnej.
Tanh: – podobna do sigmoid, ale zakres [-1, 1].
Softmax: Używana w warstwie wyjściowej do klasyfikacji wieloklasowej.
Dane przechodzą przez sieć od warstwy wejściowej do wyjściowej.
Każda warstwa wykonuje obliczenia: wejście→suma ważona→funkcja aktywacji.
Mierzy błąd między predykcją a prawdziwą wartością.
Przykłady:
MSE (Mean Squared Error): Dla regresji.
Cross-Entropy: Dla klasyfikacji.
Algorytm propagacji wstecznej oblicza gradienty funkcji straty względem wag.
Gradienty są używane do aktualizacji wag za pomocą optymalizatorów (np. SGD, Adam).
SGD (Stochastic Gradient Descent): Podstawowy optymalizator.
Adam: Łączy zalety SGD i adaptacyjnego uczenia.
Przykład:
from tensorflow.keras.optimizers import Adam
optimizer = Adam(learning_rate=0.001)
Składa się z warstw gęstych.
Używany do prostych zadań klasyfikacji/regresji.
Składają się z warstw konwolucyjnych, poolingowych i gęstych.
Używane do przetwarzania obrazów.
Składają się z warstw rekurencyjnych.
Używane do przetwarzania sekwencji (np. tekst, dane czasowe).
Składają się z mechanizmów uwagi (attention) i warstw gęstych.
Używane w NLP (np. GPT, BERT).
Overfitting: Sieć zapamiętuje dane zamiast się uogólniać (rozwiązanie: dropout, regularyzacja).
Zanikające gradienty: Problem w głębokich sieciach (rozwiązanie: ReLU, LSTM).
Duże zapotrzebowanie na dane i moc obliczeniową.
Architektura sieci neuronowych to system warstw, które przetwarzają dane w sposób hierarchiczny. Każda warstwa ma swoją specyficzną funkcję (np. ekstrakcja cech, redukcja wymiarowości), a połączenie ich pozwala modelowi uczyć się złożonych wzorców. Wybór odpowiedniej architektury zależy od zadania (np. CNN dla obrazów, LSTM dla sekwencji).