[PYTHON] Einführung und Implementierung der Aktivierungsfunktion

Einführung

Dieser Artikel ist eine Fortsetzung von Maschinelles Lernen ② Perceptron-Aktivierungsfunktion. Diesmal handelt es sich um einen Artikel über die Aktivierungsfunktion, die Schrittfunktion und die Sigmoidfunktion.

Referenz

Referenzen: O'REILLY JAPAN Deep Learning von Grund auf neu Letztes Mal: Maschinelles Lernen ② Perceptron-Aktivierungsfunktion

Aktivierungsfunktion

Was ist eine Sprungfunktion?

Eine Funktion, die den Ausgang auf einen bestimmten Schwellenwert schaltet, wird als Sprungfunktion bezeichnet. Es könnte durch die folgende Formel ausgedrückt werden.

Gleichung 3-1

aa


y=h(b+w1x1 + w2x2)\\
h(x) = \left\{
\begin{array}{ll}
1 & (x \, > \, 0) \\
0 & (x \, \leqq \, 0)
\end{array}
\right.

Implementierung der Schrittfunktion

Dieses Mal werde ich eine Schrittfunktion mit Python implementieren und sie mithilfe eines Diagramms anzeigen. Wir würden uns freuen, wenn Sie die Installationsmethode usw. selbst überprüfen könnten. Erstellen Sie zunächst eine Schrittfunktion in Python. Verwenden Sie Gleichung 3-1.

3-1step_func.py


def step_function(x):
    #Nur reelle Zahlen können als Argumente unterstützt werden(Akzeptieren Sie keine numpy Arrays)
    if x > 0:
        return 1
    else:
        return 0

Die obige Implementierung ist unkompliziert, hat jedoch das Problem, dass nur reelle Zahlen in das Argument x eingegeben werden können. Sie können es wie step_function (2.0) verwenden, aber Sie können das NumPy-Array usw. nicht als Argument verwenden. Es ist sehr praktisch, mehrere Daten gleichzeitig verarbeiten zu können, wenn NumPy-Arrays verarbeitet werden können. Daher, wie man diese erstellte Funktion ersetzt.

3-1step_func.py



import numpy as np

def step_function(x):
    #Als Argumente können nur reelle Zahlen unterstützt werden(Akzeptieren Sie keine numpy Arrays)

    #Für jedes Element wird ein Bourian-Typ generiert, indem Ungleichungsoperationen für das NumPy-Array verwendet werden.
    y = x > 0
    
    #astype()Beliebiger Typ in der Methode (diesmal np.kann in int-Typ geändert werden)
    return y.astype(np.int)

input_data = np.array([1.0, 2.0, 3, 0])
output_data = step_function(input_data)
print(output_data)

3-1step_func.py Ausführungsergebnis


[1 1 1 0]

Ich werde die Erklärung der Methoden und der grundlegenden Syntax im Programm weglassen, aber ich habe eine vorläufige Erklärung in den Kommentaren geschrieben. Um das Ausführungsergebnis zu überprüfen, können Sie sehen, dass bei Eingabe eines Werts größer als 0 1 zurückgegeben wird.

Schrittfunktionsdiagramm

Die diesmal definierte Schrittfunktion wird in einem Diagramm angezeigt.

3-1step_func.py



import numpy as np
import matplotlib.pylab as plt

def step_function(x):
    #Nur reelle Zahlen können als Argumente unterstützt werden(Akzeptieren Sie keine numpy Arrays)

    #Für jedes Element wird ein Bourian-Typ generiert, indem Ungleichungsoperationen für das NumPy-Array verwendet werden.
    y = x > 0
    
    #astype()Beliebiger Typ in der Methode (diesmal np.kann in int-Typ geändert werden)
    return y.astype(np.int)


# -5 ~ 5 0.Generieren Sie ein 1-Schritt-Array
input_data = np.arange(-5.0, 5.0, 0.1)
output_data = step_function(input_data)

#Graphdatengenerierung
plt.plot(input_data, output_data)

#Stellen Sie den Bereich der y-Achse ein
plt.ylim(-0.1, 1.1)
plt.show()
Ausführungsergebnis

ステップ関数のグラフ.jpg

Anhand der obigen Ergebnisse können Sie bestätigen, dass sich das Ergebnis bei 0 ändert.

Was ist eine Sigmoidfunktion?

Eine der in neuronalen Netzen häufig verwendeten Aktivierungsfunktionen ist die Sigmoidfunktion, die durch die folgende Formel ausgedrückt wird.

Gleichung 3-2

aa



h(x) = \frac{1}{1+e^{-x}}\\
e=Anzahl der Napiers ≒ 2.718

Es klingt kompliziert, ist aber nur eine Funktion. Wie andere Funktionen wird die Sigmoidfunktion in der konvertierten Form ausgegeben, indem ein Wert ersetzt wird.

Unterschied zwischen Perceptron und Neural Network

Der einzige Unterschied zwischen Perceptron und Neural Network ist die Aktivierungsfunktion. Die Struktur der Neuronen und die Methode der Signalübertragung sind für Perceptron und Neural Network gleich.

Implementierung der Sigmoidfunktion

Schreiben Sie zuerst Gleichung 3-2.

3-2sigmoid_func.py


import numpy as np
import matplotlib.pylab as plt

def sigmoid_function(x):

    #np.exp(-x)Ist e^-Repräsentiert x
    #Die Berechnung des Skalarwerts und des NumPy-Arrays wird zwischen jedem Element des Arrays berechnet.
    return 1 / (1 + np.exp(-x))

input_data = np.arange(-5.0, 5.0, 0.1)
output_data = sigmoid_function(input_data)
plt.plot(input_data, output_data)
plt.ylim(-0.1, 1.1)
plt.show()
Ausführungsergebnis

シグモイド関数のグラフ.jpg

Der Punkt hier ist, dass es immer in den Bereich von 0 bis 1 fällt.

Zusammenfassung

Wenn man den Unterschied zwischen den beiden eingeführten Aktivierungsfunktionen betrachtet, sieht es wie folgt aus.

sample.py


import numpy as np
import matplotlib.pylab as plt


def step_function(x):
    #Nur reelle Zahlen können als Argumente unterstützt werden(Akzeptieren Sie keine numpy Arrays)

    #Für jedes Element wird ein Bourian-Typ generiert, indem Ungleichungsoperationen für das NumPy-Array verwendet werden.
    y = x > 0
    
    #astype()Beliebiger Typ in der Methode (diesmal np.kann in int-Typ geändert werden)
    return y.astype(np.int)

def sigmoid_function(x):

    #np.exp(-x)Ist e^-Repräsentiert x
    #Die Berechnung des Skalarwerts und des NumPy-Arrays wird zwischen jedem Element des Arrays berechnet.
    return 1 / (1 + np.exp(-x))

input_data1 = np.arange(-5.0, 5.0, 0.1)
output_data1 = step_function(input_data1)

input_data2 = np.arange(-5.0, 5.0, 0.1)
output_data2 = sigmoid_function(input_data2)

#Graphdatengenerierung
plt.plot(input_data1, output_data1)
plt.plot(input_data2, output_data2)

#Stellen Sie den Bereich der y-Achse ein
plt.ylim(-0.1, 1.1)
plt.show()
ファイル名 Können Sie sehen, dass die Sigmoidfunktion glatter ist als die Schrittfunktion? Dieser Unterschied in der Glätte hat wichtige Auswirkungen auf das Lernen neuronaler Netze.

Recommended Posts

Einführung und Implementierung der Aktivierungsfunktion
Einführung und Implementierung von JoCoR-Loss (CVPR2020)
Erklärung und Implementierung von SocialFoceModel
Einführung und Tipps von mlflow.Tracking
Erläuterung und Implementierung von PRML Kapitel 4
Erklärung und Implementierung des ESIM-Algorithmus
Implementierung der Login-Funktion in Django
Erklärung und Implementierung von einfachem Perzeptron
Crawlen mit Python und Twitter API 2-Implementierung der Benutzersuchfunktion
Implementierung und Experiment der konvexen Clustering-Methode
Erklärung und Implementierung des Decomposable Attention-Algorithmus
Einfache Einführung in die Python3-Serie und OpenCV3
Einführung von Scikit-Optimize
Einführung von PyGMT
Einführung von Python
Vergleichen Sie die Implementierungsbeispiele für scikit-learn und pyclustering k-means
TRIE-Baumimplementierung mit Python und LOUDS
Einführung in Deep Learning ~ Lokalisierungs- und Verlustfunktion ~
Erläuterung der Bearbeitungsentfernung und Implementierung in Python
Einführung von trac (Windows + trac 1.0.10)
[Python of Hikari-] Kapitel 06-02 Funktion (Argument und Rückgabewert 1)
Spielen Sie mit der Implementierung der Pythonista 3-Benutzeroberfläche [Super Super Primer]
Einführung von ferenOS 1 (Installation)
Einführung des Virtualenv-Wrappers
Sequentielle Aktualisierung der Co-Distribution zur Ableitung und Implementierung von Ausdrücken
Liste der Aktivierungsfunktionen (2020)
Implementierung der Fibonacci-Sequenz
Ich berührte Bachstelze (3). Untersuchung und Implementierung von Popup-Nachrichten.
Perceptron Grundlagen und Implementierung
DataNitro, Implementierung einer Funktion zum Lesen von Daten aus dem Blatt
Implementierung des DB-Administratorbildschirms durch Flask-Admin und Flask-Login
Funktion von NumPy einstellen
Python-Implementierung des CSS3-Mischmodus und Diskussion über den Farbraum
Ableitung und Implementierung von Aktualisierungsgleichungen für die nicht negative Tensorfaktorzerlegung
[Einführung in cx_Oracle] (Teil 4) Abrufen und Scrollen der Ergebnismenge
Einfache Implementierung der Kreditkartenzahlungsfunktion mit PAY.JP [Django]
[Einführung in Scipy] Berechnung der Lorenzkurve und des Gini-Koeffizienten ♬
[Einführung in Data Scientists] Grundlagen von Python ♬ Funktionen und Klassen
Theorie und Implementierung mehrerer Regressionsmodelle - warum Regularisierung erforderlich ist -
Einführung von DataLiner Version 1.3 und Verwendung von Union Append
Überprüfung und Implementierung der Videorekonstruktionsmethode mit GRU und Autoencoder
Zusammenfassung der Aktivierungsfunktionen (Schritt, Sigmoid, ReLU, Softmax, konstante Funktion)
Erläuterung der CSV und Implementierungsbeispiel in jeder Programmiersprache
Code-Reduktion-Pipeline und Funktionstransformator-
Das Problem der Lügner und der Ehrlichkeit
Mechanismus von Pyenv und Virtualenv
Implementierung von TF-IDF mit Gensim
In Bezug auf die Aktivierungsfunktion Gelu
Implementierung von MathJax auf Sphinx
Vor- und Nachbearbeitung von Pytest
[Einführung in cx_Oracle] Übersicht über cx_Oracle
Was ist die Aktivierungsfunktion?
[Python] Wert des Funktionsobjekts (?)
[Python] Der Ursprung des Namens der Python-Funktion
Kombination von rekursiv und Generator
Kombination von anyenv und direnv
Normalisierung der Strömungstheorie und -implementierung