====== Sztuczne Sieci Neuronowe ======
W semestrze letnim 2024/25 wykład odbywa w poniedziałki o godz. 9:30-11:00 w sali B.1.03 (PK6).
===== Wykład =====
{{zajecia:nn_2025_1:nn-wyklad.pdf|Sztuczne sieci neuronowe}} - slajdy ze wszystkich wykładów w jednym pliku.\\
Uwaga: plik jest aktualizowany w miarę postępu wykładu.
- {{zajecia:nn_2025_1:01-intro.pdf|Wstęp: podstawowe pojęcia i wprowadzenie do tematu sieci neuronowych}}
* 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, ...
- {{zajecia:nn_2025_1:02-perceptrony.pdf|Perceptrony i reguły uczenia}}
* 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
* Do poczytania:
* [[https://news.cornell.edu/stories/2019/09/professors-perceptron-paved-way-ai-60-years-too-soon|Professor’s perceptron paved the way for AI – 60 years too soon]] by Melanie Lefkowitz
* [[http://cs231n.github.io/neural-networks-1/|Neural Networks Part 1: Setting up the Architecture]], [[http://cs231n.github.io/linear-classify/|Linear Classification]] - Andrej Karpathy notes
* [[https://sebastianraschka.com/faq/docs/diff-perceptron-adaline-neuralnet.html|What is the difference between a Perceptron, Adaline, and neural network model?]] Machine Learning FAQ
* [[http://neuralnetworksanddeeplearning.com/chap1.html|Using neural nets to recognize handwritten digits]] - Michael Nielsen, Neural Networks and Deep Learning
- {{zajecia:nn_2025_1:03-mlp.pdf|Sieci wielowarstwowe jednokierunkowe MLP}}
* 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:
* [[https://playground.tensorflow.org/|TensorFlow PLayground]]
* [[https://cs.stanford.edu/people/karpathy/convnetjs/|ConvNetJS - Deep Learning in your browser]]
* [[https://eli.thegreenplace.net/2016/the-softmax-function-and-its-derivative/|The Softmax function and its derivative]] Eli Bendersky's website
- {{zajecia:nn_2025_1:04-mlp2.pdf|Ulepszenia wstecznej propagacji błędów}}
* 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:
* [[https://www.neuraldesigner.com/blog/5_algorithms_to_train_a_neural_network|5 algorithms to train a neural network]] by Alberto Quesada, Artelnics.
* [[http://neuralnetworksanddeeplearning.com/chap3.html#variations_on_stochastic_gradient_descent|Variations on stochastic gradient descent]]
* [[http://neuralnetworksanddeeplearning.com/chap3.html#weight_initialization|Weight initialization]]
- {{zajecia:nn_2025_1:05-mlp3.pdf|Generalizacja i regularuzacja treningu MLP}}
* 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
* Dodatkowe materiały:
* [[http://neuralnetworksanddeeplearning.com/chap3.html#overfitting_and_regularization|Overfitting and regularization]]
* [[https://playground.tensorflow.org/|Tensorflow Playground]] demo MLP z regularyzacją L1 i L2
- {{zajecia:nn_2025_1:06-rbf.pdf|Radialne Funkcje Bazowe}}
* 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:
* {{http://mccormickml.com/2013/08/15/radial-basis-function-network-rbfn-tutorial/|Radial Basis Function Network (RBFN) Tutorial}} by Chris McCormick
* {{http://mccormickml.com/2015/08/26/rbfn-tutorial-part-ii-function-approximation/|RBFN Tutorial Part II - Function Approximation}} by Chris McCormick
- {{zajecia:nn_2025_1:07-som.pdf|Samoorganizacja - uczenie konkurencyjne}}
* Uczenie konkurencyjne, WTA, reguła Kohonenea
* Kwantowanie wektorowe
* Samoorganizujące się odwzorowanie topologiczne Kohonena
* Gaz Neuronowy
* Growing Cell Structures, Growing Neural Gas
* Przykłady zastosowań i wizualizacji
* Samoorganizacja i mapy ekwiprobabilistyczne
* Mapy samoorgnizujące SOM
* Dodatkowe materiały:
* {{https://www.demogng.de/JavaPaper/t.html|Some Competitive Learning Methods}} by Bernd Fritzke
* {{https://www.demogng.de/|DemoGNG.js}} by Dr. Bernd Fritzke
* {{https://www.cs.hmc.edu/~kpang/nn/som.html|Self-organizing Maps}} Kevin Pang
* {{http://www.gamasutra.com/view/feature/131499/image_compression_with_vector_.php|Image Compression with Vector Quantization}} by Ivan-Assen Ivanov
- {{zajecia:nn_2025_1:08-hebb.pdf|Samoorganizacja - uczenie hebowskie}}
* reguła Hebba
* reguła Oji
* PCA
* Uogólniony algorytm hebbowski
* Uczenie anty-hebbowskie
* APEX
* Dodatkowe materiały:
* {{http://fourier.eng.hmc.edu/e161/lectures/nn/node4.html|Hebb's Learning}} - Ruye Wang
* {{http://downloads.hindawi.com/archive/2012/847305.pdf|Neural Network Implementations for PCA and Its Extensions}} - by Qiu, Wang, Lu, Zhang and Du
* {{https://fizyka.umk.pl/publications/kmk/96-sommds.pdf|Multidimensional scaling and Kohonen's self-organizing maps}} by Duch and Naud (1996)
- {{zajecia:nn_2025_1:09-hopfield.pdf|Sieci dynamiczne i pamięci asocjacyjne}}
* Sieci ze sprzężeniami zwrotnymi
* Model Hopfielda
* Zastosowania w modelowaniu pamięci autoasocjacyjnej i optymalizacji
* Pamięć heteroasocjacyjna: sieć Hamminga, BAM
* Dodatkowe materiały:
* {{https://page.mi.fu-berlin.de/rojas/neural/chapter/K13.pdf|The Hopfield Model}} - by Raul Rojas (rozdział 13 książki {{https://page.mi.fu-berlin.de/rojas/neural/|Neural Networks - A Systematic Introduction}})
* {{https://neuronaldynamics.epfl.ch/online/Ch17.S1.html|Associations and memory}}, {{https://neuronaldynamics.epfl.ch/online/Ch17.S2.html|Hopfield Model}} - Wulfram Gerstner, Werner M. Kistler, Richard Naud and Liam Paninski (rozdziały z książki {{https://neuronaldynamics.epfl.ch/online/index.html|Neuronal Dynamics}})
* {{https://ml-jku.github.io/hopfield-layers/|Hopfield Networks is All You Need}} by Johannes Brandstetter
- {{zajecia:nn_2025_1:10-dnn.pdf|Głebokie uczenie - wstęp i modele DNN}}
* 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:
* {{https://machinelearningmastery.com/what-is-deep-learning/|What is Deep Learning?}} by Jason Brownlee
* {{https://www.tinymind.com/learn/terms/relu|ReLU}}
* [[https://cs.stanford.edu/people/karpathy/convnetjs/demo/trainers.html|ConvNetJS Trainer demo on MNIST]] porównanie alg. uczenia na MNIST
* {{https://www.ruder.io/optimizing-gradient-descent/|An overview of gradient descent optimization algorithms}} by Sebastian Ruder
* {{https://paperswithcode.com/sota|Brwose State-of-the-Art}}
- {{zajecia:nn_2025_1:11-cnn.pdf|CNN - sieci splotowe}}
* 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 1x1
* Do poczytania:
* {{https://www.freecodecamp.org/news/an-intuitive-guide-to-convolutional-neural-networks-260c2de0a050/|An intuitive guide to Convolutional Neural Networks}}
* {{https://towardsdatascience.com/types-of-convolutions-in-deep-learning-717013397f4d|An Introduction to different Types of Convolutions in Deep Learning}} by Paul-Louis Pröve
* {{https://cv-tricks.com/cnn/understand-resnet-alexnet-vgg-inception/|ResNet, AlexNet, VGGNet, Inception: Understanding various architectures of Convolutional Networks}}
* {{https://medium.com/@sidereal/cnns-architectures-lenet-alexnet-vgg-googlenet-resnet-and-more-666091488df5|CNN Architectures: LeNet, AlexNet, VGG, GoogLeNet, ResNet and more}} by Siddharth Das
* {{http://yann.lecun.com/exdb/lenet/|LeNet-5, convolutional neural networks}}
* {{http://scs.ryerson.ca/~aharley/vis/conv/flat.html|LeNet-5 visualization}}
* {{http://scs.ryerson.ca/~aharley/vis/|An Interactive Node-Link Visualization of Convolutional Neural Networks}} by Adam W. Harley.
* {{https://cs.stanford.edu/people/karpathy/convnetjs/demo/cifar10.html|Demo: Classify CIFAR-10 with Convolutional Neural Network}}
* {{https://poloclub.github.io/cnn-explainer/|CNN explainer}}
- {{zajecia:nn_2025_1:12-rnn.pdf|RNN - sieci rekurencyjne i uczenie sekwencji}}
* 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:
* [[http://karpathy.github.io/2015/05/21/rnn-effectiveness/|The Unreasonable Effectiveness of Recurrent Neural Networks]], Andrej Karpathy blog
* [[http://colah.github.io/posts/2015-08-Understanding-LSTMs/|Understanding LSTM Networks]] - colah's blog
* [[https://medium.com/jim-fleming/implementing-lstm-a-search-space-odyssey-7d50c3bacf93|An LSTM Odyssey]] by Jim Fleming
* [[http://www.paddlepaddle.org/docs/develop/book/08.machine_translation/index.html|Machine Translation]]
* [[http://www.hexahedria.com/2015/08/03/composing-music-with-recurrent-neural-networks/|Composing Music With Recurrent Neural Networks]]
* [[http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-1-introduction-to-rnns/|Recurrent Neural Network Tutorial]] by Denny Britz (part [[http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-1-introduction-to-rnns/|1]], [[http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-2-implementing-a-language-model-rnn-with-python-numpy-and-theano/|2]], [[http://www.wildml.com/2015/10/recurrent-neural-networks-tutorial-part-3-backpropagation-through-time-and-vanishing-gradients/|3]], [[http://www.wildml.com/2015/10/recurrent-neural-network-tutorial-part-4-implementing-a-grulstm-rnn-with-python-and-theano/|4]])
- {{zajecia:nn_2025_1:13-ae.pdf|Ucznie reprezentacji i modele generatywne}}
* 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:
* [[https://blog.manash.me/implementing-pca-feedforward-and-convolutional-autoencoders-and-using-it-for-image-reconstruction-8ee44198ea55|Implementing PCA, Feedforward and Convolutional Autoencoders and using it for Image Reconstruction, Retrieval & Compression]] by Manash Kumar Mandal
* [[http://cs.stanford.edu/people/karpathy/convnetjs/demo/autoencoder.html|ConvNetJS Denoising Autoencoder demo]]
* [[https://kwonkyo.wordpress.com/2017/04/15/unsupervised-learning-using-restricted-boltzmann-machines/|Unsupervised learning using restricted Boltzmann machines]] by Kyo Jin Kwon
* [[https://hackernoon.com/generative-adversarial-networks-a-deep-learning-architecture-4253b6d12347|Generative Adversarial Networks — A Deep Learning Architecture]] by Gautam Ramachandra
* [[http://anotherdatum.com/vae.html|Variational Autoencoders Explained]] [[http://anotherdatum.com/vae2.html|VAE in Detail]] from Another Datum
* [[https://towardsdatascience.com/intuitively-understanding-variational-autoencoders-1bfe67eb5daf|Intuitively Understanding Variational Autoencoders]] by Irhum Shafkat
* [[https://towardsdatascience.com/generative-adversarial-networks-history-and-overview-7effbb713545|Generative Adversarial Networks- History and Overview]] by Kiran Sudhir
* [[https://thispersondoesnotexist.com/]]
* [[https://magenta.tensorflow.org/sketch-rnn-demo|Sketch-RNN-demo]]
- {{zajecia:nn_2025_1:14-transformery.pdf|Transformery i duże modele językowe}}
* Modelowanie sekwencji za pomocą transformatorów
* Architektura modelu, mechanizm uwagi, warstwy kodera i dekodera
* Uczenie modelu, mechanizm uwagi, self-attention
* Zastosowania: tłumaczenie maszynowe, generowanie tekstu, ...
* LLM, BERT, GPT
* ViT - Vision Transformer
===== 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
* {{http://www.is.umk.pl/~duch/Wyklady/NN_plan.html|Sztuczne Sieci Neuronowe}} - wykład prof. W. Duch
* {{http://www-users.mat.umk.pl/~piersaj/www/teaching_current.php|Wstęp do Sieci Neuronowych}} - wykład Jarosław Piersa,
* Raul Rojas, {{https://page.mi.fu-berlin.de/rojas/neural/|Neural Networks - A Systematic Introduction}}, 1996
**Deep Learning**
* Deep Learning, I. Goodfwllow, Y. Bengio, A. Courville, [[http://www.deeplearningbook.org/|Deep Learning]], MIT Press, 2016
* M. Nielsen, [[http://neuralnetworksanddeeplearning.com/|Neural Networks and Deep Learning]]
* {{http://www.cs.toronto.edu/~hinton/nntut.html|Neural Network Tutorials}} by Geoffrey E. Hinton
* {{https://d2l.ai/index.html|Dive into Deep Learning}} by A. Zhang, Zack C. Lipton, Mu Li, Alex J. Smola, on {{https://github.com/d2l-ai/d2l-en|GitHub}}
* {{https://julien-vitay.net/lecturenotes-neurocomputing/intro.html|Neurocomputing}} - lectures by Julien Vitay (youtube, slides and notes)
* {{https://rubikscode.net/2018/02/19/artificial-neural-networks-series|Artificial Neural Networks Series}} on Rubik's Code
* [[wp>Deep_learning|Deep Learning]]
* [[https://deepnotes.io/|DeepNotes]]
* [[http://yerevann.com/a-guide-to-deep-learning/|A Guide to Deep Learning by YN2]]
* [[https://cilvr.nyu.edu/doku.php?id=deeplearning:slides:start|Material for the Deep Learning Course NTU]]
* [[http://www.wildml.com/deep-learning-glossary/|Deep Learning glossary]]
* [[http://deeplearning.net/tutorial/|Deep Learning Tutorials]]
* [[https://rodrigob.github.io/are_we_there_yet/build/|Are we there yet ?]]
* [[https://github.com/syhw/wer_are_we|WER are we?]]
* {{https://github.com/ChristosChristofidis/awesome-deep-learning|Awesome Deep Learning}}
* [[https://github.com/kjw0612/awesome-deep-vision|Awsome Deep Vison]]
* [[http://machinelearningmastery.com/inspirational-applications-deep-learning|8 Inspirational Applications of Deep Learning]]
* [[https://github.com/kjw0612/awesome-rnn|Awesome Recurrent Neural Networks]]
* [[https://github.com/TensorFlowKR/awesome_tensorflow_implementations|Awesome Tensorflow Implementations]]
* [[http://yann.lecun.com/exdb/mnist/|MNIST]]
* [[https://www.cs.toronto.edu/~kriz/cifar.html|CIFAR]]
* [[http://image-net.org/challenges/LSVRC/2017/|ImageNet]]
* {{https://experiments.withgoogle.com/collection/ai|AI Experiments}} with Google
===== Frameworki DL =====
* Deep Learning Frameworks https://developer.nvidia.com/deep-learning-frameworks
* [[wp>Comparison_of_deep_learning_software]]
* [[https://www.tensorflow.org/get_started/|TensorFlow]] (Google)
* [[https://keras.io/|Keras]] - high-level neural networks API, written in Python and capable of running on top of TensorFlow, CNTK, or Theano.
* [[http://deeplearning.net/software/theano/|Theano]]
* [[https://github.com/Lasagne/Lasagne|Lasagne]] - Lightweight library to build and train neural networks in Theano
* [[https://docs.microsoft.com/en-us/cognitive-toolkit/|Microsoft Cognitive Toolkit (CNTK)]]
* [[http://caffe.berkeleyvision.org/|Caffe]]
* [[http://torch.ch/|Torch]] (Facebook AI) [[https://pytorch.org/|PyThotch]] zawiera m. in .Coffe 2 (Facebook AI)
* [[https://www.mathworks.com/solutions/deep-learning.html|MATLAB Deep Learning]]
* [[https://deeplearning4j.org/|deeplearning4j]] - Deep Learning for Java