タグ付けされた質問 「autoencoders」

独自の入力を再構築するようにトレーニングされたフィードフォワードニューラルネットワーク。通常、隠れ層の1つは「ボトルネック」であり、エンコーダー->デコーダーの解釈につながります。

2
オートエンコーダニューラルネットワークの起源は何ですか?
Google、Wikipedia、Google scholarなどで検索しましたが、オートエンコーダーの起源を見つけることができませんでした。おそらく、それは非常に徐々に進化した概念の1つであり、明確な出発点をさかのぼることはできませんが、それでも開発の主なステップの何らかの要約を見つけたいと思います。 オートエンコーダについての章イアン・グッドフェロー、ヨシュア・ベンジオとアーロンCourvilleの深い学習帳には言います: オートエンコーダーのアイデアは、数十年にわたりニューラルネットワークの歴史的景観の一部でした(LeCun、1987; Bourlard and Kamp、1988; Hinton and Zemel、1994)。従来、次元の削減または機能の学習にはオートエンコーダーが使用されていました。 パスカルビンセントによるこのプレゼンテーションは次のように述べています。 実際には、古典的なオートエンコーダーを使用したノイズ除去は、ホップフィールドネットワーク(Hopfield、1982)に代わるものとして、はるか以前に導入されました(LeCun、1987; Gallinari et al。、1987)。 これは、その前に「古典的なオートエンコーダー」が存在していたことを暗示しているようです。LeCunとGallinariはそれらを使用しましたが、発明しませんでした。1987年以前の「クラシックオートエンコーダー」の痕跡は見当たりません。 何か案は?


1
オートエンコーダーでReLUをアクティベーション機能として使用できますか?
ニューラルネットワークでオートエンコーダを実装する場合、ほとんどの人はシグモイドをアクティベーション関数として使用します。 代わりにReLUを使用できますか?(ReLUには上限に制限がないため、基本的に、シグモイドが使用されるときの自動エンコーダーの制限された基準とは異なり、入力画像は1より大きいピクセルを持つことができます)。

2
再構築とKL損失変分オートエンコーダーのバランス
顔のデータセットで条件付き変分オートエンコーダをトレーニングしています。KLL損失を再構成損失項に等しく設定すると、オートエンコーダーがさまざまなサンプルを生成できないようです。私はいつも同じタイプの顔が現れます: これらのサンプルはひどいです。ただし、KLL損失の重みを0.001減らすと、妥当なサンプルが得られます。 問題は、学習された潜在空間が滑らかでないことです。潜在補間を実行しようとしたり、ランダムサンプルを生成しようとしたりすると、迷惑になります。KLL項の重みが小さい(0.001)場合、次の損失動作が観察されます 。VLL損失(再構成項)が減少する一方で、KLLossは増加し続けることに注意してください。 潜在空間の次元も増やしてみましたが、うまくいきませんでした。 ここで、2つの損失項の重みが等しい場合、KLL項が支配的であるが、再構成損失の減少を許容しないことに注意してください。 これは恐ろしい再建をもたらします。これらの2つの損失項のバランスを取る方法、またはオートエンコーダがスムーズで補間的な潜在空間を学習して妥当な再構成を生成できるように、他に可能なことを提案しますか?

2
ガウス単位のKL損失
私はVAEを実装しており、単純化された一変量ガウスKL発散の2つの異なる実装がオンラインであることに気付きました。当たり、元発散ここでは、ある 我々は仮定した場合、当社の前単位ガウスすなわちあるμ2=0及びσ2=1、この簡素化まで KLのLO、S、S=-ログ(σ1)+σ 2 1 +μ 2 1KLloss=log(σ2σ1)+σ21+(μ1−μ2)22σ22−12KLloss=log⁡(σ2σ1)+σ12+(μ1−μ2)22σ22−12 KL_{loss}=\log(\frac{\sigma_2}{\sigma_1})+\frac{\sigma_1^2+(\mu_1-\mu_2)^2}{2\sigma^2_2}-\frac{1}{2} μ2=0μ2=0\mu_2=0σ2=1σ2=1\sigma_2=1 KLloss=−1KLloss=−log(σ1)+σ21+μ212−12KLloss=−log⁡(σ1)+σ12+μ122−12 KL_{loss}=-\log(\sigma_1)+\frac{\sigma_1^2+\mu_1^2}{2}-\frac{1}{2} ここには、どこの混乱レストです。上記の実装でいくつかのあいまいなgithubリポジトリを見つけましたが、私がより一般的に使用しているのは次のとおりです。KLloss=−12(2log(σ1)−σ21−μ21+1)KLloss=−12(2log⁡(σ1)−σ12−μ12+1) KL_{loss}=-\frac{1}{2}(2\log(\sigma_1)-\sigma_1^2-\mu_1^2+1) の公式、例えばKerasのオートエンコーダチュートリアル。私の質問は、これらの2つの間に何が欠けているのですか?主な違いは、対数項に係数2を削除することと、分散を二乗しないことです。分析的に、私は後者を成功に導いてきました。助けてくれてありがとう!=−12(log(σ1)−σ1−μ21+1)=−12(log⁡(σ1)−σ1−μ12+1) =-\frac{1}{2}(\log(\sigma_1)-\sigma_1-\mu^2_1+1)

1
このオートエンコーダーネットワークを正しく機能させることができません(畳み込みレイヤーとmaxpoolレイヤーを使用)
オートエンコーダネットワークは、通常の分類子MLPネットワークよりも扱いにくいようです。ラザニアを数回使用した後、再構成された出力で得られるすべてのものが、入力桁が実際に何であるかを区別せずに、MNISTデータベースのすべての画像のぼやけた平均化に最もよく似ているものです。 私が選択したネットワーク構造は、次のカスケードレイヤーです。 入力レイヤー(28x28) 2Dたたみ込み層、フィルターサイズ7x7 最大プーリングレイヤー、サイズ3x3、ストライド2x2 高密度(完全に接続された)平坦化層、10ユニット(これがボトルネックです) 高密度(完全接続)レイヤー、121ユニット レイヤーを11x11に変形 2Dたたみ込み層、フィルターサイズ3x3 2Dアップスケーリングレイヤーファクター2 2Dたたみ込み層、フィルターサイズ3x3 2Dアップスケーリングレイヤーファクター2 2Dたたみ込み層、フィルターサイズ5x5 機能の最大プーリング(31x28x28から28x28へ) すべての2Dたたみ込み層には、バイアスが解除された、シグモイドアクティベーションと31のフィルターがあります。 完全に接続されたすべての層には、シグモイドアクティベーションがあります。 使用される損失関数は二乗誤差であり、更新関数はadagradです。学習用のチャンクの長さは100サンプルで、1000エポックに乗算されます。 以下は問題の説明です:上の行はネットワークの入力として設定されたいくつかのサンプルで、下の行は再構成です: 完全を期すために、私が使用したコードは次のとおりです。 import theano.tensor as T import theano import sys sys.path.insert(0,'./Lasagne') # local checkout of Lasagne import lasagne from theano import pp from theano import function import gzip import numpy as np from …

1
オートエンコーダーと畳み込みニューラルネットワークで学習したフィルターの違いは何ですか?
CNNでは、フィルターを学習して、畳み込み層に特徴マップを作成します。 Autoencoderでは、各レイヤーの単一の非表示ユニットをフィルターと見なすことができます。 これら2つのネットワークで学習されたフィルターの違いは何ですか?

1
ガウス混合モデルを使用した変分オートエンコーダ
変オートエンコーダ(VAE)は確率分布学習の方法を提供入力に関するその潜在表現に。特に、エンコーダーは入力を上の分布にマッピングします。典型的なエンコーダーは、ガウス分布を表すパラメーターを出力します ; この分布は、近似として使用されます。p (x 、z)p(バツ、z)p(x,z)バツバツxzzzeeeバツバツxzzz(μ 、σ)= e (x )(μ、σ)=e(バツ)(\mu,\sigma)=e(x)N(μ 、σ)N(μ、σ)\mathcal{N}(\mu,\sigma)p (z| x)p(z|バツ)p(z|x) 出力がガウスではなくガウス混合モデルであるVAEを検討した人はいますか?これは役に立ちましたか?これが単純なガウス分布よりもはるかに効果的なタスクはありますか?それともほとんどメリットがありませんか?

1
ディープネットワークの貪欲なレイヤー単位のトレーニングは、トレーニングを成功させるために必要ですか、それとも確率的勾配降下で十分ですか?
逆伝播のみを使用して(事前トレーニングなしで)最先端の結果を達成することは可能ですか? それとも、すべての記録を破るアプローチが何らかの形の事前トレーニングを使用するようにですか? 逆伝播だけで十分ですか?

2
スパースオートエンコーダー[ハイパー]パラメーター
Rでautoencoderパッケージを使い始めました。 autoencode()関数への入力には、ラムダ、ベータ、ロー、イプシロンが含まれます。 これらの値の境界は何ですか?アクティベーション機能ごとに異なりますか?これらのパラメーターは「ハイパーパラメーター」と呼ばれますか? スパースオートエンコーダーを想定すると、rho = .01はロジスティックアクティベーション関数に、rho =-。9は双曲線正接アクティベーション関数に適していますか? マニュアルでイプシロンが.001に設定されているのはなぜですか?私の記憶が正しければ、LeCunの「Efficient Backpropagation」では、ゼロにそれほど近い値ではない開始値を推奨しています。 ベータの「良い」値はどのくらい重要ですか? 隠れ層のヌエロンの数を選択するための「経験則」はありますか?たとえば、入力層にN個のノードがある場合、非表示層のに2N個のヌロンを含めるのは妥当ですか? オートエンコーダの実際の使用に関するいくつかの文献をお勧めできますか?

2
なぜオートエンコーダデコーダは通常、エンコーダとは逆のアーキテクチャなのですか?
私が見たすべてのオートエンコーダアーキテクチャは、主にデコーダがエンコーダの逆にすぎないという同様のアーキテクチャを持っています。オートエンコーダの目的が低次元の特徴学習である場合、なぜデコーダは単純ではないのですか?例は線形変換ですFWFWFWここで、は観測値による特徴行列(つまり、ボトルネック)であり、は学習された重み行列で、を元の入力特徴サイズにマップします。複数の隠れ層を持つディープオートエンコーダーの場合、上記の例のデコーダーは、エンコーダーと比較して容量が低くなります。FFFんんnfffWWWFFF 私の直感は次のとおりです。 デコーダーがシンプルな場合、自動エンコーダーはボトルネックでより高品質の機能を学習して強制的に補正します。逆に、デコーダーの表現能力が高い場合、学習不足のボトルネックを出力の再構成に効果的にマッピングできます。この場合、再構成エラーは低くなる可能性がありますが、必ずしも学習された機能が実際に優れているという意味ではありません。 私のアプリケーション(グラフでの機能学習)では、単純なデコーダーの方が、エンコーダーをミラーリングしたデコーダーよりも学習機能が優れていることがわかりました。この著者のように非常に単純なデコーダを有するグラフオートエンコーダを設計紙、再構成されたグラフの隣接マトリックスであり、学習地物行列であり、はReLUのような非線形変換です。あ^= σ(ZZT)あ^=σ(ZZT)\hat{A} = \sigma(ZZ^T)あ^あ^\hat{A}ZZZσσ\sigma 私はしばらくの間、この質問への回答を何度も探していましたが、なぜ大容量のデコーダーが低容量のデコーダーよりも望ましいのか(またはその逆も)、説明や理論上の結果は見つかりませんでした。 )。誰かが説明を提供したり、正しい方向に向けてくれたりしたら、感謝します。

2
オートエンコーダーは距離を維持しますか?
私の理解に基づいて、オートエンコーダを使用して、重要な基本情報を含む入力機能のコンパクトな表現を見つけます。 元の入力空間のL2距離と縮小(コンパクト)空間の間に関係はありますか?そうでない場合、コンパクトな表現が変換後の距離を維持するようにネットワークをトレーニングできますか?

1
非線形次元削減:幾何学的/トポロジーアルゴリズムと自動エンコーダ
私が理解しているように、非線形次元削減には3つの主要なアプローチがあります。 多様体学習(ISOMAP、LLE、LTSAなどの幾何学的/トポロジーアルゴリズム) オートエンコーダー 最初の2つのカテゴリに当てはまらないもの(確率に基づくt-SNE、カーネルPCAなど) 最初の2つのアプローチの利点と欠点は何ですか? オートエンコーダーが、ディープラーニングのようなマニホールドラーニングを完全に上回って、パフォーマンスの点でほとんどの機械学習アルゴリズムに影を落とすのではないでしょうか。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.