Maison  >  Article  >  interface Web  >  Explication graphique et textuelle détaillée d'un algorithme de réseau neuronal simple implémenté en JavaScript

Explication graphique et textuelle détaillée d'un algorithme de réseau neuronal simple implémenté en JavaScript

黄舟
黄舟original
2017-03-07 14:42:552869parcourir

Introduction aux réseaux de neurones graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript>

Les réseaux de neurones tentent de simuler la relation entre les neurones du cerveau pour traiter les informations. Son modèle informatique nécessite généralement un grand nombre de nœuds connectés les uns aux autres. Chaque neurone traite les valeurs d'entrée pondérées des autres neurones voisins via une fonction de sortie spéciale.

L'intensité de la transmission des informations entre les neurones est définie par ce que l'on appelle la valeur pondérée. L'algorithme ajustera en permanence la valeur pondérée pour réaliser son propre processus d'apprentissage.

Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript

Le réseau neuronal est divisé en plusieurs couches, comme le montre la figure ci-dessus, y compris la couche d'entrée, la couche cachée et la couche de sortie.

Package d'algèbre linéaire JS graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript>

Le calcul du réseau de neurones implique un grand nombre de calculs matriciels. Il existe de nombreux logiciels open source pour l'algèbre linéaire. Le fameux numpy sous Python est très connu. Il existe également plusieurs Javascripts :

  • http://www.php.cn/

  • http://www.php.cn/

  • http://www.php.cn/

J'ai utilisé des numericjs et l'effet est plutôt bon. Il est recommandé à tout le monde de l'essayer.

Réseau neuronal à deux couchesgraphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript>

Nous disposons de quelques données d'entrée et de sortie simples pour entraîner le réseau neuronal. Chaque ligne ici représente une donnée. L'entrée a trois paramètres et la sortie en a un.

Inputs 0 Inputs Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript Inputs Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript Output
0 0 Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript 0
Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript
Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript 0 Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript
0 Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript 0

Nous implémentons d'abord le réseau de neurones le plus simple, sans couches cachées et l'entrée est directement connectée à la sortie.

Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript

Parce que l'entrée est composée de trois paramètres et la sortie est d'un, la couche d'entrée de notre réseau neuronal a trois nœuds et la sortie est de Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript.

// Sigmod function
function nonlin(x, deriv) {
  if (deriv) {
    return numeric.mul(x, numeric.sub(Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, x));
  }

  return numeric.p(Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, numeric.add(Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, numeric.exp(numeric.neg(x))));
}

function train_neural(X, y, iteration) {
  // initialize weights
  var syn0 = numeric.sub(numeric.mul(Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, numeric.random([Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript])), Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript);
  //Training loop
  var i = 0;
  for (; i < iteration; i++) {
    var l0 = X;
    var lExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript = nonlin(numeric.dot(l0, syn0));
    var lExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript_error = numeric.sub(y, lExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript);
    var lExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript_delta = numeric.mul(lExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript_error, nonlin(lExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, true));
    syn0 = numeric.add(syn0, numeric.dot(numeric.transpose(l0), lExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript_delta));
    } 
  }
}

//Initial input/ouput values
var X = [
  [0, 0, Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript],
  [0, Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript],
  [Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, 0, Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript],
  [Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript]
];

var y = [
  [0],
  [0],
  [Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript],
  [Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript]
];

train_neural(X, y, Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript000);

Présentez brièvement le code et le processus de formation

  • X données d'entrée

  • y données de sortie

  • nonlin, fonction S

  • l0, la première couche du réseau, qui est égale aux données d'entrée

  • lExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript , la deuxième couche du réseau, voici la couche de sortie

  • syn0, le poids de la première couche du réseau

Le le processus itératif de formation est donné d'abord un poids initial, utilisez ce poids pour calculer une valeur de sortie, soustrayez cette valeur du résultat cible, obtenez une valeur de différence, puis utilisez cette valeur de différence pour corriger le poids.

Sortie réseau après Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript000 itérations : [0,0Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, 0,0Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, 0,979, 0,97Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript]

Valeur de poids Syn0 après Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript000 itérations : [7,Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript66, -0,Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScriptExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScriptExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, -Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript,Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScriptExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript5]

Ici nous constatons que le poids du premier nœud est plus grand, ce qui est cohérent avec nos données. En observant les données, nous pouvons également constater que la valeur de sortie est fortement corrélée à la valeur d'entrée de la première colonne. Si le nombre d’itérations augmente, cette valeur sera plus grande.

Réseau neuronal à trois couchesgraphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript>
Inputs 0 Inputs Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript Inputs Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript Output
0 0 Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript 0
0 Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript
Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript 0 Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript
Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript 0

Nous avons maintenant un nouvel ensemble de données. Grâce à l'observation, nous avons constaté que la troisième colonne n'a rien à voir avec le résultat. et la deuxième colonne sont identiques. Le résultat est 0, sinon Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript. Il s'agit d'une relation non linéaire. Afin d'apprendre efficacement, nous ajoutons une couche et le réseau devient ainsi.

Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript

// Sigmod function
function nonlin(x, deriv) {
  if (deriv) {
    return numeric.mul(x, numeric.sub(Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, x));
  }

  return numeric.p(Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, numeric.add(Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, numeric.exp(numeric.neg(x))));
}

function train_neural(X, y, iteration) {
  // initialize weights
  var syn0 = [
    [-0.Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript65Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript90Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, 0.Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScriptExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript7Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript7966, -0.7Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript9Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScriptExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript6Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScriptExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, -0.60Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript7970Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript],
    [0.60Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScriptExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript89Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScriptExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, 0.9Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript65Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScriptExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScriptExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript5, -0.Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript7Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScriptExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript5Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript6Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, 0.Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript8Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript6Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript5Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScriptExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript],
    [0.75Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript778Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, 0.789Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScriptExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScriptExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScriptExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScriptExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, -0.8Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript99Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScriptExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript58, -0.9Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScriptExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript890Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScriptExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript]
  ];

  var synExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript = [
    [-0.660Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScriptExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript9Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript6],
    [0.756Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript850Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript],
    [-0.80Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScriptExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript06Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScriptExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript],
    [-0.Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript5778Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript75]
  ];

  //Training loop
  var i = 0;
  for (; i < Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript000; i++) {
    var l0 = X;
    var lExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript = nonlin(numeric.dot(l0, syn0));
    var lExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript = nonlin(numeric.dot(lExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, synExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript));
    var lExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript_error = numeric.sub(y, lExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript);
    var lExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript_delta = numeric.mul(lExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript_error, nonlin(lExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, true));
    var lExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript_error = numeric.dot(lExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript_delta, numeric.transpose(synExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript));
    var lExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript_delta = numeric.mul(lExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript_error, nonlin(lExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, true));
    synExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript = numeric.add(synExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, numeric.dot(numeric.transpose(lExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript), lExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript_delta));
    syn0 = numeric.add(syn0, numeric.dot(numeric.transpose(l0), lExplication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript_delta));
  }
}

//Initial input/output values
var X = [
  [0, 0, Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript],
  [0, Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript],
  [Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, 0, Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript],
  [Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript]
];

var y = [
  [0],
  [Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript],
  [Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript],
  [0]
];

train_neural(X, y, Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript000);

Le processus de formation n'est pas très différent des deux couches précédentes, il y a juste une couche supplémentaire. En ajoutant cette couche, des relations non linéaires complexes dans les données peuvent être efficacement apprises.

Après Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript000 itérations, la valeur de sortie est : [0,0Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, 0,95, 0,9Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript, 0,05]

syn0 :

Explication graphique et textuelle détaillée dun algorithme de réseau neuronal simple implémenté en JavaScript

Ce qui précède est JavaScript Implémentation d'un algorithme de réseau neuronal simple avec des graphiques et du texte détaillés Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !



Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn