ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明
ニューラル ネットワークは、情報を処理する脳内のニューロン間の関係をシミュレートしようとします。その計算モデルは通常、相互に接続された多数のノードを必要とします。各ニューロンは、特別な出力関数を通じて他の隣接するニューロンからの重み付けされた入力値を処理します。
ニューロン間の情報伝達の強度は、いわゆる重み付けされた値によって定義され、アルゴリズムは重み付けされた値を継続的に調整して、独自の学習プロセスを実現します。
ニューラルネットワークは複数の層に分かれており、上の図に示すように、入力層、隠れ層、出力層があります。
ニューラルネットワークの計算には多数の行列計算が含まれており、Python の有名な numpy が非常に有名です。いくつかの Javascript もあります:
http://www.php.cn/
http://www.php.cn/
http://www.php.cn/
私はnumericjsを使用しましたが、効果はかなり優れています。皆さんもぜひ試してみることをお勧めします。
ニューラル ネットワークをトレーニングするための単純な入出力データがいくつかあります。ここでの各行はデータの一部を表します。入力には 3 つのパラメーターがあり、出力は JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明 つです。
入力0 | 入力JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明 | 入力JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明 | 出力 |
---|---|---|---|
0 | 0 | JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明 | 0 |
JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明 | JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明 | JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明 | JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明 |
JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明 | 0 | JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明 | JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明 |
0 | JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明 | JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明 | 0 |
まず、隠れ層のない最も単純なニューラルネットワークを実装し、入力は直接接続されています。出力。
入力が 3 つのパラメーターで出力が JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明 つであるため、ニューラル ネットワークの入力層には 3 つのノードがあり、出力は JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明 つになります。
// Sigmod function function nonlin(x, deriv) { if (deriv) { return numeric.mul(x, numeric.sub(JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明, x)); } return numeric.p(JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明, numeric.add(JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明, numeric.exp(numeric.neg(x)))); } function train_neural(X, y, iteration) { // initialize weights var syn0 = numeric.sub(numeric.mul(JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明, numeric.random([3, JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明])), JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明); //Training loop var i = 0; for (; i < iteration; i++) { var l0 = X; var lJavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明 = nonlin(numeric.dot(l0, syn0)); var lJavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明_error = numeric.sub(y, lJavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明); var lJavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明_delta = numeric.mul(lJavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明_error, nonlin(lJavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明, true)); syn0 = numeric.add(syn0, numeric.dot(numeric.transpose(l0), lJavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明_delta)); } } } //Initial input/ouput values var X = [ [0, 0, JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明], [0, JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明, JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明], [JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明, 0, JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明], [JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明, JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明, JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明] ]; var y = [ [0], [0], [JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明], [JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明] ]; train_neural(X, y, JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明000);
トレーニング コードとプロセスを簡単に紹介します
入力0
入力JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明
入力JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明
出力
JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明 | 0 | 0 | |
---|---|---|---|
JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明 | 新しいデータセットができました。観察により、最初の列と JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明 番目の列が同じ場合、結果は 0 になり、そうでない場合は JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明 になります。 。これは非線形の関係であり、効果的に学習するために層を追加すると、ネットワークは次のようになります。 | // Sigmod function function nonlin(x, deriv) { if (deriv) { return numeric.mul(x, numeric.sub(JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明, x)); } return numeric.p(JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明, numeric.add(JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明, numeric.exp(numeric.neg(x)))); } function train_neural(X, y, iteration) { // initialize weights var syn0 = [ [-0.JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明653904, 0.JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明737966, -0.7JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明9JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明6JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明, -0.6037970JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明], [0.60JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明489JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明4, 0.9365JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明3JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明5, -0.373JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明5JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明64, 0.384645JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明3], [0.75JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明7783, 0.789JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明333, -0.8JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明99JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明58, -0.9JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明89043] ]; var synJavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明 = [ [-0.660339JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明6], [0.756JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明850JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明], [-0.80330633], [-0.JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明5778475] ]; //Training loop var i = 0; for (; i < JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明000; i++) { var l0 = X; var lJavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明 = nonlin(numeric.dot(l0, syn0)); var lJavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明 = nonlin(numeric.dot(lJavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明, synJavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明)); var lJavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明_error = numeric.sub(y, lJavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明); var lJavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明_delta = numeric.mul(lJavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明_error, nonlin(lJavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明, true)); var lJavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明_error = numeric.dot(lJavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明_delta, numeric.transpose(synJavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明)); var lJavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明_delta = numeric.mul(lJavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明_error, nonlin(lJavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明, true)); synJavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明 = numeric.add(synJavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明, numeric.dot(numeric.transpose(lJavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明), lJavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明_delta)); syn0 = numeric.add(syn0, numeric.dot(numeric.transpose(l0), lJavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明_delta)); } } //Initial input/output values var X = [ [0, 0, JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明], [0, JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明, JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明], [JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明, 0, JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明], [JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明, JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明, JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明] ]; var y = [ [0], [JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明], [JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明], [0] ]; train_neural(X, y, JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明000); | トレーニング プロセスは前の JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明 つのレイヤーと大きな違いはなく、レイヤーが JavaScript で実装されたシンプルなニューラル ネットワーク アルゴリズムの詳細なグラフィックとテキストの説明 つ増えているだけです。この層を追加することで、データ内の複雑な非線形関係を効果的に学習できます。 |
syn0: | 上記は、単純なニューラル ネットワーク アルゴリズムを実装するための JavaScript の詳細なグラフィックとテキストの説明です。その他の関連コンテンツ PHP 中国語 Web サイト (www.php.cn) にも注目してください。 | ||