問題タブ [backpropagation]
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.
java - Encog AI フレームワーク: ガウス ノイズ注入によるバックプロパゲーション
私は、ワークベンチと Java コードの両方を使用して、標準の多層パーセプトロンと Encog のバックプロパゲーション アルゴリズムを 2 週間いじっています。私の次の仕事では、この論文のように、入力パターンにノイズを挿入する必要があります : http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=6033567小さくて不均衡なデータ セット)
基本的に、私はする必要があります (これはバイナリ分類の問題です): 1 - 主成分分析 (PCA) を使用して入力パターンを変換します 2 - バックプロパゲーションを使用して MLP をトレーニングします。各時代。
Encog の Java バージョンを使用してこのノイズ インジェクションを行うより簡単な方法は何ですか? 利用可能なトレーニング アルゴリズムの中に、人工ノイズ インジェクションを含むものはありますか?
PS .: 私が引用した論文の完全なアルゴリズムは次のとおりです。
backpropagation - 逆伝播アルゴリズムの実装
ディア・オール、
バックプロパゲーションを使用するニューラル ネットワークを実装しようとしています。ここまでで、各ニューロンが前の層のすべてのニューロンから重み付けされた入力を受け取り、それらの合計に基づいてシグモイド関数を計算し、それを次の層に分配する段階に到達しました。最後に、ネットワーク全体が結果 O を生成します。次に、A はエラーを E = 1/2(DO)^2 として計算します。ここで、D は目的の値です。この時点で、ネットワーク全体のすべてのニューロンが個々の出力とネットの全体的なエラーを持っている場合、それを逆伝播して重みを調整するにはどうすればよいでしょうか?
乾杯 :)
machine-learning - バックプロパゲーション、すべての出力は 1 になる傾向があります
MATLAB でこのバックプロパゲーションを実装していますが、トレーニングに問題があります。トレーニング フェーズの早い段階で、すべての出力が 1 になります。入力データ (バイナリ ターゲット ベクトルの生成に使用される目的のクラスを除く) を間隔 [0, 1] に正規化しました。私は、Artificial Intelligence: A Modern Approach、Norvig et al. での実装について言及してきました。
私のコードに対して疑似コードをチェックした(そしてしばらくの間アルゴリズムを研究した)が、エラーを見つけることができません。私は MATLAB をそれほど長く使用していないので、必要に応じてドキュメントを使用しようとしています。
また、隠れ層のさまざまな量のノードとさまざまな学習率も試しました ( ALPHA
)。
ターゲット データのエンコーディングは次のとおりです。ターゲットがたとえば として分類される場合2
、ターゲット ベクトルは[0,1,0]
、それが1
だっ[1, 0, 0]
たとします。1
また、(たとえばクラスの場合)など、ターゲットにさまざまな値を使用してみました[0.5, 0, 0]
。
体重の一部が を超え1
、正味の値が大きくなっていることに気付きました。
matlab - 複素数値ニューラル ネットワーク (CVNN) エラー発散
私は現在、複素数値ニューラル ネットワーク (CVNN) に関する学部論文に取り組んでいます。私のトピックは、実数値分類問題のための単層複素数値ニューラル ネットワークに基づいています。与えられたデータセットを分類するために勾配降下学習規則を使用しています。下:
ここで使用したアルゴリズムは、Complex valued neuron (CVN) Modelというラベルの付いた次の PDF の946 ページにあります。メインのアルゴリズムは、そのトピックのセクション 3にあります。
しかし、収束する代わりに、私の誤差曲線は発散特性を示しています。これが私の誤差曲線の出力です。
私はMATLABでこの背後にあるコードをシミュレートしています。私の実装も以下に示します。
データセットのこの反対の特性の背後にある理由をまだ理解できませんでした。これに関するあらゆる種類の助けをいただければ幸いです。
machine-learning - 多層パーセプトロンで重みを更新する必要があるのはいつですか?
ニューラルネットワークの一種である多層パーセプトロンについて研究しています。Back Propagation Algorithm について読んだとき、特定のレイヤーのすべてのエラーを計算した直後に重みを更新することを提案する著者もいますが、別の著者は、すべてのレイヤーのすべてのエラーを取得した後に重みを更新する必要があると説明しています。正しいアプローチとは?
最初のアプローチ:
2 番目のアプローチ:
すべてに感謝します。
python - numpy と matlab のパフォーマンスの違い
backpropagation
スパースオートエンコーダーのアルゴリズムを計算しています。numpy
と を使用して python で実装しましたmatlab
。コードはほぼ同じですが、パフォーマンスは大きく異なります。matlab がタスクを完了するのにかかる時間は 0.252454 秒ですが、numpy は 0.973672151566 で、ほぼ 4 倍です。このコードは、後で最小化の問題で数回呼び出すため、この違いにより、実装間に数分の遅延が発生します。これは正常な動作ですか?どうすればnumpyのパフォーマンスを改善できますか?
でこぼこの実装:
Sparse.rho は調整パラメータ、sparse.nodes は隠れ層のノード数 (25)、sparse.input (64) は入力層のノード数、theta1 と theta2 は最初と 2 つの重み行列です。 2 番目のレイヤーのサイズはそれぞれ 25x64 と 64x25、m は 10000、rhoest のサイズは (25,)、x のサイズは 10000x64、a3 は 10000x64、a2 は 10000x25 です。
UPDATE
: 回答のいくつかのアイデアに従って、コードに変更を加えました。パフォーマンスは numpy になりました: 0.65 vs matlab: 0.25。
Matlab の実装: