Klasyfikacja za pomocą sieci neuronowych
Przypomnienie materiału z wykładu
Podczas klasyfikowania danych wejściowych za pomocą prostych jednokierunkowych sieci neuronowych (ang. feedforward) obliczamy wartości neuronów na podstawie wartości neuronów poprzedniej warstwy.
- Mając daną $n$-warstwową sieć neuronową oraz jej parametry $\Theta^{(1)}, \ldots, \Theta^{(n)} $ oraz $\beta^{(1)}, \ldots, \beta^{(n)} $ liczymy:
$$a^{(i)} = g^{(i)}\left( a^{(i-1)} \Theta^{(i)} + \beta^{(i)} \right). $$
- Funkcje $g^{(i)}$ to tzw. funkcje aktywacji.
- Dla $i = 0$ przyjmujemy $a^{(0)} = \mathrm{x}$ (wektor wierszowy cech) oraz $g^{(0)}(x) = x$ (identyczność).
- W przypadku klasyfikacji, często dla ostatniej warstwy $n$ (o rozmiarze równym liczbie klas) przyjmuje się $g^{(n)}(x) = \mathop{\mathrm{softmax}}(x)$.
- Wtedy funkcja decyzyjna ma postać:
$$c = \mathop{\mathrm{argmax}}_{i}\left(a^{(n)}_i\right)$$
- Pozostałe funkcje aktywacji najcześciej mają postać sigmoidy (np. funkcja logistyczna lub tangens hiperboliczny, $\tanh$).
- Parametry $\Theta$ to wagi na połączeniach miedzy neuronami dwóch warstw. Rozmiar macierzy $\Theta^{(i)}$, czyli macierzy wag na połączeniach warstw $a^{(i-1)}$ i $a^{(i)}$, to $\dim(a^{(i-1)}) \times \dim(a^{(i)})$.
- Parametry $\beta$ zastępują tutaj dodawanie kolumny z jedynkami do naszej macierzy cech. Macierz $\beta^{(i)}$ ma rozmiar równy liczbie neuronów w odpowiedniej warstwie, czyli $1 \times \dim(a^{(i)})$.
Zadania (cześć teoretyczna)
- Rozwin rekurencję dla dwuwarstowej sieci neuronowej (zapisz równania w postaci Latexowej dla $a^{(0)}$, $a^{(1)}$, $a^{(2)}$) wraz z funkcją decyzyjną dla klasyfikacji.
- Pomyślmy ponownie o danych MNIST. Założmy, że mamy dwuwarstwową sieć neuronową z warstwą ukrytą o liczbie 100 neuronów. Podaj wymiary macierzy $\Theta^{(1)}, \Theta^{(2)} $ oraz $\beta^{(1)}, \beta^{(2)} $. Uzasadnij.
- Jakie będą wymiary odpowiednich macierzy w przypadku trzywarstowej sieci z ukrytymi warstwami o rozmiarach 200 i 50?