Funkcje aktywacji za pomocą języka BrainScript
Sigmoid(), Tanh(), ReLU(), Softmax(), LogSoftmax(), Hardmax()
Funkcje aktywacji nieliniowej dla sieci neuronowych.
Sigmoid (x)
Tanh (x)
ReLU (x)
Softmax (x)
LogSoftmax (x)
Hardmax (x)
Parametry
x
: argument, aby zastosować nieliniowość do
Wartość zwracana
Wynik zastosowania nieliniowości. Kształt tensora danych wyjściowych jest taki sam jak w przypadku danych wejściowych.
Opis
Są to popularne funkcje aktywacji sieci neuronowych.
Wszystkie te elementy z wyjątkiem Softmax()
rodziny i Hardmax()
są stosowane w sposób zgodny z elementami.
Należy pamiętać, że w przypadku wydajności, w przypadku korzystania z kryterium trenowania między entropiami, często pożądane jest, aby nie stosować operacji Softmax na końcu, ale zamiast tego przekazać dane wejściowe softmax do CrossEntropyWithSoftmax()
Operacja Hardmax()
określa element o najwyższej wartości i reprezentuje jego lokalizację jako wektor jedno-gorący/tensor.
Służy to do przeprowadzania klasyfikacji.
Wyrażanie innych nielinii w języku BrainScript
Jeśli potrzebna nieliniowość nie jest jedną z powyższych wartości, może to być możliwe jako wyrażenie BrainScript. Na przykład wyciekowy reLU ze nachyleniem 0,1 dla części ujemnej może być po prostu zapisany jako
LeakyReLU (x) = 0.1 * x + 0.9 * ReLU (x)
Softmax wzdłuż osi
Rodzina Softmax jest specjalna w tym, że obejmuje obliczanie mianownika. Ten mianownik jest obliczany dla wszystkich wartości wektora wejściowego.
W niektórych scenariuszach dane wejściowe są jednak tensorem o pozycji>1, gdzie osie powinny być traktowane oddzielnie.
Rozważmy na przykład tensor wejściowy kształtu [10000 x 20]
, który przechowuje 20 różnych rozkładów, każda kolumna reprezentuje rozkład prawdopodobieństwa odrębnego elementu wejściowego.
W związku z tym operacja Softmax powinna obliczać 20 oddzielnych mianowników.
Ta operacja nie jest obsługiwana przez wbudowane (Log)Softmax()
funkcje, ale można ją zrealizować w języku BrainScript przy użyciu operacji redukcji elementów w następujący sposób:
ColumnwiseLogSoftmax (z) = z - ReduceLogSum (axis=1)
ReduceLogSum()
W tym miejscu oblicza (dziennik) mianownika, co powoduje tensor o wymiarze 1 dla osi zredukowanej; [1 x 20]
w powyższym przykładzie. Odejmowanie tego z [10000 x 20]
-wymiarowego wektora wejściowego jest prawidłową operacją — jak zwykle, 1
automatycznie "rozgłaszaj", czyli duplikowaną w celu dopasowania do wymiaru wejściowego.
Przykład
Prosta metoda MLP, która wykonuje 10-drogową klasyfikację wektorów funkcji 40-wymiarowych:
features = Input{40}
h = Sigmoid (ParameterTensor{256:0} * features + ParameterTensor{256})
z = ParameterTensor{10:0} * h * ParameterTensor{10} # input to Softmax
labels = Input{10}
ce = CrossEntropyWithSoftmax (labels, z)