Sdílet prostřednictvím


Aktivační funkce pomocí BrainScriptu

Sigmoid(), Tanh(), ReLU(), Softmax(), LogSoftmax(), Hardmax()

Nelineární aktivační funkce pro neurální sítě.

Sigmoid (x)
Tanh (x)
ReLU (x)
Softmax (x)
LogSoftmax (x)
Hardmax (x)

Parametry

  • x: argument pro použití nelinearity na

Návratová hodnota

Výsledek použití nelinearity Tvar tensoru výstupu je stejný jako obrazec vstupu.

Description

Jedná se o oblíbené aktivační funkce neurálních sítí. Všechny tyto prvky kromě Softmax() rodiny a Hardmax() jsou použity po prvku.

Při použití kritéria trénování křížové entropie je často žádoucí nepoužít operaci Softmax na konci, ale místo toho předat vstup Softmaxu do CrossEntropyWithSoftmax()

Operace Hardmax() určuje prvek s nejvyšší hodnotou a představuje jeho umístění jako vektor s jedním horkým vektorem nebo tensorem. Používá se k provádění klasifikace.

Vyjádření jiných nelineárních aktivit v BrainScriptu

Pokud vaše potřebná nelineárníita není jednou z výše uvedených hodnot, může být kompozitelná jako výraz BrainScriptu. Například únik reLU se sklonem 0,1 pro zápornou část lze napsat jako

LeakyReLU (x) = 0.1 * x + 0.9 * ReLU (x)

Softmax podél os

Rodina Softmax je zvláštní v tom, že zahrnuje výpočet jmenovatele. Tento jmenovatel se vypočítá přes všechny hodnoty vstupního vektoru.

V některých scénářích je však vstup tensorem s pořadím>1, kde se osy mají zacházet samostatně. Představte si například vstupní tensor obrazce [10000 x 20] , který uchovává 20 různých rozdělení, každý sloupec představuje rozdělení pravděpodobnosti jedinečné vstupní položky. Operace Softmax by proto měla vypočítat 20 samostatných jmenovatelů. Tato operace není podporována předdefinovanými (Log)Softmax() funkcemi, ale lze ji realizovat v BrainScriptu pomocí operace redukce prvků následujícím způsobem:

ColumnwiseLogSoftmax (z) = z - ReduceLogSum (axis=1)

ReduceLogSum() Tady vypočítá jmenovatel (log of), což vede k tensoru s rozměrem 1 pro sníženou osu, [1 x 20] v předchozím příkladu. Odečítání tohoto vektoru z -dimenzionálního vstupního vektoru [10000 x 20]je platná operace - jako obvykle, 1 automaticky "všesměrové", tj. duplikováno tak, aby odpovídalo vstupní dimenzi.

Příklad

Jednoduchý mlP, který provádí 10cestnou klasifikaci 40rozměrných vektorů funkcí:

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)