[PYTHON] Oncle SE avec un cerveau endurci a essayé d'étudier l'apprentissage automatique

[Introduction]

Cet article est le 19ème jour de "Comment avez-vous appris l'apprentissage automatique par Nikkei xTECH Business AI② Advent Calendar 2019".

J'écrirai sur la façon dont j'ai étudié l'apprentissage automatique en tant qu'oncle SE. Le déclencheur est parti de la question «Puis-je utiliser l'apprentissage automatique?» Dans la tâche de classification que j'avais à ce moment-là. Depuis que j'étais dans les nuages sombres, ma mémoire honnête est ambiguë.

Carrière

L'historique du programme remonte à près de 30 ans. En commençant par MS BASIC, que j'ai appris quand j'étais à l'école primaire, j'ai touché l'assembleur Z80, l'assembleur MC68000, FORTRAN, C (UNIX), C ++ (Mac), VB, Java (Android), VB.NET et C #. Je suis entré en contact avec différentes langues, mais aucune d'entre elles n'a été aussi étroite.

Concernant l'apprentissage automatique, il y a plus de 20 ans, à la fin du soi-disant deuxième boom de l'IA, j'ai traité des réseaux de neurones sous le thème de ma thèse de fin d'études. Cependant, la partie logique était gérée par une autre personne, et j'étais en charge de la mise en œuvre, donc je n'étais pas sûr de ce que c'était. En y réfléchissant maintenant, je pense que j'aurais dû étudier plus dur en ce moment, mais c'est un festival plus tardif. Au fait, il n'y avait pas de bibliothèque d'apprentissage automatique à l'époque, je l'ai donc implémentée en langage C.

[Etude de Python - Hiver 2017]

Avant d'étudier l'apprentissage automatique, j'étudiais seul Python. J'ai décidé d'utiliser Raspberry Pi pour surveiller ma maison et j'ai utilisé Pyhton pour l'implémenter. Cependant, je ne connaissais pas les détails dans la mesure où ils pouvaient être copiés et modifiés. Les livres suivants ont été référencés à cette époque.

[Travail électronique illustré en couleurs appris avec le dernier Raspberry Pi] -Amazon Japon

Raspberry Pi a été activé pour utiliser Python par défaut, donc c'était un bon début pour moi, qui ne connaissait même pas le caractère P de Python. Cependant, il n'est pas réaliste d'acheter un Raspberry Pi uniquement pour Python, je recommande donc un site d'apprentissage en ligne maintenant. Autour de moi, "Paiza Learning" et "Progate" étaient populaires gratuitement. ..

[«Qu'est-ce que l'apprentissage automatique?» J'ai d'abord acheté un livre - Printemps-Automne 2017]

Tout a commencé lorsque j'ai senti qu'il y avait une limite à la mise en œuvre fondée sur des règles des problèmes de classification que j'avais à l'époque. J'avais l'illusion que l'intelligence artificielle pouvait faire quelque chose à ce sujet, mais quand je ne pouvais pas comprendre, j'ai appris que l'apprentissage automatique pouvait être implémenté à l'aide de la bibliothèque Python scicit-learn. J'ai donc acheté les livres suivants qui ont été récemment publiés à cette époque.

[Apprentissage automatique à partir de Python - Principes de base de l'ingénierie des quantités de fonctionnalités et apprentissage automatique appris avec scikit-learn] -Amazon Japon

Je l'ai acheté simplement parce qu'il contenait les caractères «Python» scikit-learn »« apprentissage automatique », et parce que c'était un livre O'Reilly auquel je suis redevable depuis un certain temps. Pour être honnête, je n'ai pu lire qu'une partie des chapitres 1 et 2 à Chimpung Kampung. Voici ce que j'ai appris dans ce processus.

[Chapitre 1 Introduction] ・ Syntaxe Python ・ Existence de diverses bibliothèques (scikit-learn, NumPy, pandas, matplotlib) ・ Ensemble de données Iris

[Chapitre 2 Apprendre avec un enseignant] ・ Méthode de voisinage K ・ SVM

Résultat 1 - Application aux entreprises

Je pense que je n'ai pas compris 10% du contenu du livre à ce stade. Même ainsi, je l'ai mis en œuvre pour voir s'il pouvait être utilisé pour les problèmes que j'avais à l'époque. Le contenu était une classification de données à valeurs multiples avec de nombreux paramètres. À ce moment-là, il était mis en œuvre sur une base de règles, mais je souffrais d'un manque de précision. J'ai pu visualiser empiriquement les données et les regarder à vol d'oiseau, mais je ne pouvais guère trouver de régularité dans les données telles que le bruit, et j'ai senti qu'il était impossible d'améliorer davantage la précision sur la base de règles. C'était.

image.png La figure ci-dessus est une image des données analysées à ce moment-là. C'était un problème de classification à valeurs multiples avec des dizaines de telles données. De nos jours, il ne fait aucun doute que nous le ferons avec l'apprentissage automatique, mais à l'époque, les gens de l'entreprise, y compris moi-même, n'avaient pas du tout eu cette idée et essayaient désespérément de la mettre en œuvre sur une base de règles.

Lorsque j'ai plongé ces données dans SVM et la méthode k-voisinage, elles ont été en quelque sorte classifiées. En particulier, lorsque les hyper paramètres ont été arrondis par la méthode k-near, une certaine précision a été observée, bien que la précision soit légèrement inférieure à celle de la méthode basée sur des règles. Bien que je me débattais sur la base des règles, j'ai senti la possibilité qu'un modèle pouvant être classé avec une précision raisonnable soit achevé en quelques minutes seulement après la saisie des données.

Cependant, à ce moment-là, je ne savais pas comment améliorer la précision et j'ai décidé que je ne pouvais pas passer plus de temps, alors j'ai ressenti une réponse, mais l'adoption de l'apprentissage automatique a été reportée.

Ce que tu as appris

D'ailleurs, à la fin de cette tentative, j'ai été hospitalisée pendant longtemps et j'ai relu le livre d'O'Reilly dans la chambre d'hôpital. J'étais capable de lire plus que la dernière fois, mais je ne me souvenais pas beaucoup parce que je ne pouvais pas coder parce que je ne pouvais pas apporter mon ordinateur à la chambre d'hôpital. Après tout, j'ai réalisé que je ne pouvais pas le porter à moins de bouger mes mains.

[Challenge to deep learning-Spring-Summer 2018]

J'avais été absent de l'apprentissage automatique pendant environ six mois après la tentative ci-dessus, mais j'ai ressenti une réponse à l'apprentissage automatique, alors j'ai décidé d'essayer l'apprentissage en profondeur. À ce moment-là, j'ai fait un tutoriel sur TensorFlow.

image.png 【TensorFlow 2 quickstart for beginners】 - Tensorflow

Le contenu du didacticiel était un problème de classification MNIST (numéro manuscrit), mais à ce moment-là, je ne pouvais pas le lire en appuyant directement sur l'API TensorFlow. Bien que je ne puisse pas le lire, j'ai réussi à mettre en œuvre la classification des iris, mais j'étais frustré car je ne pouvais pas obtenir de précision.

Après cela, j'ai appris l'existence de Keras et appris à classer les images en les appliquant à CNN à l'aide d'un modèle séquentiel tout en regardant un exemple de programme.

image.png 【keras-team/keras/examples】- Github 【keras-team/keras/examples/mnist_cnn】- Github

Actuellement, le didacticiel TensorFlow utilise Keras (tf.keras), donc je pense que c'est beaucoup plus facile à faire.

De plus, la note suivante [^ 1] est un résumé du savoir-faire qui a permis d'utiliser le machine learning et TensorFlow sur les terminaux Raspberry Pi et Windows à l'époque.

Découvrez Google Colaboratory

La plus grande chose que j'ai apprise à propos du deep learning a été d'apprendre l'existence de Google Colaboratory (ci-après, Google Colab). En utilisant GoogleColab, vous pouvez utiliser TensorFlow et Keras simplement en le démarrant, et vous pouvez apprendre à haute vitesse en utilisant le GPU gratuitement, donc les ressources en temps ont été réduites à la fois.

image.png 【Google Colaboratory】

C'est une avancée, et je pense que mon étude de l'apprentissage automatique n'aurait pas progressé sans ** Google Colab **. Maintenant, le tutoriel TensorFlow m'amène également à Google Colab, qui est un outil très utile. Une fois que vous avez créé un compte Google, vous pouvez l'utiliser gratuitement, donc si vous craignez de créer un environnement ou de ralentir la vitesse de traitement, veuillez l'utiliser.

Sortie n ° 2-Application de classification d'images de prototype

Pendant cette période, j'ai essayé à plusieurs reprises d'améliorer la précision de MNIST sur Google Colab. Si vous y réfléchissez maintenant, vous pouvez défier MNIST (Digit Recognizer) même au sein de Kaggle, donc j'aurais aimé avoir rejoint Kaggle plus tôt. pense.

En utilisant la technologie acquise dans ce défi, j'ai implémenté un modèle de classification d'image qui pourrait être utilisé pour les entreprises, implémenté WebAPI (Flask) en Python et créé une application simple qui renvoie le résultat lorsqu'une image est lancée. Je pense que la précision était d'environ 97,5%. La figure ci-dessous est une image PoC qui a été réalisée avant de réaliser l'application prototype.

image.png

Lorsque je l'ai examiné en interne, il a été rejeté comme "Il n'y a pas d'erreur dans 25 cas sur 1000". À cette époque, la maîtrise de l'IA était faible, y compris moi-même, donc je ne pouvais pas contester quoi que ce soit ...

Aussi, à ce moment, j'ai entrepris un projet à implémenter en Python. Bien que cela ne soit pas directement lié à l'apprentissage automatique, j'ai beaucoup appris sur l'utilisation de Pandas ici car c'était un projet qui traitait une grande quantité de données dans des fichiers DB et CSV.

Ce que tu as appris

[Challenge to G test - Hiver 2019]

Produit Partie 3 - Tenir une session d'étude en interne

Quand j'ai appris ce qu'était CNN, je suis devenu conférencier et j'ai organisé une session d'étude en interne sur l'apprentissage automatique et l'apprentissage profond. Ce fut également un grand tournant. Lorsque les connaissances sur l'apprentissage automatique dans l'entreprise se sont répandues dans une certaine mesure, il y a eu un mouvement pour promouvoir l'apprentissage automatique dans toute la section. Cela a conduit aux actions qui ont suivi.

Résultat 4 - Acquisition de la certification G

image.png J'ai décidé de contester le test G avec les membres participants de la session d'étude ci-dessus. Les livres utilisés à cette époque sont les suivants.

[Texte officiel du Deep Learning Textbook Deep Learning G Test (Generalist)] [AI White Paper 2019]

Dans le même temps, plusieurs employés devaient se soumettre à la certification G, ce qui améliorait les connaissances internes en IA. Grâce à cela, j'ai plus d'occasions de parler de machine learning en interne, ce dont je ne pouvais parler à personne auparavant, et j'ai moi-même considérablement soulagé mon stress.

Pour être honnête, je ne pense pas que le test G puisse être utilisé dans la pratique, mais je pense que c'était très utile pour les employés de pouvoir parler en utilisant des termes courants. Après tout, je ne pouvais pas le faire seul et je sentais que je devais recruter des amis et travailler dur.

Ce que tu as appris

[Participation à un séminaire pratique]

Après avoir réussi le test G, j'ai participé à divers séminaires pratiques gratuits organisés par Google et Microsft. J'ai participé de différentes manières, mais cela n'a pas eu beaucoup d'impact sur moi à ce moment-là. Le séminaire pour débutants n'a peut-être pas été satisfaisant.

Participation à des séminaires de longue durée - printemps-automne 2019

Pendant ce temps, j'ai eu l'opportunité de participer à un séminaire de longue durée pendant six mois. À ce moment-là, la vidéo suivante était fournie sous forme de vidéo de pré-apprentissage.

[[Style Kikagaku] Cours sur l'intelligence artificielle / apprentissage automatique de la boîte noire-Débutant -] - Udemy [[Style Kikagaku] Cours sur l'intelligence artificielle / apprentissage automatique de la boîte noire - intermédiaire -] - Udemy

En regardant cette vidéo, j'ai pu approfondir l'apprentissage automatique que j'avais utilisé d'une manière que j'avais en quelque sorte comprise.

J'omettrai ici le séminaire de longue durée car ce sera un miso à court terme, mais ce fut une expérience difficile de travailler dur avec d'autres étudiants pendant six mois ainsi que le contenu du séminaire.

image.png

Sortie n ° 5-Mentaling pour les étudiants

Tout en participant en tant qu'étudiant au séminaire ci-dessus, nous avons fourni des connaissances du domaine et un soutien technique aux instructeurs. La seconde moitié du séminaire étant principalement consacrée à la formation pratique, j'ai participé en tant que mentor au lieu d'étudiant. Je me demande si j'ai pu bien le faire à ma première occasion, mais je pense que c'était un très bon endroit pour l'auto-apprentissage.

Ce que tu as appris

--Mécanisme mathématique de l'apprentissage automatique et de l'apprentissage en profondeur

【à partir de maintenant】

Produit n ° 6 - Formation de communautés telles que Mokumokukai

Actuellement, nous tenons un système d'apprentissage automatique "Mokumokukai". Au départ, c'était à usage interne, mais nous soutenons ceux qui essaient le nouvel apprentissage automatique tout en en faisant un lieu où les participants et les diplômés du séminaire peuvent se retrouver. Je suis également impliqué dans "DEEP LEARNING LAB", donc je serai activement impliqué dans cela aussi.

Même dans une petite zone, j'aimerais former une communauté où les gens peuvent se connecter grâce à l'apprentissage automatique et à l'IA, et réduire le nombre de personnes qui s'inquiètent et abandonnent seules.

image.png

[Résumé]

Bougeons quand même nos mains

J'ai beaucoup écrit, mais il y a certainement quelque chose que je peux dire. Cela signifie que ** s'étire le plus lorsque vous bougez vos mains **. Même si vous lisez un livre ou un article sur le Web et que vous le découvrez, vous trébucherez lorsque vous tenterez réellement de le déplacer. Vous pouvez le comprendre profondément lorsque vous déplacez réellement ce qui est écrit. Si possible, il est préférable de le penser et de l'implémenter vous-même, plutôt que de copier le code. La plupart du temps, je suis tombé sur la mise en œuvre. Je pense que vous apprendrez que vous avez fait face à divers défis lors de la mise en œuvre et que vous les avez surmontés.

Initiatives pour les ensembles de données

Quoi qu'il en soit, même si vous essayez d'utiliser des ensembles de données existants tels que Ayame et MNIST, la valeur attendue de l'amélioration des compétences est faible. C'est bien d'essayer les fameux jeux de données Titanic comme tutoriel, mais honnêtement, ces jeux de données ne me motivent pas, donc je ne peux pas vraiment travailler dessus. Lorsque j'essaie de gérer des données liées à ce que je veux faire, comme des problèmes commerciaux réels, je rencontre divers problèmes et je prends des mesures pour les résoudre, ce que j'acquiers en tant que compétence.

Même si vous n'avez pas de connexion directe avec votre entreprise, vous pouvez ** trouver un ensemble de données qui vous intéresse et y travailler ** sur Kaggle. Peu importe si vous êtes intéressé par des ensembles de données ou des prix, mais si ce n'est pas une tâche de motivation, vous vous compromettez rapidement lorsque vous rencontrez des problèmes. Dans le cas de Kaggle, le résultat est directement lié au rang, donc le résultat est facile à comprendre, et il est recommandé car vous pouvez le comparer avec votre propre méthode tout en regardant le code de la personne de haut rang.

Trouvez quelqu'un à qui parler

La partie la plus difficile de travailler sur le domaine inconnu de l'apprentissage automatique était que je n'avais personne à qui parler. Ce n'est pas bon mentalement parce que ça s'arrête quand on est coincé et ce n'est pas bon de travailler seul. De nombreuses personnes que j'ai rencontrées lors du séminaire ont également bénéficié de diverses consultations car ** personne ne pouvait s'exprimer dans l'entreprise **. Nous vous guiderons vers la solution tout en écoutant l'histoire, mais ceux qui la résolvent en discutant entre eux, ceux qui la résolvent par eux-mêmes en discutant, amènent des collègues au "Mokumokukai" et augmentent le nombre d'amis dans l'entreprise et la résolvent ensemble Il y avait différentes personnes, comme celles qui l'ont fait. Dans tous les cas, parler aux autres a tendance à vous rapprocher de la résolution du problème. Parler est aussi une sorte de sortie, donc je pense qu'il est très important de parler pour organiser son esprit. Idéalement, vous devriez trouver quelqu'un à qui parler dans la vraie vie, non seulement en interne, mais aussi lors d'événements tels que des séminaires et des mokumoku-kai. Même si ce n'est pas le cas, je pense qu'il est possible de communiquer en ligne, comme dans le forum Kaggle.

【en conclusion"

Le Japon est encore immature en matière d'apprentissage automatique et d'IA. La plupart des informations sont en anglais, et il y a de nombreuses scènes où vous heurtez un mur sans trouver les informations que vous recherchez. Arrêtons de nous inquiéter seuls dans un tel cas. Peu importe que vous soyez un patron ou un collègue, impliquons donc les autres. Si vous n'êtes pas là, regardez plus loin. De nombreuses personnes dans le monde sont également inquiètes. De nos jours, dans la société Internet, vous pouvez facilement trouver des personnes dans la même situation. Je vais continuer à étudier pour pouvoir vous aider, alors faisons de notre mieux ensemble.

[^ 1]: [Comment exécuter Python sous Windows sans polluer autant que possible l'environnement (version intégrable Python)] - Qiita
[Sous Windows Comment exécuter Python sans polluer autant que possible l'environnement (WSL utilise Windows10, version 1607 ou ultérieure uniquement)] - Qiita
[[GPU avec TensorFlow pour Windows] Use (Install CUDA)] - Qiita](https://qiita.com/rhene/items/31bf4713b9dbda28bcc1)
[[Etude de construction de Raspberry Pi pour Python et Machine Learning] -Qiita](https: // qiita) .com / rhene / items / 71b92c253d5ac2a4cc52)
[Construction de RaspberryPi pour Python et étude d'apprentissage automatique (version RaspberryPi4 et Buster) -Qiita]

Recommended Posts

Oncle SE avec un cerveau endurci a essayé d'étudier l'apprentissage automatique
J'ai essayé de déplacer l'apprentissage automatique (détection d'objet) avec TouchDesigner
J'ai essayé l'apprentissage automatique avec liblinear
J'ai installé Python 3.5.1 pour étudier l'apprentissage automatique
(Apprentissage automatique) J'ai essayé de comprendre attentivement la régression linéaire bayésienne avec l'implémentation
J'ai essayé de visualiser le modèle avec la bibliothèque d'apprentissage automatique low-code "PyCaret"
[Python] Introduction facile à l'apprentissage automatique avec python (SVM)
J'ai essayé d'étudier DP avec séquence de Fibonacci
Un débutant en apprentissage automatique a essayé de créer un modèle de prédiction de courses de chevaux avec python
Introduction à l'apprentissage automatique
Essayez de prédire le taux de change (FX) avec un apprentissage automatique non approfondi
Résumé du site pour apprendre l'apprentissage automatique avec une vidéo en anglais
J'ai essayé de compresser l'image en utilisant l'apprentissage automatique
[Keras] J'ai essayé de résoudre le problème de classification des zones de type beignet par apprentissage automatique [Étude]
J'ai essayé de faire une simulation de séparation de source sonore en temps réel avec l'apprentissage automatique Python
J'ai essayé de créer un environnement d'apprentissage automatique avec Python (Mac OS X)
L'apprentissage automatique appris avec Pokemon
Une introduction à l'apprentissage automatique
Introduction à l'apprentissage automatique avec scikit-learn - De l'acquisition de données à l'optimisation des paramètres
Un débutant en apprentissage automatique a essayé la RBM
Apprentissage automatique avec Python! Préparation
Bloc-notes de ressources d'étude d'apprentissage automatique
Pour ceux qui souhaitent démarrer l'apprentissage automatique avec TensorFlow2
J'ai essayé l'apprentissage automatique pour convertir des phrases en style XX
Mayungo's Python Learning Episode 3: J'ai essayé d'imprimer des nombres
Démineur d'apprentissage automatique avec PyTorch
J'ai essayé d'implémenter ListNet d'apprentissage de rang avec Chainer
[Apprentissage automatique] J'ai essayé de résumer la théorie d'Adaboost
Apprentissage automatique pour apprendre avec Nogisaka 46 et Keyakizaka 46 Partie 1 Introduction
Commencer avec l'apprentissage automatique Python
Super introduction à l'apprentissage automatique
Essayez le machine learning à la légère avec Kaggle
J'ai essayé d'écrire dans un modèle de langage profondément appris
J'ai essayé de créer Othello AI avec tensorflow sans comprendre la théorie de l'apprentissage automatique ~ Introduction ~
J'ai essayé de créer Othello AI avec tensorflow sans comprendre la théorie de l'apprentissage automatique ~ Implémentation ~
J'ai essayé de rendre le deep learning évolutif avec Spark × Keras × Docker
Apprentissage automatique avec python sans perdre aux variables catégorielles (conversion de variable factice)
[Introduction au style GAN] Apprentissage unique de l'animation avec votre propre machine ♬
Gestion des modèles d'apprentissage automatique pour éviter de se quereller avec le côté commercial
[Apprentissage automatique] J'ai essayé de faire quelque chose comme passer des images
Les gens mémorisent les connaissances acquises dans le cerveau, comment mémoriser les connaissances acquises dans l'apprentissage automatique
Comment créer une API de machine learning sans serveur avec AWS Lambda
Introduction à la rédaction de notes d'apprentissage automatique
Apprentissage automatique par python (1) Classification générale
SVM essayant l'apprentissage automatique avec scikit-learn
Présentation de la bibliothèque d'apprentissage automatique SHOGUN
Machine learning d'inspiration quantique avec des réseaux de tenseurs
Démarrez avec l'apprentissage automatique avec SageMaker
Mémo d'apprentissage "Scraping & Machine Learning avec Python"
J'ai essayé d'apprendre LightGBM avec Yellowbrick
Comment collecter des données d'apprentissage automatique
(Apprentissage automatique) J'ai essayé de comprendre attentivement l'algorithme EM dans la distribution gaussienne mixte avec l'implémentation.
J'ai essayé de créer Othello AI avec tensorflow sans comprendre la théorie de l'apprentissage automatique ~ Battle Edition ~
J'ai essayé de mettre en œuvre un apprentissage en profondeur qui n'est pas profond avec uniquement NumPy
[Introduction à l'apprentissage automatique] Jusqu'à ce que vous exécutiez l'exemple de code avec chainer
Mayungo's Python Learning Episode 2: J'ai essayé de mettre des caractères avec des variables
J'ai essayé de classer les accords de guitare en temps réel en utilisant l'apprentissage automatique
J'ai essayé l'analyse de données IRMf avec python (Introduction au décodage des informations cérébrales)
Signifie mémo lorsque vous essayez de faire de l'apprentissage automatique avec 50 images