[PYTHON] Probieren Sie das Buch "Einführung in die Verarbeitung natürlicher Sprachanwendungen in 15 Schritten" - Kapitel 3 Schritt 08 Memo "Einführung in neuronale Netze".

Inhalt

Dies ist ein Memo für mich, während ich Einführung in Anwendungen zur Verarbeitung natürlicher Sprache in 15 Schritten lese. Dieses Mal werde ich in Kapitel 3, Schritt 08, meine eigenen Punkte aufschreiben.

Vorbereitung

Kapitelübersicht

Kapitel 3 enthält eine grundlegende Erklärung der Grundlagen des tiefen Lernens und seiner Anwendung auf die Verarbeitung natürlicher Sprache. In Schritt 08 als Einführung in neuronale Netze eine Übersicht über mehrschichtige Perzeptrone und eine einfache Implementierung unter Verwendung der Deep-Learning-Bibliothek Keras.

08.1 Einfaches Perceptron

Das Modell, das die Neuronen, aus denen die Gehirnzellen eines Organismus bestehen, in ein mathematisches Modell umwandelte, ist ** Perceptron **, und das Modell, das ein Neuron imitiert, heißt ** Simple Perceptron **.

--n Eingänge: x1, x2, ..., xn --n Gewichte: w1, w2, ..., wn

z = f(x1w1 + x2w2 + ... + xnwn + b)

Die obige Formel kann genau so codiert werden, wie sie ist, aber sie kann präzise geschrieben werden und die Verarbeitungsgeschwindigkeit ist schnell, wenn die Operation Vector Inner Product (NumPy) verwendet wird. Wenn das einfache Perzeptron als Diskriminator betrachtet wird, ist das Finden eines geeigneten Wertes der Gewichte (w und b) ** Lernen **.

import numpy as np

x = np.array([...])
w = np.array([...])
b = ..

z = b + np.dot(x, w)

08.2 Mehrschichtiges Perzeptron

Ähnlich wie bei den Nervenzellen im Gehirn ist es möglich, durch Verwendung der Ausgabe eines einfachen Perzeptrons als Eingabe eines anderen einfachen Perzeptrons eine Struktur zu schaffen, in der eine große Anzahl von Perzeptronen verbunden ist, ** mehrschichtiges Perzeptron (MLP) ** Namens.

test_mlp.py


import numpy as np

W_1 = np.array([
    [1, 2, 3],
    [4, 5, 6],
])

x = np.array([10, 20, 30])

print(np.dot(W_1, x))
print(np.dot(x, W_1))
[140 320]
Traceback (most recent call last):
  File "test_mlp.py", line 11, in <module>
    print(np.dot(x, W_1))
ValueError: shapes (3,) and (2,3) not aligned: 3 (dim 0) != 2 (dim 0)

Oben sind die Gewichte für die beiden Perzeptrone in der ersten Schicht von MLP in W_1 (Array mit 2 Zeilen und 3 Spalten) gespeichert. Durch Berechnung des inneren Produkts davon und des Eingabevektors von 3 Zeilen und 1 Spalte wird die Ausgabe von 2 Zeilen und 1 Spalte erhalten (2 Zeilen und 3 Spalten * 3 Zeilen und 1 Spalte = 2 Zeilen und 1 Spalte).

Wenn Sie versuchen, das innere Produkt durch Vertauschen von W_1 und x zu berechnen, tritt natürlich ein Fehler auf.

Während einfache Perzeptrone nur auf linear trennbare Probleme angewendet werden können, ** können mehrschichtige Perzeptrone auch linear untrennbare Probleme ansprechen **.

08.3 Deep Learning Library Keras

In 08.2 wurde jede Schicht als Funktion implementiert, sie kann jedoch mithilfe einer Bibliothek präzise beschrieben werden.

Laden der Bibliothek und Modellinitialisierung

import keras.layers import Dense
import keras.models import Sequential

model = Sequential()

Implementierung jeder Schicht

#Implementierung der ersten Schicht
model.add(Dense(units = 2, activation = 'relu', input_dim = 3))

#Implementierung der zweiten Schicht
model.add(Dense(units = 1, activation = 'sigmoid'))

MLP-Lerneinstellungen

Beim Diskriminatorlernen wird ein Paar aus Merkmalsvektor X und korrekter Bezeichnung y als Lehrerdaten angegeben. Die Klassifikatorparameter (Gewichte) werden so angepasst, dass die Ausgabe bei Eingabe von X nahe bei y liegt.

model.compile(loss = 'binary_crossentropy', optimizer = Adam(lr = 0.001))

--verlust: Verlustfunktion. Bewerten Sie die Identifikationsgenauigkeit eines Modells mit einer Funktion, die die Größe der Abweichung zwischen X und y ausdrückt. --binary_crossentropy: Verlustfunktionsübereinstimmung für 2-Klassen-Klassifikator --optimer: Optimierungsmethode. Das Anpassen der Parameter wird als Optimierung bezeichnet, und es gibt verschiedene Methoden. --lr: Lernrate. Ein Parameter, der bestimmt, um wie viel der Gewichtswert in einer Aktualisierung erhöht oder verringert wird

Gewicht jeder Schicht in Keras

Wenn Sie eine Ebene mit Keras instanziieren, werden die Gewichte implizit ** mit einer Zufallszahl ** initialisiert **. Wenn Sie auf die Gewichte zugreifen möchten, verwenden Sie die Methoden .get_weights () und .set_weights (). Wie ich in 10.3 geschrieben habe, können Sie die Initialisierung des Gewichts mit model.add (Dense (.., kernel_initializer =)) angeben.

08.4 Mehrschichtiges Perceptron lernen

model.fit(X, y, batch_size = 32, epochs = 100)

--batch_size: Wert, wie viele der Trainingsdaten gleichzeitig für alle trainiert werden sollen --epochs: Wert, wie oft eine Trainingsdaten für das Training verwendet werden --fit: Lernprozess. Die Fehlerrückverteilungsmethode wird intern verwendet

08.5 Was ist ein neuronales Netzwerk?

Die Besessenheit, Gehirnzellen zu imitieren, wurde aufgegeben und entwickelt, um Computern eine intelligente Verarbeitung zu ermöglichen.

Keras ist eine Wrapper-Bibliothek für TensorFlow. TensorFlow ist eine berühmte Deep-Learning-Bibliothek, die von Google entwickelt wurde und über viele Low-Level-APIs verfügt. Daher ist die Implementierung mithilfe von Keras, das High-Level-APIs bereitstellt, einfach. Da der größte Teil der Berechnung des neuronalen Netzwerks eine Vektor / Matrix-Operation ist, ist es denkbar, eine GPU zu verwenden, um ein größeres neuronales Netzwerk mit hoher Geschwindigkeit zu lernen.

Recommended Posts

Probieren Sie das Buch "Einführung in die Verarbeitung natürlicher Sprachanwendungen in 15 Schritten" - Kapitel 3 Schritt 08 Memo "Einführung in neuronale Netze".
Probieren Sie das Buch "Einführung in die Entwicklung natürlicher Anwendungen in 15 Schritten" - Kapitel 3 Schritt 12 Memo "Convolutional Neural Networks".
Probieren Sie das Buch "Einführung in die Entwicklung natürlicher Anwendungen in 15 Schritten" aus - Kapitel 3 Schritt 13 Memo "Wiederkehrende neuronale Netze"
Probieren Sie das Buch "Einführung in die Verarbeitung natürlicher Sprachanwendungen in 15 Schritten" aus - Kapitel 2 Schritt 06 Memo "Identifier"
Probieren Sie das Buch "Einführung in die Verarbeitung natürlicher Sprachanwendungen in 15 Schritten" aus - Kapitel 2 Schritt 02 Memo "Vorverarbeitung"
Probieren Sie das Buch "Einführung in die Verarbeitung natürlicher Sprachanwendungen in 15 Schritten" aus - Kapitel 2 Schritt 07 Memo "Evaluation"
Versuchen wir das Buch "Einführung in die Entwicklung natürlicher Anwendungen in 15 Schritten" - Kapitel 3 Schritt 10 Memo "Details und Verbesserung des neuronalen Netzes"
Probieren Sie das Buch "Einführung in die Entwicklung natürlicher Anwendungen in 15 Schritten" aus - Kapitel 3 Schritt 09 Memo "Identifier by Neural Network"
Probieren Sie das Buch "Einführung in die Verarbeitung natürlicher Sprachanwendungen in 15 Schritten" - Kapitel 4 Schritt 14 Memo "Hyperparametersuche"
Probieren Sie das Buch "Einführung in die Entwicklung natürlicher Anwendungen in 15 Schritten" aus - Kapitel 2 Schritt 04 Memo "Feature Extraction"
Probieren Sie das Buch "Einführung in die Entwicklung natürlicher Anwendungen in 15 Schritten" aus - Kapitel 2 Schritt 05 Memo "Feature Quantity Conversion"
Probieren Sie das Buch "Einführung in die Verarbeitung natürlicher Sprachanwendungen in 15 Schritten" aus - Kapitel 3 Schritt 11 Memo "Worteinbettungen"
Probieren Sie das Buch "Einführung in die Entwicklung natürlicher Anwendungen in 15 Schritten" aus - Kapitel 2 Schritt 01 Memo "Erstellen eines Dialogagenten"
Versuchen Sie das Buch "Einführung in die Verarbeitung natürlicher Sprachanwendungen in 15 Schritten" - Kapitel 2 Schritt 03 Memo "Morphologische Analyse und schriftliches Schreiben"
Probieren Sie das Buch "Einführung in die Verarbeitung natürlicher Sprachanwendungen in 15 Schritten" - Kapitel 1 Memo "Vorkenntnisse vor Beginn der Übungen".
[WIP] Vorverarbeiten von Notizen in der Verarbeitung natürlicher Sprache
Zusammenfassung von Anfang bis Kapitel 1 der Einführung in Entwurfsmuster, die in der Java-Sprache gelernt wurden
[Kapitel 5] Einführung in Python mit 100 Klopfen Sprachverarbeitung
Modell unter Verwendung eines Faltungsnetzwerks in der Verarbeitung natürlicher Sprache
[Kapitel 6] Einführung in Scicit-Learn mit 100 Klopfen Sprachverarbeitung
[Kapitel 3] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Kapitel 2] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Kapitel 4] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Jobwechsel-Meeting] Versuchen Sie, Unternehmen zu klassifizieren, indem Sie Mundpropaganda in natürlicher Sprache mit word2vec verarbeiten
[Verarbeitung natürlicher Sprache] Ich habe diese Woche versucht, die aktuellen Themen in der Slack-Community zu visualisieren
[Verarbeitung natürlicher Sprache] Ich habe versucht, die Bemerkungen jedes Mitglieds in der Slack-Community zu visualisieren
[Python] Versuchen Sie, Ramen-Shops durch Verarbeitung natürlicher Sprache zu klassifizieren
Zusammenfassung von Kapitel 2 der Einführung in Entwurfsmuster, die in Java gelernt wurden
Zusammenfassung von Kapitel 3 der Einführung in Entwurfsmuster, die in Java gelernt wurden
[Einführung in RasPi4] Umgebungskonstruktion, Mecab des Verarbeitungssystems für natürliche Sprache usw. .. .. ♪
Dockerfile mit den notwendigen Bibliotheken für die Verarbeitung natürlicher Sprache mit Python
100 Klicks in der Verarbeitung natürlicher Sprache Kapitel 4 Kommentar
100 Sprachverarbeitung Knock Kapitel 1 in Python
100 Sprachverarbeitung Knock 2020 Kapitel 8: Neuronales Netz
[Sprachverarbeitung 100 Schläge 2020] Kapitel 8: Neuronales Netz
Probieren Sie Cython in kürzester Zeit aus
Vorbereitung zum Starten der Verarbeitung natürlicher Sprache
Von der Einführung der GoogleCloudPlatform Natural Language API bis zur Verwendung
Ich habe versucht, die Version 2020 mit 100 Sprachverarbeitung zu lösen [Kapitel 3: Reguläre Ausdrücke 25-29]