====== 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