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 を抜いて、データ サイエンスと機械学習プラットフォームで最も人気のある言語になるのでしょうか?

ブログ    
ブログ    
ブログ    

推薦する

自然言語処理の応用展望

自然言語処理 (NLP) の定義自然言語処理(NLP)は、コンピューターが人間と同じように言語を理解...

AMiner が発表: 2022 年に世界で最も影響力のある人工知能学者「AI 2000」

2022年1月25日、人工知能分野で世界で最も影響力のある学者の2022年リスト「AI 2000」...

機械学習は、インダストリー4.0の不安定性、不確実性、複雑性、曖昧性に対処する

序文科学技術の急速な発展により、インダストリアル4.0時代は終焉を迎えつつありますが、実際の発展には...

CSS ボックスモデルのアルゴリズムとアプリケーションの詳細な説明

ここでは、ブロックレベル ボックスのデフォルトの幅、幅のない絶対配置ボックス、幅のないフローティング...

市場規模は100億元を超える可能性あり。これら4種類の医療用ロボットをご存知ですか?

2020年、突然の公衆衛生事件により、医療用ロボットに大きな注目が集まりました。医療用ロボットは、...

人工知能は消費者部門で何をもたらしましたか?

最近、北京にショッピングモールがオープンした。オープン当日、客を出迎えたのは「人」ではなく「ロボット...

ディープラーニングが従来の方法ほど効果的ではない典型的な事例にはどのようなものがありますか?

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

...

人工知能は 5 つの主要な地球規模の問題に解決策をもたらす | ダボス ブログ

[[183562]]人々は常に人工知能について多くの懸念を抱いています。人工知能は私たちの仕事にとっ...

アルパカたちはどこまで来たのでしょうか?研究によると、最高のものはGPT-4のパフォーマンスの68%を達成できる。

大規模言語モデルは最近、かつてないほどの注目を集めています。急速に変化する環境において、オープンソー...

ドローンの出現と市場の需要の変化

ドローンの市場、入手可能性、需要が長年にわたってどのように増加してきたかを学びます。映画の架空の世界...

...

AIは細胞構造の識別において人間にはできないことができる

[[390952]]人工知能 (AI) を使用して細胞の 3D 構造にラベルを付けて識別することは、...

スマートヘルスケアは急速に普及しつつあり、さまざまなスマートテクノロジーが好まれている

人々の生活の重要な分野として、医療産業の発展は大きな注目を集めています。現在、医師の診察の難しさや高...