[PYTHON] Essayez le livre «Introduction au développement d'applications de traitement du langage naturel en 15 étapes» - Chapitre 3 Étape 08 Mémo «Introduction aux réseaux de neurones»

Contenu

Ceci est un mémo pour moi pendant que je lis Introduction aux applications de traitement du langage naturel en 15 étapes. Cette fois, au chapitre 3, étape 08, j'écrirai mes propres points.

Préparation

Aperçu des chapitres

Le chapitre 3 est une explication de base des bases de l'apprentissage profond et de son application au traitement du langage naturel. À l'étape 08, en guise d'introduction aux réseaux de neurones, un aperçu des perceptrons multicouches et une implémentation simple à l'aide de la bibliothèque d'apprentissage en profondeur Keras.

08.1 Perceptron simple

Le modèle qui a poussé les neurones qui composent les cellules cérébrales d'un organisme dans un modèle mathématique est ** Perceptron **, et le modèle qui imite un neurone est appelé ** Perceptron simple **.

--n entrées: x1, x2, ..., xn --n poids: w1, w2, ..., wn

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

La formule ci-dessus peut être codée exactement telle quelle, mais elle peut être écrite de manière concise et la vitesse de traitement est rapide en utilisant l'opération NumPy des vecteurs. Lorsque le perceptron simple est considéré comme un discriminateur, trouver une valeur appropriée des poids (w et b) est ** apprendre **.

import numpy as np

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

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

08.2 Perceptron multicouche

Similaire aux cellules nerveuses du cerveau, en utilisant la sortie d'un perceptron simple comme entrée d'un autre perceptron simple, il est possible de créer une structure dans laquelle un grand nombre de perceptrons sont connectés, ** perceptron multicouche (MLP) ** Appelé.

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)

Dans ce qui précède, les poids des deux perceptrons de la première couche de MLP sont stockés dans W_1 (tableau 2 lignes et 3 colonnes). En calculant le produit interne de celui-ci et le vecteur d'entrée de 3 lignes et 1 colonne, la sortie de 2 lignes et 1 colonne est obtenue (2 lignes et 3 colonnes * 3 lignes et 1 colonne = 2 lignes et 1 colonne).

Bien sûr, si vous essayez de calculer le produit interne en échangeant W_1 et x, une erreur se produira.

Alors que les perceptrons simples ne peuvent être appliqués qu'à des problèmes linéairement séparables, ** les perceptrons multicouches peuvent également traiter des problèmes linéairement inséparables **.

08.3 Bibliothèque de Deep Learning Keras

En 08.2, chaque couche était implémentée en tant que fonction, mais elle peut être décrite de manière concise en utilisant une bibliothèque.

Chargement de la bibliothèque et initialisation du modèle

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

model = Sequential()

Implémentation de chaque couche

#Implémentation de première couche
model.add(Dense(units = 2, activation = 'relu', input_dim = 3))

#Implémentation de la deuxième couche
model.add(Dense(units = 1, activation = 'sigmoid'))

--Dense: couche entièrement connectée --input_dim: nombre de dimensions d'entrée. La dimension de sortie de la couche précédente devient la dimension d'entrée telle qu'elle est à partir de la deuxième couche, elle peut donc être omise. --units: nombre de dimensions de sortie --activation: fonction d'activation --Relu: Dans le passé, les sigmoïdes, etc. étaient utilisés, mais ils sont excellents en termes de précision et de facilité de convergence. --Sigmoïde: utilisé dans la dernière couche de MLP pour les classificateurs à 2 classes

Paramètres d'apprentissage MLP

Dans l'apprentissage du discriminateur, une paire de vecteur de caractéristiques X et d'étiquette correcte y est donnée en tant que données d'enseignant. Les paramètres du classifieur (poids) sont ajustés de sorte que la sortie lorsque X est entré soit proche de y.

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

--loss: fonction de perte. Évaluez la précision d'identification d'un modèle avec une fonction qui exprime l'ampleur de l'écart entre X et y. --binary_crossentropy: correspondance de fonction de perte pour le classificateur à 2 classes --optimer: méthode d'optimisation. L'ajustement des paramètres s'appelle l'optimisation et il existe différentes méthodes. --lr: taux d'apprentissage. Un paramètre qui détermine combien la valeur de poids est augmentée ou diminuée dans une mise à jour --Grand: Le changement de poids est trop important pour se déplacer autour de la valeur optimale, ou diverger sans converger dans le pire des cas.

Poids de chaque couche dans Keras

Lorsque vous instanciez une couche avec Keras, les pondérations sont implicitement ** initialisées avec des nombres aléatoires **. Si vous voulez accéder aux poids, utilisez les méthodes .get_weights () et .set_weights (). Comme je l'ai écrit en 10.3, si vous souhaitez spécifier l'initialisation du poids, vous pouvez le spécifier avec model.add (Dense (.., kernel_initializer =)).

08.4 Apprentissage de Perceptron multicouche

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

--batch_size: valeur du nombre de données d'entraînement à entraîner à la fois pour tous --epochs: valeur du nombre de fois qu'une donnée d'entraînement est utilisée pour l'entraînement --fit: processus d'apprentissage. La méthode de propagation de retour d'erreur est utilisée en interne

08.5 Qu'est-ce qu'un réseau neuronal?

L'obsession d'imiter les cellules cérébrales a été abandonnée et elle a été développée dans le but de permettre aux ordinateurs d'effectuer un traitement intelligent.

Keras est une bibliothèque d'encapsuleurs pour TensorFlow. TensorFlow est une célèbre bibliothèque d'apprentissage en profondeur développée par Google et possède de nombreuses API de bas niveau, il est donc facile à mettre en œuvre à l'aide de Keras, qui fournit des API de haut niveau. Étant donné que la majeure partie du calcul du réseau neuronal est une opération vectorielle / matrice, il est concevable d'utiliser le GPU pour apprendre un réseau neuronal plus grand à grande vitesse.

Recommended Posts

Essayez le livre «Introduction au développement d'applications de traitement du langage naturel en 15 étapes» - Chapitre 3 Étape 08 Mémo «Introduction aux réseaux de neurones»
Essayez le livre "Introduction au développement d'applications de traitement du langage naturel en 15 étapes" --Chapitre 3 Étape 12 Mémo "Réseaux de neurones convolutifs"
Essayez le livre «Introduction au développement d'applications de traitement du langage naturel en 15 étapes» --Chapitre 3 Étape 13 Mémo «Réseaux de neurones récurrents»
Essayez le livre «Introduction au développement d'applications de traitement du langage naturel en 15 étapes» - Chapitre 2 Étape 06 Mémo «Identifiant»
Essayez le livre "Introduction au développement d'applications de traitement du langage naturel en 15 étapes" - Chapitre 2 Étape 02 Mémo "Prétraitement"
Essayez le livre «Introduction au développement d'applications de traitement du langage naturel en 15 étapes» - Chapitre 2 Étape 07 Mémo «Évaluation»
Essayons le livre "Introduction au développement d'applications de traitement du langage naturel en 15 étapes" --Chapitre 3 Étape 10 Mémo "Détails et amélioration du réseau neuronal"
Essayez le livre "Introduction au développement d'applications de traitement du langage naturel en 15 étapes" --Chapitre 3 Étape 09 Mémo "Identifier par Neural Network"
Essayez le livre "Introduction au développement d'applications de traitement du langage naturel en 15 étapes" --Chapitre 4 Etape 14 Mémo "Recherche Hyper Paramètre"
Essayez le livre «Introduction au développement d'applications de traitement du langage naturel en 15 étapes» --Chapitre 2 Étape 04 Mémo «Extraction de fonctionnalités»
Essayez le livre "Introduction au développement d'applications de traitement du langage naturel en 15 étapes" --Chapitre 2 Étape 05 Mémo "Conversion de quantité de fonctionnalités"
Essayez le livre "Introduction au développement d'applications de traitement du langage naturel en 15 étapes" - Chapitre 3 Étape 11 Mémo "Embeddings de mots"
Essayez le livre «Introduction au développement d'applications de traitement du langage naturel en 15 étapes» --Chapitre 2 Étape 01 Mémo «Créer un agent de dialogue»
Essayez le livre "Introduction au développement d'applications de traitement du langage naturel en 15 étapes" --Chapitre 2 Étape 03 Mémo "Analyse morphologique et écriture écrite"
Essayez le livre "Introduction au développement d'applications de traitement du langage naturel en 15 étapes" -Chapitre 1 Mémo "Connaissances préliminaires avant de commencer les exercices"
[WIP] Pré-traitement des notes dans le traitement du langage naturel
Résumé du début au chapitre 1 de l'introduction aux modèles de conception appris en langage Java
[Chapitre 5] Introduction à Python avec 100 coups de traitement du langage
Modèle utilisant un réseau neuronal convolutif dans le traitement du langage naturel
[Chapitre 6] Introduction à scicit-learn avec 100 coups de traitement du langage
[Chapitre 3] Introduction à Python avec 100 coups de traitement du langage
[Chapitre 2] Introduction à Python avec 100 coups de traitement du langage
[Chapitre 4] Introduction à Python avec 100 coups de traitement du langage
[Réunion de changement d'emploi] Essayez de classer les entreprises en traitant le bouche-à-oreille en langage naturel avec word2vec
[Traitement du langage naturel] J'ai essayé de visualiser les sujets d'actualité cette semaine dans la communauté Slack
[Traitement du langage naturel] J'ai essayé de visualiser les remarques de chaque membre de la communauté Slack
[Python] Essayez de classer les boutiques de ramen par traitement du langage naturel
Résumé du chapitre 2 de l'introduction aux modèles de conception appris en langage Java
Résumé du chapitre 3 de l'introduction aux modèles de conception appris en langage Java
[Introduction à RasPi4] Construction de l'environnement, système de traitement du langage naturel mecab, etc. .. .. ♪
Dockerfile avec les bibliothèques nécessaires pour le traitement du langage naturel avec python
100 traitements du langage naturel frappent le chapitre 4 Commentaire
100 Language Processing Knock Chapitre 1 en Python
100 Language Processing Knock 2020 Chapitre 8: Neural Net
[Traitement du langage 100 coups 2020] Chapitre 8: Réseau neuronal
Essayez Cython dans les plus brefs délais
Se préparer à démarrer le traitement du langage naturel
De l'introduction de l'API GoogleCloudPlatform Natural Language à son utilisation
J'ai essayé de résoudre 100 traitements linguistiques Knock version 2020 [Chapitre 3: Expressions régulières 25-29]