30 行の JavaScript コードで、わずか数分でニューラル ネットワークを作成する方法を学びます。

30 行の JavaScript コードで、わずか数分でニューラル ネットワークを作成する方法を学びます。

[[203712]]

ニューラルネットワークを自分で構築するのは複雑すぎますか?

[[203713]]

怖がらないで!

今日は、30行のコード[[203714]]でニューラルネットワークを簡単に作成する方法を段階的に説明します。

この記事では、次のことを学びます。

Synaptic.js を使用してニューラル ネットワークを作成し、トレーニングする方法。

このツールを使用すると、ブラウザ内で Node.js を使用してディープラーニングを実行できます。

今日お話しする例は、論理 XOR 方程式を学習するために使用する非常に単純なニューラル ネットワークです。

同時に、Scrimba でインタラクティブなスクリーンキャストも作成しました。ビデオを視聴してこのチュートリアルに従うこともできます。 (https://scrimba.com/casts/cast-1980)

プログラミングを始める前に、ニューラル ネットワークの基本的な概念を簡単に確認してみましょう。

ニューロンとシナプス

ニューラル ネットワークの最初のモジュールはニューロンです。

ニューロンは関数のようなもので、いくつかの値を入力すると戻り値が出力されます。

ニューロンにはさまざまな種類があります。私たちのニューラル ネットワークは、シグモイド ニューロン (https://en.wikipedia.org/wiki/Sigmoid_function) を使用して、任意の入力値を 0 から 1 の間に圧縮します。

下の図の円はシグモイドニューロンを表しています。入力値は 5 で、出力値は 1 です。矢印はニューロンのシナプスを表し、ニューラル ネットワークの他の層のニューロンに接続するために使用されます。

なぜ赤い数字の 5 があるのでしょうか? これは、ニューロンに接続された 3 つのシナプスの値の合計です (左側の 3 つの矢印)。

左端には、バイアス値と呼ばれる値に 2 つの値が追加されていることがわかります。値 1 と 0 は緑色で、偏差 -2 は茶色です。

まず、2 つの入力値に重み (青い数字 7 と 3) が掛けられます。

次に、それらを偏差値と加算すると、結果は 5 となり、赤い数字に相当します。この赤い数字は人工ニューロンの入力値です。

私たちのニューロンはシグモイド ニューロンなので、任意の値を 0 から 1 の範囲に圧縮し、出力値は 1 に圧縮されます。

これらのニューロンのネットワークを接続すると、ニューラル ネットワークが形成されます。順方向伝播は、ニューロン間のシナプス接続を通じて入力から出力へと発生します。次の図に示すように:

ニューラル ネットワークの目標は、手書きの数字や​​スパム メールを認識するなど、一般化できるようにトレーニングすることです。良好な一般化を達成するための鍵は、ニューラル ネットワークを通じて適切な重みとバイアス値を見つけることです。上記の例の青と茶色の数字のように。

ニューラル ネットワークをトレーニングするときは、手書きの数字などの大量のサンプル データを読み込み、ニューラル ネットワークに正しい数字を予測するように依頼するだけです。

各予測の後に、予測からの逸脱度を計算し、ニューラル ネットワークが次の操作でより正確に予測できるように重みとバイアス値を調整する必要があります。この学習プロセスはバックプロパゲーションと呼ばれます。これを何千回も実行すると、ニューラル ネットワークはすぐに一般化に習熟するようになります。

このチュートリアルではバックプロパゲーションの仕組みについては説明しません。しかし、理解するのに役立つ 3 つの優れたチュートリアルを見つけました。

  • ステップバイステップのバックプロパゲーションの例 – 著者: Matt Mazur
  • ハッカーのためのニューラルネットワークガイド (http://karpathy.github.io/neuralnets/) – Andrej Karpathy 著
  • ニューラルネットワークとディープラーニング – マイケル・ニールセン著

コードでニューラルネットワークを構築する

ニューラル ネットワークの基本を理解できたので、コードに移りましょう。

1. ニューラルネットワーク層を作成する

synaptic では、新しい layer() 関数を使用してこれを作成します。関数に渡される数値は、各層に存在するニューロンの数を示します。

次に、これらのレイヤーを接続してニューラル ネットワークをインスタンス化します。コードは次のとおりです。

これは 2-3-1 ニューラル ネットワークであり、次のように視覚化できます。

2. ニューラルネットワークのトレーニング

合計で20,000回のトレーニング実行を実行しました。各実行は4つの順方向パスと逆方向パスで構成され、ニューラルネットワークに4つの可能な入力[0,0] [0,1] [1,0] [1,1]が渡されました。

まず、myNetwork.activate([0,0]) アクティベーション関数から始めます。ここで、[0,0] はニューラル ネットワークの入力値です。このプロセスは順方向伝播であり、ネットワークのアクティベーションとも呼ばれます。各順方向伝播の後に、ニューラル ネットワークの重みとバイアス値を更新するために逆方向伝播を実行する必要があります。

バックプロパゲーションは次のコード行で実装されます。

  1. myNetwork.propagate(学習率、[0])

learningRate は、ニューラル ネットワークに毎回重みをどの程度調整するかを指示する定数です。 2 番目のパラメータ 0 は、入力が [0,0] の場合、正しい出力パラメータが 0 であることを意味します。

次に、ニューラル ネットワークは予測値と実際の値を比較して、予測が正しいかどうかを判断します。

この比較の結果は、次の予測がより正確になるように重みとバイアス値を調整するための基礎として使用されます。

このプロセスを 20,000 回実行した後、次の 4 つの可能な入力をアクティベーション ネットワークに渡すことで、ニューラル ネットワークが現在どの程度正確に予測しているかを判断できます。

これらの値を最も近い整数に丸めると、XOR 式の正しい結果が得られます。万歳!

[[203719]]

このチュートリアルはこれですべてです。

ここではニューラル ネットワークについてほんの少し触れただけですが、Synaptic を使い始めて学習を続けるにはこれで十分です。さらに、Synaptic wiki には優れたチュートリアルが多数用意されており、次のリンク (https://github.com/cazala/synaptic/wiki) をクリックして参照できます。

<<:  顔認識メイク落としはアリペイを認識できない:馮潔は范冰冰に似せるために整形手術を受けたが、それでも認識できる

>>:  Python は R を抜いて、データ サイエンスと機械学習プラットフォームで最も人気のある言語になるのでしょうか?

ブログ    

推薦する

Nvidia は Arm を買収して何をしたいのでしょうか?中国の承認後、クアルコムの影が再び現れる

またタトゥー?興味深いのは、この取引の解約手数料の詳細がまだ発表されていないことです。現時点では、独...

...

...

自然言語処理が人工知能の中核である理由

コンピュータが人間を騙して自分は人間だと信じ込ませることができるなら、そのコンピュータは知的であると...

最高の顔認識アルゴリズムでもマスクによって妨害される可能性がある:研究

海外メディアの報道によると、研究者らは、マスクはCOVID-19などの空気感染する病気の拡散を効果的...

2018 年の AI における画期的なテクノロジーのトップ 10 をご紹介します。いくつご存知ですか?

1. ニューラルネットワークに基づく機械翻訳選択理由: 翻訳は「自然言語処理」の中でも最も重要な分...

人工知能:ニューノーマルにおける成長の原動力

人工知能技術は急速に発展し、成熟しつつあります。多くの最新のアルゴリズムと問題解決手法が日々革新され...

人工知能と伝統的な中国医学が出会うと、青い「箱」は「見て、嗅いで、聞いて、感じることができる」

[[238055]] [[238056]]患者は青い「ボックス」に手首を入れ、赤外線スキャン後に脈...

AI Punk が MNIST に敬意を表す: Python と開発ボードのみを使用して、決して繰り返されない時計を作成

はい、この時計があれば、MNIST 手書きデータセットなしでは生きていけません。私たちは古代の真空管...

携帯電話がなくてもデジタル人民元が使えます!これらのブラックテクノロジーは

中国新聞社クライアント、福州、4月26日(記者 李金雷)将来のデジタルライフがどのようなものになるか...

...

AIと機械学習がDevOpsをどう変えるのか

人工知能と機械学習が DevOps に新たな自動化機能をもたらすにつれて、これらのテクノロジーが組織...

市場規模は300億に迫る! 2021年の農業用ドローンの発展の見通し

植物保護ドローンは、現在の農業分野において間違いなく新たな人気機器です。高効率、利便性、精度、環境保...

Python で自然言語処理を始める

このチュートリアルの目的は、自然言語処理 (NLP) の概念を通じて Python でテキスト デー...