3. Perceptron wielowarstwowy

3.4. Funkcje kosztu

Do zastosowania algorytmów uczenia gradientowego (rozdział 2.2) wymagane jest wyznaczenie wartości funkcji kosztu \(J\) oraz jej pochodnych po parametrach sieci. W tym rozdziale zostaną omówione podstawowe funkcje kosztu.

W problemach regresji najczęściej stosujemy błąd średniokwadratowy (ang. MSE - Mean Squared Error) (wzór 14):

\[ \frac{1}{m} \sum_{j=1}^m (y_j - \hat{y}_j)^2 \]

gdzie \( m \) jest liczbą przykładów, \( y_j \) prawidłową etykietą dla \( j \)-tego przykładu, a \( \hat{y}_j \) wyjściem sieci dla \( j \)-tego przykładu. Błąd średniokwadratowy polega na wyznaczeniu różnicy między prawidłową wartością a wyjściem sieci, podniesieniu do kwadratu i uśrednieniu dla wszystkich przykładów.

W problemach klasyfikacji binarnej (klasyfikacji dla dwóch klas) stosujemy binarną entropię krzyżową (ang. BCE - binary cross-entrophy) (wzór 15):

\[ -\frac{1}{m} \sum_{j=1}^m \left( y_j \log(\hat{y}_j) + (1 - y_j)\log(1-\hat{y}_j)\right) \]

Funkcja ta na pierwszy rzut oka wydaje się trudna do zrozumienia. Spróbujmy zbudować sobie intuicje odnośnie jej działania. Dla pojedynczego przykładu (pomijamy sumowanie po \( m \)) rozważmy funkcję kosztu daną wzorem (wzór 16):

\[ \text{koszt}(\hat{y}^{(j)}, y^{(j)})= \begin{cases} -\log(\hat{y}^{(j)}) & \text{dla } y^{(j)}=1 \\ -\log(1 - \hat{y}^{(j)}) & \text{dla } y^{(j)}=0 \\ \end{cases} \]

Dla problemów klasyfikacji binarnej w warstwie wyjściowej stosujemy sigmoidalną funkcję aktywacji i wyjście sieci ma wartości z zakresu (0, 1). Dla \( y = 0 \) rozważamy funkcję kosztu przedstawioną na wykresie 6a. Jeśli wyjście sieci \( \hat{y} \) ma wartość 0 to koszt jest zerowy. Im bliżej \( \hat{y} \) jest wartości 1 tym większa wartość funkcji kosztu, czyli dla predykcji nieprawidłowej klasy z dużą pewnością model dostaje silną negatywną informację zwrotną.

Odwrotnie dla \( y = 1 \) stosujemy funkcję kosztu przedstawioną na rysunku 6b. Jeśli \( \hat{y} = 1 \) to koszt jest zerowy. Im bliżej \( \hat{y} \) jest zera, tym większy koszt. Jeżeli przyjrzymy się uważnie wzorowi (15), dostrzeżemy, że jest to inna forma zapisu (16) (i dodatkowo uwzględnienie wielu przykładów).

Wykres funkcji kosztu dla etykiety y=0 - rosnąca funkcja logarytmiczna
(a) Koszt dla y = 0
Wykres funkcji kosztu dla etykiety y=1 - malejąca funkcja logarytmiczna
(b) Koszt dla y = 1
Rysunek 6: Intuicje do binarnej entropii krzyżowej

Dla wielu klas stosujemy entropię krzyżową wieloklasową (ang. categorical cross-entrophy) (wzór 17):

\[ -\frac{1}{m} \sum_{j=0}^m \sum_{c=1}^M y_{jc}\log(\hat{y}_{jc}) \]

gdzie \( M \) oznacza liczbę klas, a \( c \) jest indeksem klasy. Interpretacja jest taka sama jak dla binarnej entropii krzyżowej, ale tu uwzględniamy w wyliczeniu tylko wyjście sieci odpowiadające prawidłowej klasie.