[PYTHON] Was ist die Aktivierungsfunktion?

Einführung

Ich werde erklären, welche Arten von Aktivierungsfunktionen im neuronalen Netzwerk auftreten und welche Art von Funktionen sie sind.

Was ist die Aktivierungsfunktion?

Diese Funktion wandelt die Summe der Eingangssignale in ein Ausgangssignal um. Die Aktivierungsfunktion bestimmt, wie die Summe der Eingangssignale aktiviert wird und wie sie ausgelöst wird.

y = h(\sum_{i=1}^{n}x_iw_i + b)
2020-01-30 (2).png
a = x_1w_1 + x_2w_2 + b \\
y = h(a)

$ h () $: Aktivierungsfunktion, $ \ sum_ {i = 1} ^ {n} x_iw_i + b $: Eingangssignal, $ y $: Ausgangssignal Im Diagramm sieht es so aus. Es ist eine Funktion, die den Ausgang umschaltet. Sie wird auch als "Schrittfunktion" bezeichnet. Da Perceptron zwei Werte für "Brennen" (1) und nicht "Brennen" (0) annimmt, verwendet "Perceptron eine Schrittfunktion als Aktivierungsfunktion. Normalerweise verwenden neuronale Netze eine andere Funktion, die keine Sprungfunktion ist, als Aktivierungsfunktion.

def step_function(x):
    if x > 0:
        return 1
    else:
        return 0

Wenn der Eingang größer als 0 ist, wird 1 zurückgegeben, und wenn er kleiner als 0 ist, wird 0 zurückgegeben. Ich denke, dass das Numpy-Array im neuronalen Netzwerk verwendet wird, also stellen Sie sicher, dass es dem Numpy-Array entspricht.

def step_function(x):
    y = x > 0
    return y.astype(np.int)

Eine Beschreibung des Codes. Eine Ungleichungsoperation für ein Numpy-Array generiert ein boolesches Array.

>>> x = np.array([1.0, -1.0, 2.0])
>>> y = x > 0
>>> y
>>> array([ True, False,  True])

Ich konvertiere es in int Typ.

>>> y.astype(np.int)
>>> array([1, 0, 1])

Das Diagramm sieht so aus. download.png

Sigmaid-Funktion

h(x) = \frac{1}{1-\exp(-x)}
def sigmoid(x):
    return 1 / (1 + np.exp(-x))

Wenn eine numerische Operation an einem Numpy-Array und einem Skalarwert ausgeführt wird, werden jedes Element des Numpy-Arrays und ein Skalarwert berechnet und das Ergebnis der Operation als Numpy-Array ausgegeben.

Das Diagramm sieht so aus. download.png

Ich denke, dass Sigmoid als eine glatte Schrittfunktion erkannt werden sollte. Es ist bequem, eine glatte zu haben.

Bedeutung und einfache Eigenschaften der Sigmoidfunktion

ReLU-Funktion

h(x) = \left\{
\begin{array}{ll}
x & (x \gt 0) \\
0 & (x \leq 0)
\end{array} \right.

Es ist eine Funktion, die den Eingabewert so ausgibt, wie er ist, wenn der Eingang 0 überschreitet, und 0 ausgibt, wenn er 0 oder weniger ist. Der Wert lautet "Relou-Funktion". Der offizielle Name lautet "Rectified Linear Unit", was auch als Rampenfunktion bezeichnet wird.


def relu(x):
    return np.maximum(0, x)

Maximum (): Vergleicht jedes Element von 0 und x und gibt das größere zurück

Das Diagramm sieht so aus. download.png

Softmax-Funktion

y_k = \frac{\exp(a_k)}{\sum_{i=1}^{n}\exp(a_i)}

Es wird häufig als Aktivierungsfunktion für die Ausgabeschicht verwendet. Da es selbst / ganz ist, kann es als Wahrscheinlichkeit angesehen werden. Sie können sehen, welche in anderen Klassifizierungen am plausibelsten ist.

def softmax(a):
    exp_a = np.exp(a)
    sum_exp_a = np.sum(exp_a)
    y = exp_a / sim_exp_a

Sei hier vorsichtig! Die Exponentialfunktion wächst explosionsartig. download.png So was. → Überlauf aufgetreten

Was ist zu tun?

Subtrahieren Sie den Maximalwert im Eingangssignal! Der Grund ist, dass die Softmax-Funktion die Eigenschaft hat, dass sich das Ergebnis nicht ändert, selbst wenn eine Konstante addiert oder subtrahiert wird.

def softmax(a):
    c = np.max(a) #Maximalwert im Eingangssignal
    exp_a = np.exp(a - c)
    sum_exp_a = np.sum(exp_a)
    y = exp_a / sum_exp_a
    return y

download.png Vergleichen Sie die y-Achse.

Gleiche Funktion

Es wird häufig als Aktivierungsfunktion für die Ausgabeebene der Regression verwendet. Es ist eine Funktion, die die Eingabe so ausgibt, wie sie ist.

download.png

abschließend

Neuronale Netze können sowohl für Regressions- als auch für Klassifizierungsprobleme verwendet werden, jedoch werden je nach Problem unterschiedliche Aktivierungsfunktionen verwendet, sodass unterschiedliche Aktivierungsfunktionen für die Ausgangsschicht und die Zwischenschicht verwendet werden können.

Recommended Posts

Was ist die Aktivierungsfunktion?
Was ist die Rückruffunktion?
In Bezug auf die Aktivierungsfunktion Gelu
Was ist die Schnittstelle für ...
Was ist eine Rückruffunktion?
[Python] Was ist eine Zip-Funktion?
[Python] Was ist @? (Über Dekorateure)
[Python] Was ist der sortierte Schlüssel?
Was ist das X Window System?
Wofür ist der Python-Unterstrich (_)?
Was ist ein Namespace?
Was ist copy.copy ()
Was ist Django? .. ..
Was ist dotenv?
Was ist POSIX?
Was ist Linux?
Was ist Clivoa, ein Framework für die ETL-Verarbeitung?
Was ist klass?
[Unix] Was ist der Zombie-Prozess / Orphan-Prozess?
Was ist die Ursache für den folgenden Fehler?
Was ist SALOME?
Was ist "Mahjong" in der Python-Bibliothek? ??
Was ist Linux?
Was ist Python?
Was ist Hyperopt?
Was ist Linux?
[Maschinelles Lernen] Was ist LP-Norm?
Was ist Pyvenv?
Was ist __call__?
Was ist Linux?
Was ist Python?
Was ist der Unterschied zwischen "pip" und "conda"?
Was ist im Docker Python-Image pfeifend?
Warum die Aktivierungsfunktion eine nichtlineare Funktion sein muss
Es ist ein Mac. Was ist der Linux-Befehl Linux?
(Linux-Anfänger) Was ist das Zauberwort aux?
Ich möchte die Aktivierungsfunktion Mish verwenden
Was ist der Unterschied zwischen Unix und Linux?
Was ist eine Distribution?
Was ist Piotroskis F-Score?
Was ist Raspberry Pi?
[Python] Was ist Pipeline ...
Was ist das Calmar-Verhältnis?
Was ist ein Terminal?
[PyTorch Tutorial ①] Was ist PyTorch?
Was ist Hyperparameter-Tuning?
Was ist ein Hacker?
Die erste GOLD "Funktion"
Was ist JSON? .. [Hinweis]
Informationen zur Entfaltungsfunktion
Wofür ist Linux?
Was ist ein Zeiger?
Was ist Ensemble-Lernen?
Was ist TCP / IP?
Was ist Pythons __init__.py?
Was ist ein Iterator?
Was ist UNIT-V Linux?
[Python] Was ist virtualenv?
Was ist maschinelles Lernen?
Was ist der Unterschied zwischen usleep, nanosleep und clock_nanosleep?