問題タブ [autoencoder]

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.

0 投票する
1 に答える
2537 参照

machine-learning - Ada-Delta メソッドは、MSE 損失と ReLU アクティベーションを使用して Denoising AutoEncoder で使用すると収束しませんか?

独自のディープ ニューラル ネットワーク ライブラリにAdaDelta ( http://arxiv.org/abs/1212.5701 ) を実装しました。論文によると、AdaDelta を使用した SGD はハイパーパラメータに敏感ではなく、常に適切な場所に収束すると書かれています。(少なくとも、AdaDelta-SGD の出力再構成損失は、よく調整された Momentum 法のそれに匹敵します)

Denoising AutoEncoder の学習方法として AdaDelta-SGD を使用した場合、特定の設定で収束しましたが、常にではありませんでした。MSE を損失関数として使用し、Sigmoid を活性化関数として使用した場合、非常に迅速に収束し、100 エポックの反復の後、最終的な再構成損失は、単純な SGD、Momentum を使用した SGD、および AdaGrad のすべてよりも優れていました。

しかし、活性化関数として ReLU を使用すると、収束せずにスタック (振動) し続け、高い (悪い) 再構成損失が発生しました (学習率が非常に高いプレーンな SGD を使用した場合と同様)。それが積み重ねた再建損失の大きさは、モメンタム法で生成された最終的な再建損失よりも約10倍から20倍高かった。

論文では AdaDelta がちょうど良いと書かれているので、なぜそうなったのか、私にはよくわかりません。現象の背後にある理由と、それを回避する方法を教えてください。

0 投票する
2 に答える
728 参照

python - pylearn2 の教師なし学習から学習したデータの表現を取得する

以下の YAML ファイルを (pylearn2/scripts/train.py と共に) 使用して、pylearn2 でオートエンコーダーをトレーニングできます。

得られるのは、「dae_l1.pkl」として学習されたオートエンコーダ モデルです。

このモデルを教師付きトレーニングに使用する場合は、「dae_l1.pkl」を使用して MLP のレイヤーを初期化できます。その後、このモデルをトレーニングできます。「fprop」関数を使用して、モデルの出力を予測することもできます。

しかし、この事前トレーニング済みモデルを教師あり学習に使用したくなくて、新しく学習したデータの表現をオートエンコーダーで保存したい場合はどうすればよいでしょうか。

これどうやってするの?

さらに詳しい質問はこちら

0 投票する
1 に答える
323 参照

theano - theano で飽和オートエンコーダーを実装する

この論文で説明されている正則化方法を使用して、オートエンコーダーを実装しようとしています: "Saturating Auto-Encoders", Goroshin et. 他、2013

基本的に、これは隠れ層の出力と、隠れ層の出力を計算するために使用される非線形関数の平坦な部分との差を最小限に抑えようとします。

非線形性としてステップ関数を使用し、ステップが 0.5 であると仮定すると、単純な実装は次のようになります。

次に、正則化コストは単純に次のようになります。

この機能を Theano に実装しようとしています。Theano Web サイトで入手できるノイズ除去オートエンコーダ コードから始めました。それにいくつかの基本的な変更を加えました:

上記の損失関数は、隠れ層の出力に L1 ペナルティを課します。これにより、(うまくいけば) それらのほとんどが 0 になります。この単純な L1 ペナルティの代わりに、上記の飽和ペナルティを使用したいと思います。

これを行う方法はありますか?y_prime はどこで計算するのですか? 象徴的にそれを行う方法は?

私はTheanoの初心者で、まだシンボリック計算の部分に追いついています。

0 投票する
3 に答える
6218 参照

python - 高次元データのオートエンコーダー

私は、観察の次元を減らし、それでもそれらの重要な表現を保持する必要があるプロジェクトに取り組んでいます。オートエンコーダーの使用は多くの理由で強く提案されましたが、それが最善のアプローチであるかどうかはよくわかりません。

次元が 60,000 の 1400 個のサンプルがあり、これは高すぎます。元の次元の 10% に次元を削減しようとしています。私はtheano autoencoders [ Link ]を使用していますが、コストは約30,000のままです(これは非常に高いです)。エポック数を増やしたり、学習率を下げたりしてみましたが、うまくいきませんでした。私はオートエンコーダーの専門家ではないので、ここから先に進む方法や、いつ試行をやめるべきかわかりません。

私が実行できるテストは他にもありますが、先に進む前に、あなたからの意見が欲しいです。

  • データセットが小さすぎると思いますか (さらに 600 サンプルを追加して、合計で ~2000 にすることができます)?

  • 積み重ねられた自動エノダーを使用すると役立つと思いますか?

  • パラメータ (エポックと学習率) を微調整し続ける必要がありますか?

データセットは画像のアンサンブルであるため、オートエンコーダーからの再構成を視覚化しようとしましたが、すべてのサンプルで同じ出力しか得られませんでした。これは、入力が与えられると、オートエンコーダーが入力を再構築しようとするが、代わりに得られるのは、どの入力に対しても同じ (ほぼ正確に) 画像であることを意味します (これは、データセット内のすべての画像の平均のように見えます)。これは、オートエンコーダーがそこから画像を再構築できないため、内部表現が十分でないことを意味します。

データセット:スキャンされた書籍 (表紙を含む) の 1400 ~ 2000 枚の画像 (それぞれ約 60.000 ピクセル) (これは 60.000 要素の特徴ベクトルに変換されます)。各特徴ベクトルは [0,1] で正規化されており、元の値は [0,255] でした。

問題: オートエンコーダーで次元を減らす (可能であれば)

追加情報が必要な場合、または問題をよりよく理解するのに役立つ可能性のある情報を見逃した場合は、コメントを追加してください。喜んでお手伝いさせていただきます =)。

注: 現在、データセット全体でより多くのエポックを使用してテストを実行しています。結果に応じて投稿を更新しますが、しばらく時間がかかる場合があります。