だから私はニューラルネットワークについて少し読んだことがあります.入力、出力、重み、活性化関数、隠れ層、3層アプローチ、およびいくつかの微積分に関係があると聞いていますが、これはプログラミングと何の関係がありますか?実際のニューラル ネットワーク。if ステートメント、while ループ、クラス、文字列、配列、ハッシュ、および並べ替えについて取り上げています。入力、出力、重み、活性化関数、微積分は、実際のプログラミングとどのような関係がありますか。特に算数の部分。そして、ニューラルネットワーク/プログラムを「トレーニング」できるコードをどのように記述しますか。私は初心者の質問をしているような気がします。
2 に答える
まず、私の下手な英語で申し訳ありません。
ニューラル ネットワークには (ほとんど) が含まれます。
- ニューロン
- これらのニューロンは、一連のニューロン (入力ニューロン、出力ニューロン、および「認知」ニューロン) として編成されます。
- これらのニューロンは互いに接続しています
- ニューロンを活性化すると、それにリンクされているニューロンに情報が送信されます
プログラミングの観点では、これを次のように見ることができます。
- ニューロンはクラスです
- Neuron クラスには、「接続」の配列が含まれています (他の Neuron への参照。ランダムな重みが関連付けられている場合もあります)。
- Neuron クラスには、Neuron がアクティブかどうかを計算する "recievePulse" のようなメソッドがあります。
- Neuron クラスには、リンク先の Neurons の "recievePulse" をアクティブにする "sendPulse" のようなメソッドがあります。
recievePulse はアクティベーション関数です
重みは、各ニューロンがリンクされているニューロンに送信するパルスの強度です
このようにして、基本的なニューラル ネットワークが完成します。
使い方 :
いくつかの定義されたニューロンは、異なる重みを持つパルスを受信します。これらは、ネットワークの感覚である「入力」です。それらは、あなたが与えた入力に応じて、アクティブになり、パルスすることもあります。「出力」は、定義されたニューロンのセットです。入力ニューロンをアクティブにすると、出力ニューロンの一部がアクティブになり、入力に対する応答をシミュレートする場合があります。
次に、すべてのニューロンを無効にして、別の入力でやり直すことができます。
このようにして、感知したものに反応する基本的なニューラル ネットワークができあがります。
入出力例:
- 入力 1 : 青の量
- 入力 2 : 緑の量
- 入力 3 : 赤の量
- 出力 1 : 「この色が好き」
- 出力 2 : 「この色は好きじゃない」
- 入力と出力の間にニューロンの束 (「認知部分」) があります。
このネットワークは色を認識し、それが好きかどうかを判断します。
トレーニング:
ニューラル ネットワークをトレーニングするには、いくつかの方法があります。
たとえば、ニューロンの答えが良い場合はニューロンに報酬を与え (すべてのアクティブな接続の重みを上げることによって)、答えが悪い場合はニューロンに悪い報酬を与えることができます (接続の重みを減らすことによって)。
各ニューロン間の接続の重みの違いは、ニューロンの構造などを伝える一種の DNA にエンコードすることができます。このようにして、フィットネス関数で「勝者」と「敗者」を選択し、その間で最良の答えを得たブレインを再現することができます。彼ら。このようにして、最高のブレインを選択し、進化させてスーパージーニアスにすることができます。
これに関する詳細については、人工生命とフィットネス関数について自分自身を文書化することをお勧めします。
Heru-Luinが言ったことすべてに加えて、次のことを追加します。
ニューラル ネットワークは、ハードウェアまたはソフトウェアで実装できます。最初のニューラル ネットワークは、原始生物の脳に自然に「実装」され、今日の現代動物の脳への進化を通じて洗練されました。
それらをソフトウェアとして実装する場合、実際に書く「プログラム」は、ニューロンの集合である脳のソフトウェアモデルの作成です。ここで、if-then ステートメント、while または for ループ、オブジェクト指向などの出番です。従来の意味で実際のプログラムを C++ または Java で作成すると、これが作成されたプログラムになります。
ただし、そのモデルが作成されると、まだ訓練されていないため、(幼児の脳のように) ほとんど役に立ちません。トレーニング プロセスには、ソフトウェア モデルのさまざまなパラメーター (ニューラルの重み、接続など) の調整が含まれます。これは、ニューラル ネットワークのプログラミングと呼ばれることもあります。また、完全に間違っているわけでもありません。これは、基本的にハードウェア要素間の変更を配線していた初期のデジタル コンピュータのプログラムと同じくらい「プログラム」です。ハードウェア処理デバイスのソフトウェア エミュレーターを作成し、そのエミュレートされたハードウェアにエミュレートされたプログラムを実装していると考えてください。
計算の出番は、トレーニング方法がどのように、なぜ機能するのか、それらを実装する方法、計算効率を高める方法を理解することです。完全な回答はこの回答の範囲を超えており、通常はニューラル ネットワークに関する本の初期の章です。簡単に言えば、「ニューラル ネットワークはエネルギー面の最低点を見つけようとしており、導関数の計算はその手順で必要なステップだからです。」