Nazwa przedmiotu:
Sztuczne sieci neuronowe
Koordynator przedmiotu:
Rajmund Kożuszek
Status przedmiotu:
Fakultatywny ograniczonego wyboru
Poziom kształcenia:
Studia I stopnia
Program:
Informatyka
Grupa przedmiotów:
Sztuczna inteligencja
Kod przedmiotu:
SSNE
Semestr nominalny:
6 / rok ak. 2021/2022
Liczba punktów ECTS:
4
Liczba godzin pracy studenta związanych z osiągnięciem efektów uczenia się:
1. liczba godzin kontaktowych – 62 godz., w tym − obecność na wykładach: 30 godz., − obecność na ćwiczeniach: 30 godz., − udział w konsultacjach związanych z realizacją przedmiotu: 2 godz. 2. praca własna studenta – 50 godz., w tym − analiza literatury i materiałów wykładowych związana z przygotowaniem do kolejnych wykładów: 15 godz. − dokończenie zadań rozpoczętych na ćwiczeniach: 20 godz. − przygotowanie do kolokwiów: 15 godz. Łączny nakład pracy studenta wynosi 112 godz., co odpowiada 4pkt. ECTS.
Liczba punktów ECTS na zajęciach wymagających bezpośredniego udziału nauczycieli akademickich:
2,25 pkt. ECTS, co odpowiada 62 godz. kontaktowym
Język prowadzenia zajęć:
polski
Liczba punktów ECTS, którą student uzyskuje w ramach zajęć o charakterze praktycznym:
2 pkt. ECTS, co odpowiada 30 + 20 = 50 godz. realizacji ćwiczeń
Formy zajęć i ich wymiar w semestrze:
  • Wykład30h
  • Ćwiczenia30h
  • Laboratorium0h
  • Projekt0h
  • Lekcje komputerowe0h
Wymagania wstępne:
Wprowadzenie do sztucznej inteligencji (WSI), Podstawy informatyki i programowania (PIP)
Limit liczby studentów:
60
Cel przedmiotu:
Przedmiot ten ma na celu zapoznanie studentów z sieciami neuronowymi, t.j. ich strukturami, metodami ich uczenia i potencjalnymi zastosowaniami. Przedstawia praktycznie wszystkie używane struktury sieci, w tym perceptron wielowarstwowy, sieci splotowe, generatywne, autokodery, sieci rekurencyjne i inne. Prezentuje algorytmy ich uczenia takie jak CM, NAG, Adam i inne. Przedstawia narzędzia programistyczne służące do implementowania sieci neuronowych, takie jak Tensorflow. Ćwiczenia związane z przedmiotem mają na celu implementację poznanych metod oraz ich zastosowaniu do rozwiązywania praktycznych problemów. Dodatkowo na ćwiczeniach poruszane są aspekty techniczne oraz omawiane są dobre praktyki w uczeniu i zastosowaniu sieci neuronowych.
Treści kształcenia:
WYKŁADY: 1. Wprowadzenie (2 godz.) Model perceptronu, sieci jednokierunkowe wielowarstwowe, algorytm wstecznej propagacji błędu. Podstawowe metody uczenia sieci: algorytm gradientu prostego, algorytm stochastycznego najszybszego spadku. 2. Wprowadzenie do Tensorflow (2 godz.) Zaprezentowanie zasady działania biblioteki Tensoflow (TF). Graf obliczeń (dynamiczny/statyczny), automatyczne różniczkowanie, obliczenia na CPU/GPU/TPU. Modelowanie sieci, uczenie oraz ewaluacja w TF. Wizualizacja oraz diagnostyka sieci z wykorzystaniem Tensorboard. Porównanie TF z innymi dostępnymi rozwiązaniami (MXNET, PyTorch, Teano) oraz bibliotekami wyższego poziomu (na przykładzie biblioteki Keras/API TF 2.0). 3. Algorytmy uczenia sieci (3 godz.) Podejścia do estymacji gradinetu; minipakiety. Algorytmy wykorzystujące inercję: CM, NAG. Algorytmy adaptacyjne: AdaGrad, RMSprop, Adam. 4. Architektury sieci jednokierunkowych (6 godz.) Sieci splotowe (CNN), autokodery (AE), sieci kapsułkowe (CapsNet) i algorytm uczenia dynamic routing. 5. Sieci Generacyjne (2 godz.) Model sieci dla ograniczonych maszyn Bolzmanna (RBMs) oraz głębokich sieci przekonań (DBN). Algorytm wake-sleep. Generatywne sieci przeciwstawne (GAN), autokodery wariacyjne (VAE). 6. Sieci rekurencyjne (4 godz.) Sieć neuronowa jako maszyna stanowa. Sieci Jordana i Elmana. Algorytm wstecznej propagacji przez czas (BPTT). Algorytm rekurencyjnego uczenia w czasie rzeczywistym (RTRL). Problem zanikania i eksplozji gradientu. Sieci LSTM i GRU. Zastosowanie sieci rekurencyjnych w przetwarzaniu języka naturalnego (NLP). 7. Dobre praktyki oraz podejścia pomocnicze przy uczeniu sieci neuronowych (4 godz.) Trenowanie wstępne sieci. Zagnieżdżenie (embedding): word2vec (skip-gram, CBOW), GloVe. Przeciwdziałanie przeuczeniu: opuszczanie (drop-out), wczesne zatrzymanie. Wspomaganie uczenia: normalizacja wsadów (batch normalization), odpowiednia inicjalizacja wag. Ataki na sieci neuronowe i metody obrony przed nimi. 8. Architektury specjalizowane (2 godz.) Sieci Hopfielda, Kohonena, model Wide&Deep. 9. Tensorflow - zagadnienia zaawansowane (2 godz) Rozproszenie obliczeń, przygotowanie danych z wykorzystaniem tf.data, wdrożenie produkcyjne TF (TF Serving), Projekt TF Hub. 10. Sieci neuronowe w uczeniu z wzmocnieniem (1 godz) Algorytmy Deep Q-Learning i REINFORCE epizodyczny z użyciem sieci neuronowych. 11. Sprawdzenie efektów uczenia się (2 godz.) Pierwsze kolokwium po zrealizowaniu piątego tematu (1 godz.). Drugie kolokwium kończące przedmiot (1 godz.).   ĆWICZENIA: 1. Organizacja ćwiczeń. Zapoznanie z środowiskiem Jupyter Notebook. Wprowadzenie do Tensorflow oraz podstawowych obiektów: graf obliczeń, sesja oraz operacje. Automatyczne różniczkowanie w grafie obliczeń. “Hello world” w TF - implementacja regresji logistycznej. 2. Budowanie modelu sieci neuronowej dla zadania regresji oraz klasyfikacji. Zapisywanie modelu wraz z wagami do pliku. Odczytanie zapisanego modelu oraz ewaluacja wyników na zbiorze testowym. 3. Klasyfikacja na zbiorze MNIST - z sieciami jednokierunkowymi a następnie z warstwami wykorzystującymi operację splotu (CNN). Porównanie wyników dla obu sieci. 4. Uczenie modelu z wykorzystaniem różnych metod dostępnych w TF. Dostrajanie hyper-parametrów oraz diagnostyka uczenia modelu z wykorzystaniem Tensorboard. Implementacja metody wczesnego stopu w uczeniu sieci. Różne architektury sieci CNN. Zapoznanie z warstwami max-pooling, sieci rezydualne. Wykorzystanie pre-trenowanych sieci (VGG, ResNet) do detekcji obrazów ze zbioru TinyImageNet-200. Dostrajanie parametrów już wytrenowanej sieci. 5. Sieci Kapsułkowe - algorytm dynamicznego routingu. Utworzenie klasyfikatora dla zbioru MNIST. 6. Autokodery oraz VAE: kompresja obrazów MNIST (AE) oraz ich generacja (VAE). Implementacja prostej sieci GAN 7. Przewidywanie szeregów czasowych z sieciami neuronowymi - RNN, CNN. 8. Word embedding - implementacja podejść CBOW oraz skip-gram. Podejście globalnych wektorów (GloVe) do zagnieżdżenia. Wykorzystanie istniejących zagnieżdżeń. Porównanie metod i wizualizacja w Tensorboard. 9. Sieci rekurencyjne w NLP: wykorzystanie podejścia bag-of-words oraz sieci jednokierunkowej vs sieci rekurencyjnej. Utworzenie klasyfikatora filtru spamowego. Uczenie sekwencja-sekwencja: zastosowanie rekurencyjnych sieci neuronowych do automatycznej translacji tekstów. 10. Implementacja modeli ograniczonych maszyny Bolzmanna (RBM) oraz głębokie sieci przekonań (DBN) z algorytmem wake-sleep. 11. Sieci Neuronowe w uczeniu z wzmocnieniem. Implementacja wybranych metod z wykorzystaniem środowiska OpenGym oraz TF. 12. Rozpraszanie obliczeń przy implementacji sieci neuronowych.
Metody oceny:
Realizacja przedmiotu obejmuje następujące formy zajęć: - wykład prowadzony w wymiarze 2 godz. tygodniowo; w wybranych zagadnieniach przewidziana jest aktywizacja studentów na wykładzie, - ćwiczenia przy komputerach w wymiarze 2 godz. tygodniowo; w ramach tych zajęć student, korzystając z oprogramowania i sprzętu komputerowego, będąc pod opieką prowadzącego zajęcia, będzie realizował wskazane ćwiczenia dotyczące modelowania/uczenia/ewaluacji sieci neuronowych z wykorzystaniem biblioteki Tensorflow na CPU/GPU; studenci podzieleni na grupy zadaniowe będą zobowiązani do wspólnego rozwiązania zadań. Sprawdzanie założonych efektów kształcenia realizowane jest przez: − ocenę wiedzy i umiejętności związanych z realizacją zadań przydzielanych na ćwiczeniach – ocena z realizacji zadań; − ocenę wiedzy wykazanej na dwóch kolokwiach pisemnych.
Egzamin:
nie
Literatura:
● Ian Goodfellow, Yoshua Bengio, Aaron Courville, “Deep Learning,” WNT, 2015. ● Dokumentacja biblioteki Tensorflow (https://www.tensorflow.org). ● Geoffrey E. Hinton, 2012 Coursera course lectures: Neural Networks for Machine Learning (http://www.cs.toronto.edu/~hinton/coursera_lectures.html). ● Wybrane publikacje (dostępne na platformie arXiv.org).
Witryna www przedmiotu:
https://usosweb.usos.pw.edu.pl/kontroler.php?_action=katalog2/przedmioty/pokazPrzedmiot&prz_kod=103A-INSZI-ISP-SSNE
Uwagi:
(-)

Efekty uczenia się

Profil ogólnoakademicki - wiedza

Charakterystyka W01
ma wiedzę dotyczącą matematycznych podstaw działania sieci neuronowych
Weryfikacja: kolokwium, ćwiczenia
Powiązane charakterystyki kierunkowe: W01, W06
Powiązane charakterystyki obszarowe: P6U_W, I.P6S_WG.o
Charakterystyka W02
ma wiedzę dotyczącą struktur sieci neuronowych dostosowanych do odpowiednich klas zastosowań
Weryfikacja: kolokwium, ćwiczenia
Powiązane charakterystyki kierunkowe: W06
Powiązane charakterystyki obszarowe: P6U_W, I.P6S_WG.o
Charakterystyka W03
ma wiedzę dotyczącą algorytmów uczenia odpowiednich sieci neuronowych
Weryfikacja: kolokwium, ćwiczenia
Powiązane charakterystyki kierunkowe: W06
Powiązane charakterystyki obszarowe: P6U_W, I.P6S_WG.o
Charakterystyka W04
ma wiedzę na temat narzędzi programistycznych służących do implementacji sieci neuronowych i posługiwania się nimi
Weryfikacja: kolokwium, ćwiczenia
Powiązane charakterystyki kierunkowe: W06, W08
Powiązane charakterystyki obszarowe: P6U_W, I.P6S_WG.o, III.P6S_WG

Profil ogólnoakademicki - umiejętności

Charakterystyka U01
potrafi wskazać strukturę sieci neuronowej i algorytm jej uczenia odpowiednie dla danego problemu modelowania, regresji, klasyfikacji i in.
Weryfikacja: kolokwium, ćwiczenia
Powiązane charakterystyki kierunkowe: U01
Powiązane charakterystyki obszarowe: P6U_U, I.P6S_UW.o, III.P6S_UW.o
Charakterystyka U02
potrafi zaimplementować różnorodne struktury sieci neuronowych i algorytmy ich uczenia stosując odpowiednie do tego narzędzia programistyczne
Weryfikacja: kolokwium, ćwiczenia
Powiązane charakterystyki kierunkowe: U07
Powiązane charakterystyki obszarowe: P6U_U, I.P6S_UW.o, III.P6S_UW.o
Charakterystyka U03
potrafi stworzyć model neuronowy odpowiedni dla postawionego problemu i istniejących danych
Weryfikacja: kolokwium, ćwiczenia
Powiązane charakterystyki kierunkowe: U03, U04
Powiązane charakterystyki obszarowe: III.P6S_UW.o, P6U_U, I.P6S_UW.o

Profil ogólnoakademicki - kompetencje społeczne

Charakterystyka K01
jest gotów stale aktualizować i wzbogacać posiadaną wiedzę
Weryfikacja: kolokwium, ćwiczenia
Powiązane charakterystyki kierunkowe: K01
Powiązane charakterystyki obszarowe: P6U_K, I.P6S_KK