神経回路網
後方に学習されエラーが発生伝搬
Colin Fahey

生物学的ニューラルネットワーク
1. ソフトウェア
2. はじめに
このドキュメントを実装する方法について説明し、人工神経回路網にはパターンを認識する能力を訓練を受けた。
このドキュメントを記述するモデルのことを学ぶには神経回路網を「伝搬」するアルゴリズムを使用して「後方にエラーが発生」します。
このドキュメントは、基本的なデモの学習を「後方にエラーが発生伝搬」します。 このドキュメントには、リンクをコンピュータコードです。 デモは、コンピュータコードが含まれています。 は、コンピュータのコードを使用して複雑な神経回路網を作成します。 しかし、コードは、コンピュータのデモンストレーションの目的でのみです。 代案の実装がメモリの使用量を減らすと速度が向上します。
3. 後方の代わりに学習されエラーが発生伝搬
このドキュメントを記述するモデルを学ぶには神経回路網を「伝搬」されたアルゴリズムの名前の「後方にエラーが発生」します。 このアルゴリズムは非常に長い時間を必要とする様々な教訓を学ぶ。 また、このアルゴリズムは、ランダムに失敗する様々な教訓を学ぶのために、ランダムに初期の状態を訓練する前に、ニューラルネットワークです。
「アクティブな」学習を「関連付けること」が重要なの代わりに「入力」され「後方にエラーが発生伝搬」学習します。 アクティブな入力を関連付ける学習アソシエイツの入力だけでは、同時にアクティブにします。 迅速で信頼性のできるような学習します。 しかし、多くの実用的な目的で、明白な方法がないことを学ぶニューラルネットワークを使用するには協会が、明白な方法を使用するには、ネットワークを学ぶの伝播を後方にエラーが発生します。
いくつかの生物学的ニューラルネットワーク協会から学ぶことが判明してアクティブな入力します。 後方にエラーが発生伝播されていないすべての生物学的神経回路網で観測さです。
このドキュメントの使用方法を説明興味深いことを学ぶには神経回路網の伝播を後方にエラーが発生します。 しかし、学習され、非常に重要な協会は代替のアルゴリズムを学習します。 ニューラルネットワークを設計することを学習され、特定の問題を解決するために協会をより難しくするかもしれないことを学ぶニューラルネットワークの代替desgining後方にエラーが発生伝播され、しかし、生物学的システムを学ぶ協会、および生物学的システムの学習能力は明らかです。
4. 生物学的ニューロン
4.1 神経細胞

生物学ニューロン( 「多極」タイプ、 ~4 um細胞体)
ニューロンは、そのタイプの細胞の能力には、神経信号を受信すると送信します。
ニューロンは、根拠の神経システムでは、発見さ動物、鳥、魚、および昆虫です。
脳にメモリーやロジック、および簡単な反射システムでは、神経細胞の両方に基づいて手配します。
信号を伝える神経細胞にも使用される長距離の体のクリーチャーをするなど、よりセンサーを脳に送るか、または脳からの筋肉をします。
生物学的ニューロンの動作をするのは非常に複雑な、しかし、説明書は、次の簡体字の基本的な原理をキャプチャ:
ニューロンの他の神経細胞から受け取った信号を蓄積し、蓄積信号の場合、トータルきい値を超えると、独自の信号を伝達するニューロンを他のニューロンです。
4.2 ニューロン部品

部品は、生物学的ニューロン
|
相馬
|
ニューロンの細胞体は、
|
|
樹状突起
|
繊維化学受容体(入力)を延長するニューロン細胞体からです。多くの樹状突起、ニューロンは典型的には、多くの場合が多いと樹状突起の枝です。
|
|
軸索
|
化学繊維エミッタ(出力)は、エンドポイントを拡張するニューロンの細胞体からです。ニューロンは、 1つの軸索すると、軸索の枝に通常はごくわずかです。
|
|
シナプス
|
このような構成は、 1つのニューロンの樹状突起軸索の別のニューロンで区切られて非常に小さなギャップです。このような構成では、化学物質の放出された軸索は、神経細胞のシナプスクロスが受理されると、他のニューロンの樹状突起のです。これはどのように影響を与える他のニューロンニューロンです。
|
4.3 ニューロン発火
化学信号を蓄積するニューロンの樹状突起から、との場合、トータル化学物質蓄積しきい値を超えて一定の期間内には、ニューロン「が発生し」 、独自の信号を通じて、軸索を送信します。
いくつかのニューロンは、パルスを発射する能力があるの順序を100 Hzです。
ニューロンの信号を通過関与し続ける(Na)酸ナトリウム、カリウム(K) 、および塩素イオン(Cl) 、およびその結果電気化学ポテンシャル(すなわち、電圧) 。
安静時の電圧の(-70 mV)と(+30 mV)焼成電圧を測定できるような従来の電気回路の影響を受けたりもします。
電圧は、次の録音は、ラットは、ニューロン発火率は約100 Hzに触れたときに、 1つのひげが行われたのと、安静時の位置:

ラットニューロン発火(100 Hz)ひげのために開催する。
定数は、刺激は、ニューロンの信号は、急速なパルスです。
4.4 神経回路網
人間の脳は約10^11 ( 100億円)ニューロンです。
各ニューロンは、小脳からの入力を受け取る10^4 (10000)としてできるだけ多くのシナプスです。
軸索と樹状突起が、頻繁に延長するニューロンからわずか数マイクロメートルの細胞体は、いくつかの軸索は、上の順序分の1メートルの長さです。
脳の神経細胞が比較的短い軸索は、地域やクラスターにグループ化されます。
脳の神経細胞にも比較的長い軸索のバンドルを分野へのリンクで区切られたセンチです。
そのためのネットワークを処理する階層的な要素が形成されます。
4.5 神経回路網の状態
ネットワークの状態をニューロンは、ニューロンの両方の方法は、信号を接続していて、すべてのシナプスです。
かは不透明だがどれくらいのステータス情報を脳に失われることはtranquilizedしている場合を非アクティブにどれだけの量の合計時間です。
1つの信号は、想像するだけで持続的な移動情報をネットワークを介して、ネットワーク接続自体ではなく、 Conway's 「Game of Life」のようなセルオートマトンシミュレーションのような、単純なDynamic Random Access Memory (DRAM)チップ、およびエコーで、箱です。
4.6 神経回路網学習
従来の学習が発生した場合、樹状突起のプロパティを変更するシナプスになることを効率的には多かれ少なかれ軸索からの信号を受信化学です。
の原因には、このような変化は複雑ですが、しかし、その結果は、ニューロンのシナプスには、別の組み合わせを誘発する出力信号の入力をします。
5. 人工ニューロン
5.1 で定義されて
「人工ニューロン」は、アルゴリズムを実装し、または物理デバイスを数学的にモデルに触発された基本的な生物学的ニューロンの動作をします。
ニューロンに蓄積する他の神経細胞から受け取った信号または入力(例えば、センサ) 、および全信号の場合、蓄積しきい値を超えては、ニューロンの信号を伝送する他のニューロンまたは出力(例えば、 effectors ) 。
任意の数学的モデルを搭載し、複数のアイデアを蓄積降伏、 1つの入力と出力( accentuatesの相対強度が相対的にいくつかの公称値は、入力レベル)は、パターン認識に使われる。
このようなモデルは、人工ニューロンする際の基準とします。
各入力に影響を与える場合は、変更することができます、入力し、学習のモデルをサポートします。
5.2 活性化機能
数学関数の「活性化機能」は、以下の入力値に変換し、特定の値を、比較的低出力値、および上記の入力値に変換し、特定の値を出力して相対的に高い値です。
の「活性化」に変換する「関数」を使用して入力された値の合計を加重して値を表すニューロンは、ニューロンの出力です。
「sigmoid」関数は、一般的なクラスの円滑な機能を漸近的なアプローチを入力値の上限を低く近づいて負の無限大、および漸近的なアプローチを入力値の上限が近づい正の無限大です。
sigmoid関数は、 1つの特定の「logistic sigmoid」機能:

の「Logistic Sigmoid」機能: 1 / ( 1 + Exp( -x ) )
「logistic sigmoid」機能の「活性化機能」として使用されることは、数学的モデルは、ニューロンです。
「logistic sigmoid」誘導体を、数学的な計算できる数式として、それに関連付けられた学習簡単な数式を計算する。
5.3 神経回路網の入力
「神経回路網」を「入力」して神経回路網の入力を表しています。

神経回路網の入力
「Input」は、数値の値を入力します。
5.4 神経回路網の出力
は「神経回路網」の「出力」には神経回路網の出力を表しています。

神経回路網の出力
「Output」は、数値の値を出力します。
「Error」は、その違いを表す数値を入力する出力値との間の「Desired」値:
Error = (Output - Desired); // Derived from: Output = Desired + Error;
この値は、希望の値を「Desired」か、または理想的な値、または、正しい値は、生産としては、ニューラルネットワークは、特定の入力、出力に対応しています。
このエラー値が計算され、訓練された「Error」に割り当てられているアルゴリズムです。
このエラー値は、ニューラルネットワークにフィードバックをしています。
ニューラルネットワークを減らすために適応することの違いはその出力と、目的の値;すなわち、ニューラルネットワークを利用することを学ぶ、および将来のことを減らすためエラーが発生します。
5.5 神経細胞体
「体」の「ニューロン」は、遺体が、ニューロンは、入力の貢献を蓄積し、バイアスを追加すると、結果の値に変換された出力値を生成する「機能」を「活性化」します。

神経細胞体
「InputAccumulator」蓄積さを表す値は、ニューロンのリンクからの入力に接続して、その出力はニューロン体です。
「Bias」は、調節可能な値は、入力値を組み合わせることで蓄積します。
「Output」を表す数値は、ニューロンの出力値です。
の出力値は、使用して、次の数式を計算:
Output = ActivationFunction( Bias + InputAccumulator );
「ErrorAccumulator」が蓄積さを表す数値エラーが発生します。
与えられた、特定の神経細胞体の値を出力し、与えられた、特定の出力時にエラー値の累積エラー値は次の数式によると、調整:
ErrorAccumulator += Output * (1 - Output) * OutputError;
「Rate」は、値に影響を及ぼす「Bias」値をどのように変化に対応して「ErrorAccumulator」値:
Bias += (-1) * Rate * ErrorAccumulator;
5.6 ニューロンリンク
「リンク」する「ニューロン」間のリンクを表します:
( 1 )は、ニューラルネットワークに入力すると、入力ニューロン体;
または、
( 2 )身体とニューロンの出力は、別のニューロンの入力ボディ;
または、
( 3 )の出力は、身体とニューロンの出力は、ニューラルネットワークです。

ニューロンリンク
「Input」は、キャッシュを入力してリンクをクリックします。
「Weight」調整可能な値はどのように影響を及ぼすを通して伝播する信号の値とエラー値のリンクをクリックします。
「Output」の出力には、キャッシュのリンクをクリックします。
この値は使用して、次の数式を計算:
Output = Weight * Input;
エラーが発生するのキャッシュを「Error」は、リンクをクリックします。
「WeightedError」は、キャッシュは、エラーが発生、リンク、加重された重量因子:
WeightedError = Weight * Error;
「Rate」は、値に影響を及ぼす「Weight」値をどのように変化に対応して「Error」値と「Input」値です。
神経回路網の学習中には、 「Weight」値が調整さは、次のように:
Weight += (-1) * Rate * Input * Error;
5.7 神経回路網
「神経回路網」が含まれ、入力、出力、ニューロン機関、およびリンクします。
は、次のイメージを描いて、単純な神経回路網は、 2つの入力、および2つの天体の最初の層ニューロンと、 1つのニューロンで2番目の層、および1つの出力します。

例として、ニューラルネットワーク
シミュレーションは神経回路網の中に、入力された値の伝播進むを通じてリンクやニューロン機関に到着し、最終出力を提供します。

進むの例では神経回路網の伝搬
間の訓練中、エラー値が提供さは、出力、およびこれらのエラーの伝播下位の神経回路網を通じて、その結果、重量の変更はニューロンと偏見で遺体とリンクします。

伝搬の例では神経回路網の後方にエラーが発生
5.8 ニューラルネットワークシミュレーション
定義:
「ネットワークシミュレーション」は、プロシージャを使用してネットワーク上の入力を通じて伝播遺体のリンクやニューロンネットワークに到達するまで出力を提供します。
ネットワークシミュレーションでは、シミュレーションのリンクやニューロンのすべての構成団体です。
シミュレーションのループまたは時間:
可能なネットワーク構成には多くの関与のループです。
ニューロンモデルには多くの時間に依存しています。
しかし、いくつかの最も一般的なアプリケーションの人工ニューロンの関与も時間もループです。
は、次のは、数学的モデルは、ニューロン本文:
Output = ActivationFunction( Bias + InputAccumulator );
このニューロンモデル、およびネットワークに「ループ」は、単に外部入力からのスタート]ボタンを、計算の最初の層のニューロンの出力、およびそれらの出力電源の入力を、次の層として、その出力を計算する層の層を経由して続行ニューロンまでの最後の出力が計算されます。
ループ:
ネットワークに接続することがループの形で(または「サイクル」 ) 。
たとえば、ニューロンの出力を直接接続することが可能と同じニューロンを入力し、 「フィードバック」を引き起こしています。
別の例では# 1のニューロンの出力に接続して、入力のニューロン# 2 、 # 2の出力などがニューロンのニューロンの入力に接続して# 1です。
もしより開始することができますいくつかのポイントには、ネットワークとの接続をトレースするパスをニューロンと、 1つの方法に従うの信号の流れを、最終的に同じスタート地点に到着、その後のパスは、ループです。
興味深いループを導入する可能性が周りのネットワークを流れる信号の時間不定期間です。
いくつかの簡単なモデルと仮定して〜するためには具体的な金額の時間を持つ信号のため個々のニューロンを通過するのです。
このようなモデルは、いくつかのニューロンのループを介し信号を回覧するよりも速く信号を回覧を通じて多くのニューロンのループです。
ニューロンに接続して、最速の信号自体には、循環率です。
ニューロンは、入力X場合には、重量Wは、バイアスB 、負の出力と非Y (例えば、 0.0 -> 1.0 ) 、発振回路を形成することができますW = (-8)を設定するだけで接続するとB = +4とYをX ;
ニューロンをシミュレートするたびに私たちは、反対の信号をトグルされる状態になります。
ループのネットワークを構築する活動も忙しいときにできることはありません受入外部信号(刺激)を入力します。
Conway's 「Game of Life」のセルオートマトンのルールには神経回路網が実装され、これを使用する小規模の多様性の活動をヒントに起こることができるとは神経回路網のループです。
有限ステートマシン(FSM) 、発振器、揮発性メモリ(とは対照的に学習パターン経由で交換重り) 、ループは可能です。
ネットワークがループの場合は、更新プログラムの任意の出力をすることはできません計算されるまで、すべての出力;それゆえ、私たちを必要とする一時的な計算の出力バッファを格納するすべての出力を計算されるまで、と入力し、新しいことにコミットしてニューロンの出力値を、ネットワークです。
更新プログラムの出力の、任意のメソッドを、実際のネットワークでは漸進的な方法ではなく、一度にたくさんのように、紹介の任意の発注時にリードを混乱さです。
物理学の結合シミュレーション関与エンティティ、スターのような惑星の軌道を周回する勢力の間で相互の重力のすべての遺体は、同じようなアプローチを必要とする:軍、ネット上のすべての遺体を計算する前に任意の速度や位置を更新します。
時間依存性:
典型的には、単純なネットワークのシミュレーションを引き起こし、目的の出力を入力した後、 1つのシミュレーション時間のステップに進みます。
このようなシミュレーションは、私たちのことを考えるのではなく、 「多くの時間を秒単位で反復」します。
文通の間にある反復する必要はないとされる時間スケールです。
これを行うに設計するシステムかもしれないネットワークシミュレーション(イテレーション)の新しい入力が利用可能な場合にのみ、時間の不規則な間隔で発生するかもしれない。
しかし、数学的モデルを検討することにニューロンをシミュレートする試みは、生物学的側面のニューロンのパルス出力します。
特徴のパルス時間に換算するかもしれないなど、特定の周波数のパルスを拡張したり、パルスの曲線は、特定の量の時間です。
これ以外の時間帯に依存することができますの要素を数学的モデルは、ニューロンは、アキュムレータなどの入力からの拠出金を取得、その値の入力には、リークが発生するしかし、現在の値に比例しています。
一般的には、電気回路を類推見つけることができるため、特定の要素を数学的な方程式に従うなどについて1つのことをニューロン回路として抵抗器、コンデンサ、およびノンリニアアンプです。
回路と同じように複雑な時間依存挙動を示すことは、ニューロンの出力をする関数と見なされることに依存して、その複雑な方法と時間を入力します。
5.9 後方にエラーが発生伝搬
定義:
「後方にエラーが発生伝播」は、数学的な手順を実行し始めると、エラーが発生は、出力の伝達には神経回路網と、このエラーが発生し、ネットワーク経由が下位の値を出力時にエラーを収率は、ネットワーク上のすべてのニューロンです。
後方にエラーが発生伝搬式:
このエラー値は、ニューラルネットワークの出力は次の数式を使用して、計算:
Error = (Output - Desired); // Derived from: Output = Desired + Error;
のエラーが発生するニューロン体が蓄積さの出力を調整するのニューロンによると、体の動きと、出力時にエラー(指定されたリンクに接続しているニューロン体)です。
各出力エラー値に貢献して、エラーが発生アキュムレータには、次のように:
ErrorAccumulator += Output * (1 - Output) * OutputError;
ある意味、すべてのエラーが発生するため、出力は次の下位層のリークが発生すると重量は、入力を通して蓄積の出力には、ニューロンで、前の層です。
この累積値を掛けた値が最大のときには、現在の出力は、ニューロンが最も中立的な(ほとんど「未定」 )とは、最低時の出力は、ニューロンが最も極端な(非常に「特定の」 )です。
体重の変化とバイアスを変更式:
の基礎を学習は、重量とバイアスの値を調整しようと将来の出力を減らすためにエラーが発生します。
学習「率」は、本質的に数値を示す値を迅速にする方法についてニューロンの重みとバイアスの値を調整値によると、エラーが発生します。
は、次の数式を示し重りを変更する方法については、ニューロンの入力値は、特定の設定および、その出力エラー値:
Weight += (-1) * Rate * Input * Error;
は、次の数式を変更する方法を示し、ニューロンのバイアス電流出力エラーが発生し、与えられたニューロン:
Bias += (-1) * Rate * Error;
6. 訓練には神経回路網
6.1 訓練の手順
1つのネットワークを始めることができますが、訓練を受けた出力エラーが発生して続行を減らすためにより詳細なトレーニング、練習を積んでいないしかし、 1つのネットワークに頻繁に起動します。
前にトレーニング、ランダムな値を選択するニューロンは、すべての重りのすべてのネットワークです。
私観測問題が発生する私の間隔の値をランダムに選択さ[ -1.0, +1.0 ] 、と私に問題が発生しなかったのランダムな値を選択したときに私の間隔[ +0.1, +1.0 ]です。
私に言及、これらの観察、かれらのために私のミスかもしれない。
ランダムな重みの目的は、あらゆる可能性を軽減し、ネットワーク状況を診断します。
すべての神経細胞がネットワークを開始する場合と同じ重量は、ネットワークのための基準がないの分化ニューロン間の増加です。
私はすべての観測にバイアス値をゼロに設定(0.0)では動きません。
トレーニングセッションには何回行くトレーニングセットを介して、おそらく何百何千回クリックします。
トレーニングを通過するごとに設定すると、私たちのトレーニングセットの各アイテムを検討します。
トレーニングセットアイテムをセットには、入力と出力のセットを希望します。
私たちをシミュレートするネットワークでは、入力セットを使用して、指定されたトレーニングアイテムです。
利回りのシミュレーション出力値です。
私たちの考えを繁殖させる下位のエラーを計算するニューラルネットワークのすべてのニューロンの出力エラーが発生します。
私たちの重量と偏見のすべての更新プログラムです。
注意: 1つの学問のテキストを提唱議論ニューラルネットワーク全体のトレーニングセットを通過するだけの重量の変化や偏見加算します。
全体のトレーニングセットを経て、私たちは、セットの合計の重量変化やバイアス変更を適用します。
私たちに、これらの合計と重量と偏見のすべての更新プログラムです。
このような巨大な金額が大規模な訓練を設定-ジャンプを成功させたの重量とその結果が不当に大規模な空間です。
分割されると思うのでトレーニングアイテム数、平均体重の変化を得るのバイアス値と平均値の変更は、合理的にします。
何か魅力的には体重の変化については、 1つのコンピューティングには、全体のベクトルが何らかの訓練を考慮して設定します。
わかんないでミスをすればよいだけで実施してアイデアが、私のほぼ全面的にあきらめた神経回路網のために転換する方法については不十分なものです。
その後、時を作ってみましたが素朴な代替、すなわちメーカーの更新プログラムごとに訓練するアイテムは、物事がばっちりです。
全体を考慮して設定を行う前にトレーニングする更新プログラムにはいくつかの長所と短所:
利点:
単身トレーニングのアイテムのトレーニングをセット、極端なエラーが発生(すなわち、不良トレーニングアイテム)に大きな貢献をすることはできないこの更新プログラムは、圧倒されるため、それは「良い」データの影響を受けて;
欠点:
の場合は、上のアイテム数をNにしてトレーニングを設定すると、進行速度を最適な重量で割った値ベクトルNされる。
あるいは、あなたは、与えられた距離はほんの何分の一かのヒントに沿って方向に比べて、素朴なアプローチの方法;
おそらくこの手法は、仕事をするが、素朴なアプローチを試してみて神経回路網に見切りをつけるする前に、全くの欲求不満!
6.2 失敗を減らすためにエラーが発生
トレーニングが失敗する場合が全体のエラーを減らすために、トレーニングセットです。
を検出することが失敗を減らすために重要なエラーが発生します。
表示価格は、次のエラーが発生を減らすために失敗の原因を説明し、可能性のあるソリューションです。
のアイテムのリストに記載され確率近似の順序を、最も確からしいの最初の項目があります。
( 1 )の重量の組み合わせに達して、エラーが発生する地域の最小の表面、および「が」滞っ;
解決策 :新しいシミュレーションを開始する新しいランダムな重量です。
( 2 )のネットワークが少なすぎます層をエンコードするニューロンや、すべてのパターンをしてトレーニングセット;
解決策 :追加の可能性を慎重に楽しま層やニューロンです。
( 3 ) 1つまたは複数の項目を設定してトレーニングをして矛盾や不整合が著しく他のトレーニングアイテム;
解決策 :データの設定を確認してください不正です。
アイテムを見つけるのテストをして訓練を受けた収率の最もネットワークエラーが発生します。
探す場所を変化させる技術を平均体重を減らすために全体のデータセットの影響を受けて任意の悪い場合があります。
( 4 )の学習率が高すぎる( 1.0は、おそらく何も以上の過剰) 、および、常にオーバーシュートして、更新プログラムの目標;
解決策 :学習率を減らす。
( 5 )の学習率が低すぎる(何の下0.01小さすぎるかもしれない) 、およびネットワークの実際の理想的な体重の組み合わせが集まってくる-しかしはあまりにも遅い;
解決策 :学習率の増加です。
トレーニングを2層、 3つの-ニューロンネットワークに合わせて、排他的論理和(xor)関数は、シンプルさにもかかわらず、この関数は、収束に失敗する。
これは驚くべきことでイライラするんです。
しかし、この解決策はすべてのニューロンのリンクを簡単に設定重りを新しいランダムな値と入力し、列車のネットワークを再度しようとします。
トレーニングの場合は、ネットワークに合わせて、排他的論理和(xor)関数は、ランダムな正の重りにつながるように学習するたびに成功したが、特定の組み合わせを正と負のウエイトトレーニングを時には劇的に失敗する原因です。
新しいランダムな初期の重りを選択する必要が故障から回復への収斂は、不幸な結果の学習の組み合わせの手順を実行します。
の学習の手順は本質的に検索を行うための世界最小最急降下さは、表面が存在するとの可能性を「最小」にするには、 「ローカル」検索は、閉じ込められることになる。
6.3 全体のトレーニングエラーが発生
で、ネットワーク全体のエラーが発生することを特徴とする2乗根の平均の2乗誤差か、または「二乗平均平方根」 (RMS)です。
いつ特定のネットワークのエラー出力は次の数式を与えられた:
Error = (Output - Desired);
2乗の合計は、エラーを表示するには、与えられた1つのトレーニングアイテムは、次の数式:
double squaredError = 0.0;
foreach (NeuralNetworkOutput output in ListOfOutputs)
{
squaredError += (output.Error * output.Error);
}
2乗の合計は、全体のエラーをトレーニングセットのアイテムをセットの合計は、 2乗誤差は、個々の商品です。 2乗に、次のコードのエラーを示してどのようにトレーニングアイテムの全体のセットに計算できる:
double squaredError = 0.0;
for
(
int trainingItemIndex = 0;
trainingItemIndex < totalTrainingItems;
trainingItemIndex++
)
{
trainingSet.SetAllInputNodeValues( trainingItemIndex );
Simulate( propagationIterations );
trainingSet.SetAllOutputNodeErrorValues( trainingItemIndex );
PropagateErrors( propagationIterations );
UpdateWeightsAndBiases();
foreach (NeuralNetworkOutput output in ListOfOutputs)
{
squaredError += (output.Error * output.Error);
}
}
全体の二乗平均平方根にエラーが(RMS)の平方根を与えられたの平均二乗誤差:
double rmsError = Math.Sqrt( squaredError / (double)totalTrainingItems );
この値は、 1つの方法の特性を考慮し、ネットワーク全体のエラーのすべてのトレーニング場合があります。
7. 学習
学習が発生した場合、体重とのリンクやニューロンニューロンバイアスの値を調整する機関は、指定されたネットワークに応じて値を入力と出力エラーが発生します。
ニューラルネットワークを検討する2つの入力端子( x1とx2 ) 、および2つのリンク(お分銅w1とw2 ) 、および1つの神経細胞体、および1つの出力(y)です。

ニューラルネットワークを構築する2つの入力、および1つの神経細胞体、および1つの出力
私たち列車に提供することにより、このニューロン入力、コンピューティングの出力は、コンピューティングのエラーが発生、コンピューティングの重みとバイアスの変更、および更新して重みとバイアス、新しい分銅( w1', w2' )到着します。
非常に興味深い方法には、このプロセスを可視化します。
重りのセットのことに関しては、複数次元空間ベクトルです。たとえば、 2つのウェイトW = (w1, w2)で我々は、 2次元のベクトル「空間の重量」です。
時の重量が調整されると、私たちは、新しい重量W' = (w1',w2')ベクトルです。
私たちは、これを可視化して新しいポイントに移動WポイントW'を最小限に抑えるためのプロセスの一部として出力エラーが発生します。
通常、 1つの出力時にエラーはないのすべての可能性を計算するの重量の組み合わせ、重量は、希望のは、効率的に調整プロセスが頭に向かって最高の組み合わせです。
しかし、プロットの表面にご連絡を満たす本質的に示してどれだけ上手にニューロン内のすべてのアイテムを訓練する関数として設定され、 2つのウェイト:

二乗和エラーを表示するにしないトレーニングする機能の2つの重りとして設定され(w1, w2)
基本的には、学習の目標は最低水準に降下しては、次の表面に、ここでエラーが最小限に抑えられます。
一度私たちを見つけるポイントW = (w1, w2)この表面利回りの最小値を、学習が完了すると入力し、訓練を受けた私たちは、単にニューロンを使用しています。
グラフの出力には、次のニューロンの関数として、訓練を受けた可能なすべての入力X = (x1, x2) :

ニューロンの出力の2つの入力の関数としては、重量の組み合わせ(x1, x2) 2乗誤差を最小限に抑える
加重和にもかかわらず、この2つの入力ニューロンは、単に(w1*x1 + w2*x2)は、活性化機能が単純な平面で回転して崖です。
この表面には、正しい出力の値を指定されたすべての入力の組み合わせ(x1, x2)弊社のトレーニングを設定します。
しかし、想像することができます。 X = (x1, x2)どのように似て訓練値を入力ベクトルもまた、適切な出力値につながる;この機能の神経回路網が呼び出されるとは、メインの値を「概括」ニューラルネットワークです。
私たちの試みとして2乗誤差を「下る」の表面に、しなければならない「さあ、その前に、見て」 !
私たちの重量ベクトルとバイアスを更新する、と入力し、私たちの「高さ」を評価して新しい場所の表面にメールにてお問い合わせください。
1つは、我々かもしれない結果は、次の点に移動するには、多くの極端なエラーが発生します。
別の帰結は、それまでにはしばらくかかるかもしれない降下の深さを省略して以前のロケーションです。
の可能性を極端に山と谷「を燃え上がらせる」には、エラーの表面に直接に関連して「学習率」 、学習率は、エラーが発生値がどの程度の影響力を決定する私たちの重みとバイアス変更を適用します。
増加する方法については、次のグラフで表示ご到着予定学習率hastens私たちの立場を、下位の2乗誤差表面に、ここでエラーが最小限に抑えられます。
このグラフも示して学習率が増加する可能性についても紹介してメーカー不良のステップ:

短期的な傾向を平均二乗根全体のトレーニングセット(RMS)エラーが発生するいくつかの訓練が加われ以上、学習宿泊料金の0.1 、 0.5 、 1.0 、および2.0です。
次に示すのは、グラフの平均二乗のルートに、複数の層のエラーを出力するネットワークを訓練19386アイテムをセットで、経験豊富な多くの不良手順を実行ベクトルへのパスを最高の重量:

スパイクトレーニング時には遭遇平均二乗のルートにエラーが発生(RMS) 、ときにエラーが発生増加を再開する前にいくつかの反復減少傾向です。
場合によっては、滑らかな収束傾向は、単に重りを希望のセット:

平均二乗根の動向は、全体のトレーニングセット(RMS)エラーが発生するいくつかの訓練が加われ、学習宿泊料金の0.1 、 0.5 、 1.0 、および2.0です。
8. 例:排他的論理和(xor)
「排他的論理和」 (xor)は、 2つのブール関数を受け入れる利回り、 1つの論理入力と出力は、次の表によると:
|
X1
|
X2
|
Y = xor ( X1 、 X2 )
|
|
0
|
0
|
0
|
|
0
|
1
|
1
|
|
1
|
0
|
1
|
|
1
|
1
|
0
|
一般的には、入力{x1, x2, ...} 、 1つのニューロンは、入力からリンクを重り{w1, w2, ...}です。
計算量の中間のニューロンd = bias + (w1*x1 + w2*x2 + ...)ことができると見なされて飛行機の識別が、平行な平面、無限のセット、座標{x1, x2, ...}には、指定されたアクセスポイントにします。
ニューロンの出力値を計算し、 y = ActivationFunction( d ) 、これには、無限の効果を分割して並列機のセットして2つのセットで、 1つの生産低出力値を設定すると、他の生産高出力の値を設定します。
したがって、多次元空間、 1つのニューロンに分割して2つの地域では、平面で区切られているbias + w1*x1 + w2*x2 + ... = 0 、および低出力の値を代入ポイントは、リージョンの片側の面、および高出力の値を代入ポイントは、リージョン上の反対側には、平面です。
したがって、 2つのポイントを多次元空間分類とは異なることに完全に分離された平面、ニューロン入力し、 1つのポイントを使用して、これらの設定が正しく分類に属するものを設定したり、他の1つです。
(xor)関数の排他的論理和次元空間に分類し、 2つのポイント(座標(x1, x2) )のようにポイントを設定{ (0,0), (1,1) }は、生産の出力を「0」に分類される、とのセットポイントを{ (0,1), (1,0) }は、生産の出力を「1」に分類されています。
1つの「面」がない(この場合、 1行)ことができるこれらの4つの独立した2つのポイントを設定してください。
したがって、ニューロン、 1つのポイントを分類するために使用することはできませんによると、排他的論理和(xor)機能です。
ニューロン、 1つの空間を分割することのみをポイントして2つの地域です。
(xor)関数の排他的論理和に分類するような方法でポイントを本質的に2つの次元空間を分割して3つの地域(または、別の方法として、 4つの地域に) 。
2つのニューロンの2つの次元空間を分割して3つの地域(例えば、 2つの平行線) 、およびそのために使われることを分類するポイント(xor)によると、排他的論理和関数です。
3番目のニューロンの組み合わせを使用して他の2つのニューロンの出力して、 1つの出力します。
は、次のニューラルネットワークは、 2つの入力、および2つの天体の最初の層ニューロンと、 1つのニューロンで2番目の層、および、 1つの出力は、ポイントを使用して分類する(xor)によると、排他的論理和関数です。
ニューラルネットワークは、次のいずれかで訓練を受けたことの排他的論理和を計算する関数(xor)か、または、ニューラルネットワークは、単にその重みとバイアスの値が割り当てられている方法を生産し、目的の現象が発生します。

分類は神経回路網の能力がある点によると、排他的論理和(xor)
このドキュメントに関連付けられて、コンピュータのコードを示してニューラルネットワークの訓練に上記の図に表示さに合わせて、排他的論理和(xor)機能です。
神経回路網の機能を学習し、時には失敗するが、ソフトウェアの学習を試すことに単純に再起動すると、新しいセットの最初の重さです。
ソフトウェアの場合、正常に学ぶ(xor)関数の排他的または、その出力結果は以下の通りです:
x1 = 0.0000 x2 = 0.0000 y = 0.0172 error = 0.0172
x1 = 1.0000 x2 = 0.0000 y = 0.9802 error = -0.0198
x1 = 0.0000 x2 = 1.0000 y = 0.9839 error = -0.0161
x1 = 1.0000 x2 = 1.0000 y = 0.0154 error = 0.0154
(y)は2 %の出力には、希望の値をそれぞれの4つの変数の組み合わせを(x1, x2)です。
を学ぶ訓練を受けたものの、ネットワークは、 4つの組み合わせのみの値を出力変数(値を0.0と1.0 、ブール値を表す)は、ニューラルネットワークへの入力は任意に設定して浮動小数点の値です。
出力は、次の画像は、ニューラルネットワークの訓練を受けた多くの組み合わせを入力値:

分類は神経回路網の能力がある点によると、排他的論理和(xor)
の表面には、出力は、ニューラルネットワークのすべての(x1, x2)の範囲で可能な入力の組み合わせ[ -2.0, +2.0 ]です。
0.0の出力は近くには、地域の表面に低減し、出力は1.0に近い分野で最高の表面にします。
に注意しての表面には、ポイントが低いため{ (0,0), (1,1) } 、との表面には、ポイントが高い{ (0,1), (1,0) }です。
ネットワークは、訓練を受けただけを生産する4つの出力を希望する特定の変数の組み合わせを入力、出力も生産が、ニューラルネットワークの他のすべての可能性の組み合わせを入力された値です。
神経回路網の能力を合理的なレスポンスの一般的なケースを生産する訓練を受けた後に具体的なケースを「概括」できると見なされています。
任意のプロセスに収まるのデータポイントしてモデルのような行を指して継手またはその他の曲線、また「総称」効果を生成するので、という事実を希望する継手を生産するには神経回路網の特定のレッスンの結果を出力するような概括ではない臨時、それはそれにもかかわらず一般的に興味深いを観察する能力をより具体的なケースです。
9. 例: Tic-tac-toe ( 「naughtsと交差」 )
9.1 はじめに
Tic-tac-toe ( 「naughtsと交差」 )は、単純なゲームをプレイすることができる3 * 3グリッドのセル「O」または「X」マークが付いています。
選手「O」と「X」符を交互に空いている場所の細胞の選手が完了するまでのいずれかの行、列、または斜めのです。
が存在するためには3行、および3列、および2対角線には、各プレーヤー8つのパターンを受賞した。

Tic-Tac-Toe委員会と勝利のパターン
それは簡単再帰関数を書くためにすべての可能性Tic-Tac-Toe的ゲームは、ゲームのための最大の持続時間は9に移動します。
各ポイントは、ゲームの結果を考察する私たちだけが動くの各セルの残りの空いている。
このような関数Tic-Tac-Toeゲームをプレイすることを確認して、終わりのない「完璧な選手」が受賞している。
9.2 トレーニングは神経回路網の最高の動きを示す
再帰関数すべての可能性を探ることを決定する最高のゲームや、各委員会の構成に移動します。
私たちの追加、各委員会の構成(入力) 、および最高の移動(希望の出力) 、トレーニングアイテムのリストを参照して下さい。
次に、目的の列車のネットワークを生産する各セットの出力を入力します。
ネットワークには9入力に対応して、グリッドの各セルのとは、入力値は、以下の値に限定される:
0 :空いている細胞
+1 :主人公プレーヤー
-1 :対戦相手選手
ネットワークには9出力に対応して、グリッドの各セルを、との出力値は、以下の値に限定される:
0 :ここでは移動しないで
1 :移動について
8つの出力を「0」に設定される、と1つの出力を「1」に設定される。
したがって、ニューラルネットワークの訓練にした後、委員会の構成を指定できるように入力し、ニューラルネットワークは、最高の動きを示しています。
の出力を「1」に近いことが示さ最高の移動、およびその他のすべての出力を「0」に近いすべきである。
一般的には、任意の関数をブール値パラメータと出力はブール値で表現される2つの層には神経回路網のニューロンです。
ニューロンの最初の層は、多次元空間して地域に分けて、 2番目の層は、該当する地域の分類出力値を生成します。
ブールTic-Tac-Toeニューラルネットワークの出力を生成し、 3つの州は、入力が( -1, 0, +1 ) 、私たちが、 princple 、これらのいくつかのディスクリート入力値に変換して入力ブール値のセットです。
したがって、 2つの層の