Réseau de neurones Yandex. Les autorités de la ville lanceront un réseau de neurones pour tsodd . Réseaux de neurones récurrents

Ayant reçu une autre "lettre de bonheur", un propriétaire de voiture moderne essaie toujours d'étudier en profondeur une photographie en noir et blanc et de se souvenir en détail du poteau sur lequel le prochain appareil photo a été accroché. Cependant, il n'est pas toujours possible d'éviter de nouvelles amendes. Alors, quels types de forces et de moyens sont au service du "grand frère", comment les calculer et prendre rapidement les mesures nécessaires pour ne pas recevoir une autre amende ? Izvestia a découvert comment une décision sur une infraction est née, quels types de complexes routiers pour l'enregistrement de photos et de vidéos existent, et a également essayé de comprendre quoi faire si une amende était infligée par erreur.

Leur nom est légion

À ce jour, environ 167 000 caméras au total ont été installées à Moscou, dont près de 2 000 complexes d'enregistrement automatique des infractions au code de la route surveillent la situation du trafic, et leur nombre ne cesse d'augmenter. À l'heure actuelle, 1 500 fixes, plus de 30 mobiles, près de 400 mobiles et 110 autres complexes installés sur les transports publics terrestres aident à infliger des amendes aux contrevenants. Incontestablement, un travail d'envergure est mené pour améliorer la situation en matière de sécurité routière : rien qu'en 2017, plus de 83 millions d'infractions ont été détectées à l'aide d'outils d'enregistrement photo et vidéo (un peu plus de 60 millions un an plus tôt), mais il est souvent arrive que systèmes automatiqueséchouer et blesser des automobilistes innocents.

Les premiers complexes fixes pour l'enregistrement photo et vidéo des infractions au code de la route sont apparus sur les autoroutes sortantes de la capitale en 2006-2007 dans le cadre du programme cible fédéral «Améliorer la sécurité routière en 2006-2010». Comme la situation sur les routes s'est sensiblement améliorée depuis, les caméras de circulation continueront d'être installées.

Les complexes modernes sont capables non seulement d'enregistrer les excès de vitesse, la conduite sur le bord de la route ou dans les voies des transports en commun, mais également de calculer les contrevenants qui se déplacent dans la ville sans OSAGO, s'arrêtent ou se garent dans des zones où il est difficile de conduire sans leur voiture, ou dans des lieux pour personnes à mobilité réduite, négligent les exigences de la signalisation et du marquage routier, etc. Plus récemment, des caméras de circulation sont apparues dans la capitale qui contrôlent la ligne d'arrêt. Et déjà en 2019, l'établissement public d'État "Centre d'organisation de la circulation" (TSODD) installera 200 complexes pour surveiller la sécurité des usagers de la route les plus vulnérables - les caméras seront destinées aux conducteurs qui ne permettent pas aux piétons de passer sur un zèbre . Rappelons que l'amende pour une telle infraction conformément à l'article 12.18 du Code des infractions administratives varie de 1,5 mille à 2,5 mille roubles.

Non loin de là, l'apparition d'une toute nouvelle amende pour les automobilistes - à ce sujet le 12 novembre, le chef de la police de la circulation, Mikhail Chernikov. L'inspection a l'intention d'introduire une sanction pour conduite dangereuse. Pour contrôler les fringants et prendre des décisions pour les fans du jeu "dames", très probablement, ils se verront également confier des complexes d'enregistrement photo et vidéo.

Tir dans le dos

Dans le cadre du concept de transformation de Moscou en "ville intelligente", depuis 2011, un système de transport intelligent (ITS) a été activement introduit dans la capitale, qui collecte et analyse des informations sur la charge et l'état du réseau routier. Les "mains et les yeux" des STI sont des caméras de circulation et d'autres outils logiciels et matériels qui collectent, traitent, stockent les données et les tiennent à jour.

Trois types de systèmes sont utilisés en Russie : radar, laser et fixation vidéo. Ils peuvent être à la fois fixes et mobiles. Les systèmes radar se distinguent par apparence(ils ont deux "yeux" - pour le capteur radar et pour l'objectif de la caméra), et enregistrement vidéo de l'installation de plusieurs caméras sur la rampe (une pour chaque voie).

En moyenne, la distance focale à laquelle la caméra «attrape» l'intrus est de 50 m à 500 m, mais le seuil de vitesse maximale pouvant être enregistré par l'appareil a été considérablement augmenté: la portée des systèmes modernes est de 0 à 250 km / h, et non 0-180 km/h, comme c'était le cas avant.

Les complexes modernes ont appris à reconnaître même les nombres sales ou déformés et sont devenus moins susceptibles de faire des erreurs. Par exemple, l'erreur des complexes Avtohuragan populaires à Moscou, en fonction de la vitesse du véhicule, n'est que de 1 à 2 km/h, et diverses modifications du complexe Strelka ne dépassent pas 2 km/h. Soit dit en passant, ces derniers sont équipés d'un "essuie-glace" spécial - un appareil qui peut nettoyer indépendamment l'œil de l'appareil photo si de la saleté y pénètre.

De plus, désormais, l'appareil peut non seulement prendre une photo de face de la voiture, mais également détecter la vitesse à laquelle l'objet s'éloigne de la caméra, suivre la trajectoire du mouvement, mesurer la vitesse moyenne du véhicule dans un certaine zone, voire travailler selon le principe du « pit stop ». Dans ce dernier cas, les données du contrevenant seront transférées à l'équipe de police de la circulation la plus proche en service avec une demande d'arrêt.

Depuis septembre 2018, un réseau de neurones a été lancé en mode test à Moscou, qui est connecté à la base de données du ministère de l'Intérieur, qui stocke des informations sur toutes les voitures immatriculées. Le soi-disant masque de véhicule est stocké dans le domaine public et contient des données sur la marque et le modèle de la voiture, la couleur de la carrosserie, le numéro de plaque d'immatriculation.

Selon Maxim Liksutov, le chef du département des transports de la capitale, l'introduction d'un réseau de neurones dans la ville permettra de détecter les cas de fraude, c'est-à-dire la substitution de plaques d'immatriculation ou le vol d'un véhicule. Le système est capable de mode automatique corrigez l'écart entre la voiture et les numéros qui y sont installés et signalez au policier que la voiture doit être contrôlée.

Comment ne pas passer sous la caméra ?

Tout d'abord, pour éviter d'avoir une amende, il faut bien sûr ne pas enfreindre : suivre le code de la route, respecter la limite de vitesse, suivre les panneaux et marquages ​​appliqués sur l'asphalte. De plus, vous pouvez également vous protéger à l'aide d'un anti-radar ou d'un DVR avec un anti-radar : ces appareils surveillent la situation en temps réel, reçoivent les signaux des caméras de la police de la circulation et avertissent le conducteur par un signal sonore.

Sur les marchés des appareils basés sur Android ou Apple, il existe un grand nombre d'applications avec des fonctionnalités similaires. Le prix de ces applications, en fonction de leurs capacités et de leur précision, varie de 100 à 1650 roubles. Ou vous pouvez utiliser navigateur gratuit, après avoir activé la fonction de notification sonore sur les caméras et autres événements de trafic dans les paramètres. Certes, il convient de garder à l'esprit que les données, par exemple, sur les nouvelles caméras ou les postes mobiles de police de la circulation, y sont saisies par les mêmes utilisateurs que vous.

Comment prouver votre cas?

Il est possible et nécessaire de contester des amendes émises par erreur pour des infractions au code de la route enregistrées par des caméras. Cependant, cela ne devrait être fait que si vous êtes absolument sûr que vous n'avez pas enfreint, et vous pouvez étayer cela avec des preuves solides.

Le mécanisme d'appel est le suivant :

Vous disposez d'un délai de 10 jours pour porter plainte à compter de la date de réception de l'amende (article 30.3 du code des infractions administratives) ;

La plainte peut être déposée en personne (en centres de services"Moscou transport" ou réception MADI), et en au format électronique(via le portail Autocode ou la réception électronique du gouvernement de Moscou);

L'ensemble de documents doit contenir à la fois la plainte elle-même, signée par vous-même, et des éléments supplémentaires (photos, vidéos ou autres documents) confirmant les informations fournies dans votre recours ;

Si, au moment du dépôt de la plainte, les 10 jours impartis par le Code des infractions administratives sont déjà écoulés, le dossier de documents doit être accompagné d'une demande de rétablissement du délai non respecté pour faire appel de la décision relative à une infraction administrative, qui doit également être signé en personne ;

La plainte doit indiquer le nom de l'instance auprès de laquelle elle est déposée, la date, le numéro de la décision et les arguments prouvant l'illégalité de l'accusation. Suite Instructions détaillées avec des exemples de textes de plaintes publiés sur le site officiel du maire de Moscou.

10 jours sont alloués pour l'examen de la plainte, par conséquent, il est toujours nécessaire de payer une amende, bien qu'elle soit émise à tort. Il convient également de se préparer au fait que la décision devra être contestée devant des instances supérieures - d'abord devant la police de la circulation, puis devant un tribunal. Et établissez une règle pour conserver les enregistrements du DVR après le voyage pendant au moins deux semaines.

Le matériel raconté par notre collègue Konstantin Lachman résume l'histoire du développement des réseaux de neurones, leurs principales caractéristiques et leurs différences fondamentales par rapport aux autres modèles utilisés dans l'apprentissage automatique. Nous parlerons également d'exemples précis d'utilisation des technologies de réseaux de neurones et de leurs perspectives immédiates. La conférence sera utile pour ceux qui veulent systématiser dans leur tête toutes les connaissances modernes les plus importantes sur les réseaux de neurones.

Konstantin klakhman Lakhman est diplômé du MEPhI et a travaillé comme chercheur au département des neurosciences du Centre national de recherche «Kurchatov Institute». Chez Yandex, il se concentre sur les technologies de réseau neuronal utilisées dans la vision par ordinateur.

Sous la coupe - une transcription détaillée avec des diapositives.

Les réseaux de neurones

Salut. Je m'appelle Kostya Lahman et le sujet de la conférence d'aujourd'hui est les réseaux de neurones. Je travaille chez Yandex dans le groupe de technologie des réseaux neuronaux, et nous développons toutes sortes de choses intéressantes basées sur l'apprentissage automatique utilisant des réseaux neuronaux. Les réseaux de neurones sont l'une des méthodes d'apprentissage automatique, à laquelle une grande attention est désormais accordée non seulement par les spécialistes de l'analyse de données ou les mathématiciens, mais aussi par les personnes en général qui n'ont rien à voir avec cette profession. Et cela est dû au fait que les solutions basées sur les réseaux de neurones montrent les meilleurs résultats dans divers domaines de la connaissance humaine, tels que la reconnaissance vocale, l'analyse de texte, l'analyse d'images, dont je vais essayer de parler dans cette conférence. Je comprends que, probablement, tout le monde dans ce public et ceux qui nous écoutent ont un niveau de préparation légèrement différent - quelqu'un en sait un peu plus, quelqu'un un peu moins - mais ceux qui ont lu quelque chose peuvent lever la main sur les réseaux de neurones ? C'est une partie très solide du public. Je vais essayer de le rendre intéressant à la fois pour ceux qui n'ont rien entendu du tout, et pour ceux qui ont lu quelque chose, parce que la plupart des études dont je parlerai sont des études de cette année ou de l'année précédente, parce qu'il y a un beaucoup de tout se passe, et littéralement six mois passent, et ces articles qui ont été publiés il y a six mois, ils sont déjà un peu dépassés.


Commençons. Je vais très rapidement parler de ce qu'est la tâche de l'apprentissage automatique en général. Je suis sûr que beaucoup d'entre vous le savent, mais pour avancer, j'aimerais que tout le monde comprenne. Sur l'exemple du problème de la classification comme le plus compréhensible et le plus simple.

Prenons des U - un ensemble d'objets du monde réel, et à chacun de ces objets nous attribuons des signes de ces objets. Et aussi chacun de ces objets a une classe que nous aimerions pouvoir prédire, ayant les caractéristiques de l'objet. Regardons cette situation en utilisant des images comme exemple.


Les objets sont toutes les images du monde qui pourraient nous intéresser.


Les caractéristiques les plus simples des images sont les pixels. Au cours du dernier demi-siècle, au cours duquel l'humanité s'est engagée dans la reconnaissance des formes, des caractéristiques d'images beaucoup plus complexes ont été inventées - mais ce sont les plus simples.


Et la classe que l'on peut attribuer à chaque image est, par exemple, une personne (il s'agit d'une photographie d'Alan Turing, par exemple), un oiseau, une maison, etc.


La tâche de l'apprentissage automatique dans ce cas est de construire une fonction de décision qui, par le vecteur de caractéristiques de l'objet, indiquera à quelle classe il appartient. Pour autant que je sache, vous avez eu une conférence de Konstantin Vorontsov, qui en a parlé beaucoup plus profondément que moi, donc je ne suis qu'au sommet.


Dans la plupart des cas, un échantillon dit d'apprentissage est nécessaire. Il s'agit d'un ensemble d'exemples dont nous savons avec certitude que cet objet a une telle classe. Et sur la base de cet échantillon de formation, nous pouvons construire ce fonction décisive, qui fait le moins d'erreurs possible sur les objets de l'ensemble d'apprentissage et, par conséquent, s'attend à ce que sur les objets qui ne sont pas inclus dans l'ensemble d'apprentissage, nous aurons également bonne qualité classements.


Pour ce faire, nous devons introduire une fonction d'erreur. Ici D est l'ensemble d'apprentissage, F est la fonction de décision. Et dans le cas le plus simple, la fonction d'erreur est juste le nombre d'exemples que nous nous trompons. Et, afin de trouver la fonction de décision optimale, nous devons comprendre. Habituellement, nous choisissons une fonction dans un ensemble paramétrique, c'est-à-dire qu'il s'agit simplement d'une sorte, par exemple, d'un polynôme d'une équation qui a des coefficients, et nous devons les sélectionner d'une manière ou d'une autre. Et les paramètres de cette fonction qui minimisent cette fonction d'erreur, la fonction de perte, sont notre objectif, c'est-à-dire que nous voulons trouver ces paramètres.

Il existe de nombreuses méthodes pour rechercher ces paramètres. Je n'entrerai pas là-dedans maintenant. L'une des méthodes consiste à prendre un exemple de cette fonction, à voir si nous l'avons classée correctement ou incorrectement, et à prendre la dérivée par rapport aux paramètres de notre fonction. Comme vous le savez, si nous allons dans le sens de l'inverse de cette dérivée, alors nous réduirons ainsi l'erreur dans cet exemple. Et ainsi, en parcourant tous les exemples, nous réduirons l'erreur en ajustant les paramètres de la fonction.

Ce dont je viens de parler s'applique à tous les algorithmes d'apprentissage automatique et s'applique aux réseaux de neurones dans la même mesure, même si les réseaux de neurones se sont toujours tenus un peu à l'écart de tous les autres algorithmes.


Il y a maintenant un regain d'intérêt pour les réseaux de neurones, mais c'est l'un des plus anciens algorithmes d'apprentissage automatique auxquels vous pouvez penser. Le premier neurone formel, la cellule de réseau de neurones, a été proposé, sa première version, en 1943 par Warren McCulloch et Walter Pitts. Déjà en 1958, Frank Rosenblatt proposait le premier réseau de neurones très simple, qui pouvait déjà séparer, par exemple, des objets dans un espace bidimensionnel. Et les réseaux de neurones ont connu des hauts et des bas tout au long de ces plus d'un demi-siècle d'histoire. L'intérêt pour les réseaux de neurones était très fort dans les années 1950 et 1960, lorsque les premiers résultats impressionnants ont été obtenus. Ensuite, les réseaux de neurones ont cédé la place à d'autres algorithmes d'apprentissage automatique, qui se sont révélés plus puissants à ce moment-là. Encore une fois, l'intérêt a repris dans les années 1990, puis a de nouveau décliné.


Et maintenant, au cours des 5 à 7 dernières années, il s'est avéré que dans de nombreuses tâches liées à l'analyse des informations naturelles, et tout ce qui nous entoure est une information naturelle, c'est le langage, c'est la parole, c'est une image, une vidéo, beaucoup d'autres informations très différentes, - les réseaux de neurones sont meilleurs que les autres algorithmes. Au moins sur ce moment. Peut-être que la renaissance se terminera à nouveau et que quelque chose les remplacera, mais maintenant, ils montrent les meilleurs résultats dans la plupart des cas.

Qu'est-ce qui a conduit à cela? Le fait que les réseaux de neurones soient comme un algorithme d'apprentissage automatique, ils doivent être entraînés. Mais contrairement à la plupart des algorithmes, les réseaux de neurones sont très critiques pour la quantité de données, pour la quantité d'échantillon d'apprentissage nécessaire pour les former. Et sur une petite quantité de données, les réseaux ne fonctionnent tout simplement pas bien. Ils ne généralisent pas bien, ils ne fonctionnent pas bien avec des exemples qu'ils n'ont pas vus dans le processus d'apprentissage. Mais au cours des 15 dernières années, la croissance des données dans le monde est peut-être devenue exponentielle, et maintenant ce n'est plus un si gros problème. Nous avons beaucoup de données.

La deuxième pierre angulaire de la renaissance des réseaux est désormais les ressources informatiques. Les réseaux de neurones sont l'un des algorithmes d'apprentissage automatique les plus lourds. D'énormes ressources de calcul sont nécessaires pour former un réseau de neurones et même pour l'appliquer. Et maintenant, nous avons de telles ressources. Et, bien sûr, de nouveaux algorithmes ont été inventés. La science ne s'arrête pas, l'ingénierie ne s'arrête pas, et maintenant nous comprenons mieux comment entraîner ce type de structures.


Qu'est-ce qu'un neurone formel ? Il s'agit d'un élément très simple qui a un nombre limité d'entrées, un certain poids est attaché à chacune de ces entrées, et le neurone prend et exécute simplement une somme pondérée de ses entrées. L'entrée peut être, par exemple, les mêmes pixels d'image dont j'ai parlé plus tôt. Imaginons que X 1 à X n est simplement tous les pixels de l'image. Et chaque pixel a un poids qui lui est associé. Il les résume et effectue une transformation non linéaire sur eux. Mais même si tu ne touches pas transformation linéaire, alors déjà un tel neurone est un classificateur suffisamment puissant. Vous pouvez remplacer ce neurone et dire que c'est juste un classificateur linéaire, et c'est ce qu'est le neurone formel, c'est juste un classificateur linéaire. Si, par exemple, dans un espace à deux dimensions, nous avons un certain ensemble de points de deux classes, et ce sont leurs signes x1 Et x2, c'est-à-dire en choisissant ces poids V 1 Et V2, on peut construire une surface séparatrice dans cet espace. Et donc, si nous avons cette somme, par exemple, supérieure à zéro, alors l'objet appartient à la première classe. Si cette somme est inférieure à zéro, alors l'objet appartient à la seconde classe.

Et tout irait bien, mais la seule chose est que cette image est très optimiste, il n'y a que deux signes, les classes, comme on dit, sont linéairement séparables. Cela signifie que nous pouvons simplement tracer une ligne qui classe correctement tous les objets de l'ensemble d'apprentissage. En fait, ce n'est pas toujours le cas, et n'arrive presque jamais. Et par conséquent, un neurone ne suffit pas pour résoudre la grande majorité des problèmes pratiques.


Il s'agit d'une transformation non linéaire que chaque neurone effectue sur cette somme, c'est d'une importance cruciale, car, comme nous le savons, si nous effectuons, par exemple, une sommation aussi simple et disons qu'il s'agit, par exemple, d'une nouvelle fonctionnalité Y 1 (W 1 x 1 + W 2 x 2 =y 1), et puis nous avons, par exemple, un autre deuxième neurone, qui résume également les mêmes signes, seulement ce sera, par exemple, W 1 "x 1 + W 2" x 2 \u003d y 2. Si nous voulons plus tard appliquer à nouveau la classification linéaire dans l'espace de ces caractéristiques, cela n'aura aucun sens, car deux classifications linéaires appliquées à la suite peuvent être facilement remplacées par une seule, ce n'est qu'une propriété de la linéarité des opérations . Et si nous effectuons une transformation non linéaire sur ces fonctionnalités, par exemple, la plus simple ... Auparavant, des transformations non linéaires plus complexes étaient utilisées, comme cette fonction logistique, elle est limitée à zéro et un, et nous voyons qu'il y a des sections linéaires ici. Autrement dit, il se comporte assez linéairement autour de 0 en x, comme une ligne droite ordinaire, puis il se comporte de manière non linéaire. Mais, il s'est avéré que pour former efficacement ce type de classificateurs, la non-linéarité la plus simple au monde suffit - juste une ligne droite tronquée, alors que dans la section positive c'est une ligne droite, et dans la section négative c'est toujours 0. C'est la non-linéarité la plus simple, et il s'avère que même elle est déjà suffisante pour entraîner efficacement la classification.


Qu'est-ce qu'un réseau de neurones ? Un réseau de neurones est une séquence de telles transformations. F1 C'est ce qu'on appelle la couche réseau de neurones. Une couche de réseau de neurones est simplement un ensemble de neurones qui fonctionnent sur les mêmes fonctionnalités. Imaginons que nous ayons des fonctionnalités initiales x 1 , x 2 , x 3, et nous avons trois neurones, chacun associé à toutes ces caractéristiques. Mais chacun des neurones a ses propres poids sur lesquels il pèse ces caractéristiques, et la tâche d'entraîner le réseau à sélectionner ces poids pour chacun des neurones qui optimisent notre fonction d'erreur. Et fonction F1 est une couche de ces neurones, et après avoir appliqué la fonction, nous obtenons un nouvel espace de fonctionnalités. Ensuite, nous appliquons une autre couche de ce type à cet espace de caractéristiques. Il peut y avoir un nombre différent de neurones, une autre non-linéarité en tant que fonction de transformation, mais ce sont les mêmes neurones, mais avec les mêmes poids. Ainsi, en appliquant successivement ces transformations, on obtient fonction commune F– la fonction de transformation du réseau neuronal, qui consiste en l'application successive de plusieurs fonctions.


Comment les réseaux de neurones sont-ils entraînés ? Fondamentalement, comme tout autre algorithme d'apprentissage. Nous avons un vecteur de sortie qui est obtenu à la sortie du réseau, par exemple, une classe, une sorte d'étiquette de classe. Il existe une sortie de référence, dont nous savons que ces fonctionnalités devraient avoir, par exemple, un tel objet, ou quel numéro nous devrions lui lier.


Et nous avons un delta, c'est-à-dire la différence entre le vecteur de sortie et le vecteur de référence, puis sur la base de ce delta, il y a une grande formule ici, mais l'essentiel est que si nous comprenons que ce delta dépend de F n, c'est-à-dire à partir de la sortie de la dernière couche du réseau, si nous prenons la dérivée de ce delta en poids, c'est-à-dire par les éléments que nous voulons former, et nous appliquons également la règle dite de la chaîne, que est, quand nous avons des dérivés fonction complexe est le produit de la dérivée par rapport à la fonction et du produit de la fonction par rapport au paramètre, il s'avère que d'une manière aussi simple nous pouvons trouver les dérivées pour tous nos poids et les ajuster en fonction de l'erreur que nous observer. Autrement dit, si nous n'avons pas d'erreur sur un exemple d'entraînement particulier, alors, en conséquence, les dérivées seront égales à zéro, ce qui signifie que nous le classons correctement et que nous n'avons rien à faire. Si l'erreur dans l'exemple de formation est très importante, nous devons faire quelque chose à ce sujet, modifier d'une manière ou d'une autre les pondérations pour réduire l'erreur.

Réseaux convolutifs

Maintenant, il y avait un peu de mathématiques, très superficiellement. De plus, la majeure partie du rapport sera consacrée à des choses sympas qui peuvent être faites à l'aide de réseaux de neurones et qui sont maintenant faites par de nombreuses personnes dans le monde, y compris à Yandex.


L'une des méthodes qui a d'abord montré des avantages pratiques est ce qu'on appelle les réseaux de neurones convolutifs. Que sont les réseaux de neurones convolutifs ? Disons que nous avons une photo d'Albert Einstein. Cette image, probablement, beaucoup d'entre vous l'ont également vue. Et ces cercles sont des neurones. Nous pouvons connecter un neurone à tous les pixels de l'image d'entrée. Mais il y a un gros problème ici, que si nous connectons chaque neurone à tous les pixels, alors, premièrement, nous obtiendrons beaucoup de poids, et ce sera une opération très gourmande en calculs, il faudra beaucoup de temps pour calculer de tels une somme pour chacun des neurones, et deuxièmement, deuxièmement, il y aura tellement de poids que cette méthode sera très instable au surajustement, c'est-à-dire à l'effet quand on prédit bien tout sur l'ensemble d'entraînement, et qu'on travaille très mal sur l'ensemble d'exemples qui ne sont pas inclus dans ceux de formation, simplement parce que nous avons reconstruit sur l'ensemble de formation. Nous avons trop de poids, trop de liberté, nous pouvons très bien expliquer toute variation dans l'ensemble d'entraînement. Par conséquent, ils ont proposé une architecture différente, dans laquelle chacun des neurones n'est connecté qu'à un petit voisinage de l'image. Entre autres choses, tous ces neurones ont les mêmes poids, et cette construction est appelée convolution d'image.


Comment est-il réalisé ? Ici, au centre, nous avons ce qu'on appelle le noyau de convolution - c'est la totalité des poids de ce neurone. Et nous appliquons ce noyau de convolution à tous les pixels de l'image de manière séquentielle. Appliquer - cela signifie que nous pondérons simplement les pixels de ce carré par des poids et obtenons une nouvelle valeur. On peut dire qu'on a transformé l'image, qu'on l'a parcourue avec un filtre. Comme dans Photoshop, par exemple, il y a des filtres. Autrement dit, le filtre le plus simple consiste à créer du noir et blanc à partir d'une image couleur. Et donc nous sommes passés par un tel filtre et avons obtenu une image transformée.

Quel est l'avantage ici ? Le premier avantage est qu'il y a moins de poids, un comptage plus rapide, moins sujet au recyclage. D'autre part, chacun de ces neurones est obtenu par une sorte de détecteur, comme je le montrerai ensuite. Disons que si quelque part dans l'image nous avons un œil, nous utiliserons le même ensemble de poids, en parcourant l'image, pour déterminer où se trouve l'œil dans l'image.


Il devrait y avoir une vidéo ici.
Et l'une des premières choses auxquelles cette architecture a été appliquée a été la reconnaissance des nombres comme les objets les plus simples.

Appliqué quelque part en 1993 par Jan LeCun à Paris, et ici maintenant il y aura pratiquement un enregistrement d'archives. La qualité est moyenne. Ici, ils fournissent maintenant des numéros manuscrits, appuyez sur un bouton et le réseau reconnaît ces numéros manuscrits. En principe, elle reconnaît sans équivoque. Eh bien, ces chiffres sont naturellement plus simples car ils sont imprimés. Mais, par exemple, sur cette image, les chiffres sont déjà beaucoup plus compliqués. Et ces chiffres, pour être honnête, même moi, je ne peux pas tout à fait les distinguer. Il semble y avoir un quatre sur la gauche, mais le réseau devine. Même ce genre de chiffres qu'elle reconnaît. Ce fut le premier succès des réseaux de neurones convolutifs, qui ont montré qu'ils sont réellement applicables dans la pratique.


Quelle est la spécificité de ces réseaux de neurones convolutifs ? Cette opération de convolution est élémentaire, et nous construisons des couches de ces convolutions sur l'image, transformant de plus en plus loin de l'image. Nous obtenons donc de nouvelles fonctionnalités. Nos principales caractéristiques étaient les pixels, puis nous transformons l'image et obtenons de nouvelles fonctionnalités dans le nouvel espace, ce qui, peut-être, nous permettra de classer cette image plus efficacement. Si vous imaginez l'image des chiens, ils peuvent être dans une variété de poses, dans une variété de conditions d'éclairage, sur une variété d'arrière-plans, et il est très difficile de les classer directement en se basant uniquement sur les pixels. Et en obtenant successivement une hiérarchie des signes des nouveaux espaces, on peut le faire.
C'est la principale différence entre les réseaux de neurones et les autres algorithmes d'apprentissage automatique. Par exemple, dans le domaine de la vision par ordinateur, en reconnaissance d'images avant les réseaux de neurones, l'approche suivante a été adoptée.

Lorsque vous prenez un domaine, par exemple, nous devons déterminer entre dix classes à quelle classe appartient un objet - une maison, un oiseau, une personne, les gens se sont assis très longtemps et ont réfléchi aux signes qui pourraient être trouvés pour distinguer ces images. Par exemple, l'image d'une maison est facile à distinguer si nous avons beaucoup de lignes géométriques qui se croisent d'une manière ou d'une autre. Les oiseaux, par exemple, ont des couleurs très vives, donc si nous avons une combinaison de signes verts, rouges et autres, cela ressemble probablement plus à un oiseau. Toute l'approche consistait à proposer autant de ces fonctionnalités que possible, puis à les appliquer à un classificateur linéaire assez simple, environ un qui se compose en fait d'une couche. Il existe aussi des méthodes plus difficiles, mais, néanmoins, ils ont travaillé sur ces signes, qui ont été inventés par l'homme. Et avec les réseaux de neurones, il s'est avéré que vous pouvez simplement créer un échantillon d'apprentissage, ne sélectionner aucune fonctionnalité, lui donner simplement des images en entrée, et il apprendra lui-même, il sélectionnera les fonctionnalités qui sont essentielles pour classer ces images en raison de cette hiérarchie.


Regardons quelles fonctionnalités le réseau de neurones met en évidence. Sur les premières couches d'un tel réseau, il s'avère que le réseau extrait des fonctionnalités très simples. Par exemple, des transitions dégradées ou certaines lignes à des angles différents. C'est-à-dire qu'il met en évidence des signes - cela signifie que le neurone réagit s'il voit approximativement un tel morceau de l'image dans la fenêtre de son noyau de convolution, dans la zone de visibilité. Ces panneaux ne sont pas très intéressants, nous pourrions les inventer nous-mêmes.


En approfondissant, nous voyons que le réseau commence à mettre en évidence des fonctionnalités plus complexes, telles que des éléments circulaires et même des éléments circulaires avec quelques rayures.


Et plus on avance dans le réseau de neurones, plus on s'éloigne de l'entrée, plus les signes deviennent complexes. C'est-à-dire que, par exemple, ce neurone peut déjà répondre au visage d'un chien, c'est-à-dire qu'il s'allume lorsqu'il voit le visage d'un chien, un bocal, une montre ou autre chose dans une partie de l'image.


A quoi ça sert tout ça ? Ils ne sont pas très grands selon les normes modernes, mais pendant trois ans, il s'agissait de la plus grande base de données d'images balisées du monde Image.net. Il contient un peu plus d'un million d'images, qui sont réparties en mille classes. Et il est nécessaire d'obtenir la plus grande précision de reconnaissance sur cet échantillon.


Cette sélection n'est pas facile du tout. Vous devez juste comprendre que, par exemple, le husky et le husky sibérien sont deux classes différentes là-bas. Si je montre ces deux images, je ne peux pas dire où se trouve le husky et où se trouve le husky sibérien, mais le réseau peut le dire. Là-bas, à mon avis, il y a plus de 300 races de chiens de différentes classes et quelques dizaines de types de terriers. C'est-à-dire une personne possédant probablement des connaissances spécifiques dans le domaine de la cynologie, mais une personne ordinaire ne le peut pas.


Nous avons appliqué un réseau de neurones à cet échantillon d'images, et il s'est avéré qu'il s'en sort très bien. Par exemple, voici une image, la classe correcte est affichée sous l'image, et ici les barres de prédiction du réseau sont affichées. Et plus la barre est grande, plus le réseau est sûr que cette prédiction est correcte. Et on voit qu'elle prédit correctement un léopard, prédit un scooter, malgré le fait qu'ici, en plus du scooter, il y a encore des gens dans l'image. Mais elle voit que le scooter est l'objet dominant de l'image, et elle le prédit. Disons qu'il prédit même une tique, malgré le fait que toute l'image ne consiste qu'en un arrière-plan uniforme et que la tique ne se trouve que quelque part dans le très, très coin. Mais elle comprend que la tique est la base de cette scène. Dans le même temps, l'analyse des erreurs du réseau de neurones est également très intéressante et permet d'identifier, par exemple, des erreurs dans l'ensemble d'entraînement, car cet ensemble a été marqué par des personnes, et les personnes font toujours des erreurs. Disons qu'il y a une image avec un dalmatien et une cerise, à laquelle le réseau de neurones répond avec une grande confiance qu'il s'agit d'un dalmatien. Eh bien, vraiment, nous regardons cette image et voyons que le sujet principal est un dalmatien. Mais en fait, il y a une cerise au premier plan ici, et la personne qui a marqué cette image lors de la préparation de l'échantillon, pour une raison quelconque, a décidé que la cerise était l'objet dominant de cette image. Et il s'avère que le réseau de neurones a fait une erreur selon notre métrique.

D'autre part, par exemple, il y a un animal ici en bas à droite. Je ne savais pas de quelle espèce d'animal il s'agissait. Le balisage dit que c'est un chat de Madagascar. Faisons confiance au balisage. Mais le réseau fait une supposition très raisonnable quant à ce que cela pourrait être. Elle dit que c'est une sorte de singe. Il me semble que ces erreurs elles sont très raisonnables. Autrement dit, je pourrais aussi supposer qu'il s'agit d'une sorte de singe, très rare et exotique.


La principale mesure d'erreur sur cette base est ce que l'on appelle l'erreur Top-5. C'est lorsque nous prenons les 5 meilleures prédictions, les cinq premières prédictions de notre réseau dans lesquelles il est le plus confiant, et si la bonne classe du balisage se trouve dans ces cinq prédictions, alors nous disons que le réseau a raison. Et l'erreur est quand nous n'avons pas obtenu la bonne classe dans les cinq premières prédictions. Et avant l'ère des réseaux de neurones (c'est 2010-2011, c'est avant l'ère des réseaux de neurones convolutifs), on voit que l'erreur, bien sûr, a diminué, était légèrement inférieure à 30%, et en 2011 elle était même légèrement inférieure, mais, par exemple, en 2012 , lorsque nous avons appliqué pour la première fois un réseau de neurones convolutifs à ce problème, il s'est avéré que nous pouvions réduire radicalement l'erreur, c'est-à-dire que toutes les autres méthodes en étaient incapables, et le réseau de neurones en était capable , et de plus, à mesure que l'intérêt pour les réseaux de neurones augmentait, il s'est avéré que nous pouvions réduire cette erreur - ce sera maintenant une spéculation - au niveau qu'une personne peut atteindre sur cette base. Des recherches ont été menées, ce n'était pas très global, il y avait cinq personnes qui s'apprêtaient à reconnaître ce genre d'images depuis plusieurs jours, et ils ont eu une erreur quelque part autour de 4,5% sur cet échantillon, et le réseau de neurones au moment de printemps ou À l'été 2015, cette étape a été franchie, ce qui a beaucoup étonné tout le monde, il y a eu beaucoup d'articles de presse à ce sujet, etc.


Ce dont je parlais auparavant, à savoir que la profondeur de ce réseau, c'est-à-dire le nombre de ces fonctionnalités que nous appliquons systématiquement à l'image d'entrée, compte. Par exemple, en 2013, le gagnant était un réseau qui avait, à mon avis, 8 ou 9 couches de transformation séquentielle d'images. Et, par exemple, en 2014, un tel réseau a gagné, dans lequel il y a beaucoup de couches et l'architecture dans son ensemble est beaucoup plus compliquée, mais l'essentiel est qu'elle soit plus profonde, c'est-à-dire que cela signifie que nous appliquons plus de non-linéarités à notre image d'entrée, et grâce à cela, nous obtenons une percée dans la qualité.


A quoi ça sert tout ça ? Non seulement reconnaître des images, mais comment pouvons-nous les mettre en pratique ? Par exemple, puisque vous et moi savons déjà que sur chaque couche nous obtenons de nouvelles fonctionnalités, nous pouvons prendre n'importe laquelle de dernières couches sorties de réseau de neurones et considérons quelque chose, disons qu'il s'agit de nouvelles fonctionnalités d'image, et recherchez des images similaires basées sur ces fonctionnalités, c'est-à-dire, en gros, essayez de trouver des images avec les mêmes fonctionnalités que l'entrée. Par exemple, il y a une telle image, les gars jouent au basket, à la NBA, peu importe, et nous voulons trouver des images similaires.


Nous jetons cette image au service d'images similaires et, en effet, nous trouvons d'autres images. Ce sont des joueurs différents, des équipes différentes. Mais on voit qu'ils font tous référence à la façon dont le joueur dribble sur le terrain.


En fait, ce dont je parle maintenant - les algorithmes de vision par ordinateur - a beaucoup d'applications, mais il y a aussi beaucoup d'applications dans le monde réel, comme la recherche de telles images, la reconnaissance. Mais il y a aussi beaucoup d'utilisations anecdotiques. Par exemple, un groupe de chercheurs a tenté de prendre une photo assez simple, la voici à gauche dans la rangée supérieure de l'image, et a appris au réseau à styliser cette image comme des peintures de divers grands artistes, tels que Pablo Picasso, Kandinsky , Vincent Van Gogh. En fait, ils ont donné à l'entrée une image ordinaire et une peinture et ont déclaré que "nous voulons, d'une part, que l'image de sortie soit similaire à l'original, mais aussi qu'elle ait un certain style de cet artiste". Et, comme on peut le voir, il transforme les images d'une manière plutôt intéressante. Et, d'une part, nous pouvons reconnaître l'image originale, ainsi que les traits de l'auteur. Comme vous pouvez le voir, la plupart des articles dont je parle se situent quelque part autour de 2014-2015, et vous pouvez également aller voir plus en détail.

Réseaux de neurones récurrents

Au cours de la dernière année, d'autres modèles de réseaux de neurones ont gagné en popularité : non pas les modèles convolutifs que nous appliquons aux images, mais les modèles de réseaux de neurones dits récurrents. Ce que c'est?


Habituellement, un tel réseau - un réseau à anticipation - ne contient aucune mémoire. C'est-à-dire, disons que nous avons soumis une image à ce réseau, il a reconnu quelque chose, nous avons soumis l'image suivante, et il ne se souvient plus de rien de l'image précédente. C'est-à-dire qu'il ne relie en aucune façon la séquence d'images les unes aux autres. Dans de nombreux problèmes, cette approche n'est pas très applicable, car si, par exemple, nous prenons un texte, disons un texte en langage naturel, un chapitre d'un livre, alors ce texte est constitué de mots, et ces mots forment une certaine séquence . Et on aimerait qu'on soumette par exemple ce mot au réseau, puis qu'on le soumette au mot suivant, mais pour qu'il n'oublie pas le mot précédent, pour qu'il s'en souvienne, se souvienne que c'était, et analyse chaque mot suivant en tenant compte de l'histoire précédente. Et c'est à cela que servent les réseaux de neurones récurrents. Comme vous pouvez le voir ici, en plus du fait que nous avons un chemin entre les caractéristiques d'entrée et certaines sorties du réseau de neurones, nous prenons également en compte les signaux de ces couches internes des pas de temps précédents, c'est-à-dire que nous aimons de se souvenir de l'information, de la renvoyer à nous-mêmes en tant qu'entrée. Et un tel réseau neuronal récurrent peut être déployé.

Sur la droite se trouve juste une base de temps. x0, x1, x2 etc. Et le réseau se souvient toujours de son état précédent. Et la façon dont il analyse chaque objet d'entrée dépend non seulement de cet objet, mais aussi de l'historique précédent.


A quoi cela sert? L'une des applications intéressantes est, par exemple, que nous voulons générer des textes uniquement par lettre. Supposons que nous initialisions d'abord ce réseau avec une séquence, par exemple un mot, puis que nous voulions qu'il nous crache juste une lettre à chaque pas de temps suivant, c'est-à-dire quelle lettre il veut écrire. Il s'agit d'un article en LaTeX qui vous permet d'écrire en même temps, c'est-à-dire qu'il s'agit d'un tel langage de programmation pour écrire des articles en gros. Si vous entraînez le réseau de cette manière et que vous le laissez générer du texte, des mots significatifs sont obtenus, au moins. C'est-à-dire qu'elle ne confond pas les mots. Il semble que même la syntaxe des phrases a également un sens. C'est-à-dire que nous avons un verbe, il y a un sujet, un prédicat en anglais, mais la sémantique de ces phrases, c'est-à-dire leur sens, n'est pas toujours présente. Il semble que du point de vue de la construction, tout semble bon, mais parfois cela n'a pas beaucoup de sens. Mais c'est très modèle simple, il génère un caractère par passe. Et, par exemple, elle essaie même de dessiner des schémas ici à droite en haut. Puisque le langage de balisage LaTeX permet non seulement d'écrire, mais aussi de dessiner, il essaie de dessiner autre chose.


Ou, par exemple, nous pouvons générer directement le code source des programmes. Ce réseau a été formé sur le code source du noyau du système d'exploitation. Systèmes Linux, et nous pouvons voir qu'il semble générer du code qui ressemble au moins à du code significatif. Autrement dit, nous avons, par exemple, des fonctions, il existe différentes expressions conditionnelles, des boucles, etc. Cela semble avoir du sens. Bientôt, les réseaux eux-mêmes écriront des programmes pour nous, semble-t-il, mais je pense que c'est encore loin, et nous aurons encore besoin de programmeurs, pas seulement de réseaux.


Il s'avère que l'entraînement de tels réseaux récurrents, si nous les représentons simplement ainsi avec des couches de neurones, est assez difficile. C'est difficile car ils oublient très vite les informations sur les objets précédents que nous leur avons donnés avant l'objet en cours. Et parfois, nous en avons besoin pour nous souvenir des relations entre des objets très éloignés. Par exemple, si l'on imagine "Guerre et Paix", le merveilleux ouvrage de Léon Tolstoï, alors certaines phrases y occupent plusieurs lignes. Et je me souviens qu'en les lisant, à la fin de la phrase j'avais déjà oublié ce qu'il y avait au début. Et le même problème est observé dans les réseaux récurrents, ils oublient aussi ce qui était au début de la séquence, mais n'aimeraient pas. Et pour cela, ils ont proposé une architecture plus complexe. La chose importante ici est que nous avons un neurone au centre, qui se nourrit de sa sortie en tant qu'entrée. Nous voyons une telle relation récurrente. Entre autres choses, nous avons également des neurones séparés qui contrôlent, ce sont des portes, c'est-à-dire qu'ils déterminent si nous devons percevoir les informations entrantes actuelles. Il y a une porte à l'entrée, c'est-à-dire que nous avons une entrée, et nous déterminons si nous devons la sauter plus loin ou non. Ou nous devons l'ignorer et juste garder nos souvenirs. De même, il y a ici une valve pour les souvenirs : devons-nous garder nos souvenirs à l'instant présent sur les précédents, ou devons-nous les réinitialiser et dire que nous effaçons notre mémoire.

D'où vient le nombre de neurones et quels sont-ils ?
- Un neurone est un tel additionneur qui a des entrées et des poids avec lesquels il les additionne de manière pondérée. C'est un élément très simple.

Et la quantité est bonne question, une question d'approche expérimentale. Dans différentes tâches, nous pouvons avoir besoin d'un nombre différent de couches de ces neurones et d'un nombre différent de neurones dans les couches. Cela dépend beaucoup de la tâche. Chaque fois que vous rencontrez un problème que vous souhaitez résoudre avec des réseaux de neurones, vous devez faire quelques expérimentations pour comprendre que si vous avez 100 neurones, ce n'est pas suffisant. Elle apprend mal, une erreur élevée sur l'ensemble d'entraînement, il faut plus de neurones. Par exemple, 100 000 neurones, c'est trop, nous n'avons pas de telles ressources informatiques pour tout calculer, pour l'entraîner. Elle se recycle sur le plateau. La vérité est donc quelque part au milieu. Prenons 50 000, par exemple, et obtenons la qualité de reconnaissance optimale.
Des réseaux similaires qui peuvent contrôler les portes, qu'il s'agisse d'accepter l'entrée actuelle et d'oublier une partie de la mémoire dont nous disposons actuellement, sont maintenant utilisés. Et l'architecture typique d'un tel réseau est la suivante.


A l'entrée de ce réseau, on nous donne une séquence d'entrée, par exemple, des phrases, et à la sortie on peut aussi générer des mots en utilisant le même réseau récurrent. Autrement dit, nous plions la séquence d'entrée et générons la séquence de sortie.

Pourquoi est-ce? Il y a beaucoup d'applications, donc je ne parlerai pas de toutes. Une application activement explorée est, par exemple, la traduction. C'est-à-dire qu'en entrée, nous avons une phrase d'une langue, par exemple du russe, et en sortie, nous essayons de générer une traduction de cette phrase dans une autre langue, par exemple en anglais. Une autre application un peu fantastique est lorsque nous avons un article qu'un journaliste nous a écrit, et nous voulons un bref extrait de cet article, résumé. Et nous alimentons cet article entier à l'entrée de ce réseau, puis il nous crache un bref contenu de cet article sur la sortie.

Ou, par exemple, nous pouvons former un système qui conduira un dialogue et parlera avec lui. Par exemple, nous pouvons prendre de grands journaux de personnes communiquant avec l'équipe de support technique, c'est-à-dire des personnes qui résolvent certains problèmes d'utilisateurs liés à l'informatique, forment un tel réseau et essaient de communiquer avec lui. Par exemple, ici, l'utilisateur a un problème qu'il ne peut pas se connecter sur le réseau à un terminal distant, et l'utilisateur demande quoi faire, et la machine essaie de résoudre son problème. Il essaie d'abord de comprendre certaines entrées, c'est-à-dire système opérateur l'utilisateur, ce qu'il voit à l'écran, essaie d'effectuer divers tests de diagnostic et propose des solutions. Et tout est fait avec ce réseau simple, qui consiste simplement à peser les différentes entrées qui y sont introduites. Il n'y a pas de connaissance secrète ici, ou les gens ne se sont pas assis pendant très longtemps et n'ont pas pensé que "Essayons d'une manière ou d'une autre, si nous avons un mot au début d'une phrase, un autre mot à la fin, comment pouvons-nous nous connecter eux, les analyser ? ». Non, tout cela a été soumis au réseau de neurones, il a appris et génère de si merveilleux dialogues avec une personne.

Après tout, le réseau de neurones résout le problème humain. Elle lui dit qu'il doit obtenir un autre certificat, autre chose, entrer un mot de passe, et la personne est satisfaite.

Réseaux convolutifs + récurrents

On peut essayer de connecter des réseaux convolutifs avec des réseaux récurrents. J'ai parlé séparément de certains, séparément d'autres, mais nous pouvons essayer de les relier.


Par exemple, la tâche "image au texte". Disons que nous avons une image d'entrée et que nous appliquons un réseau de neurones convolutionnels pour obtenir une représentation compressée de cette image, certaines caractéristiques. Ensuite, nous alimentons ces signes à l'entrée du réseau récurrent, et il génère une description de cette image pour nous. Disons qu'il y a trois ans, cela semblait tout simplement impossible, et maintenant les réseaux de neurones décrivent simplement l'image, ce qui y est montré, quels objets. Et ils ne se contentent pas de dire qu'il y a un tel objet dans l'image, mais le décrivent avec une phrase cohérente.

Il devrait y avoir une autre vidéo ici. Cela s'appelle Neural Network Walk. Il a été publié il y a à peine deux ou trois semaines. L'un des fans des réseaux de neurones, appelons-le ainsi, a décidé d'utiliser la technologie "image au texte", se promenant simplement dans sa ville natale d'Amsterdam avec un téléphone et filmant quelque chose sur la caméra, et essayant de comprendre ce que le réseau ferait dire aux objets du monde environnant. C'est-à-dire pas sur ces images dans des collections académiques, qui, peut-être, ne sont pas très proches de la réalité, mais simplement en filmant ce qui se passe autour de lui. Ce ne sera pas très visible ici, mais j'espère que nous pourrons voir.

Ici, en haut à gauche, se trouve la réponse du réseau à ce qu'il voit. C'est elle qui dit "un homme en veste". Génère des phrases. Ici, elle dit que c'est une sorte de signe, elle ne comprend pas ce qui est écrit dessus, mais elle comprend que c'est un signe. Elle dit que cette personne marche dans la rue, il y a des bâtiments autour, une fenêtre ou une porte, une ruelle, elle dit qu'il y a beaucoup de vélos (mais c'est Amsterdam, il y a beaucoup de vélos, alors elle dit souvent qu'il y a des vélos partout). Il dit qu'il y a un bateau blanc garé. Etc. Je ne dirais pas qu'il s'agit d'une image spécialement préparée, une personne marche et prend des photos, et en temps réel, il s'avère que le réseau neuronal parvient à reconnaître ce qu'une personne est en train de filmer.

À quelle vitesse le reconnaît-elle ? Et si une personne court et ne marche pas, à quelle vitesse comprend-elle ?
- Il me semble que la fréquence d'images est juste réglée.
- Oui. En fait, je vous ai un peu trompé, car, autant que je m'en souvienne, cette vidéo a été filmée avec un post-traitement, c'est-à-dire qu'il l'a tournée, puis l'a exécutée localement sur l'ordinateur grâce à la reconnaissance de ce réseau. Mais maintenant dans de nombreux téléphones portables il y a des cartes graphiques qui sont dans l'ordinateur, seulement elles sont plus petites, moins puissantes, mais plus puissantes que les processeurs. Et en général, avec une sorte d'échantillonnage de trame en temps réel, il est possible de reconnaître quelque chose par un petit réseau, même lorsque vous exécutez, c'est-à-dire que vous essayez de le faire. En général, c'est possible, et je pense que cette question sera moins pertinente dans quelques années, car, comme nous le savons, les capacités de calcul augmentent, et probablement un jour cela deviendra possible en temps réel avec les plus grands réseaux qui, d'une manière ou d'une autre reconnaître.

- Au fait, le sens de cette technologie de reconnaissance par image ? C'est-à-dire que je le vois moi-même.
- Ici, ils me disent - pour les personnes handicapées, cela a beaucoup de sens. Deuxièmement, imaginez comment fonctionnent les recherches d'images sur Internet. Comment?
- Vous avez dit, d'après ceux-là mêmes.
- Il s'agit d'une recherche d'images similaires. Et, par exemple, si vous allez sur un serveur comme "Yandex. Pictures" ...
- Par mots clés.
- Oui. Et à ce stade, si nous pouvons générer ces mots-clés à partir de l'image, la recherche sera simplement meilleure. C'est-à-dire qu'on peut trouver des images... Or la recherche d'images, pour l'essentiel, passe par les textes à proximité des images. Autrement dit, il y a du texte autour de l'image. Lorsque nous mettons une image dans notre index, nous disons que nous avons un tel texte dans l'image. Lorsque l'utilisateur saisit une requête, nous essayons de faire correspondre les mots et les requêtes avec les mots du texte. Mais le texte de l'image est une chose très complexe, il n'est pas toujours pertinent par rapport à l'image à côté de laquelle il se trouve. Tant de gens essaient d'optimiser leurs revenus sur Internet, par exemple, ou quelque chose comme ça, et donc ce n'est pas toujours une information fiable.

Et si nous pouvons dire de manière fiable ce qui est dans l'image, alors ce sera très utile.

Dans cette vidéo, les descriptions étaient assez sèches et courtes, c'est-à-dire que nous disions "Voici un bateau garé quelque part" ou "Voici un tas de vélos posés sur le trottoir", mais nous pouvons former le réseau avec un peu différent échantillon, par exemple, sur un échantillon de romans d'aventure, puis il générera des descriptions très vivantes pour toutes les images. Ils ne seront pas entièrement pertinents pour ces images, c'est-à-dire pas complètement, mais au moins ils seront très drôles. Par exemple, ici, une personne vient de skier, et le réseau dit qu'il y avait une personne qui vivait seule, et il ne savait pas jusqu'où il pouvait aller, et il poursuivait, n'a montré aucun signe de faiblesse. Autrement dit, un tel roman d'aventure en une seule image. Cela a également été fait par un groupe de chercheurs en réponse au fait qu'ils ont dit que "Vous avez des prédictions très sèches à partir de l'image, d'une manière ou d'une autre, le réseau ne brûle pas." Mais ils ont fait en sorte que le réseau génère des descriptions intéressantes.

Ici aussi, si vous le lisez, il y a tout un drame sur la façon dont une personne est montée dans un bus, a essayé d'aller quelque part, puis a changé d'itinéraire, est montée dans une voiture, s'est retrouvée à Londres, etc.

En fait, on peut changer ces deux blocs dans notre architecture et dire que « Et mettons d'abord en premier lieu un réseau récurrent qui percevra les mots, puis une sorte de réseau convolutif qui ne comprimera pas notre image, mais vice versa, pressez-le." Autrement dit, il existe un vecteur de caractéristiques dans un espace et nous voulons générer une image à l'aide de ce vecteur de caractéristiques. Et l'un de mes collègues de Yandex a déclaré : "Le futur est là, juste un peu flou pour l'instant." Et l'avenir est bel et bien là, mais un peu flou. Ici, vous pouvez voir que nous générons une image à partir de la description. Par exemple, en haut à gauche, un bus jaune est garé sur une place de parking. Ici, les couleurs sont malheureusement difficiles à percevoir, mais, néanmoins, si nous remplaçons, par exemple, le mot "jaune" par le mot "rouge" dans la même phrase, alors la couleur de cette tache, qui est un bus, sera vraiment changer, c'est-à-dire qu'il deviendra rouge. Et la même chose, si on précise qu'il s'agit d'un bus vert, alors ce spot deviendra vert. Il ressemble vraiment à un bus.
La même chose est présentée ici, que si nous changeons non seulement la couleur, mais aussi les objets eux-mêmes, par exemple, "le chocolat est sur la table" ou "la banane est sur la table", alors nous ne définissons pas directement le couleur de l'objet, mais il est clair que le chocolat est généralement brun et qu'une banane est généralement jaune, et donc, même sans définir directement la couleur de l'objet, notre réseau modifie une partie de la couleur de l'image.

C'est à peu près la même chose que ce dont je parlais plus tôt. Par exemple, un troupeau d'éléphants se promène dans un champ brûlé, dans un champ d'herbe sèche. Et l'herbe sèche est généralement orange et l'herbe verte est généralement verte. Et ici vous pouvez voir que certaines créatures, peu reconnaissables, marchent sur quelque chose de vert, et ici sur quelque chose d'orange. Habituellement, il y a plus d'une de ces créatures. Si nous vous rencontrons dans un an ou dans six mois, nous ferons de grands progrès dans ce domaine.

Réseaux de neurones + apprentissage par renforcement

Ce que je voudrais dire en conclusion est très sujet intéressant"Regrouper les réseaux de neurones avec l'apprentissage par renforcement". L'un d'entre vous a-t-il lu ce qu'est l'apprentissage par renforcement ?

- Il y a une telle chose en psychologie.
- En fait, ça a à voir avec la psychologie. Le domaine de "lier les réseaux de neurones avec l'apprentissage par renforcement" est le domaine d'étude le plus pertinent des réseaux de neurones liés à la biologie et à la psychologie.

Imaginez que nous ayons une souris et un labyrinthe. Et nous savons qu'aux extrémités de ce labyrinthe se trouvent du fromage, de l'eau, des carottes et rien à l'une des extrémités du labyrinthe. Et nous savons que chacun de ces éléments a une certaine utilité pour notre souris. Par exemple, une souris aime beaucoup le fromage, mais aime moins les carottes et l'eau, mais les aime autant, mais elle n'aime rien du tout. Autrement dit, si elle arrive au bout du labyrinthe et ne voit rien, elle sera très contrariée.

Imaginez que dans ce labyrinthe simple, nous n'ayons que trois états dans lesquels la souris peut être - ceci S1. Capable de S1 elle peut choisir d'aller à gauche ou à droite. Et capable S2 Et S3 elle aussi peut choisir d'aller à gauche ou à droite.


Nous pouvons mettre en place un arbre aussi merveilleux qui nous dit que si la souris se déplace deux fois vers la gauche, elle recevra une valeur égale à quatre unités conventionnelles. Si elle va vers la droite, et alors peu importe qu'elle soit allée à gauche ou à droite après la première fois qu'elle est allée à droite, elle recevra la valeur de deux.

Et la tâche de l'apprentissage par renforcement dans ce cas le plus simple est de construire une fonction Q qui pour chaque état S dans notre labyrinthe ou dans une partie de notre environnement diront : "Si vous effectuez cette action - par exemple, allez vers la gauche - alors vous pourrez recevoir telle ou telle récompense." Il est important pour nous de pouvoir S1, lorsque nous ne savons pas encore ce qui nous attend, pour que cette fonction dise que "Si vous allez à gauche dans cet état, vous pouvez obtenir la récompense 4". Bien que, si nous S1 allons à S2, alors nous pouvons également obtenir une récompense de 0. Mais la récompense maximale que nous pouvons obtenir avec la bonne stratégie de comportement est de 4.


Cette formule le montre. Imaginez que pour certains des états, nous connaissons pour tous les états suivants qui peuvent être atteints à partir de cela, la récompense optimale, c'est-à-dire que nous connaissons la politique de comportement optimale. Ensuite, pour l'état actuel, nous pouvons très facilement dire quelle action nous devons effectuer. Nous pouvons simplement regarder à travers tous les états suivants, dire dans lequel des états suivants nous acquérons la plus grande récompense - prétendre que nous le savons, bien que nous ne le sachions pas vraiment - et dire que nous devons aller dans l'état dans lequel la récompense attendue Suite.


Il existe un algorithme pour cette fonction, car nous ne connaissons pas la politique de comportement optimale pour les états suivants.


Et cet algorithme est assez simple, il est itératif. Imaginez que nous ayons cette fonction Q(s, une).


Nous avons son ancienne valeur et nous voulons la mettre à jour d'une manière ou d'une autre afin qu'elle évalue plus correctement le monde réel actuel.

Que devrions nous faire? Pour tous les états suivants, nous devons évaluer où nous pouvons gagner le plus grand maximum, dans lequel des états suivants. Vous pouvez voir qu'ici ce n'est pas encore une estimation optimale, c'est juste une sorte d'approximation de cette estimation. Et c'est la différence entre l'évaluation de la récompense dans l'état actuel et dans le suivant. Qu'est-ce que ça veut dire?

Imaginons que nous soyons dans un état de notre environnement, par exemple, nous considérons simplement qu'il s'agit d'une sorte de labyrinthe, de plus, avec de telles cellules, c'est-à-dire que nous sommes ici dans cet état et nous voulons trouver cette fonction Q (S, haut), c'est-à-dire pour trouver combien nous pouvons acquérir cette utilité si nous montons.

Et, disons, à l'instant présent, cette fonction est égale à trois. Et dans cet état S, auquel on passe après être parti S, imaginons que si l'on prend max a"Q(S",a"), c'est-à-dire que nous prenons le maximum, combien nous pouvons obtenir de cet état S, il est égal à 5, par exemple. Nous avons clairement une incohérence. Autrement dit, nous savons que nous pouvons obtenir la récompense 5 de cet état, et pour une raison quelconque, nous ne le savons pas encore dans cet état, bien que si nous montons, nous pouvons obtenir cette récompense 5. Et dans ce cas, nous sommes essayer d'éliminer cette incohérence, c'est-à-dire de faire la différence entre Q(S,haut)=3 Et max (a") ⁡ Q(S",a")=5 et ainsi, à l'itération suivante, incrémenter la valeur de cette action dans cet état. Et donc nous apprenons itérativement.


A quoi ça sert tout ça ? Dans cette tâche, à laquelle les réseaux de neurones n'avaient rien à voir au départ, il s'agissait d'un apprentissage par renforcement, où les méthodes d'apprentissage classiques étaient également utilisées, vous pouvez également les appliquer.


Nous avons des jeux Atari. Je ne sais pas si l'un d'entre vous y a joué parce que même moi je ne les ai pas joués. Je les ai joués, mais déjà à l'âge adulte. Ils sont très différents. Le plus célèbre d'entre eux, qui est situé en bas à gauche, s'appelle Space Invaders, c'est quand nous avons une navette, un groupe d'envahisseurs extraterrestres jaunes s'approche de nous, et nous sommes un canon vert si solitaire, et nous essayons pour tirer sur tous ces envahisseurs jaunes et ainsi gagner.
Il existe des jeux très simples, comme le ping-pong, où nous devons essayer de ne pas rater le ballon dans notre propre moitié et faire en sorte que l'adversaire rate le ballon dans notre propre moitié.


Ce que nous pouvons faire? On peut à nouveau prendre des réseaux de neurones convolutifs, alimenter l'image du jeu à l'entrée de ces réseaux de neurones convolutifs, et en sortie essayer d'obtenir non pas la classe de cette image, mais ce que l'on doit faire dans cette situation de jeu, c'est-à-dire que devons-nous faire : aller à gauche, tirer, rien ne pas le faire et ainsi de suite.

Et si nous faisons un tel réseau assez standard, c'est-à-dire qu'il y a des couches convolutives, des couches simplement avec des neurones, et que nous l'entraînons, le faisons fonctionner dans cet environnement - et dans cet environnement, nous devons bien comprendre que nous avons un compte, et ce compte est juste une récompense - si nous exécutons ce jeu et le laissons apprendre un peu, alors nous aurons un système qui peut, comme je le montrerai ensuite, même battre une personne.

Autrement dit, ils sont maintenant à un niveau nettement supérieur à celui de la meilleure personne qui joue à ce jeu. Et on voit que ce jeu n'est pas très simple, ici il faut se cacher derrière ces petites choses rouges. Ils nous protègent. Et quand on voit qu'un blaster vole vers nous, il vaut mieux esquiver, se cacher derrière eux, puis remonter et continuer à tirer sur ces pixels jaunes en haut. Ça n'a pas l'air très impressionnant, j'ai l'impression. Mais, en fait, pour réaliser une telle percée, il a fallu beaucoup de travail. Et je vais essayer d'expliquer pourquoi c'est vraiment impressionnant.

Même avant l'utilisation des réseaux de neurones dans cette tâche, de nombreuses méthodes ont été créées spécifiquement pour chacun de ces jeux, et elles fonctionnaient très bien. Ils battaient aussi parfois une personne et ainsi de suite. Mais, tout comme dans le domaine de la reconnaissance d'images, les gens ont dû travailler très dur pour trouver certaines stratégies gagnantes dans ce jeu.

Ils ont pris chaque jeu, par exemple, Space Invaders ou Ping-Pong, ont longuement réfléchi à la façon de se déplacer, ont trouvé des signes, ont dit que si la balle vole à un tel angle et à une telle vitesse, alors nous devrions développer une telle vitesse, pour le prendre du côté opposé et pour qu'il rebondisse encore de manière gênante pour l'ennemi. Etc. Et pour chaque jeu, il fallait le penser séparément. Et maintenant, ils ont pris la même architecture de réseau neuronal en général, l'ont lancée dans différents jeux, et dans tous ces jeux, cette architecture est la même, bien qu'avec des poids différents - dans chaque jeu, il y avait des poids différents, mais la même architecture - elle a réussi à battre pratiquement la plupart de toutes ces méthodes, qui ont été inventées sur 10 à 20 ans.

Ici, le bleu est, grosso modo, le nombre de points que le réseau de neurones marque, le gris est l'état de l'art qui peut atteindre les réseaux de neurones, et les pourcentages dans les colonnes indiquent le pourcentage de pourcentage du réseau de neurones qui joue mieux qu'une personne. Autrement dit, nous pouvons voir, par exemple, que le réseau neuronal joue au flipper 2500% mieux qu'une personne. En boxe, dans une variété de jeux, de course, de tennis, de ping-pong, même dans Space Invaders, le réseau de neurones joue mieux qu'une personne. De plus, il faut comprendre que Space Invaders est un jeu très difficile. Si nous regardons ici, alors c'est ici, et ce gris est l'état de l'art qui était avant, grosso modo. Disons qu'il était très mauvais. Cela signifie que ce jeu est très difficile et qu'avec l'aide de réseaux de neurones, il est possible non seulement de le contourner, mais également de contourner une personne.

En fait, je montre seulement partie supérieure de ce diagramme, il y a encore au bas de ce diagramme où le succès du réseau de neurones est décroissant, mais maintenant sur la plupart des jeux Atari avec de nouveaux résultats, le réseau gagne une personne.
Bien sûr, il y a très jeux stimulants pour un réseau où vous devez avoir la mémoire dont je parlais, et vous pouvez également y appliquer des réseaux récurrents, puis les résultats s'amélioreront considérablement.

Merci pour l'attention. J'espère que vous avez des questions.

La seule chose que je voulais dire, c'est qu'il existe une quantité insensée de matériaux différents sur les réseaux de neurones sur Internet, beaucoup de matériaux sous la forme articles scientifiques, qui, probablement, sera difficile à percevoir à partir de zéro. Mais, néanmoins, il existe de très bons tutoriels. Ils sont majoritairement en anglais. Il y a un très bon parcours de Viktor Lempitsky dans le ShAD adulte. Il existe, par exemple, un deuxième lien - le soi-disant guide des pirates sur les réseaux de neurones. C'est un tel tutoriel sans mathématiques, uniquement avec programmation. C'est-à-dire là, par exemple, Langage Python montre comment créer des réseaux simples, comment les former, comment collecter des échantillons, etc. Il existe de nombreux outils logiciels qui implémentent des réseaux de neurones, et ils sont très faciles à utiliser. Autrement dit, en gros, vous créez simplement des neurones, créez des couches, assemblez un réseau de neurones à partir de briques, puis utilisez-le. Et je vous assure que c'est au pouvoir de chacun de vous - essayez d'expérimenter. C'est très intéressant, amusant et utile. Merci pour l'attention.

Balises : Ajouter des balises

Les autorités de la ville lanceront un réseau de neurones qui reconnaîtra les voitures par leur silhouette, leur marque et leurs phares. Cela a été signalé au Centre de gestion du trafic du Département des transports et des infrastructures routières de la ville de Moscou.

Il est supposé que le système "intelligent" réduira la charge des opérateurs et améliorera la qualité du prétraitement des infractions enregistrées par des moyens automatiques de fixation des infractions dans le domaine du trafic. Le réseau de neurones sera utilisé dans le centre d'enregistrement photo-vidéo du TsODD, qui traite les photos des caméras. Soit dit en passant, jusqu'à 400 000 matériaux y sont reçus quotidiennement.

Selon un expert dans le domaine technologies modernes Andrey Mikhailyuk, Moscou - un leader dans le domaine de l'application des technologies modernes. Il a ajouté qu'un système neuronal est nécessaire pour gérer les cas où la caméra ne peut pas reconnaître la plaque d'immatriculation.

Parfois, les propriétaires de voitures, afin d'éviter une amende, ferment un ou plusieurs chiffres sur le numéro, a déclaré l'expert. - Ces photos sont envoyées aux employés pour traitement.

Dans le même temps, les ressources humaines sont limitées. Mikhailyuk estime que le transfert de cette fonction à l'ordinateur est tout à fait logique.

Une telle tâche ne devrait pas être résolue par une personne, mais par un système d'apprentissage automatique, - a-t-il noté.

L'expert a également ajouté qu'à son avis, une telle tâche pour un réseau de neurones est plutôt primitive. Le fait est que le nombre de modèles de voitures est limité, tandis que les caractéristiques stables de la voiture dépendent fortement de la forme de la voiture elle-même et de ses phares.

Ainsi, croit-il, la tâche assignée au réseau de neurones est assez simple. Techniquement, un tel système peut être développé en quelques mois, et il faudra un certain temps pour entraîner le réseau à partir des photographies existantes.

L'expert a souligné que la Russie, en termes d'utilisation des technologies modernes pour infliger des amendes, est nettement en avance sur les autres pays du monde. Selon lui, tout dépend de notre mentalité.

Nous violons les règles de la route beaucoup plus souvent que dans d'autres pays, - a expliqué Andrey Mikhailyuk. - Si une caméra est accrochée en Europe, elle enregistrera conditionnellement une amende par mois, et si les conducteurs le savent également, personne ne l'enfreindra du tout. Nous avons une situation complètement différente en Russie.

À Moscou, il existe actuellement 1 500 caméras fixes pour réparer les violations. En 2016, avec l'aide de l'enregistrement photo-vidéo, 11,7 millions d'amendes ont été émises, en 2017 - 24,6 millions et en dix mois de 2018 - plus de 25 millions. Il convient de noter que 280 employés du Centre de gestion du trafic sont engagés dans la vérification des informations, la correction des erreurs et le contrôle de la qualité de l'enregistrement photo et vidéo.

Yandex mis en œuvre nouvel algorithme Recherche basée sur les réseaux de neurones. Selon les experts, cela devrait aider l'entreprise à accroître son avance sur le marché russe par rapport à son principal concurrent - Google

Le holding Internet russe Yandex a introduit un nouvel algorithme de recherche basé sur les réseaux de neurones. Cela a été annoncé par le chef du service de pertinence du service Alexander Safronov. Le nouvel algorithme, appelé "Korolev", recherche non seulement des mots-clés, mais aussi une signification, et des réponses plus précises sont données à des questions complexes, a expliqué un représentant de Yandex.

En 2016, Yandex a introduit l'algorithme Palekh, qui fait correspondre le sens d'une requête rare et unique et le titre d'une page Web en temps réel, même s'ils n'ont pas de mots-clés communs. Par exemple, si vous recherchez "un tableau où le ciel tourbillonne", le moteur de recherche pourra vous renvoyer la nuit étoilée de Van Gogh. Contrairement à Palekh, Korolev est capable d'analyser l'intégralité de la page, ainsi que le sens des requêtes que les autres utilisateurs lui adressent.

Andrey Styskin, responsable de la recherche chez Yandex, a donné un autre exemple de demande complexe : "un film sur l'espace où un père communique avec sa fille par des secondes mains". Dans ce cas, la requête ne contient pas de mots clés, mais l'algorithme de recherche est capable de comprendre que nous parlons du film "Interstellar", explique Styskin.

Selon les représentants du service, le réseau de neurones est capable d'auto-apprentissage, donc plus les utilisateurs recherchent dans le moteur de recherche, plus les résultats seront précis. La plateforme ouverte de crowdsourcing Yandex.Toloka, lancée en 2014, sera utilisée pour les tests. En fait, il s'agit d'un service où n'importe qui peut participer aux tests des produits Yandex, les évaluer et laisser des commentaires. Cela permet aux entreprises d'améliorer leurs services, et les utilisateurs reçoivent pour cela récompenses en argent. Actuellement, plus d'un million d'utilisateurs sont enregistrés sur Yandex.Toloka.

"Le problème avec les réseaux de neurones était qu'ils étaient très lents et ne pouvaient pas être utilisés pour travailler avec d'énormes tableaux de texte en temps réel", explique Igor Ashmanov, fondateur et associé directeur d'Ashmanov & Partners. "Si Yandex a vraiment pu impliquer des réseaux de neurones dans l'indexation de l'intégralité du volume du Runet, c'est intéressant, c'est une percée assez sérieuse d'un point de vue technologique." Il reste à analyser dans quelle mesure le nouvel algorithme améliorera la qualité de la recherche et s'il l'améliorera en principe, a noté Ashmanov.

Google, le principal concurrent de Yandex, selon le patron d'Ashmanov and Partners, n'a pas encore annoncé officiellement l'introduction des réseaux de neurones dans ses algorithmes de recherche. "Google peut se permettre de configurer les facteurs de classement différemment et d'expérimenter plus longtemps dans ce domaine sans introduire de nouvelles technologies dans la recherche, simplement parce que l'entreprise a plus de programmeurs et de ressources", a noté l'expert.


Rattraper et dépasser

Selon Vladimir Bespalov, analyste de VTB Capital, une nouvelle version Moteur de recherche russe - une étape pour conserver la part de Yandex sur le marché. "Mise à jour application mobile Search, un nouvel algorithme de moteur de recherche - tout cela devrait aider Yandex à se stabiliser et à augmenter sa part sur le marché de la recherche, selon l'expert. — L'effet ne se fera pas sentir immédiatement, mais la baisse des requêtes de recherche à long terme pourrait avoir un impact moins favorable sur les performances futures. La recherche est le produit principal de Yandex, le principal revenu de l'entreprise est la publicité liée à la recherche. »

La décision du Service fédéral antimonopole peut aider Yandex à maintenir sa position dans la recherche mobile, rappelle Bespalov. En avril de cette année, le département a conclu un accord de règlement avec le principal concurrent de la société russe sur le marché de la recherche - Google. Selon lui, le géant américain de l'Internet révisera les accords avec les fabricants de smartphones Android en Russie et permettra aux utilisateurs de choisir les services de recherche Google alternatifs comme principaux sur leurs appareils.

Selon les résultats du deuxième trimestre de cette année, la part de Yandex sur le marché de la recherche en Russie s'élevait à 54,3 %, comme l'a rapporté Yandex N.V. (la société mère de Yandex) dans son rapport financier avec un lien vers son propre service d'analyse Yandex.Radar. Au 31 juillet, selon Yandex.Radar, Google représentait 40,36 % des moteurs de recherche en Russie. Selon LiveInternet, en moyenne au cours des trois derniers mois, Yandex a été le leader parmi les moteurs de recherche avec une part de 51,1 %, tandis que Google avait 43,9 %. Yandex N.V. ne divulgue pas les revenus de la recherche, mais la direction "recherche et portail" a rapporté à l'entreprise 20,135 milliards de roubles, soit 22% de plus qu'à la même période en 2016.

"La précédente version révolutionnaire de la recherche Matrixnet a permis à Yandex de se détacher de Google et d'augmenter sa part de près de 10 p.p. Pendant six mois. C'est un exemple clair de la façon dont l'utilisation de technologies révolutionnaires conduit à des résultats commerciaux évidents, même sur un marché aussi complexe que celui de la recherche », déclare Alexander Laryanovskiy, associé directeur de l'école en ligne Skyeng et ancien directeur du développement international chez Yandex.

Selon la directrice adjointe de la recherche et du développement du groupe d'entreprises ABBYY, Tatyana Danielyan, l'introduction de nouveaux algorithmes de recherche peut également modifier le classement (l'ordre dans lequel les sites sont affichés dans les résultats de recherche). Cependant, cela jouera un plus pour les sites eux-mêmes, argumente-t-elle : "Les utilisateurs iront plus souvent sur des pages qui correspondent vraiment à leurs demandes, et les conversions de sites peuvent augmenter de manière significative."

2022 wisemotors.com. Comment ça fonctionne. Le fer. Exploitation minière. Crypto-monnaie.