W sieci LSTM (Understanding LSTMs), dlaczego brama wejściowa i brama wyjściowa używają tanh? jaka jest intuicja za tym? to tylko nieliniowa transformacja? Jeśli tak, czy mogę zmienić obie na inną funkcję aktywacji (np. ReLU)?Jaka jest intuicja korzystania z tanh w LSTM
Odpowiedz
Sigmoid
szczególności, stosuje się jako funkcję bramkowania do 3 bramy (w, na, zapomnieć) w LSTM
, gdyż na wyjściu wartość pomiędzy 0 i 1, to może albo pozwolić nie przepływu albo pełny przepływ informacji we bramy. Z drugiej strony, aby przezwyciężyć problem zanikających gradientów, potrzebujemy funkcji, której druga pochodna może utrzymać się na długim dystansie przed przejściem do zera. Tanh
to dobra funkcja z powyższą właściwością.
Dobra jednostka neuronowa powinna być ograniczona, łatwo różnicowalna, monotoniczna (dobra do optymalizacji wypukłej) i łatwa w obsłudze. Jeśli weźmiesz pod uwagę te cechy, to sądzę, że możesz użyć funkcji ReLU
zamiast funkcji tanh
, ponieważ są one bardzo dobrymi alternatywami. Ale zanim dokonasz wyboru funkcji aktywacyjnych, musisz wiedzieć, jakie są wady i zalety twojego wyboru w stosunku do innych. Krótko opisuję niektóre funkcje aktywacyjne i ich zalety.
Sigmoid
matematycznego: sigmoid(z) = 1/(1 + exp(-z))
1-ty pochodne zamówienie: sigmoid'(z) = -exp(-z)/1 + exp(-z)^2
Zalety:
(1) Sigmoid function has all the fundamental properties of a good activation function.
Tanh
matematycznego: tanh(z) = [exp(z) - exp(-z)]/[exp(z) + exp(-z)]
1-ty pochodne zamówienie: tanh'(z) = 1 - ([exp(z) - exp(-z)]/[exp(z) + exp(-z)])^2 = 1 - tanh^2(z)
Zalety:
(1) Often found to converge faster in practice
(2) Gradient computation is less expensive
twardego Tanh
matematycznego: hardtanh(z) = -1 if z < -1; z if -1 <= z <= 1; 1 if z > 1
1-szy pochodna,: hardtanh'(z) = 1 if -1 <= z <= 1; 0 otherwise
Zalety:
(1) Computationally cheaper than Tanh
(2) Saturate for magnitudes of z greater than 1
Relu
matematycznego: relu(z) = max(z, 0)
1-ci pochodne zamówienie: relu'(z) = 1 if z > 0; 0 otherwise
Zalety:
(1) Does not saturate even for large values of z
(2) Found much success in computer vision applications
nieszczelnego Relu
matematycznego: leaky(z) = max(z, k dot z) where 0 < k < 1
1-ci pochodne zamówienie: relu'(z) = 1 if z > 0; k otherwise
Zalety:
(1) Allows propagation of error for non-positive z which ReLU doesn't
to paper wyjaśnia niektóre f un aktywacja funkcji. Możesz rozważyć przeczytanie tego.
, więc chcę zmienić aktywację na RelU, muszę zmienić zarówno tanh w aktywacji bramki wejściowej, jak iw mnożeniu wyniku, czy to poprawne @Wasi Ahmad? – DNK
@DNK tak, chciałbym powiedzieć, aby zachować pewien stopień spójności, to jest konieczne. –
czyli, innymi słowy, -apart z sigmoidu używanego do bram- mogłem wybrać funkcję aktywacji jak w standardowej warstwie sieci neuronowej @ WasiAhmad – DNK
LSTMs zarządzają wewnętrznym wektorem stanu, którego wartości powinny być w stanie zwiększyć lub zmniejszyć, gdy dodamy wyjście jakiejś funkcji. Sigmoid output jest zawsze nieujemny; wartości w stanie tylko wzrosłyby. Wydajność tanh może być dodatnia lub ujemna, pozwalając na wzrost i spadek stanu.
Dlatego tanga używa się do określenia wartości kandydujących, aby uzyskać stan wewnętrzny. Kuzyn GRU z LSTM nie ma drugiego tanha, więc w pewnym sensie drugi nie jest konieczny. Sprawdź diagramy i wyjaśnienia w Chris Olah's Understanding LSTM Networks, aby uzyskać więcej informacji.
Powiązane pytanie "Dlaczego sigmoidy są używane w LSTM tam, gdzie są?" odpowiada również na podstawie możliwych wyjść funkcji: "bramkowanie" osiąga się przez pomnożenie przez liczbę od zera do jednego, i to jest to, co sigmoidy wyjściowe.
Nie ma naprawdę znaczących różnic między pochodnymi esicy i tanh; tanh to po prostu przeskalowany i przesunięty sigmoid: patrz Richard Socher's Neural Tips and Tricks. Jeśli drugie pochodne są istotne, chciałbym wiedzieć jak.
To jest poprawna odpowiedź. – ahstat
Dobra odpowiedź. brachu. – roachsinai
Ani bramka wejściowa, ani bramka wyjściowa nie używają funkcji tanh do aktywacji. Sądzę, że jest nieporozumienie. Zarówno bramka wejściowa ('i_ {t}'), jak i bramka wyjściowa ('o_ {t}') używają funkcji sigmoid. W sieci LSTM funkcja aktywacji tanh jest używana do określenia wartości stanu kandydującej komórki (stan wewnętrzny) ('\ tylda {C} _ {t}') i aktualizacji stanu ukrytego ('h_ {t}'). –