ニューラルネットワークを自分で構築するのは複雑すぎますか?
怖がらないで! 今日は、30行のコード でニューラルネットワークを簡単に作成する方法を段階的に説明します。この記事では、次のことを学びます。 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 つの優れたチュートリアルを見つけました。
コードでニューラルネットワークを構築する ニューラル ネットワークの基本を理解できたので、コードに移りましょう。 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] はニューラル ネットワークの入力値です。このプロセスは順方向伝播であり、ネットワークのアクティベーションとも呼ばれます。各順方向伝播の後に、ニューラル ネットワークの重みとバイアス値を更新するために逆方向伝播を実行する必要があります。 バックプロパゲーションは次のコード行で実装されます。
learningRate は、ニューラル ネットワークに毎回重みをどの程度調整するかを指示する定数です。 2 番目のパラメータ 0 は、入力が [0,0] の場合、正しい出力パラメータが 0 であることを意味します。 次に、ニューラル ネットワークは予測値と実際の値を比較して、予測が正しいかどうかを判断します。 この比較の結果は、次の予測がより正確になるように重みとバイアス値を調整するための基礎として使用されます。 このプロセスを 20,000 回実行した後、次の 4 つの可能な入力をアクティベーション ネットワークに渡すことで、ニューラル ネットワークが現在どの程度正確に予測しているかを判断できます。 これらの値を最も近い整数に丸めると、XOR 式の正しい結果が得られます。万歳!
このチュートリアルはこれですべてです。 ここではニューラル ネットワークについてほんの少し触れただけですが、Synaptic を使い始めて学習を続けるにはこれで十分です。さらに、Synaptic wiki には優れたチュートリアルが多数用意されており、次のリンク (https://github.com/cazala/synaptic/wiki) をクリックして参照できます。 |
<<: 顔認識メイク落としはアリペイを認識できない:馮潔は范冰冰に似せるために整形手術を受けたが、それでも認識できる
>>: Python は R を抜いて、データ サイエンスと機械学習プラットフォームで最も人気のある言語になるのでしょうか?
5月26日、チューリング賞受賞者で米国工学アカデミー会員のジョン・ヘネシー氏が、2021年中国国際ビ...
人工知能(AI)は、人間の知能特性を備えたタスクを実行できるコンピューティングプログラムを指します。...
一般的な自然言語処理システムでは、単語のエンコードは任意であるため、個々の記号間の可能な関係に関する...
人工知能の時代が来るとよく言われます。20年後に私たちの子供たちが社会に出たとき、彼らはおそらくロボ...
人工知能は2度のブームを経験し、現在は3度目のブームを迎えています。主な理由は、第一にディープラーニ...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
[[223784]]ジャック・マー氏は以前、世界経済フォーラムでこう語った。「将来、多くの仕事が人工...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
この記事では、今後 12 ~ 24 か月の間にグローバル ビジネス エコシステムを変革する外部要因と...
道路上で安全かつ効率的に運行するためには、自動運転車は人間の運転手と同じように周囲の交通参加者の行動...
ヘザー・ジョスリン編纂者:Xing Xuan DevOps を導入している多くの企業にとって、開発者...
1. 信用リスク管理業務の背景と事例まず、当社の事業シナリオについて簡単にご紹介させていただきます。...
嗅覚系は、感情と連合学習を司る脳の領域に直接つながっている、体内の唯一の感覚系です。これが、匂いがこ...