# Uczenie głębokie - zaliczenie
# 1. Dany jest przykładowy sygnał cyfrowy 1D oraz wartości maski 1D wraz z określonymi parametrami (np. warunki brzegowe, krok, stopień separacji). Podać wzór i wykonać operację splotu opisując znaczenie i obliczenia w każdym kroku.




# 2. Dany jest przykładowy sygnał cyfrowy 1D oraz wartości maski 1D wraz z określonymi parametrami (np. warunki brzegowe, krok, stopień separacji). Podać wzór i wykonać operację korelacji wzajemnej opisując znaczenie i obliczenia w każdym kroku.
To samo co 1. imho
# 3. Dany jest przykładowy sygnał cyfrowy 2D oraz wartości maski 2D wraz z określonymi parametrami (np. warunki brzegowe, krok, stopień separacji). Podać wzór i wykonać operację korelacji wzajemnej opisując znaczenie i obliczenia w każdym kroku.

# 4. Dany jest przykładowy, wielokanałowy sygnał cyfrowy 1D oraz wartości maski 1D wraz z określonymi parametrami (np. warunki brzegowe, krok, stopień separacji). Podać wzór i wykonać operację korelacji wzajemnej stosowanej przez tzw. sieci splotowe, opisując znaczenie i obliczenia w każdym kroku.
Dla każdego kanału osobno, a następnie suma na końcu.
# 5. Wyjaśnić znaczenie podanych wersji operacji „splotu” stosowanych w sieciach CNN: DepthwiseConv2D, LocallyConnected2D, Conv2DTranspose .
## DepthwiseConv2
Każdy kanał jest zostaje poddany splotowi z innym kernelem (zależnym od głębokości). Składa się z kolejnych kroków:
- podział danych wejściowych na indywidualne kanały,
- splot każdego kanału z osobnym kernelem,
- konkatenacja splotowanych wyjść względem osi kanałów.
W odróżnieniu od normalnego splotu 2D, ten nie miesza informacji między różnymi kanałami.
## LocallyConnected2D
Maska bez stałych wag, te działają lokalnie i zmieniają się wraz z położeniem.
## Conv2DTranspose
Ma zastosowanie gdy trzeba wykonać transformację idącą w innym kierunku niż standardowy splot, z czegoś co ma kształt wyjścia splotu, do czegoś co ma kształt jego wejścia, przy jednoczesnym zachowaniu wzoru łączności, zgodnego z tym splotem (przybliżenie operacji rozplotu – nie jest z nią tożsama).
# 6. Wyjaśnić znaczenie pola recepcyjnego. Dla podanych wartości konfiguracji sieci CNN obliczyć rozmiar pola recepcyjnego (r0). Podać wzór i opisać znaczenie oraz obliczenia w każdym kroku.
## Pole odbiorcze (recepcyjne)
- Z biologii: obszar powierzchni zawierający receptory (skóry, siatkówki), z którego impulsy nerwowe docierają do wspomnianego elementu odbiorczego - komórki nerwowej/włókna nerwowego.
- W CNN: zakres danych, z których wyznaczono nową reprezentację (cechy) danych do danego poziomu (warstwy) sieci neuronowej.



# 7. Dany jest przykładowy, wielokanałowy zbiór danych 2D. Dla podanej operacji redukcji danych (np. Flatten, Max Pooling, Global Average Pooling, itp.) zilustrować proces redukcji danych. Opisać znaczenie i obliczenia w każdym kroku.

# 8. Wymienić i opisać poznane techniki przeciwdziałania nadmiernemu dopasowaniu modelu do danych.
## Wczesne zakończenie treningu
Zatrzymanie treningu, gdy mimo spadku dla f-cji straty dla danych treningowych, f-cja straty dla danych walidacyjnych wzrasta.
## Augmentacja danych
- Poszerzenie zbioru danych, poprzez przekształcenia istniejących przykładów lub syntezę nowych przykładów z wiedzy a priori (np. z istniejących danych, z modeli opracowanych na istniejących przykładach, itp.).
- W przypadku obrazów, ich modyfikacja poprzez transformacje geometryczne, nakładanie zniekształceń, szumu, generacja nowych z modeli generacyjnych, itp.
- Najczęściej stosowane metody:
- Generowanie obrazów poprzez losowo wybrane metody przetwarzania obrazów w czasie treningu (generatory).
- Generowanie obrazów poprzez (losowo) wybrane metody przekształcania obrazów do plików (pamięci) tworząc fizycznie poszerzony zestaw zbioru treningowego.
## Logiczna i losowa redukcja neuronów (dropout)
- W kolejnych epokach losowa wybrana pula neuronów jest eliminowana z prawdopodobieństwem q=1-p (q – dropout rate, p – retain ratio).
- W każdej epoce jest roszkę inna architektura modelu.
- Na koniec następuje uogólnienie różnych modeli dla wejściowego zestawu danych.
## Normalizacja porcji danych
Stosując metody optymalizacji bazujące na porcjach danych (batchach) można standaryzować dane w odniesieniu do porcji danych na różnych etapach modelu wielowarstwowego. Wprowadza to stabilizację rozkładu wartości danych wejściowych dla określonych warstw.
## Regularyzacja funkcji kosztu i wag

- W procesie aktualizacji wartości parametrów można uwzględnić w różnym stopniu same wartości tych parametrów.
- Jeśli λ > 0: nowe wartości parametrów bazują na zmniejszonych wartościach parametru z poprzedniego kroku oraz aktualizacji wynikającej ze zmian funkcji kosztu.
- Operacja ta pozwala na zapobieganie problemom, takim jak:
- eksplodujący gradient,
- nadmierne dopasowanie modelu do danych.
- W przypadku nieadapcyjnego SGD wprowadzenie zubożenia wag w procesie uczenia odpowiadać będzie zastosowanie odpowiedniej funkcji kosztu z czynnikiem regulacji L2.
# 9. Wyjaśnić na czym polega standaryzacja porcji danych. Podać wzory i operacje w poszczególnych krokach. Wyjaśnić, ile i jakie parametry podlegają uczeniu. Omówić znaczenie kolejności stosowania tej operacji w połączeniu z operacją splotu i przekształcenia nieliniowego (aktywacji).


# 10. Opisać poznane wersje algorytmów optymalizacji bazujących na SGD. Podać wzory. Opisać znaczenie wzorów, parametrów i znaczenie zmian wprowadzonych przez poszczególne algorytmy.

## RMSProp

## Adam


# 11. Opisać poznane metody ustawiania wartości początkowych parametrów modeli CNN.


# 12. Narysować ogólnych schemat architektury AlexNet wraz z parametrami. Opisać poszczególne kroki. Podać wzór i obliczyć rozmiar przestrzenny danych na wyjściu podanej w pytaniu warstwy.


## Kroki
1. Pobranie obrazów z bazy ImageNet i przeskalowanie ich do 227x227. Pierwsza operacja splotu składała się z 96 masek o rozmiarach 11x11 oraz kroku 4 dla każdego wymiaru.
2. Aktywacja ReLU + normalizacja jaskrawości "obrazów".
3. Redukcja danych z nakładaniem się okien (3,3) o kroku (2,2).
4. Analogicznie dla kolejnych warstw.
5. Ostatecznie nowo uzyskana reprezentacja danych została podana na wejście warstwy w pełni połączonej.
# 13. Narysować i omówić poznane wersje bloków incepcji.


# 14. Wyjaśnić na czym polega regularyzacja etykiet klas. Podać wzory i wyjaśnienia dla poszczególnych kroków.

# 15. Narysować i omówić bloki rezydualne w sieciach typu ResNet, Narysować ogólny schemat architektury ResNet-18 i opisać poszczególne bloki.


# 16. Wymienić i opisać poznane techniki transferu wiedzy.


# 17. Wymień poznane rodzaje architektur sieci rekurencyjnych, opisz wybraną (może być w formie rysunku) oraz podaj przykład zastosowania tej architektury


# 18. Wyjaśnij na czym polega technika obcinania gradientu, czemu służy i gdzie znajduje zastosowanie

# 19. Wymień dwie poznane techniki uczenia sieci RNN, opisz jedną z nich
## Propagacja wsteczna w czasie
- Technika służąca do rozwijania w czasie rekurencyjnych sieci neuronowych.
- Opiera się na gradiencie.
- Powoduje, że elementy z ostatniego stanu mogą mieć wpływ na sam początek.
- Obliczane są przejścia wstecz przez całą sekwencję dzięki czemu uzyskujuemy gradienty i aktualizacje wag.
- Jedna aktualizacja z wsteczną propagacją w czasue może rozwinąć sieć, która jest później generowana przez sekwencję wejściową.
### Algorytm
1. Przedstaw w sieci sekwencję kroków czasowych par wejścia i wyjścia.
2. Rozwiń sieć, a następnie oblicz i zsumuj błędy w każdym kroku czasowym.
3. Zwiń sieć i zaktualizuj wagi.
4. Powtórz.
### BPTT
- Rekurencyjna sieć neuronowa wyświetla tylko jedno wejście w każdym kroku czasowym i przewiduje jedno wyjście
- Koncepcyjnie BPTT działa poprzez rozwijanie wszystkich wejściowych kroków czasowych. Każdy przedział czasowy ma jeden przedział czasowy wejścia, jedną kopię sieci i jedno wyjście. Błędy są następnie obliczanie i akumulowane dla każdego kroku czasowego. Sieć jest przywracana, a wagi są aktualizowane.
- Każdy krok czasowy rozwiniętej sieci rekurencyjnej może być postrzegany jako dodatkowa warstwa, biorąc pod uwagę zależności kolejności problemu, a stan wewnętrzny z poprzedniego kroku czasowego jest traktowany jako dane wejściowe w kolejnym kroku czasowym.
### Zalety
- Szybsza dla RNN niż techniki optymalizacji ogólnego przeznaczenia, np. optymalizacja ewolucyjna.
### Wady
- Ze względu na powtarzające się sprzężenia zwrotne, ma tendencje do tworzenia chaotycznych odpowiedzi na powierzchni błędu -> często występowanie lokalnych optimów.
- Może być używana do ograniczanej liczby kroków czasowych, ponieważ przy coraz większej liczbie kroków gradient staje się zbyt mały (zanikający gradient).
- Może być kosztowny obliczeniowo wraz ze wzrostem liczby kroków czasowych.
## Forsowanie nauczyciela (Teacher Forcing)
- Wykorzystuje jako dane wejściowe *ground truth*, a nie dane wyjściowe z poprzedniego kroku czasowego.
- Działa poprzez wykorzystanie rzeczywistych lub oczekiwanych danych wyjściowych ze zbioru danych treningowych w bieżącym kroku czasowym y(t) jako danych wejściowych w następnym kroku czasowym X(t+1), a nie danych wyjściowych generowanych przez sieć.
### Zasada działania
- Po uzyskaniu odpowiedzi na część pierwszą, nauczyciel porówna naszą odpowiedź z prawidłową, zapisze wynik za część pierwszą i poda poprawną odpowiedź, abyśmy mogli ją wykorzystać dla kolejnej części.
- Nauczyciel w przypadku popełnienia błędu podaje prawidłową odpowiedź, dzięki czemu koryguje dalsze przewidywania. Błędnie przewidziane słowo nie jest dodawane do kolejnego kroku (jak dla zwykłego RNN).

# 20. Posiadasz ograniczone moce obliczeniowe, jakiego rodzaju sieci rekurencyjnej użyjesz? Odpowiedź uzasadnij
Sieci ESN.
- Polegają na obsłudze losowej, dużej, stałej, powtarzalnej sieci neuronowej z sygnałem wejściowym, który indukuje nieliniowy sygnał odpowiedzi w każdym neuronie tej sieci "zbiornikowej".
- Innym podejściem jest podłączenie pożądanego sygnału wyjściowego za pomocą możliwej do trenowania liniowej kombinacji wszytkich tych sygnałów odpowiedzi.
- Idea może być rozumiana jako sposób uzyskania pożądanego docelowego wyniku z RNN, ucząc się łączenie sygnałów z losowo skonfigurowanych zestawów neuronowych.
- Jest łatwiejszy i wymaga mniej wysiłku obliczeniowego niż zwykły RNN o tym samym rozmiarze.
# 21. Tworzysz system do rozpoznawania obrazu w słabej jakości (szum), jakiego typu sieci rekurencyjnej użyjesz? Odpowiedź uzasadnij.
Sieci Hopfilelda.
- Jest konfigurowalną macierzą wag, która służy do znajdowania lokalnego minimum (rozpoznawania wzorca).
- Uwzględnia pamięć asocjacyjną poprzez włączenie wektorów pamięci i jest powrzechnie używany do klasyfikacji wzorców.
- Dążą do minimalizacji funkcji energii, więc nadają się do zadań optymalizacyjnych.
# 22. Opisz działanie systemu koder-dekoder, podaj przykłady zastosowania
## Architektura
### Enkoder (koder)
Jako wejście przyjmuje sekwencję o zmiennej długości i przekształca ją w stan o ustalonym kształcie.
### Dekoder
Odwzorowuje zakodowany stan o ustalonym kształcie na sekwencję o zmiennej długości.
## Działanie
**Kodowanie** - konwersja danych do wymaganego formatu.
W kontekście ML konwertujemy sekwencję słów na dwuwymiarowy wektor (stan ukryty). Rolą dekodera jest natomiast przekształcenie stanu ukrytego n sekwencję wyjściową, np. zdanie.
### Budowa
- Koder jest zbudowany poprzez układanie w stos RNN. Jej struktura pozwala zrozumieć modelowi kontekst i czasowe zależności sekwencji.
- Na wyjściu enkodera otrzymuje się dwuwymiarowy wektor, który zawiera całe znaczenie sekwencji wejściowej. Długość wektora zależy od liczby komórek w RNN.
- Dekoder ma przekonwertować zakodowaną wiadomość na zrozumiały język.
## Zastosowanie
- Usługi tłumaczeń Google'a od 2016 r.
- Podstawa zaawansowanych modeli Seq2Seq (specjalna klasa modelowania problemów sekwencji, gdzie wejście i wyjście są sekwencją), tj.:
- modele Atencji,
- Modele GTP,
- Transformery,
- BERT.
- Rozwiązanie gdy dane wejściowe i wektory nie mają stałej wymiarowości.
- Mapowanie sekwencji na sekwencję.
- Analiza sentymentu.
- Automatyczne podpisy pod obrazami/filmami.
# 23. Wyjaśnij dlaczego stosuje się mechanizm atencyjny w sieciach rekurencyjnych stosowanych w NLP?
Pozwala na lepszą analizę kontekstu z danych wejściowych. Dane z wartwy Attention mają ten sam wymiar na wejściu i wyjściu. Dla mechanizmu nie ma jednak znaczenia kolejność danych, dlatego wprowadza się dodatkowe mechanizmy, jak kodowanie pozycyjne.
# 24. Wyjaśnij w kilku zdaniach jakim celu stosowane są maski w sieciach RNN przy NLP?
Umożliwia modelowi procesowanie sekwencji o różnych długościach, poprzez maskowanie elementów najmniej kluczowych. Te najczęściej są generowane przez mechanizm atencji.
# 25. Opisz wybrany sposób tokenizacji danych tekstowych stosowanych w sieciach rekurencyjnych
## Bag of words
- Technika przetwarzania języka naturalnego. Jest metodą wydobywania/ekstrakcji cech z danych tekstowych.
- Sprawdza częstotliwość występowania słów w tekście, natomiast pomija szczegóły gramatyczne i kolejność występowania wyrazów.
- Konwertuje tekst na równoważny wektor liczb, dzięki czemu model uczenia maszynowego działa na liczbach, a nie słowach.
- Teksty o różnych długościach mogą być konwertowane na wektory o stałych długościach.
- Bez preprocessingu model bierze wszystkie słowa, znaki interpunkcyjne, cyfry itp.
- Preprocessing umożliwia skrócenie wektora.
### Kroki
1. Zebranie danych.
2. Ujednolicenie wielkości liter.
3. Usunięcie słów o małym znaczeniu.
4. Zmiana niektórych słów na rdzenie słów.
5. Zmiana skrótów na pełne formy.
6. Zliczanie częstotliwości występowania słów.
7. Zamiana zdań na wektory.
### Wady
- Kontekst może być źle odczytany (brak informacji o lokalizacji słów).
- Nie respektuje semantyki słowa.
- Nowe słowa mogą zostać zignorowane, ponieważ nie są jeszcze znane.
## Skip-gram
- Przewiduje słowa w określonym zakresie przed i po bieżącym słowie w tym samym zdaniu.
- Model zapętla się na słowach każdego zdania i próbuje użyć bieżącego słowa w celu predykcji sąsiadów (kontektu).
- Uogólnienie n-gramów.

### Algorytm
1. Przygotowanie danych dla modelu Skip-gram
2. Generacja danych dla Modelu Skip-gram.

3. Kodowanie jednokrotne
4. Trening
5. Obliczanie wag modelu.
6. Obliczanie błędu.
### Zalety
- Nauka nienadzorowana - brak preprocessingu.
- Wymaga mniej pamięci w porównaniu z innymi metodami do reprezentacji wektorowych.
### Wady
- Długi czas nauki.
## Word-2-Vec
- Wykorzystuje model sieci neuronowej do nauki skojarzeń słów z dużego korpusu tekstu.
- Każde słowo jest reprezentowane jako wektor $\geq$ 32 wymiarów.
- Uwzględnia informację semantyczną oraz relację miedzy słowami.
- Sieć jest dwuwarstwowa, prztwarza tekst poprzez wektoryzację słów.
- Po nauczeniu model potrafi wykrywać słowa synonimiczne lub sugerować dodatkowe słowa do zdania częściowego.
- Wektroy są dobierane tak, aby podobieństwo cosinusowe między wektorami wskazywało poziom podobieństwa semantycznego między słowami.
- Opiera się na CBOW i Skip-gram.
- Metoda radzi sobie z nowymi słowami dodanymi do słownika.
### Poprawa dokładności
- Wybór CBOW lub Skip-gram
- Skip-gram:
- lepszy dla mniejszych korpusów
- lepszy w reprezentacji rzadko występujacych słów
- CBOW:
- szybciej się trenuje
- lepsza dokładność dla słów często występujących
- Zwiększenie zbioru testowego
- Zwiększenie wymiarowości wektora
- Zwiększenie wielkości okna (10 S-G, 5 CBOW)
## BPE - Byte Pair Encoding
Prosta forma algorytmu kompresji danych, w której najczęstszą parę kolejnych bajtów danych zastępuje się bajtem, który nie występuje w danych. Algorytm zachłanny.
# 26. Jaki jest cel stosowania algorytmu CTC w sieciach rekurencyjnych?
Wykorzystuje się do wyrównywania sekwencji wejściowych i wyjściowych, gdy wejście jest ciągłe, a wyjście dyskretne i nie istnieją jasne granice elementów, które mogą posłużyć do mapowania wejścia na elementy sekwencji wyjściowej.
Zadaniem algorytmu jest przetworzenie prawdopodobieństw wystąpienia znaków i dostarczenie poprawnej sekwencji znaków.
# 27. Wymień zalety modeli autoregresyjnych w stosunku do sieci typu GAN
- Może działać zarówno na danych ciągłych, jak i dyskretnych.
- Modele autoregresyjne są nadzorowane - trening stabilny i łatwy do zrównoleglenia.
- Można stosować wszystkie znane sztuczki z ML:
- walidację kszyżową,
- standardowe metryki funkcji straty,
- podział zbiorów na treningowy i testowy.
# 28. Narysować schemat klasycznej sieci GAN, opisać poszczególne elementy sieci

# 28. Wyjaśnić dlaczego trening sieci typu GAN może być niestabilny, w jaki sposób można temu zapobiegać
- Gdy dyskriminator klasyfikuje za dobrze, to trening generatora może być nieskuteczny (zanikający gradient).
- modyfikacja starty minimax
- użycie f-cji straty Wassersteina
- Załamanie trybu - generator zaczyna generować dane wyjściowe bardzo podobne, lub identyczne, przez co może utknąć w minimum lokalnym.
- f-cja straty Wassersteina
- rozwinięcie GAN
- GAN może nie osiągać zbieżności.
- karanie wagi dyskryminatora
- dodawanie szumu do sygnałów wejściowych dyskryminaotra
# 29. Opisz czym różni się klasyczna sieć GAN od warunkowej sieci GAN.
- Umożliwiają sterowanie procesem generowania danych.
- Pozwalają uzyskać obrazy dla określonych warunków (uśmiechnięci ludzie, obraz w danym stylu).
- Podstawowa zasada to wprowadzenie dodatkowych danych (y), np.:
- znaczniki/etykiety
- segmentacja semantyczna
- dane demograficzne (wiek, wzrost)
- Dodatkowe dane wprowadzane poprzez konkatenację.
- Informacje dodatkowe można wprowadzić zarówno do genereatora jak i dyskryminatora.

# 30. Wymienić przynajmniej 5 zastosowań modeli generatywnych wraz z przykładami
- Generacja audio - sieci WaveNet
- Generacja obrazów - PixelRNN
- Zmiana obiektu na obrazie w inny (jabłko w pomarańcz, koń na zebrę) - CycleGAN
- Generowanie scen w grach wideo, dynamiczne dostosowywanie rozdzielczości tekstur (np. Nvidia DLSS)
- generowanie obiektów z tekstu
# 31. Opisz strukturę i zasadę działania autoenkodera typu winner-takes-all (WTA). W opisie zwróć też uwagę na sposób jego treningu (w tym na rodzaje zastosowanej regularyzacji).
Jest to autoenkoder regularyzowany, mający na celu generowanie rzadkich reprezentacji. Charakterystyczne jest to, że koder i dekoder nie posiadają symetrycznej budowy.
Do treningu wykorzystywane są dwa rodzaje ograniczeń:
- przestrzenna,
- grupowa.
Powoduje to uczenie się przez autoenkoder rzadkich reprezentacji. Rekonstrukcja odbywa się za pomocą zbioru macierzy współczynników (słownika).
## Regularyzacja przestrzenna
- Implementowana w ostatniej wartwie kodera, polega na zerowaniu wszystkich wartości kanału, poza maksymalną.
- Zerowane są również wartości gradientów składowych kanału innych niż maksymalna. Stosowane podczas treningu.
## Regularyzacja grupowa
Aplikowana w ramach grupy (batch) przykładów przetwarzanych przez sieć i polega na wyzerowaniu wszystkich gradientów pochodzących od składowych kanałów nieznajdujących się w k% (przedział [5,20]) największych aktywacji.
# 32. Opisz strukturę i zasadę działania autoenkodera odszumiającego. W jaki sposób autoenkoder ten jest w stanie zredukować zakłócenie we wzorcach wejściowych?
Uzyskiwany poprzez specyficzny trening, tak aby przekształcenie tożsamościowe było odporne na uszkodzenie wzorców na wejściu kodera:
$$
x_R \approx g \Bigg(f \Big(C(x)\Big)\Bigg),
$$
gdzie:
$x_R$ - zrekonstruowany wzorzec odpowiadający wzorcowi wejściowemu $x$
$f(x)$ - funkcja realizowana przez koder
$g(x)$ - funkcja realizowana przez dekoder
$C(x)$ - funkcja wprowadzająca uszkodzenie wzorca $x$, np. dodając szum Gaussowski lub dropout
Dzięki temu otrzymuje się specyficzne mapowanie dokonywane przez autoenkoder odszumiający.
Pkty z przestrzeni ukrytej są "przyciągane" do właściwych pozycji z miejsc, o których autoenkoder uczy się, że są skutekiem uszkodzenia przez szum. Dzięki temu można zwizualizować działanie kodera za pomocą pola wektorowego, które wskazuje kierunek korekcji.
# 33. Czym jest autoenkoder multimodalny i do jakich zastosowań można go wykorzystać? W jaki sposób umożliwia się takiemu autoenkoderowi równoległe przetwarzanie różnych modalności (np. obrazu i ramek sygnału fonicznego)?
Rodzaj autoenkodera pozwalający na jednoczesne kodowanie i dekodowanie wielu wejść i wyjść (modalności).
Opisują zbiór różnego rodzaju wejść (modalności). Np. pary danych składające się ze zdjęcia osoby i próbki jej głosu.
Często wykorzystywany do przetwarzania (np. analizy skupień) sygnałów polimodalnych, jak np. dane z elektroencefalografu.
# 34. Opisz krótko na czym polega algorytm Q-learningu. W opisie wytłumacz znaczenie takich parametrów jak macierz Q-wartości, współczynnik dyskontowania oraz sygnał nagrody.
Aby zaprojektować kryterium decyzji dla agenta można posłużyć się logiką podobną do tej wykorzystanej przy ocenie wartości satnu środowiska i zdefiniować wartość **$Q(s_n , a_n)$** (tzw. Q-wartość), która będzie oznanczać średnią skumulowaną i zdyskontowaną nagrodę uzyskaną przez agenta w stanie $S_n$, po podjęciu akcji $a_n$. -> Jest to więc wartość akcji agenta w stanie $S_n$.
Wartości funkcji mogą być pozyskiwane poprzez iteracyjne interakcje ze środowiskiem.
Należy założyć, że mamy do dyspozycji dyskretny zbiór akcji oraz dysponujemy macierzą Q-wartości o wymiarze $N_s \times N_a$, gdzie:
- $N_s$ - liczba stanów środowiska
- $N_a$ - liczba możliwych do wykonania akcji
Po każdym kroku $a_n$ można uaktualnić wartości macierzy powiązaną ze stanem $s_n$ i akcją $a_n$:
$$
Q(s_n, a_n) = (1-l_r) Q(S_n, a_n) + l_r Q^{*}(S_n, a_n)
$$
Wartość $Q^{*}(S_n, a_n)$ można oszacować z wartości zapisanych w macierzy Q-wartości:
$$
Q^{*}(S_n, a_n) = r_n + \gamma * \max_{a_{n+1}}(Q(S_{n+1}, a_{n+1}))
$$
Można powiedzieć $Q^{*}(S_n, a_n)$ jest wartością najlepszej akcji wybranej w stanie następującym po stanie *n* powiększoną o wartość natychmiastowo otrzymanej nagrody $r_n$.
$$
Q^{*}(S_n, a_n) = (1-l_r) Q(S_n, a_n) + l_r\Big[ r_n + \gamma \max_{a_n+1}(Q(S_{n+1}, a_{n+1})) \Big]
$$
Współczynnik dyskontowania ($\gamma$) - pozwala ograniczyć kumulowaną sumę nagrody, pomaga dostosować zachowanie agenta do osiągania celów długoterminowych. Im większy jest ten współczynnik tym większy jest wpływ poprzednich stanów na stan obecny.
Sygnał nagrody ($r$) - może być dodatnia lub ujemna. Wartość jaką dostaje agent za wykonanie poszczególnych akcji.
# 35. Czym jest tzw. strategia realizowana przez agenta uczenia wzmacnianego? Wymień i krótko opisz znane Ci rodzaje strategii (minimum 3).
## Strategia realizowana przez agenta
Sposób podejmowania decyzji przez agenta, oznaczana jako $\prod(S_n)$. Wartość zwracaną przez f-cję strategii nazywa się akcją $a_n$, która powinna być podjęta przez agenta w stanie $S_n$.
Agent może uczyć się wprost wartości strategii -> często realizowane przy wykorzystaniu sztucznych sieci neutronowych.
W podejściu klasycznym f-cja strategii jest zdefiniowana w oparciu o $Q(S_N, a_n)$, co pozwala na modyfikację zachowania agenta. Np.:
- Strategia zachłanna
- Strategia $\epsilon$-chciwa
- Strategia typu softmax
- Strategia Boltzmanna
## Strategia zachłanna
Wybór takiej wartości $a_n$, która zapewni największą wartość Q.
$$
a_n = argmax \{ Q(S_N, a_n) \}
$$
**WADA** - przypisuje wartość jesynie nagrodzie uzyskanej natychmiast.
## Strategia $\epsilon$-chciwa
- Złagodzenie wymogu maksymalizacji wartości Q przy każdym przejściu.
- W każdym stanie $S_n$ z p-stwem równym pewnemu niewielkiemu współczynnikowi $\epsilon$ ($\epsilon \in [0,1]$) decyzja podejmowana jest losowo (z równomiernym rozkładem prawdopodobieństwa).
- Wartość $\epsilon$ nie jest stała, a maleje z kolejnymi epizodami. Dzięki temu na początku treningu agent skupia się na eksploracji środowiska, a dopiero potem na maksymalizacji nagrody (eksploatacja).

## Strategia typu Softmax
- Alternatywne podejście do strategii $\epsilon$-chciwej.
- Zakłada probabilistyczny wybór akcji, gdzie wartości Q są potraktowane jako wzorzec, według którego możliwe jest wyliczenie dyskretnej gęstości prawdopodobieństwa, z której natomiast można dokonać wyboru akcji $a_n$ w stanie $S_n$.
- Jednakże, wartości Q należy najpierw znormalizować, np. za pomocą funkcji softmax.
## Strategia Boltzmanna
- Wykorzystywana do wyznaczania gęstości prawdopodobieństwa z wartości $Q(S_n, a_n)$.
- Wprowadza dodatkowe dwa parametry
- temperaturę $T$
- współczynnik ograniczenia $c$, $c > 0$
$$
p(a_n = a_{i,n}) = \frac{e^{clip \Big( \frac{Q(S_n,a_n)}{T}, c \Big)}}{\sum_{k=1}^{N_a} clip\Big( \frac{Q(S_n,a_n)}{T}, c \Big)}
$$

# 36. Na czym polega zdefiniowany w kontekście uczenia ze wzmocnieniem problem tzw. wielorękiego bandyty (ang. multi-armed bandit)? Jakie zjawisko on ilustruje i w jaki sposób można wykorzystać symulację tego problemu do ustalenia optymalnych nastaw strategii agenta?
Jedną z trudności w projektowaniu algorytmów uczenia wzmacnianego jest dobór parametrów strategii. Na przykład współczynnika $\epsilon$ w strategii $\epsilon$-chciwej albo pary współczynników $T$ i $c$ w strategii Boltzmanna. Taki dobór można rozważać w przypadku problemu wielorękiego bandyty.
Polega on na tym, że agent chce maksymalizować nagrodę za grę na automacie wrzutowym posiadającym $l$ dźwigni. Każda dźwignia charakteryzuje się innym rozkładem prawdopodobieństwa otrzymywania nagród.
Poprzednie gry na wielorękim bandycie nie wpływają na przyszłe wyniki (czyli proces gry ma charakter markowowski). Agent nie zna parametrów opisujących poszczególne dźwignie. Z tego powodu nie jest możliwe zastosowanie chciwej strategii polegającej na prostym wyborze najlepszej dźwigni. Konieczna jest eksploracja w celu ustalenia, która dźwignia stanowi optymalny wybór.
Na początku agent jest zmuszony wypróbować każdą z dźwigni w celu ustalenia właściwości każdej z nich (eksploracja). Następnie dokonuje on wyboru najlepszej dźwigni (eksploatacja). Poprzez symulację eksploracji w problemie wielorękiego bandyty możliwe jest zbadanie wpływu parametrów takich jak $\epsilon$ na skuteczność procesu eksploracji. Wraz ze zmianami wybranych parametrów zmieniać się będzie średnia wielkość nagrody uzyskiwana przez agenta.
# 37. Czym jest pamięć powtórek (ang. replay memory)? Wyjaśnij sposób implementacji, zasadę działania i cel jej stosowania w treningu algorytmów bazujących na głębokich Q-sieciach (DQN).
Do treningu konieczne jest zebranie całej grupy danych. Musi być także dostępna informacja o najlepszej wartości $Q_{n+1}$ w stanie $S_{n+1}$. do którego agent przeszedł po podjęciu decyzji. Powoduje to potrzebę zapisu wszystkich przejść pomiędzy stanami.
Pamięć powtórek pozwala zminimalizować skorelowanie następujących po sobie przykładów treningowych poprzez wybranie do treningu losowego pozbioru zapisów z pamięci.
Pozwalają one również na rozwiązanie takich problemów, jak konieczność ustalenia maksymalnej wartości Q w kroku następnym.
Pamięć powtórek posiada skończoną, założoną długość, w której po osiągnięciu maksymalnej pojemności, usuwane są najstarsze zapisy interakcji agenta ze środowiskiem. Stąd często jest implementowana w postaci bufora kołowego.
# 38. Wyjaśnij sposób trenowania sieci DQN poprzez zastosowanie podwójnych Q-sieci. Do czego służy każda z dwóch sieci, w jaki sposób odbywa się taki trening i jakim problemom on zapobiega?
W takcie treningu zwykle algorytm operuje na 2 sieciach DQN (ze względu na konieczność wykonania kopii Q sieci jak i ryzyko nieuzyskania rozbieżności przez algorytm treningu):
- pierwsza z nich odpowiada za interakcję agenta ze środowiskiem - sieć realizująca politykę,
- druga sieć oblicza cel.
Co pewną ustaloną liczbę iteracji wagi sieci realizującej politykę są zastępowane wagami sieci obliczającej cel.
Częstotliwość aktualizacji wag = częstość uaktualnień
Pozwala to na zachowanie ciągłości stosowania jednego sposobu obliczania docelowych wartości Q przez wspomnianą liczbę iteracji i jej aktualizację po pewnym czasie.
# 39. Na podstawie algorytmu REINFORCE wytłumacz zasadę treningu sieci bazującą na głębokim gradiencie strategii (ang. deep policy gradient, DPG). Wyjaśnij, czym podejście DPG różni się od podejścia bazującego na sieciach estymujących Q-wartości?
Do estymowania funkcji strategii można wykorzystać głęboką sieć neuronową. Dzięki temu pomija się krok pośredni (wybór Q-wartości), a akcję oblicza się jako:
$$
a = \prod(S, \theta)
$$
$\theta$ - wagi sieci neuronowej realizującej strategię
## Kroki algorytmu
1. Losowa inicjalizacja parametrów $\theta$
2. Przeprowadzenie interakcji ze środowiskiem zgodnie ze strategią $\prod(a_n | S_n, \theta)$, co skutkuje uzyskaniem ciągu wartości $S_1, a_1, r_1$ itd...
3. Dla wartości $n=1, 2, \dots, N$:
- Oblicz zwrot $G_n$
- Zakualizuj wartości $\theta$ zgodnie z regułą:
$$
\theta \leftarrow \theta + l_r \gamma nG_n\Delta\theta ln \prod(S_n, \theta)
$$
$\prod(S_n, \theta$ jest w praktyce wyjściami otrzymanymi z sieci neuronowej w danym stanie $S_n$.
## Przewagi DPG nad DQN i DDQN
- Może operować na stochastycznej strategii mogącej przyjmować wartości z ciągłego zbioru.
- Jeżeli przestrzeń jest wielowymiarowa to algorytmy wprost estymujące wartość Q uczą się szybciej.
- Algorytmy szacujące mogą mieć większe oscylacje parametrów w trakcie treningu.
- algorytm REINFORCE jest prostszy w implementacji (w swojej podstawowej formie).