Sztuczne Sieci Neuronowe
W semestrze letnim 2021/22 wykład odbywa w poniedziałki o godz. 11:30-13:00 w sali PK6.
W razie przejścia na zdalne nauczanie wykład odbędzie się za pośrednictwem platformy Moodle.
Adres kursu w Moodle: https://moodle.umk.pl/WFAIIS/course/view.php?id=41
Zaliczenie wykładu
Zaliczenie wykładu się na podstawie egzaminu oraz dwóch projektów zaliczeniowych.
Wynik egzaminu to 50% oceny końcowej, każdy z projektów to 25% do oceny.
Projekt składa się z aplikacji oraz raportu zawierającego opis zastosowanej metody , opis aplikacji (funkcjonalności, wymagania dotyczące instalacji i uruchamiania aplikacji), opis symulacji i rezultatów działania aplikacji z przykładami.
Pierwszy projekt to samodzielna implementacja od podstaw wybranej sieci neuronowej, np. demonstracja działania wybranego algorytmu z wykładu (np. MLP, SOM).
Drugi projekt wymaga użycia oprogramowania lub frameworku umożliwiającego trening głębokich sieci neuronowych (np. TensorFlow, Keras) do realizacji bardziej ambitnego zadania (np. rozpoznawanie twarzy, generowanie muzyki, detekcja obiektów na obrazach, itp.).
Wykład
Sztuczne sieci neuronowe - slajdy ze wszystkich wykładów w jednym pliku.
Uwaga: plik jest aktualizowany w miarę postępu wykładu.
-
- CI, AI, ML, NN, DL - definicje, uporządkowanie pojęć
- rys historyczny;
- rodzaje uczenia: uczenie nadzorowane, nienadzorowane i uczenie z krytykiem
- ogólnie o procesie uczenia sieci: architektura + funkcja kosztu + alg. uczenia + ocena jakości sieci
- ogólne własności modeli neuronowych
- Biologiczny model neuronu i inspiracje biologiczne
- Model neuronu McCulloch-Pitts'a
- Rodzaje sieci: jednokierunkowe, rekurencyjne, dynamiczne, konwolucyjne, …
-
- Perceptron Rosenblatta
- Reguły uczenia: reguła perceptronowa, Widrowa-Hoffa, reguła delta
- Algorytm uczenia perceptronu, algorytm kieszonkowy, algortym kieszonkowy z zapadką
- Klasyfikacja binarna wzorców za pomocą perceptronu, separacja liniowa, problem XOR
- Funkcje aktywacji: binarna, liniowa, sigmoidalna, tanh, ReLU
- Sieć wieżowa, sieć piramidalna
- Uczenie metodą największego spadku gradientu
- Klasyfikacja wieloklasowa, Adeline, maszyna liniowa
- Do poczytania:
- Neural Networks Part 1: Setting up the Architecture, Linear Classification - Andrej Karpathy notes
- What is the difference between a Perceptron, Adaline, and neural network model? Machine Learning FAQ
- Using neural nets to recognize handwritten digits - Michael Nielsen, Neural Networks and Deep Learning
- Rosenblatt's perceptron algorithm - demonstracja on-line
-
- budowa i działanie sieci wielowarstwowej
- algorytm wstecznej propagacji błędu, uogólniona reguła delta
- własności wielowarstwowych perceptronów
- funkcje kosztu MSE i Cross Entropy
- softmax w wyjściu sieci
- dobór architektury i funkcji kosztu do typowych zadań
- Dodatkowe materiały:
- The Softmax function and its derivative Eli Bendersky's website
-
- powierzchnie błędu, minima lokalne i globalne
- dobór współczynnika uczenia, uczenie z momentem, wielokrotny start
- inicjaliacja wag sieci, przygotowanie danych treningowych
- algorytmy optymalizacji: Quickprop, RPROP, metoda Newtona, algorytm Levenberg-Marquardta, gradientów sprzężonych
- Dodatkowe materiały:
- 5 algorithms to train a neural network by Alberto Quesada, Artelnics.
-
- Generalizacja, ewaluacja treningu, przeuczenie i niedouczenie modelu
- Zbiór walidacyjny i metoda wczesnego zatrzymania
- Dobór liczby neuronów sieci
- Regularyzacja L2, L1
- Upraszczanie sieci (pruning): metody wrażliwościowe redukcji, Optimal Brain Damage
- Sieci rozrastające się: korelacja kaskadowa
- Regularyzacja poprzez modyfikację danych treningowych
- Dodatkowe materiały:
- Tensorflow Playground demo MLP z regularyzacją L1 i L2
-
- relacje lokalne vs. nie-lokalne
- Radialne funkcje bazowe
- Teoria RBF, aproksymacja i klasyfikacja RBF
- Reularyzacja RBF
- Inicjalizacja i adaptacja centrów i rozmyć funkcji radialnych
- Rozrastające się sieci RBF
- Dodatkowe materiały:
- Radial Basis Function Network (RBFN) Tutorial by Chris McCormick
- RBFN Tutorial Part II - Function Approximation by Chris McCormick
-
- Uczenie konkurencyjne, WTA, reguła Kohonenea
- Kwantowanie wektorowe
- Samoorganizujące się odwzorowanie topologiczne Kohonena
- Gaz Neuronowy
- Growing Cell Structures, Growong Neural Gas
- Przykłady zastosowań i wizualizacji
- Samoorganizacja i mapy ekwiprobabilistyczne
- Mapy samoorgnizujące SOM
- Dodatkowe materiały:
- Some Competitive Learning Methods by Bernd Fritzke
- DemoGNG.js by Dr. Bernd Fritzke
- Self-organizing Maps Kevin Pang
- Image Compression with Vector Quantization by Ivan-Assen Ivanov
-
- SOM i MDS, odwzorowanie Sammona
- reguła Hebba
- reguła Oji
- PCA
- Uogólniony algorytm hebbowski
- Uczenie anty-hebbowskie
- APEX
- Dodatkowe materiały:
- Hebb's Learning - Ruye Wang
- Neural Network Implementations for PCA and Its Extensions - by Qiu, Wang, Lu, Zhang and Du
- Multidimensional scaling and Kohonen's self-organizing maps by Duch and Naud (1996)
-
- Sieci ze sprzężeniami zwrotnymi
- Model Hopfielda
- Zastosowania w modelowaniu pamięci autoasocjacyjnej i optymalizacji
- Pamięć heteroasocjacyjna: sieć Hamminga, BAM
- Dodatkowe materiały:
- The Hopfield Model - by Raul Rojas (rozdział 13 książki Neural Networks - A Systematic Introduction)
- Associations and memory, Hopfield Model - Wulfram Gerstner, Werner M. Kistler, Richard Naud and Liam Paninski (rozdziały z książki Neuronal Dynamics)
- Hopfield Networks is All You Need by Johannes Brandstetter
-
- Kiedy model jest głęboki?
- Głębokie vs. „płytkie” modele, dlaczego głębokość ma znaczenie?
- Modele hierarchiczne i uczenie się reprezentacji wiedzy
- Przykładowe zastosowania: MNIST, CIFAR, ASR, …
- Modele end-to-end
- Problemy uczenia głębokich sieci: niestabilny gradient, przeuczenie, koszt pamięci (ilość parametrów uczenia), koszt czasu treningu (duże dane)
- Głębokie sieci jednokierunkowe (DNN)
- Sieci z jednostkami ReLU, modyfikacje ReLU (PReLU, ELU, ReLU6), Maxout - przykłady zastosowań
- Algorytm uczenia SGD z momentem Nesterova, AdaGrad, RMSProp, Adam, AdaDelta
- Do poczytania:
- What is Deep Learning? by Jason Brownlee
- ConvNetJS Trainer demo on MNIST porównanie alg. uczenia na MNIST
- An overview of gradient descent optimization algorithms by Sebastian Ruder
-
- splot 1D, 2D, 3D, mapy cech, pola recepcyjne
- warstwa pooling, max pooling, avg pooling
- porównanie z sieciami MLP
- sygnały wejściowe sieci konsolacyjnych: audio, obrazy, video - jedno/wielo-kanałowe
- Architektury : LeNet-5, AlexNet, GoogleNet/Inception, VGG Net, ResNet
- Batch Normalization, Dropout, połączenia skrótowe, zwielokrotnianie danych weksciowych, splot filtrem 1×1
- Do poczytania:
- An Introduction to different Types of Convolutions in Deep Learning by Paul-Louis Pröve
- CNN Architectures: LeNet, AlexNet, VGG, GoogLeNet, ResNet and more by Siddharth Das
- An Interactive Node-Link Visualization of Convolutional Neural Networks by Adam W. Harley.
-
- Modelowanie sekwencji za pomocą sieci jednokierunkowych, MLP + dane z kontekstem, TDNN
- Algorytm wstecznej propagacji w czasie (BPTT)
- Rodzaje architektur: generowanie sekwencji, przekształcanie sekwencji, klasyfikacja sekwencji, ..
- Modele encoder-decoder (seq2seq)
- Sieci RNN jednokierunkowe/dwukierunkowe
- Jednostki Long-Short Term Memory (LSTM), Gate Recurrent Unit (GRU)
- Funkcja kosztu CTC
- Zastosowania:
- Modelowanie języka: CharRNN
- Rozpoznawanie mowy: DeepSpeach 2
- Do poczytania:
- The Unreasonable Effectiveness of Recurrent Neural Networks, Andrej Karpathy blog
- Understanding LSTM Networks - colah's blog
- An LSTM Odyssey by Jim Fleming
-
- autoenkodery i kodowanie sygnału
- kompresja sygnału, feature extraction
- Denoising Autoencoders
- stacked autoencoders
- autoenkodery konwolucyjne, rekurencyjne
- Deep Belief Networks (DBNs), sieci składające się z warstw Restricted Boltzmann Machines (RMBs)
- greedy pryer-wise e-training
- sieci GAN
- Do poczytania:
- Unsupervised learning using restricted Boltzmann machines by Kyo Jin Kwon
- Generative Adversarial Networks — A Deep Learning Architecture by Gautam Ramachandra
- Variational Autoencoders Explained VAE in Detail from Another Datum
- Intuitively Understanding Variational Autoencoders by Irhum Shafkat
- Generative Adversarial Networks- History and Overview by Kiran Sudhir
Literatura i kilka przydatnych odnośników
„Klasyczne” sieci neuronowe
- J. Żurada, M. Barski, W., Jędruch Sztuczne sieci neuronowe, Wydawnictwo Naukowe PWN 1996
- Osowski S.: Sieci neuronowe w ujęciu algorytmicznym, Wydawnictwo Naukowo-Techniczne, Warszawa 1996
- Tadeusiewicz R.: Sieci neuronowe, Akademicka Oficyna Wydawnicza RM, Warszawa 1993
- Sztuczne Sieci Neuronowe - wykład prof. W. Duch
- Wstęp do Sieci Neuronowych - wykład Jarosław Piersa,
- Raul Rojas, Neural Networks - A Systematic Introduction, 1996
Deep Learning
- Deep Learning, I. Goodfwllow, Y. Bengio, A. Courville, Deep Learning, MIT Press, 2016
- M. Nielsen, Neural Networks and Deep Learning
- Neural Network Tutorials by Geoffrey E. Hinton
- Dive into Deep Learning by A. Zhang, Zack C. Lipton, Mu Li, Alex J. Smola, on GitHub
- Neurocomputing - lectures by Julien Vitay (youtube, slides and notes)
- AI Experiments with Google
Frameworki DL
- Deep Learning Frameworks https://developer.nvidia.com/deep-learning-frameworks
- TensorFlow (Google)
- Keras - high-level neural networks API, written in Python and capable of running on top of TensorFlow, CNTK, or Theano.
- Lasagne - Lightweight library to build and train neural networks in Theano
- deeplearning4j - Deep Learning for Java