2016-02-15 13 views
6

Pracuję nad Deep Nets za pomocą keras. Istnieje aktywacja "hard sigmoid". Jaką matematyczną definicję?Jak jest zdefiniowany Hard Sigmoid

Wiem, co to Sigmoid. Ktoś zadał podobne pytanie na temat: https://www.quora.com/What-is-hard-sigmoid-in-artificial-neural-networks-Why-is-it-faster-than-standard-sigmoid-Are-there-any-disadvantages-over-the-standard-sigmoid

Ale nie mogłem znaleźć dokładnej definicji matematycznej w dowolnym miejscu?

+0

jest max (0, min (1 (x + 1)/2)) –

Odpowiedz

0

jest

max(0, min(1, (x + 1)/2)) 
10

Ponieważ Keras obsługuje zarówno Tensorflow, jak i Theano, dokładna implementacja może być różna dla każdego backendu - ja obejrzę tylko Theano. Dla Theano backend Keras wykorzystuje T.nnet.hard_sigmoid, który z kolei jest linearly approximated standard sigmoid:

slope = tensor.constant(0.2, dtype=out_dtype) 
shift = tensor.constant(0.5, dtype=out_dtype) 
x = (x * slope) + shift 
x = tensor.clip(x, 0, 1) 

czyli max (0, min (1 x * 0,2 + 0,5))

+1

Kaseta TensorFlow ma taką samą matematykę, chociaż jest implementowana ręcznie. https://github.com/fchollet/keras/blob/master/keras/backend/tensorflow_backend.py#L1487 –

1

Dla porównania, hard sigmoid function mogą być określone inaczej w różnych miejscach. W Courbariaux i in. 2016 [1], jest zdefiniowana jako:

σ jest funkcja „twarde esicy”: σ (x) = zacisk ((X + 1)/2, 0, 1) = max (0, min (1 (x + 1)/2))

Chodzi o to, aby zapewnić wartość prawdopodobieństwa (stąd ograniczające to być między 0 i 1) do stosowania w stochastycznego binaryzacji nerwowych parametrów sieci (na przykład waga, aktywacja , gradient). Użyto prawdopodobieństwa p = σ(x) zwróconego z funkcji esowatej twardej, aby ustawić parametr x na +1 z prawdopodobieństwem -1 lub z prawdopodobieństwem .

[1] https://arxiv.org/abs/1602.02830 - "binarnym Neural Networks: Szkolenie Głębokie Neural Networks z obciążnikami i aktywacji ograniczona do +1 lub -1" Matthieu Courbariaux Itay Hubara Daniel Soudry Ran El-Yaniv, Yoshua Bengio (Wprowadzone w dniu 9 lutego 2016 (v1) ostatniej aktualizacji 17 Mar 2016 (tej wersji, V3))