Ich werde erklären, welche Arten von Aktivierungsfunktionen im neuronalen Netzwerk auftreten und welche Art von Funktionen sie sind.
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.
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.
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.
Ich denke, dass Sigmoid als eine glatte Schrittfunktion erkannt werden sollte. Es ist bequem, eine glatte zu haben.
Bedeutung und einfache Eigenschaften der Sigmoidfunktion
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.
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. So was. → Überlauf aufgetreten
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
Vergleichen Sie die y-Achse.
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.
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