[PYTHON] Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 2

introduction

Soudain, j'ai commencé à étudier "Deep Learning from scratch - la théorie et l'implémentation du deep learning appris avec Python". C'est un mémo du voyage.

L'environnement d'exécution est macOS Mojave + Anaconda 2019.10. Pour plus de détails, reportez-vous au Chapitre 1 de ce mémo.

(Vers d'autres chapitres de ce mémo: Chapitre 1 / Chapitre 2 / Chapitre 3 ) / Chapitre 4 / Chapitre 5 / [Chapitre 6](https: / /qiita.com/segavvy/items/ca4ac4c9ee1a126bff41) / Chapitre 7 / Chapitre 8 / Résumé)

Chapitre 2 Perceptron

Ce chapitre décrit Perceptron.

2.1 Qu'est-ce que Perceptron?

Je n'avais pas de pierres d'achoppement particulières, mais pourquoi les appeler neurones? J'ai pensé qu'il serait plus intéressant d'avoir un peu plus de fond comme, donc je vais le compléter un peu pour autant que je puisse comprendre.

En 1943, le neurophysiologiste / chirurgien McCulloch et le logicologue / mathématicien Pitts se sont associés pour créer un modèle qui réalise les cellules nerveuses dans le cerveau avec un ordinateur [^ 1]. Si vous étudiez le mécanisme du cerveau et le gérez avec un ordinateur, vous devriez être en mesure de compléter une IA capable de penser comme un être humain! C'est une approche tellement étrange.

Dans le cerveau humain, on sait que plusieurs cellules nerveuses sont intimement connectées pour former un réseau. Ces cellules nerveuses individuelles sont appelées neurone en anglais, et l'un des modèles qui ont tenté de réaliser ces cellules nerveuses sur un ordinateur est Perceptron (neurone artificiel, simple Perceptron). C'est pourquoi le mot neurone apparaît dans la description de Perceptron.

Une cellule nerveuse reçoit un signal électrique d'une autre cellule nerveuse, et lorsqu'elle dépasse une certaine quantité, elle devient un état de déclenchement (état excité) pendant un moment et le transmet à une autre cellule nerveuse. Le mécanisme de Perceptron exprime exactement cela. Les signaux d'entrée $ x_1 $ et $ x_2 $ indiquent l'entrée d'autres cellules nerveuses, les poids $ w_1 $ et $ w_2 $ indiquent la facilité de transmission de l'état de déclenchement à partir d'autres cellules nerveuses, et le seuil $ \ theta $ est Il montre combien de signaux vos cellules nerveuses ont besoin pour se déclencher.

De plus, le réseau neuronal qui apparaîtra dans le chapitre suivant est une tentative de réaliser un réseau de multiples cellules nerveuses (neurones) sur un ordinateur afin de réaliser le cerveau humain.

L'approche consistant à imiter le cerveau humain est intéressante, n'est-ce pas? Le mécanisme du cerveau humain n'ayant pas encore été clarifié, les algorithmes du monde ne reproduisent pas fidèlement le cerveau humain et les chercheurs en IA devraient également reproduire fidèlement le cerveau humain. Je ne semble pas être particulier à ce sujet.

2.2 Circuit logique simple

Vous ne pouvez pas faire grand-chose avec un seul neurone, mais vous pouvez réaliser trois types de calculs: ET, OU et NAND en modifiant simplement les paramètres $ w_1 $, $ w_2 $ et $ \ theta $ sans changer la logique. Est intéressant.

2.3 Implémentation de Perceptron

L'apparence du biais $ b $ est un peu déroutante, mais c'est la même chose que $ \ theta $ en ce sens qu'il montre la facilité de se déclencher, alors procédons sans trop réfléchir car l'expression est différente. ..

2.4 Limites de Perceptron

Comme vous pouvez le voir dans le livre, les XOR ◯ et △ ne peuvent pas être réalisés en ligne droite, quels que soient vos efforts. C'est la limite pour Perceptron avec un neurone.

De plus, il semble que les mots linéaire et non linéaire doivent être avancés en sachant qu'ils peuvent / ne peuvent pas être divisés par des lignes droites comme dans le livre.

2.5 Perceptron multicouche

Il s'avère qu'il y a plus de choses à faire, tout comme XOR était possible avec plusieurs couches.

2.6 De NAND à l'ordinateur

Je n'ai pas compris l'histoire selon laquelle un ordinateur ne peut être fabriqué qu'avec NAND, mais le livre "From NAND to Tetris" qui est présenté semble le résoudre. Je ne peux pas me permettre de le faire maintenant, mais j'aimerais le lire si j'en ai l'occasion.

2.7 Résumé

Je n'ai pas non plus trébuché sur le chapitre 2.

C'est tout pour ce chapitre. Si vous avez des erreurs, je vous serais reconnaissant de bien vouloir les signaler. (Vers d'autres chapitres de ce mémo: Chapitre 1 / Chapitre 2 / Chapitre 3 ) / Chapitre 4 / Chapitre 5 / [Chapitre 6](https: / /qiita.com/segavvy/items/ca4ac4c9ee1a126bff41) / Chapitre 7 / Chapitre 8 / Résumé)

[^ 1]: [Wikipédia: Neuron formel](https://ja.wikipedia.org/wiki/%E5%BD%A2%E5%BC%8F%E3%83%8B%E3%83%A5%E3 À partir de% 83% BC% E3% 83% AD% E3% 83% B3)

Recommended Posts

Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 1
Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 7
Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 5
Un amateur a trébuché dans le Deep Learning à partir de zéro.
Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 2
Un amateur a trébuché dans le Deep Learning ❷ fait à partir de zéro Note: Chapitre 5
Un amateur a trébuché dans le Deep Learning ❷ fait à partir de zéro Note: Chapitre 2
Un amateur a trébuché dans le Deep Learning ❷ fait à partir de zéro Note: Chapitre 4
[Mémo d'apprentissage] Le Deep Learning fait de zéro [Chapitre 7]
Deep learning / Deep learning made from scratch Chapitre 6 Mémo
[Mémo d'apprentissage] Deep Learning fait de zéro [Chapitre 5]
[Mémo d'apprentissage] Le Deep Learning fait de zéro [Chapitre 6]
"Deep Learning from scratch" avec Haskell (inachevé)
Deep learning / Deep learning made from scratch Chapitre 7 Mémo
[Mémo d'apprentissage] Deep Learning fait de zéro [~ Chapitre 4]
Apprentissage profond à partir de zéro
Deep Learning from scratch ① Chapitre 6 "Techniques liées à l'apprentissage"
Apprentissage profond à partir de zéro 1 à 3 chapitres
Deep learning / Deep learning from scratch 2 Chapitre 4 Mémo
Deep learning / Deep learning made from scratch Chapitre 3 Mémo
Deep Learning / Deep Learning à partir de Zero 2 Chapitre 5 Mémo
Créez un environnement pour "Deep Learning from scratch" avec Docker
Apprentissage profond à partir de zéro (calcul des coûts)
Deep Learning / Deep Learning à partir de Zero 2 Chapitre 7 Mémo
Deep Learning / Deep Learning à partir de Zero 2 Chapitre 8 Mémo
Deep learning / Deep learning made from scratch Chapitre 5 Mémo
Deep learning / Deep learning made from scratch Chapitre 4 Mémo
Deep learning / Deep learning from scratch 2 Chapitre 3 Mémo
Mémo d'apprentissage profond créé à partir de zéro
Deep Learning / Deep Learning à partir de Zero 2 Chapitre 6 Mémo
"Deep Learning from scratch" Mémo d'auto-apprentissage (n ° 14) Exécutez le programme du chapitre 4 sur Google Colaboratory
Pourquoi ModuleNotFoundError: Aucun module nommé'dataset.mnist 'n'apparaît dans "Deep Learning from scratch".
Écrivez vos impressions sur l'édition du framework Deep Learning 3 créée à partir de zéro
Apprentissage profond à partir de zéro (propagation vers l'avant)
Apprentissage profond / Apprentissage profond à partir de zéro 2-Essayez de déplacer GRU
[Windows 10] Construction de l'environnement "Deep Learning from scratch"
Enregistrement d'apprentissage de la lecture "Deep Learning from scratch"
[Deep Learning from scratch] À propos de l'optimisation des hyper paramètres
Mémo d'auto-apprentissage "Deep Learning from scratch" (partie 12) Deep learning
Python vs Ruby «Deep Learning from scratch» Chapitre 2 Circuit logique par Perceptron
Python vs Ruby "Deep Learning from scratch" Chapitre 4 Implémentation de la fonction de perte
Mémo d'auto-apprentissage "Deep Learning from scratch" (glossaire illisible)
Un amateur a essayé le Deep Learning avec Caffe (Introduction)
GitHub du bon livre "Deep Learning from scratch"
Un amateur a essayé le Deep Learning en utilisant Caffe (Practice)
[Mémo d'apprentissage] Apprentissage profond à partir de zéro ~ Mise en œuvre de l'abandon ~
Un amateur a essayé le Deep Learning avec Caffe (Vue d'ensemble)
Résumé Python vs Ruby "Deep Learning from scratch"
Mémo d'auto-apprentissage «Deep Learning from scratch» (10) Classe MultiLayerNet
Mémo d'auto-apprentissage «Deep Learning from scratch» (n ° 11) CNN
Python vs Ruby "Deep Learning from scratch" Chapitre 3 Implémentation d'un réseau neuronal à 3 couches
[Python] [Traitement du langage naturel] J'ai essayé le Deep Learning ❷ fait de toutes pièces en japonais ①
Deep Learning from scratch La théorie et la mise en œuvre de l'apprentissage profond appris avec Python Chapitre 3
Version Lua Deep Learning from scratch Part 5.5 [Rendre les fichiers pkl disponibles dans Lua Torch]
[Deep Learning from scratch] J'ai implémenté la couche Affine
Apprendre en profondeur à l'expérience avec Python Chapitre 2 (Matériel pour une conférence ronde)
[Deep Learning from scratch] J'ai essayé d'expliquer le décrochage
Python vs Ruby "Deep Learning from scratch" Chapitre 3 Graphique de la fonction step, fonction sigmoid, fonction ReLU