2

私はコンピュータサイエンスの学生です。今年のプロジェクトでは、遺伝的アルゴリズムを作成して何かに適用する必要があります。ニューラルネットワークはそれを適用するのに良いことだと思いますが、私はそれらを理解するのに苦労しています。私は概念を完全に理解していますが、私の理解を妨げている次のことを実際に説明しているWebサイトはありません。

ノードの数をどのように決定するか。ノードが実際に表し、実行すること。分類において、重みとバイアスが実際にどのような役割を果たすか。

誰かが私のためにこれにいくつかの光を当ててくれませんか?

また、GAを適用できるものについて同様のアイデアがあれば、本当にありがたいです。

どうもありがとう!:)

4

5 に答える 5

0

NeuroEvolution of Augmenting Topologies (NEAT)に関するこのウィキペディアのページが興味深いかもしれません。NEAT は、遺伝的アルゴリズムを適用してニューラル ネットワーク トポロジを作成する 1 つの例です。

于 2012-09-25T21:42:35.933 に答える
0

...これを理解するための私の主な障壁は、隠れ層が実際にどのように機能するかを理解することです。ニューロンがどのように機能し、重みが何のためにあるのか、よくわかりません...

中間層のすべてのノードは「機能検出器」です。入力の重要な機能に応答して、(うまくいけば)「点灯」(つまり、強くアクティブ化)します。重みは、前のレイヤーの側面を強調するものです。つまり、ニューロンへの入力重みのセットは、前の層のどのノードがその機能にとって重要であるかに対応します。

myInputNodeに接続する重みmyMiddleLayerNodeが 0 の場合、それは検出しているmyInputNode特徴にとって重要ではないことがわかります。myMiddleLayerNodeただし、接続myInputNodeする重みmyMiddleLayerNodeが非常に大きい場合 (正または負のいずれか)、それmyInputNodeが非常に重要であることがわかります (非常に負の場合は、「いいえ、この機能はほぼ確実に存在しない」ことを意味し、非常に正の場合は、 「はい、この機能はほぼ確実にあります」)。

したがって、これの結果として、入力を分類するために必要な機能の数に対応する中間層ノードの数が必要になります。中間層ノードが少なすぎると、トレーニング中に収束するのが難しくなります (すべての中間層ノードは、その機能検出を「2 倍にする」必要があります) 一方で、中間層ノードが多すぎると、データが過剰に適合する可能性があります。

つまり... 遺伝的アルゴリズムの可能な用途は、ネットワークのアーキテクチャを設計することです! つまり、GA を使用して、中間層ノードの数と初期の重みを設定します。人口の一部のインスタンスは、より速く収束し、より堅牢になります。これらは、将来の世代のために選択される可能性があります。(個人的には、これが GA の優れた使用法だと感じたことは一度もありません。なぜなら、適切な NN アーキテクチャへの道を試行錯誤する方が速いことが多いと思うからです。しかし、このように GA を使用することは珍しくありません。)

于 2012-09-25T21:38:47.000 に答える
0

人工ニューラル ネットワーク (ANN) を説明する最良の方法は、ANN がシミュレートしようとする生物学的プロセス、つまりニューラル ネットワークを提供することです。その最も良い例は人間の脳です。では、脳はどのように機能するのでしょうか ( CS 用に非常に単純化されています)。

  1. 脳の(私たちの目的のための)機能単位はニューロンです。それは潜在的なアキュムレータであり、「分散器」です。つまり、一定量の電位 (風船に空気を入れることを考えてください) に達すると、「発火」します (風船がはじけます)。それは、接続されているすべての接続に電気信号を発射します。

  2. ニューロンはどのように接続されていますか?シナプス。これらのシナプスは、さまざまな重みを持つことができます (実際には、接続が太い/細いため、シナプスが強く/弱くなります)。これらの重みにより、発射された信号の一定量を通過させることができます。

したがって、シナプスによって接続されたニューロンの大規模なコレクション (ANN の基本表現) が得られます。他の人によって記述された入力/出力構造は、ANN が適用されるタイプの問題の成果物であることに注意してください。理論的には、どのニューロンも入力を受け入れることができます。ただし、計算タスクではほとんど役に立ちません。


それでは、ANNに進みます。

ニューロン: ANN のニューロンは、生物学的な対応物と非常によく似ています。それらは、step関数 (特定の結合された入力信号の後に「1」を通知するか、それ以外の場合は常に「0」を通知する)、または同様にスケーリングされますが、連続出力を生成するわずかに洗練された発射シーケンス ( 、など)arctanとしてモデル化されます。sigmoidステップに。これは生物学的現実により近いです。

SYNAPSES : これらは ANN では非常に単純です - ニューロン間の接続を記述する重みだけです。現在のニューロンに接続されているニューロンに重みを付けるために使用されますが、それでも重要な役割を果たします。シナプスはネットワークの出力の原因です。明確にするために、セット構造とニューロン活性化関数を使用した ANN のトレーニングは、単純にシナプスの重みの変更です。それだ。「ダム」ネットから正確な結果を生成するネットへの変更は他にありません。

STRUCTURE : ニューラル ネットワークには「正しい」構造はありません。構造は、a) 手動で選択されるか、b) 学習アルゴリズム (カスケード相関ネットワーク) の結果として成長することが許可されます。

厳選された構造を前提として、これらは実際には問題と予想される解決策を注意深く分析して選択されます。「隠れた」ニューロン/層が少なすぎると、複雑な関数を近似するのに十分なほど構造が複雑ではありません。多すぎると、トレーニング時間が急速に手に負えなくなります。このため、入力 (「機能」) の選択とニューラル ネットワークの構造は、IMO、問題の 99% です。比較すると、ANN のトレーニングと使用は簡単です。


GA の懸念に対処するには、シナプスの重みを変更してネットワークをトレーニングするために使用される多くの努力の 1 つです。なんで?最終的に、ニューラル ネットワークの出力は、N 次元の非常に高次のサーフェスにすぎないからです。任意の表面最適化手法を使用して重みを解決できますが、GA はそのような手法の 1 つです。単純な逆伝播法は、次元削減勾配ベースの最適化手法に似ています。

于 2012-09-25T21:35:27.033 に答える
0

あなたの質問は非常に複雑で、ちょっとした答えであなたを完全に満足させることはできないと思います。それにもかかわらず、試してみましょう。

まず第一に、ニューラル ネットワークには少なくとも 3 つの層が必要です (単純なフィードフォワードを想定しています)。最初は入力層で、入力ごとに 1 つのニューロンがあります。3 番目の層は出力層で、出力値ごとに 1 つのニューロンがあります (分類している場合は、各ニューロンに「属する」という意味を割り当てたい f が複数ある可能性があります)。残りの層は、入力と出力の間に立つ隠しもの。次の参考文献でわかるように、サイズの決定は複雑な作業です。

それにもかかわらず、続行する最善の方法は、あなたの問題をより明確に述べて(産業秘密が許す限り)、あなたの文脈についてもう少し考えさせてください.

于 2012-09-25T12:58:21.333 に答える
0

入力ノードと出力ノードの数は、使用している入力と出力の数によって決まります。中間ノードの数は自由です。「正しい」番号はありません。

単純なネットワークを想像してください: 入力 (年齢、性別、国、既婚) 出力 (今年の死亡率)。あなたのネットワークには 2 つの「隠れた価値観」があるかもしれません。1 つは年齢と性別によるもの、もう 1 つは国と既婚者によるものです。それぞれ重みをつけます。たとえば、Hidden1 = 年齢 * 体重 1 + 性別 * 体重 2 です。Hidden2 = 国 * 体重 3 + 既婚 * 体重 4. 次に、出力変数に接続する Hidden3 と Hidden4 という別の重みのセットを作成します。

次に、国勢調査な​​どからデータを取得し、ニューラル ネットワークを実行して、そのデータに最適な重みを見つけます。遺伝的アルゴリズムを使用して、さまざまな重みのセットをテストできます。これは、可能なすべての重み付けを試すことができないほど多くのエッジがある場合に役立ちます。考えられるすべての重みのセットを徹底的に試すことなく適切な重みを見つける必要があるため、GA を使用すると適切な重みのセットを「進化」させることができます。

次に、別の国勢調査からのデータで重みをテストして、それがどの程度うまく機能したかを確認します。

于 2012-09-25T21:21:21.040 に答える