Cette fois, je voudrais vous présenter *** Deep Learning, qui a été implémenté sans utiliser la bibliothèque *** dans le but d'étudier. Le langage est Python.
Cependant, il y a des livres auxquels j'ai fait référence. Dans cette entrée, nous présenterons le livre et expliquerons le code réimplémenté en Python basé sur le code Java décrit dans le livre.
Je ne pense pas que le fait que l'apprentissage en profondeur attire l'attention en tant que catalyseur du récent boom de l'IA ne soit pas autant que je le mentionnerai ici. Étant donné qu’un grand nombre de livres de ce genre ont été publiés récemment, il est facile de voir l’attention qu’ils ont reçue.
Cependant, tout le monde dans le monde ne se spécialise pas dans l'IA, et plutôt, ces personnes sont vraiment limitées à certains groupes. Beaucoup de gens
Je ne travaille pas directement sur le deep learning pour le moment, mais je ne peux pas l'ignorer étant donné que l'IA sera introduite en tant qu'infrastructure dans un proche avenir.
Je pense que tu as le sentiment. C'est pourquoi beaucoup de gens pensent qu'ils devraient étudier pour le moment, et je suis l'un d'eux.
Quand j'ai pris le livre, j'ai senti qu'il avait tendance à être polarisé dans les types suivants (c'est une tendance, et c'est plus que suffisant que je manque un bon livre). ..
J'étais inutilement réticent à utiliser la bibliothèque sans en connaître du tout le contenu, alors je me demandais s'il y aurait un livre qui irait un peu plus loin (je ne l'ai pas implémenté moi-même). Négliger orz Non, je ne me spécialise pas dans le deep learning ^^;).
Ensuite, un livre avec juste le bon sentiment est sorti, alors j'ai sauté et l'ai lu en même temps. C'était un grand succès.
[](https://px.a8.net/svt/ejp?a8mat=2NZCQW+6MQUCY+249K+ BWGDT & a8ejpredirect = https% 3A% 2F% 2Fwww.amazon.co.jp% 2Fdp% 2F4844381288% 2F% 3Ftag% 3Da8-affi-271202-22)
Le concept de sa mise en œuvre avec un modèle simple mais super simple correspond à mon idée que je pense que c'est le plus utile pour comprendre! Prouvez analytiquement et terminez haut! Au lieu de cela, je pense qu'il convient de noter que l'explication est telle que les différences de caractéristiques entre les méthodes peuvent être appréhendées avec sens.
Après avoir lu ceci, je voulais connaître la partie où il y a un saut dans l'expansion mathématique et une partie un peu plus profonde. Ainsi, quand j'ai lu les livres standards suivants, j'ai eu une tête rafraîchissante.
[](https://px.a8.net/svt/ejp?a8mat=2NZCQW+6MQUCY+249K+ BWGDT & a8ejpredirect = https% 3A% 2F% 2Fwww.amazon.co.jp% 2Fdp% 2F4061529021% 2F% 3Ftag% 3Da8-affi-271202-22)
[](https://px.a8.net/svt/ejp?a8mat=2NZCQW+6MQUCY+249K+ BWGDT & a8ejpredirect = https% 3A% 2F% 2Fwww.amazon.co.jp% 2Fdp% 2F476490487X% 2F% 3Ftag% 3Da8-affi-271202-22)
Donc, [Nest, Théorie de la programmation Java du Deep Learning et implémentation du Deep Learning, Impress, 2016. ](Https://px.a8.net/svt/ejp?a8mat=2NZCQW+6MQUCY+249K+BWGDT&a8ejpredirect=https%3A%2F%2Fwww.amazon.co.jp%2Fdp%2F4844381288%2F%3Ft8%3a affi-271202-22) ne suffit pas simplement pour utiliser la bibliothèque, mais je pense que c'est un livre adapté aux débutants à lire pour ceux qui ont du mal à entrer soudainement dans un livre spécialisé.
Si vous vous spécialisez dans les réseaux de neurones convolutionnels (CNN), les livres suivants sont de loin les meilleurs. Bien que spécialisé dans CNN, il contribue définitivement à la compréhension de cette implémentation.
[](https://px.a8.net/svt/ejp?a8mat=2NZCQW + 6MQUCY + 249K + BWGDT & a8ejpredirect = https% 3A% 2F% 2Fwww.amazon.co.jp% 2Fdp% 2F4873117585% 2F% 3Ftag% 3Da8-affi-271202-22)
[Théorie de la programmation Java du Deep Learning et implémentation du Deep Learning](https://px.a8.net/svt/ejp?a8mat=2NZCQW+6MQUCY+249K+BWGDT&a8ejpredirect=https%3A%2F%2Fwww.amazon.co.jp % 2Fdp% 2F4844381288% 2F% 3Ftag% 3Da8-affi-271202-22) traite également de CNN, vous pouvez donc bien sûr le comprendre considérablement ici aussi. Je pense que ce livre est excellent en ce qu'il compare les méthodes typiques à vol d'oiseau en peu de temps.
Deep Learning from scratch expliquait exactement à partir des bases des bases des réseaux de neurones, et en attendant, il était connecté à CNN! L'impression est qu'elle est structurée comme une histoire.
[Théorie de la programmation Java du Deep Learning et implémentation du Deep Learning](https://px.a8.net/svt/ejp?a8mat=2NZCQW+6MQUCY+249K+BWGDT&a8ejpredirect=https%3A%2F%2Fwww.amazon.co.jp J'ai pu exécuter l'exemple de code Java décrit dans% 2Fdp% 2F4844381288% 2F% 3Ftag% 3Da8-affi-271202-22), mais j'ai pensé que ce serait ennuyeux de l'exécuter. Alors cette fois, j'ai décidé de passer moi-même à Python.
Les cibles sont *** Deep Belief Nets (DBN) *** et *** Stacked Denoising Autoencoders (SDA) ***,
Ce qui est génial, c'est l'auteur, M. Negago, et je roule gratuitement. Cependant, j'ai pensé que ce serait un acte assez fou de simplement bouger sans réfléchir, alors j'ai fait les règles suivantes.
Je viens de dire que c'était une copie un peu stricte du sutra.
Le code est publié ci-dessous.
La méthode d'exécution de chaque algorithme est la suivante.
cd <cloned path>/DeepLearningWithPython/DeepNeuralNetworks
python DeepBeliefNets.py
cd <cloned path>/DeepLearningWithPython/DeepNeuralNetworks
python StackedDenoisingAutoencoders.py
Pour la configuration logicielle, [Théorie de la programmation Java Deep Learning et implémentation du Deep Learning](https://px.a8.net/svt/ejp?a8mat=2NZCQW+6MQUCY+249K+BWGDT&a8ejpredirect=https%3A%2F%2Fwww. Amazon.co.jp% 2Fdp% 2F4844381288% 2F% 3Ftag% 3Da8-affi-271202-22), veuillez donc vous y référer.
Les trois types de résultats suivants sont générés.
-------------------------------
DBN(or SDA) Regression model evaluation
-------------------------------
Accuracy: 100.0 %
Precision:
class 1: 100.0 %
class 2: 100.0 %
class 3: 100.0 %
Recall:
class 1: 100.0 %
class 2: 100.0 %
class 3: 100.0 %
La signification de chaque résultat est la suivante.
Il est exprimé par une formule mathématique comme suit.
Accuracy = \frac{TP + TN}{TP + TN + FP + FN} \\
Precision = \frac{TP}{TP + FP} \\
Recall = \frac{TP}{TP + FN}
La répartition des TP, TN, FP et FN est indiquée dans le tableau ci-dessous.
Positif et prédit | Négatif et prédit | |
---|---|---|
Correct est correct | True Positive (TP) | False Negative (FN) |
Le négatif est correct | False Positive (FP) | True Negative (TN) |
Le modèle de réseau utilisé est le même pour les deux DBN / SDA.
Pour les deux DBN / SDA, vous apprendrez comme suit.
--Réglage fin
Les deux méthodes utilisent exactement le même modèle et les données de test créées de la même manière peuvent être correctement apprises. Si vous obtenez presque les mêmes résultats avec des méthodes différentes, quelle est la différence? Cela m'inquiète.
On peut dire que le point commun des deux méthodes est d'obtenir des paramètres qui correspondent aux données d'entrée / sortie du réseau à deux couches. Dans le cas de DBN, en raison des caractéristiques du réseau de machines Boltzmann, *** données d'entrée *** et *** état *** sont comparées, mais si vous fermez les yeux sur les détails, ils sont essentiellement les mêmes. Je fais ça.
De plus, en utilisant des données avec divers bruits ajoutés à l'étape d'apprentissage, il est également courant qu'il résiste au bruit lorsqu'il est identifié en production. On peut interpréter qu'il y a une différence dans la façon dont le bruit est donné.
Dans le cas du DBN, il est déterminé de manière probabiliste si le neurone est activé ou non. Même s'ils sont dans le même état, ils peuvent ou non être activés. Cette caractéristique correspond à l'ajout automatique de bruit aux paramètres en cours d'apprentissage. L'algorithme ajoute du bruit sans autorisation.
D'un autre côté, dans le cas du SDA, un peu de bruit est ajouté aux données d'entraînement, puis entré dans le dispositif d'apprentissage. En effet, l'algorithme n'a pas la propriété de s'ajouter du bruit à lui-même car il procède de manière déterministe.
De ces points de vue, on peut comprendre qu'il existe les différences de fonctionnalités suivantes.
Il semble qu'il y ait encore des points de vue différents sur la question de savoir comment ces caractéristiques affectent l'apprentissage et pourquoi l'initialisation de cette manière fonctionne pour l'apprentissage en réseau profond. Mon esprit n'est pas encore organisé, alors je vais m'abstenir de le dire ici lol ^^;
Même s'il y avait un exemple de programme qui pouvait être utilisé comme référence, en bougeant mes propres mains et en l'implémentant, j'ai acquis un peu de compréhension du Deep Learning.
Si les informations publiées ici sont utiles à quiconque, je serais plus qu'heureux.
Je n'ai pas encore fait d'abandons ou d'implémentation CNN, mais je le referai quand j'en aurai envie ^^
Recommended Posts