スパースオートエンコーダー[ハイパー]パラメーター


8

Rでautoencoderパッケージを使い始めました。

autoencode()関数への入力には、ラムダ、ベータ、ロー、イプシロンが含まれます。

これらの値の境界は何ですか?アクティベーション機能ごとに異なりますか?これらのパラメーターは「ハイパーパラメーター」と呼ばれますか?

スパースオートエンコーダーを想定すると、rho = .01はロジスティックアクティベーション関数に、rho =-。9は双曲線正接アクティベーション関数に適していますか?

マニュアルでイプシロンが.001に設定されているのはなぜですか?私の記憶が正しければ、LeCunの「Efficient Backpropagation」では、ゼロにそれほど近い値ではない開始値を推奨しています。

ベータの「良い」値はどのくらい重要ですか?

隠れ層のヌエロンの数を選択するための「経験則」はありますか?たとえば、入力層にN個のノードがある場合、非表示層のに2N個のヌロンを含めるのは妥当ですか?

オートエンコーダの実際の使用に関するいくつかの文献をお勧めできますか?

回答:


10

このautoencoderパッケージは、Andrew Ngのクラスノートで説明されているオートエンコーダの実装にすぎません。これは、さらに読むための出発点として最適です。今、あなたの質問に取り組むために


学習アルゴリズムが自動的に計算するパラメータと、その学習プロセスを制御し、学習アルゴリズムに提供する必要があるハイパーパラメータを 区別する場合があります。ハイパーパラメータには魔法の値がないことを理解することが重要です。最適な値は、モデル化するデータによって異なります。データでそれらを試す必要があります。

a)ラムダ()は、バックプロパゲーション中に重みがどのように更新されるかを制御します。モデルの出力とグラウンドトゥルースの差に基づいて重みを更新するだけでなく、コスト関数には大きな重み(実際にはすべての重みの2乗値)にペナルティを課す項が含まれます。ラムダは、このペナルティ項の相対的な重要性を制御します。このペナルティ項は、重みをゼロにドラッグする傾向があり、過剰適合を回避するのに役立ちます。λ

b)Rho(とbeta β)はスパース性を制御します。Rhoは、隠れたユニットの予想される活性化です(トレーニングセット全体で平均化)。表現は、それが小さくなるにつれて、よりまばらになります。このまばらさはバイアス項を調整することによって課せられ、ベータ版はその更新のサイズを制御します。(実際には、βは全体的な学習率αを再スケーリングするだけのようです。)ρββα

c)イプシロン(は、N 0 ϵ 2からランダムに描画される初期の重み値を制御します。εN0ε2

rho値は、どちらもアクティベーション関数の範囲の下限に近いため、不合理に見えません(ロジスティックの場合は0から1、tanhの場合は-1から1)。ただし、これは明らかに、必要なスパース性の量と、使用する隠しユニットの数にも依存します。


メートル1/2メートル


隠しユニットの数を選択するための「経験則」はたくさんあります。あなたの最初の推測(2x入力)はそれらのほとんどと一致しているようです。とはいえ、これらの推定値は推定値よりはるかに当て推量です。あなたが処理能力を持っていると仮定すると、私はより多くの隠されたユニットの側に誤りを犯し、低いrho値でスパース性を強制します。
オートエンコーダーの明らかな用途の1つは、他の学習アルゴリズム用のよりコンパクトな特徴表現を生成することです。生の画像には数百万のピクセルが含まれている可能性がありますが、(スパース)オートエンコーダはそれをはるかに小さなスペースで表すことができます。Geoff Hinton(および他の人)は、それらが後続の分類に役立つ機能を生成することを示しました。一部のディープラーニング作業では、オートエンコーダーなどを使用してネットワークを事前トレーニングします。ビンセント等。オートエンコーダを直接使用して分類を実行します。

簡潔なフィーチャー表現を生成する機能は、他のコンテキストでも使用できます。以下は、オートエンコーダによって生成された状態を使用して、Atariゲームで強化学習アルゴリズムを導く、きちんとした小さなプロジェクトです。

最後に、人はまた、雑音の多いまたは劣化入力を再構築するためにオートエンコーダを使用することができるので、同様に有用最後に、それ自体のあり得ます。


ありがとう。それではbeta = 6autoencoder例のコードにどうやって入るのでしょうか?
電源

1
αββ=6

1
受け入れてくれてありがとう!仕事でも似たようなことを考えていて、書くのが楽しかったです。将来的には、小さな質問をする方が幸運になるかもしれません(たとえば、範囲、開始値、および非表示の単位について個別に尋ねます)。人々は10分でノックアウトできる答えが好きなようです。
Matt Krause 14年

ええ、理にかなっています。特に、仕事で10分のダウンタイムしかない場合。
電源

2

Matt Krauseの回答の一部は正しくないようです(ラムダとベータ)。また、イプシロンについては言及されていません。実際にはこの投稿はコメントであるはずですが、評判が50に制限されているため、質問に回答しています。間違いがあったらコメントしてください。

http://web.stanford.edu/class/archive/cs/cs294a/cs294a.1104/sparseAutoencoder.pdfから ラムダは重みの減衰項であり、オーバーフィットする可能性があるため、重みを大きな値に到達させないようにします。重み減衰項(または重み正則化項)は、以下で説明するスパース項のようなコスト関数の一部です。

rhoは、非表示レイヤーでのアクティブ化の平均数を制御するスパース制約です。これは、入力ユニットに対して比較的多数の隠しユニットがある場合でもオートエンコーダを機能させるために含まれています。たとえば、入力サイズが100で非表示サイズが100以上(さらに小さいが100に近い)の場合、非表示ユニットは単位関数を学習できるため、出力を失うことなく構築できます。ベータは、コスト関数の一部であるスパース項の係数です。スパースタームの相対的な重要性を制御します。ラムダとベータは、コスト関数におけるそれらの項の相対的な重要性を指定します。

イプシロン(Andrew Ngと同じ表記法を使用している場合)は、入力にローパスフィルター効果があるホワイトニングプロセスの正則化パラメーターです。それは再建方法にいくつかの重要な影響を及ぼします。再構築ベースのモデルのリンクを確認してください。私は彼らが出力層に線形アクティベーションを使用し、ある種のホワイトニング(単変量機能)を使用したと思います。

パラメータ(重みとバイアス)の更新率は学習率と呼ばれ、一般的にetaで表されます。ただし、Andrew Ngによってアルファとして使用されています。最初のリンクを確認してください。


ε2
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.