2

私は、ワークベンチと Java コードの両方を使用して、標準の多層パーセプトロンと Encog のバックプロパゲーション アルゴリズムを 2 週間いじっています。私の次の仕事では、この論文のように、入力パターンにノイズを挿入する必要があります : http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=6033567小さくて不均衡なデータ セット)

基本的に、私はする必要があります (これはバイナリ分類の問題です): 1 - 主成分分析 (PCA) を使用して入力パターンを変換します 2 - バックプロパゲーションを使用して MLP をトレーニングします。各時代。

Encog の Java バージョンを使用してこのノイズ インジェクションを行うより簡単な方法は何ですか? 利用可能なトレーニング アルゴリズムの中に、人工ノイズ インジェクションを含むものはありますか?

PS .: 私が引用した論文の完全なアルゴリズムは次のとおりです。

    1. PCA を適用して変数の相関を解除する
2. システム アーキテクチャを初期化する
3. k、エポックの最大数、および最小誤差を設定する
4. 訓練開始 - エポックカウンター中 a. 入力パターン (ベクトル x) をプレゼンテーションの置換なしでランダムに描画します
。 b. 入力パターン
1 にノイズを挿入します。入力パターンからのすべての変数に対して
a. ガウス分布から g を描画します。g~N(0,1)
b.n = k * g
c を計算します。ninto 入力パターン x を追加
c. 入力パターンを提示する
d.システム パラメータを調整します
e. 訓練停止基準に達した場合、
1.訓練を停止
f.それ以外の場合
1. エポック カウンターをインクリメントします
。 2. 4.a に進みます。
4

2 に答える 2

2

私は Backprop クラスを研究し、より一般的で直接的な別の方法を思いつきました。ErrorStructure インターフェイス、NoisyBackpropagation クラス、および NoisyGradientWorker を作成しました。

最初のクラスでは、ノイズ インジェクションの多くの手法を一般化します (先月、私がいくつかの科学論文で見たことから、新たな注目を集めたテーマです)。

2 番目のクラスは、ErrorStructure プロパティを持つ単なる Backprop です。3 番目のクラスは、パラメーターとして NoiseStructure を受け取り、トレーニング プロセスでノイズを挿入する GradientWorker です。

トリッキーなビット:

  • 一部の ErrorStructure 実装 (特に公開したい実装) では、トレーニング セットから派生した複雑な初期化パラメーターが必要になります。より一般的な種類の MLDataSet を使用できませんでした。これは絶対に必要というわけではありませんが、いつか使いたいと思っています。
  • SSJ: Stochastic Simulation in Javaパッケージを依存関係として追加する 必要がありました。そうしないと、NoiseStructure の計算に時間がかかりすぎてしまいます。Encog の速度が SSJ によってどの程度妨げられるかはわかりません。

ところで、MLDataSet 調整ソリューションは、一部の高度なリサンプリング スキームに非常に役立つようです。

于 2013-05-24T17:58:55.547 に答える