問題タブ [biological-neural-network]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - FFT を使用した 2 つの関数の畳み込みの計算 (FFTW)
FFT を使用してニューラル シミュレータの計算を高速化しようとしています。
方程式は次のとおりです。
(1) \sum(j=1 to N) (w(i - j) * s_NMDA[j])
ここで、s_NMDA は長さ N のベクトルで、w は次のように定義されます。
(2) w(j) = tanh[1/(2 * シグマ * p)] * exp(-abs(j) / (シグマ * p)]
ここで、sigma と p は定数です。
(stackoverflow で方程式をレンダリングするより良い方法はありますか?)
計算は N 個のニューロンに対して行う必要があります。(1) は絶対距離 abs(i - j) のみに依存するため、FFT (畳み込み定理) を使用してこれを計算できるはずです。
FFTW を使用してこれを実装しようとしましたが、結果は期待される結果と一致しません。私はこれまで FFTW を使用したことがなく、畳み込み定理に関する私の仮定が間違っているかどうか、私の実装が間違っているかどうかはわかりません。
20 個のニューロンの出力例を次に示します。
結果はほぼ正しいように見えますが、誤差はニューロンの数とともに増加します。また、結果は、位置 (i) が非常に低いか非常に高い場合により正確になるようです。何が起きてる?
更新: Oli Charlesworth が示唆したように、アルゴリズムをオクターブで実装して、実装の問題か数学の問題かを確認しました。
結果:
結果はほとんど同じです。したがって、畳み込み定理 / FFT に関する私の理解には何か問題があるに違いありません。
machine-learning - 歪んだ特徴に最も適切な正規化/変換方法は?
私は、ニューラルネットワークをトレーニングするために生物学的データを前処理しようとしています。さまざまな正規化方法の広範な検索と繰り返しの提示にもかかわらず、どの方法をいつ使用するかについては賢明ではありません。特に、正に偏った入力変数がいくつかあり、最も適切な正規化方法があるかどうかを確認しようとしています。
また、これらの入力の性質がネットワークのパフォーマンスに影響を与えるかどうかについても心配し、データ変換(特にログ変換)を実験しました。ただし、一部の入力には多くのゼロがありますが、10進数の値が小さい場合もあり、log(x + 1)(または1から0.0000001までの任意の数値)の影響を大きく受け、結果の分布が正常に近づかないように見えます(どちらかが残ります)。歪んでいるか、最小値で鋭いピークを持つバイモーダルになります)。
これはニューラルネットワークに関連していますか?すなわち。偏ったデータを説明するために特定の機能変換/正規化方法を使用する必要がありますか、それともそれを無視して正規化方法を選択して先に進む必要がありますか?
この件に関するアドバイスをいただければ幸いです。
ありがとう!
neural-network - 独自の接続を作成する人工ニューラル ネットワーク
私はフィード フォワード人工ニューラル ネットワーク (ANN) について読んできましたが、通常は、目的の出力を達成するために重みを変更するためのトレーニングが必要です。また、一度調整された同じ入力を受信すると、常に同じ出力を生成します (生物学的ネットワークは必ずしもそうではありません)。
それから、進化するニューラル ネットワークについて読み始めました。ただし、進化には通常、2 つの親ゲノムを新しいゲノムに組み換えることが含まれます。「学習」ではなく、適合性テストを通じて実際に組み換えて検証します。
私は考えていました、人間の脳はそれ自身のつながりを管理しています。それはつながりを生み出し、一部を強化し、他のものを弱めます。
これを可能にするニューラル ネットワーク トポロジはありますか? ニューラルネットワークは、一度悪い反応を起こした場合、それに応じて重みを調整し、おそらくランダムな新しい接続を作成します(脳がどのように新しい接続を作成するかはわかりませんが、作成しなかったとしても、ランダムな突然変異の可能性新しい接続により、これが軽減される可能性があります)。良い反応は、それらのつながりを強化します。
このタイプのトポロジーは Turing Type B Neural Network として知られていると思いますが、コード化された例や論文は見たことがありません。
neural-network - 制約付きユニットを使用したニューラル ネットワークのトレーニング
動機:
オブジェクト認識のための最先端のアルゴリズムは、バックプロパゲーションによってトレーニングされた深い畳み込みニューラル ネットワークです。主な問題は、ネットワークを良好な極小値に落ち着かせることです: http://books.nips.cc/papers/files/nips25 /NIPS2012_0534.pdf
オブジェクト認識をサポートするニューロンからの脳からのスパイク カウントを記録することは可能であり、これらのニューロンの応答を近似するニューラル ネットワークが適切な極小値にあると主張することは合理的です。http://www.sciencedirect.com/science/article/pii/S089662731200092X
ニューラル ネットワーク内のユニットのサブセットを制約して、特定の入力に対して特定の値 (たとえば、これらの画像に応答してニューロンから記録されたスパイク カウントなど) を再現し、制約付き勾配降下によって誤差を減らす場合、ネットワークを適切な極小値に落ち着かせることができる場合があります。
正確な質問:
ネットワーク内のいくつかのニューロンが特定の事前定義された値を持たなければならない場合、エラーの削減を最大化する方向にニューラル ネットワークの重みを変更する最も計算効率の良い方法は何でしょうか?
これまでの進捗:
これは非常に難しいラグランジュ乗数問題のようです。いくつかの作業を行い、このトピックに関する既存の文献を検索した後、誰かが同様の作業を聞いたことがあるかどうか疑問に思いました。
machine-learning - 放射基底関数ネットワーク (RBF ネットワーク)
以下のリンクによると、「ニューロンiの中心ベクトル」、つまり「プロトタイプとも呼ばれるRBFユニットの中心」が何であるかを理解していませんでした。
よろしくお願いします。
machine-learning - トレーニング画像とテスト画像
私は腹側ストリームのフィードフォワード経路に関するプロジェクトに取り組んでおり、InferoTemporal レイヤーで認識される 6 つの画像があります。
トレーニング画像とテスト画像の違いを示す画像の例を教えてください。では、トレーニング画像を含むフォルダーに何を追加すればよいでしょうか? テスト画像のリストを含む別のフォルダーを追加する必要がありますか? はいの場合、これらのテスト画像は何ですか?
トレーニング画像には分析または認識される画像が含まれている必要があり、テスト画像にはメモリ内の画像が含まれている必要がありますか? つまり、たとえば 16 のトレーニング顔と 1 つまたは 2 つのテスト顔があるとします。では、テストの顔に対応するトレーニングの顔は何かを分析する必要がありますか? 本当 ??
注: コードは必要ありません。テスト画像とトレーニング画像の違いについて簡単に説明したいだけです。
どんな助けでも大歓迎です。
machine-learning - k-mean クラスタリングよりも正確なアプローチ
Radial Basis Function Network (RBF Network) では、隠れ層のすべてのプロトタイプ (RBF 関数の中心ベクトル) が選択されます。この手順は、いくつかの方法で実行できます。
- センターは、いくつかの例のセットからランダムにサンプリングできます。
- または、k-mean クラスタリングを使用して決定できます。
プロトタイプを賢く選択するためのアプローチの 1 つは、トレーニング セットに対して k-mean クラスタリングを実行し、クラスターの中心をプロトタイプとして使用することです。k-mean クラスタリングがその単純さ (高速) によって特徴付けられることはわかっていますが、あまり正確ではありません。
そのため、k-mean クラスタリングよりも正確な他のアプローチを知りたいのですが?
どんな助けでも大歓迎です。
java - ニューラルネットワークの基礎は何倍にもなる
こんにちは、ニューラルネットワークを学んでいます。は、1 から -1 の間の値のみを格納するニューロンですか? 値 255 または 1024 を与えることはできませんか? encog Java ライブラリ XOR 関数ソルバーの例を探していました。XOR_INPUT と XOR_IDEAL を変更して、XOR を Multiplier に変更したかったのです。
ソースの場所は次のとおりです: http://www.heatonresearch.com/wiki/Hello_World
私は変わりました
から:
に:
これらに値を変更した後。無限ループと出力定数を取得しました:
エポック #274107 エラー:12.75
エポック #274108 エラー:12.75
エポック #274109 エラー:12.75
エポック #274110 エラー:12.75
エポック #274111 エラー:12.75
エポック #274112 エラー:12.75
エポック #274113 エラー:12.75
エポック #274114 エラー:12.75
エポック #274115 エラー:12.75
エポック #274116 エラー:12.75
エポック #274117 エラー:12.75
エポック #274118 エラー:12.75
エポック #274119 エラー:12.75
ここに質問があります。
1-)これは極小値と呼ばれますか?
2-) (0 と 1) または (-1 と 1) の間の値を設定する必要がありますか?
3-) 単純な乗算ソルバーの問題を解決するにはどうすればよいですか?
ありがとう。
neural-network - NeuronDotNet3.0 のサポート
NeuronDotNet 3.0のサポートがあるかどうか、知っている人がいるかどうか疑問に思いました。Web サイト neurondotnet.freehostia.com がダウンしており、サンプル ファイルやライブラリの適切な使用方法を探しています。
何かアイデアはありますか?大変感謝しております。