ニューラルネットワークを自分で構築するのは複雑すぎますか?
怖がらないで! 今日は、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 を抜いて、データ サイエンスと機械学習プラットフォームで最も人気のある言語になるのでしょうか?
2世紀前に折りたたまれた手紙の内容を、開かずに読むにはどうすればよいでしょうか?アルゴリズムはそれを...
現在の「顔認識システム」は老化防止能力が非常に弱く、人の顔が老化すると認識性能が大幅に低下し、一定期...
ノイズ除去拡散確率モデル (DDPM) の仕組みを詳しく検討する前に、生成 AI の進歩、具体的には...
少し前、25歳の中国系イスラエル人少女、ノア・アルガマニの誘拐事件がネットユーザーの間で白熱した議論...
[51CTO.com クイック翻訳]人工知能が情報技術 (IT) 業界とオーディオビジュアル (AV...
人工知能はソフトウェア開発をあらゆる面で変えています。多くの企業が AI 機能の導入を競っていますが...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
[[203712]]ニューラルネットワークを自分で構築するのは複雑すぎますか? [[203713]...
翻訳者 |ブガッティレビュー | Chonglouセキュリティの専門家は長い間、オンラインアカウント...
最近、「Honhe AI、生活をより良くする--Honheグループ2019年新製品発表会」が成都で開...
PHP を学習しているときに、PHP のソート問題に遭遇することがあります。ここでは、PHP のソー...
State of Report は今年で 6 年目を迎え、人工知能分野の風向計となっています。業界お...