問題タブ [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 に答える
1490 参照

python - 入力データサイズを削減するオートエンコーダ

現在、削減されたデータを別のニューラルネットワークに使用するために、入力データサイズを削減するためにオートエンコーダーを使用したいと考えています。私の仕事は、ビデオを撮り、ビデオの画像をオートエンコーダーに渡すことです。入力として少数の画像のみを使用する場合、オートエンコーダーはうまく機能しますが、画像のシーケンスが必要な場合は機能しません。

動いているボールからビデオを撮ることを想像してみてください。たとえば、200 枚の画像があります。オートエンコーダーを 200 枚の画像に使用すると誤差は大きくなりますが、5 枚の画像にのみ使用すると再構成誤差は小さく許容範囲内です。オートエンコーダーは、循環するボールのシーケンスまたは時間的な動きを学習していないようです。スタックされたオートエンコーダーも表示しようとしましたが、結果は良くありません。

問題が何であるかを知っている人はいますか、またはこのタスクにオートエンコーダーを使用することは可能ですか?

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

java - オートエンコーダの実装

Javaで自分で自動エンコーダーを実装しようとしています。理論から、オートエンコーダーは基本的に対称ネットワークであることがわかりました。

では、合計 5 つの層を選択した場合、トレーニング (逆伝播) フェーズで 9 つの層を使用する必要がありますか、それとも 5 つの層で十分でしょうか?

私は理論を読んできましたが、それらは抽象的すぎて数式でいっぱいです.Google経由で実装の詳細を取得できませんでした.

これを行う通常の方法は何ですか?

ここに画像の説明を入力

自動エンコーダーは、トレーニング フェーズで逆伝播を使用して、エラーを最小限に抑えることを目標に、入力と同様の出力を取得しようとします。それは上に示されています。上の画像のレイヤー数は 7 ですが、トレーニング後の実際のレイヤーは 4 です。では、トレーニング中にバックプロパゲーションを 4 つだけ実装できますか? もしそうなら、どうすればこれを行うことができますか?

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

theano - Theano は変数分割をサポートしていますか?

私の Theano プログラムでは、テンソル行列を 2 つの部分に分割し、それぞれが誤差関数に異なる寄与をするようにしたいと考えています。自動微分がこれをサポートしているかどうか、誰にも教えてもらえますか?

たとえば、テンソル行列変数 M を M1=M[:300,] と M2=M[300:,] に分割したい場合、コスト関数は 0.5* M1 * w + 0.8*M2 として定義されます。 * w. T.grad(cost,w) でグラデーションを取得することはまだ可能ですか?

または、より具体的には、総コストへの貢献度が異なるさまざまな機能を持つオートエンコーダーを構築したいと考えています。

私の質問に答えてくれてありがとう。

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

neural-network - Autoencoders: トレーニングのアルゴリズムに関する論文と書籍

オートエンコーダーとオートエンコーダーのさまざまなトレーニング アルゴリズムに関する有名な研究論文や書籍はどれですか? 私は、オートエンコーダーのトレーニングに使用されるさまざまなトレーニング アルゴリズムの基礎を築く研究論文や書籍について話しています。

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

computer-vision - 画像分類のための畳み込みニューラル ネットワークのパラメーターをどのように決定しますか?

画像分類に畳み込みニューラル ネットワーク(特徴を検出するための教師なし特徴学習 + Softmax 回帰分類子) を使用しています。この分野の Andrew NG によるすべてのチュートリアルを確認しました。( http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial )。

私が開発したネットワークには次のものがあります。

  • 入力層 - サイズ 8x8 (64 ニューロン)
  • 隠れ層 - サイズ 400 ニューロン
  • 出力レイヤー - サイズ 3

スパースオートエンコーダーを使用して入力レイヤーを非表示レイヤーに接続する重みを学習したため、400 の異なる機能があります。

任意の入力画像 (64x64) から連続した 8x8 パッチを取得し、それを入力レイヤーに供給することで、サイズ (57x57) の 400 個の特徴マップを取得します。

次に、サイズ 19 x 19 のウィンドウで最大プーリングを使用して、サイズ 3x3 の 400 個の特徴マップを取得します。

この特徴マップをソフトマックス レイヤーにフィードして、3 つの異なるカテゴリに分類します。

隠れ層の数 (ネットワークの深さ) や層ごとのニューロンの数などのこれらのパラメーターは、すべての画像のサイズが 64x64 である 1 つの特定のデータセットで正常に使用されたため、チュートリアルで提案されました。

これを、画像がはるかに大きい(400x400など)独自のデータセットに拡張したいと思います。どうやって決めるの

  1. レイヤーの数。

  2. 層ごとのニューロンの数。

  3. プーリング ウィンドウのサイズ (最大プーリング)。

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

machine-learning - ディープ ビリーフ ネットワーク vs 畳み込みニューラル ネットワーク

私はニューラル ネットワークの分野に不慣れで、ディープ ビリーフ ネットワークと畳み込みネットワークの違いを知りたいです。また、Deep Belief と Convolutional Neural Nets を組み合わせた Deep Convolutional Network はありますか?

これが私が今まで集めてきたものです。間違っている場合は修正してください。

画像分類問題の場合、Deep Belief ネットワークには多くの層があり、それぞれが貪欲な層ごとの戦略を使用してトレーニングされます。たとえば、画像サイズが 50 x 50 で、4 層のディープ ネットワークが必要な場合

  1. 入力層
  2. 隠れ層 1 (HL1)
  3. 隠れ層 2 (HL2)
  4. 出力層

入力層と HL1 の間の重み (W1) をトレーニングするために、入力層には 50 x 50 = 2500 個のニューロン、HL1 = 1000 個のニューロン (たとえば)、HL2 = 100 個のニューロン (たとえば)、出力層 = 10 個のニューロンがあります。 AutoEncoder (2500 - 1000 - 2500) を使用して、サイズ 2500 x 1000 の W1 を学習します (これは教師なし学習です)。次に、最初の隠れ層を介してすべての画像をフィード フォワードして特徴セットを取得し、別のオートエンコーダー (1000 - 100 - 1000) を使用して次の特徴セットを取得し、最後にソフトマックス レイヤー (100 - 10) を使用して分類します。(最後の層 (HL2 - ソフトマックス層である出力) の重みのみを学習することは、教師あり学習です)。

(オートエンコーダーの代わりに RBM を使用できます)。

Convolutional Neural Networksを使用して同じ問題が解決された場合、50x50 の入力画像の場合、7 x 7 パッチのみを使用してネットワークを開発します (たとえば)。私のレイヤーは

  1. 入力層 (7 x 7 = 49 ニューロン)
  2. HL1 (25 の異なる特徴に対して 25 のニューロン) - (畳み込み層)
  3. プーリング層
  4. 出力層 (Softmax)

そして、重みを学習するために、サイズ 50 x 50 の画像から 7 x 7 のパッチを取得し、畳み込み層を介してフィード フォワードします。したがって、それぞれのサイズが (50 - 7 + 1) x (50 - 7) の 25 の異なる特徴マップを持つことになります。 + 1) = 44 x 44。

次に、プーリングハンドに11x11のウィンドウを使用するため、プーリングレイヤーの出力としてサイズ(4 x 4)の25個の機能マップを取得します。これらの特徴マップを分類に使用します。

重みを学習している間、私は Deep Belief Networks (教師なし学習) のようなレイヤーごとの戦略を使用しませんが、代わりに教師あり学習を使用して、すべてのレイヤーの重みを同時に学習します。これは正しいですか、それとも重みを学習する他の方法はありますか?

私が理解したことは正しいですか?

したがって、画像分類に DBN を使用する場合は、すべての画像のサイズを特定のサイズ (たとえば 200x200) に変更し、入力層にその数のニューロンを配置する必要がありますが、CNN の場合は、より小さなパッチでのみトレーニングします。入力 (サイズ 200x200 の画像の場合は 10 x 10 など) を入力し、学習した重みを画像全体に畳み込みますか?

DBN は CNN よりも優れた結果を提供しますか? それともデータセットに完全に依存していますか?

ありがとうございました。

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

python - Stacked DenoisingAutoencoders の Theano 実装 - dA レイヤーへの同じ入力はなぜですか?

http://deeplearning.net/tutorial/SdA.html#sdaのチュートリアル Stacked DenoisingAutoencodersでは、pretraining_functions は、各 dA レイヤーのトレーニング関数を表す関数のリストを返します。しかし、すべての dA レイヤーに同じ入力 ( ) を与える理由がわかりませんtrain_set_x。実際には、各 dA レイヤーの入力は、最初の dA レイヤーを除く下のレイヤーの出力である必要があります。これらのコードが正しい理由を誰か教えてもらえますか?

0 投票する
0 に答える
584 参照

machine-learning - 機械学習: オートエンコーダーでのシミュレーテッド アニーリング

単純な重み付けニューラル ネットワークのコスト関数を解決するためにシミュレーテッド アニーリングを実装しましたが、奇妙な結果が得られます。

論理:

  • Forward prop : f(W*x+b)、ここで、f = tanh、W = 重み行列、x = 入力データ、b = バイアス
  • 重みとバイアスは、rnd ガウス重みを使用してランダムに初期化されます
  • 重みとバイアスは W/norm2(W) & b/norm2(b) で正規化されます
  • W を perturb as: W +/- rnd_unif[0,1] & b に対して同じことを行う
  • MSE < 前の MSE が受け入れられる場合は、再び前方プロップ、そうでない場合はアニーリング基準を使用します
  • n 番目の受け入れごとに温度を更新します。一般的な T=T*0.9 を使用

発生しているように見えるのは、ネットワークが予想どおりにコストを削減するということですが、一部のエラー予測では、MSE が「通常の」状態の MSE よりも低くなります。backprop では、エラーの MSE が常に高いことがわかります。他の誰かが同じ問題に遭遇したのではないかと思っていました。

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」関数を使用して、モデルの出力を予測することもできます。

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

これどうやってするの?

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