Raisonnement superficiel et général sur les réseaux de neurones

Sur Habré, il y a un grand nombre d'articles sur les réseaux de neurones, dans lesquels il y a une image d'un neurone sous la forme d'un cercle avec des flèches entrantes, une image avec des lignes de neurones et la formule obligatoire pour la somme du produit des poids et des signes. Ces articles provoquent souvent l'indignation d'un public respecté pour son évidence et sa similitude à apprendre à dessiner un hibou. Dans cet article, j'irai encore plus loin - même cela ne sera pas là. Pas de maths, pas de comparaisons avec le cerveau. Il est peu probable que vous appreniez quelque chose de pratique à partir de cet article, et il y a une forte probabilité que tout ce qui précède vous semble trop évident. Le but de cet article est la question: que pouvez-vous faire avec l'aide des réseaux de neurones. Pas Yandex, ni Google, ni Facebook, mais vous - avec votre expérience de cinq ans en tant que développeur Web et ordinateur portable de trois ans.

image

Autour des réseaux de neurones (ci-après - NS), il y a maintenant beaucoup de bruit. J'ai donc décidé de faire un produit basé sur eux. Et il s'est demandé: de quoi ai-je besoin pour ça? Et il s'est répondu (oui, j'aime parler avec une personne intelligente): trois choses sont nécessaires - des connaissances dans le domaine des réseaux de neurones, des données pour la formation et du matériel sur lequel former un réseau de neurones. Soit dit en passant, après avoir entendu combien d'orateurs sur YouTube ont parlé du fait que ces choses sont la raison de la renaissance de la Nouvelle-Écosse: des algorithmes améliorés (connaissances), la disponibilité d'une énorme quantité de données et les capacités des ordinateurs modernes (matériel). Une telle coïncidence de mes pensées et des paroles d'experts est encourageante.Par conséquent, je parlerai de ces trois choses: les données, les connaissances et le matériel.

Les données


La nature et le type de données dépendent de la zone dans laquelle vous souhaitez appliquer NS.
Les NS modernes ont commencé à résoudre des tâches difficiles telles que la reconnaissance d'objets dans les images, les visages, la reconnaissance vocale, ont pu jouer eux-mêmes aux jeux vidéo et ont gagné.

Digression lyrique
Bien sûr, à bien des égards, ce battage médiatique et cette bulle autour de la Nouvelle-Écosse sont l'influence de la mode, de la viralité, d'un nom romantique, des analogies avec le cerveau et du rêve d'une IA forte. En effet, vous conviendrez que si ces techniques étaient appelées «Multiplication matricielle et optimisation des paramètres par la méthode de descente de gradient», tout cela semblerait moins impressionnant et, peut-être, n'attirerait pas autant l'attention. Certains diront que, diable avec lui, avec le nom, non seulement à cause du nom qu'ils sont si populaires, ils provoquent également un effet wow - regardez ce que font ces réseaux, ils ont gagné! Eh bien, mais lorsque l'IA a gagné aux échecs, peu de gens ont commencé à idolâtrer la recherche en profondeur et les journalistes n'ont pas écrit que la star A conquérirait le monde, et les programmeurs ne l'ont pas étudiée en grande quantité.

L'Assemblée nationale, entre autres, est entourée d'un halo de mystère - personne ne comprend exactement comment ils accomplissent leur travail: un ensemble de fonctions non linéaires, de nombreuses matrices de poids, des termes et des facteurs mystérieux - tout cela ressemble à une cuve de sorcière, où elle jette toutes sortes de racines, d'ailes de chauve-souris et de sang de dragon. Mais revenons à la question de l'article.

Pour former NA, beaucoup de données sont nécessaires - des centaines de milliers, des millions d'exemples. Pouvez-vous trouver et télécharger un tel tas à l'aide de votre grabber Internet self-made? Je pense que oui. Mais il y a quelques problèmes:

  1. Pour une formation avec un enseignant, les données doivent être étiquetées. Quelqu'un devrait marquer ces données, les affecter à différentes classes, donner une estimation numérique. Si ce n'est initialement pas pour une raison quelconque (par exemple, vous n'avez que de l'audio, mais pas de transcriptions), cela nécessite un effort énorme. Bien sûr, il y a une formation sans enseignant, avec des renforts, etc., mais ils résolvent d'autres problèmes (simplifiés, pas de classification et de régression (en fait, déterminer la valeur d'une fonction inconnue), mais en regroupant ou en choisissant les meilleures actions). Compte tenu du volume limité de l'article, je n'aborderai pas cette question.

  2. Les données doivent être réparties uniformément, quoi que cela signifie. Cela signifie que si vous avez même des millions de données contenant des informations sur BMW et Dodge, mais presque aucune information sur Ford et Mazda, l'Assemblée nationale ne sera jamais en mesure de résumer correctement les données, pire encore, cela gonflera les prix ou dessinera des phares ronds et look agressif.

  3. Vous devez en savoir beaucoup sur la nature des données afin de pouvoir mettre en évidence des fonctionnalités importantes et éventuellement imposer certaines restrictions à la NS. Oui, un NS multicouche est un approximateur universel de toute fonction continue, mais personne n'a dit qu'il serait rapide. Aussi étrange que cela puisse paraître, mais plus il y a de restrictions, plus vite le NS pourra apprendre. Pourquoi NS est-il devenu si bon en traitement d'image? Parce que les gars intelligents mettent des informations sur les images dans l'architecture même de ces réseaux. Ils ont créé une classe distincte de réseaux - les réseaux convolutionnels qui prennent des données d'un groupe de pixels, compressent l'image de différentes manières, effectuent des transformations mathématiques, dont le but est de neutraliser l'effet des décalages, des transformations, des angles de caméra différents. Est-ce approprié pour d'autres types de données? À peine. Convient-il aux images où les angles contiennent des informations importantes? Qui sait

Connaissances


À l'Assemblée nationale, il y a un tas d'hyperparamètres qui affectent fortement à la fois la vitesse de travail et la convergence en principe. Vous pouvez vous recycler, rester coincé au maximum local, vous étirer pendant des semaines et plus. Vous acquerrez des connaissances sur les architectures NS, les principes de fonctionnement, vous êtes programmeur. Il existe un grand nombre de frameworks pour l'apprentissage automatique - theano, tensorflow et autres. Mais définir des paramètres tels que la vitesse d'apprentissage, le choix d'un moment, le choix d'une régularisation et de ses paramètres, le choix d'une fonction d'activation et bien d'autres encore est un processus expérimental qui prend beaucoup de temps. En raison de l'absence d'une stratégie précise et de la nécessité de configurer et de sélectionner manuellement les paramètres pour chaque tâche, beaucoup appellent le processus d'apprentissage de l'art NS.

Les ressources


Vous devez traiter des millions d'exemples plusieurs fois, un grand nombre de fois: vous avez donné des exemples, la NS a ajusté un peu les poids, vous avez donné à nouveau les mêmes exemples, la NS a encore ajusté les poids - et il y a tellement d '«époques». Si vous utilisez la validation croisée, vous fournissez également les données pour différentes partitions dans les échantillons de formation et de validation afin que le NS ne se reconstitue pas sur les mêmes données.

Quelles ressources approximatives pouvez-vous vous permettre? Je voulais acheter un ordinateur haut de gamme basé sur le Kaby Lake 7700K (ou Razen 1800X) avec deux cartes graphiques NVidia GTX 1080 fonctionnant ensemble en utilisant SLI. Et l'idée que ses performances étaient égales à celles des superordinateurs de dix ans de la liste Top500 m'a réchauffé l'âme. Combien de temps faudra-t-il pour former l'Assemblée nationale à ce sujet? Cela dépend, bien sûr, de l'architecture du réseau (le nombre de couches, le nombre de neurones dans les couches, les connexions), le nombre d'exemples de formation et les hyperparamètres. Mais ce qui m'a frappé, c'est que j'ai passé plusieurs heures sur le site Playground.tensorflow.org afin qu'un petit réseau puisse correctement classer les points en spirale dans un espace bidimensionnel. Seulement deux dimensions, pas tant de données, mais autant de temps. Le gagnant du concours ImageNet a passé une semaine à apprendre le réseau à l'aide de deux cartes vidéo et il en savait beaucoup sur les hyperparamètres. Achetez à peine une douzaine de serveurs. Avez-vous la patience d'étudier NA?

Résumé : il me semble qu'à la maison, vous pouvez résoudre certains problèmes avec l'aide de l'Assemblée nationale.

  • La taille de l'échantillon d'apprentissage peut être égale à des centaines de milliers d'exemples.
  • Vous pouvez atteindre une précision d'environ 80 à 90%.
  • La formation NS peut prendre plusieurs jours.

Ceci est mon opinion intuitive et une estimation très approximative, cela peut être erroné, je serai heureux si quelqu'un dans les commentaires écrit sur les tâches qu'il a résolues à la maison, quelle était la quantité de données et les caractéristiques du fer.

Merci de votre attention!

Source: https://habr.com/ru/post/fr402125/


All Articles