Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:dydaktyka:ml:lab6 [2013/04/03 09:03] esimon [Regularyzowane backpropagation] |
pl:dydaktyka:ml:lab6 [2019/06/27 15:50] (aktualna) |
{{:pl:dydaktyka:ml:ex4.pdf|Instructions}} in English. | {{:pl:dydaktyka:ml:ex4.pdf|Instructions}} in English. |
| |
Ćwiczenia do pobrania (files to download): {{:pl:dydaktyka:ml:neural-networks.zip|Sieci Neuronowe}} | Ćwiczenia do pobrania (files to download): {{:pl:dydaktyka:ml:neural-networks.zip|Neural Networks}} |
| |
===== Lista i opis plików ===== | ===== Lista i opis plików ===== |
* //ex4.m// - Skrypt pomagający przejść przez laboratorium | * //ex4.m// - Skrypt pomagający przejść przez laboratorium |
* randInitializeWeights.m - Losowa inicjalizacja wag sieci neuronowej | * randInitializeWeights.m - Losowa inicjalizacja wag sieci neuronowej |
* :!: nnCostFunction.m - funkcja kosztu dla sieci neuronowej | * :!: nnCostFunction.m - funkcja kosztu dla sieci neuronowej |
| ===== Rozgrzewka ===== |
| Zanim zaczniemy właściwą część zajęć, poświeć chwilę na obejrzeniu jak działa prosta sieć neuronowa w akcji: http://playground.tensorflow.org/ |
| |
| Zastanów się co wpływa na jakość klasyfikacji: |
| * ilość neuronów w warstwie ukrytej? |
| * funkcja aktywacji neuronu? |
| * cechy, które podajemy na wejściu? |
| * ilość danych wejśćiowych? |
| * współczynnik regularyzacji lub learning rate? |
| * ilość warstw ukrytych? |
| |
===== Wstęp ===== | ===== Wstęp ===== |
Celem ćwiczeń laboratoryjnych jest nauczenie sieci neuronowej rozpoznawania cyfr. | Celem ćwiczeń laboratoryjnych jest nauczenie sieci neuronowej rozpoznawania cyfr. |
| |
{{:pl:dydaktyka:ml:digit-nn.png?700|Struktura sieci neuronowej do rozpoznawania cyfr}} | {{:pl:dydaktyka:ml:digit-nn.png?700|Struktura sieci neuronowej do rozpoznawania cyfr}} |
| |
===== Funkcja kosztu ===== | ===== Funkcja kosztu ===== |
Uzupełnij plik //nnCostFunction.m// wyznaczając koszt i gradient dla sieci neuronowej. | Uzupełnij plik //nnCostFunction.m// wyznaczając koszt i gradient dla sieci neuronowej. |
| |
Wartość funkcji kosztu obliczany jest za pomocą wzoru: | Wartość funkcji kosztu obliczany jest za pomocą wzoru: |
$$J(\theta)= \frac{1}{m}\sum_{i=1}^{m}\sum_{k=1}^{K}\left [ -y_k^{(i)}log((h_\theta(x^{(i)}))_k)-(1-u_k^{(i)})log(1-(h_\theta(x^{(i)}))_k \right ]$$ | $$J(\theta)= \frac{1}{m}\sum_{i=1}^{m}\sum_{k=1}^{K}\left [ -y_k^{(i)}log((h_\theta(x^{(i)}))_k)-(1-y_k^{(i)})log(1-(h_\theta(x^{(i)}))_k \right ]$$ |
| |
Gdzie $m$ to ilość przykładów w zbiorze uczącym, a $K$ to ilość etykiet (w naszym przypadku 10). | Gdzie $m$ to ilość przykładów w zbiorze uczącym, a $K$ to ilość etykiet (w naszym przypadku 10). |
**Uwaga** Pamiętaj aby poprawnie obliczyć wartość $h(x)$, która w przypadku sieci neuronowej polega na wymnożeniu współczynników wag //Theta// i danych wejściowych - zobacz rysunek powyżej. | **Uwaga** Pamiętaj aby poprawnie obliczyć wartość $h(x)$, która w przypadku sieci neuronowej polega na wymnożeniu współczynników wag //Theta// i danych wejściowych - zobacz rysunek powyżej. |
| |
**Uwaga** Sieć neuronowa ma 10 neuronów w warstwie wyjściowej. Zatem wyjście sieci oznaczające, że rozpoznano np liczbę 3, będzie wyglądać następująco: | **Uwaga** Sieć neuronowa ma 10 neuronów w warstwie wyjściowej. Zatem wyjście sieci oznaczające, że rozpoznano np liczbę 3, będzie wyglądać następująco (cyfrę **zero** reprezentować będzie 10 indeks wektora //y//): |
| |
$$y = \begin{bmatrix} | $$y = \begin{bmatrix} |
0\\ | |
0\\ | 0\\ |
0\\ | 0\\ |
1\\ | 1\\ |
| 0\\ |
...\\ | ...\\ |
0 | 0 |
Wartość funkcji kosztu obliczany jest za pomocą wzoru: | Wartość funkcji kosztu obliczany jest za pomocą wzoru: |
$$ | $$ |
J(\theta)= \frac{1}{m}\sum_{i=1}^{m}\sum_{k=1}^{K}\left [ -y_k^{(i)}log((h_\theta(x^{(i)}))_k)-(1-u_k^{(i)})log(1-(h_\theta(x^{(i)}))_k \right ] + R(\theta) | J(\theta)= \frac{1}{m}\sum_{i=1}^{m}\sum_{k=1}^{K}\left [ -y_k^{(i)}log((h_\theta(x^{(i)}))_k)-(1-y_k^{(i)})log(1-(h_\theta(x^{(i)}))_k \right ] + R(\theta) |
$$ | $$ |
| |
Przetestuj działanie algorytmu przy pomocy skryptu //check.m// oraz //ex4.m//. | Przetestuj działanie algorytmu przy pomocy skryptu //check.m// oraz //ex4.m//. |
===== Uwagi ===== | ===== Uwagi ===== |
* Wzór funkcji kosztu podany jest wyłącznie dla jednej warstwy - poprawić, żeby było jasne że konieczne jest zrobienie iteracji dla kolejnych warstw. | |
| |