スパースコーディングは、入力ベクトル(<-なぜこれが必要なのか)を表すために、基底ベクトルの過剰なセットを学習することと定義されます。スパースコーディングとオートエンコーダーの違いは何ですか?スパースコーディングとオートエンコーダを使用するのはいつですか?
スパースコーディングは、入力ベクトル(<-なぜこれが必要なのか)を表すために、基底ベクトルの過剰なセットを学習することと定義されます。スパースコーディングとオートエンコーダーの違いは何ですか?スパースコーディングとオートエンコーダを使用するのはいつですか?
回答:
モデルを見ると、違いを見つけることができます。最初にスパースコーディングを見てみましょう。
スパースコーディングは、目的を最小化します ここで、は基底行列、Hはコード行列、Xは表現したいデータの行列です。\ lambdaは、スパース性と再構築のトレードオフを実装します。Hが与えられた場合、最小二乗法によるWの推定は簡単です。 WXλHW
ただし、最初はがありません。しかし、Hに関する上記の目的を解決できる多くのアルゴリズムが存在します。実際、これが推論の方法です。見えないxに属するhを知りたい場合、最適化問題を解く必要があります。
自動エンコーダーは、教師なしニューラルネットワークのファミリーです。それらは非常に多くあります。たとえば、深い自動エンコーダー、または異なるノイズ除去、収縮、スパースなどの異なる正則化トリックを備えたものです。生成確率ネットワークや変分オートエンコーダーなどの確率論的なものも存在します。最も抽象的な形式は が、今のところはもっと単純な ここで、はロジスティックシグモイドなどの非線形関数です。
そのノート見えるほとんどのよう我々が設定されたら、。両者の違いは、i)自動エンコーダーは一般的な形式でスパース性を促進しないことです。ii)自動エンコーダーはコードを見つけるためにモデルを使用しますが、スパースコーディングは最適化によってそうします。
自然画像データの場合、正規化された自動エンコーダーとスパースコーディングは、非常によく似たを生成する傾向があり。ただし、自動エンコーダははるかに効率的で、はるかに複雑なモデルに簡単に一般化できます。たとえば、デコーダーは高度なニューラルネットワークなど、高度に非線形にすることができます。また、一方が(の推定れた二乗損失に関連付けられていないため依存しています。)
また、正則化の異なる方法は、異なる特性を持つ表現をもたらします。自動エンコーダーのノイズ除去は、特定の形式のRBMなどと同等であることが示されています。
予測の問題を解決する場合、ラベル付きデータが少なく、ラベルなしデータが多い場合を除き、自動エンコーダーは必要ありません。その後、一般的に、ディープオートエンコーダをトレーニングし、ディープニューラルネットをトレーニングするよりも線形SVMを上に配置した方がよいでしょう。
ただし、それらは分布の特性をキャプチャするための非常に強力なモデルです。これはあいまいですが、これを困難な統計的事実に変える研究が現在行われています。深い潜在的なガウスモデル、つまり変分オートエンコーダーまたは生成確率ネットワークは、基礎となるデータ分布を証明できるオートエンコーダーを取得する非常に興味深い方法です。
神経科学では、神経コーディングという用語は、刺激によって誘発されるニューロンの電気的活動のパターンを指すために使用されます。順番にスパースコーディングはパターンの一種です。刺激(イメージなど)が比較的少数のニューロンの活性化を誘発する場合、コードはまばらであると言われ、それらは組み合わされてまばらな方法で表されます。機械学習では、スパースコードモデルの作成に使用したのと同じ最適化制約を使用して、スパースオートエンコーダを実装できます。スパースオートエンコーダは、スパース制約でトレーニングされた通常のオートエンコーダです。各質問の詳細な説明を以下に示します。
スパースコーディングは、入力ベクトルを表すために基底ベクトルの過剰なセットを学習することとして定義されます(<-なぜこれが必要なのか)
第一に、少なくとも(Hubel&Wiesel、1968) V1領域には、エッジのような刺激に最大限反応する特定の細胞があることが知られています(他の「有用な」特性を備えています)。スパースコーディングは、このシステムで観察される多くの特性を十分に説明するモデルです。詳細については、(Olshausen&Field、1996)を参照してください。
第二に、スパースコーディングを記述するモデルは、機械学習での特徴抽出に有用な手法であり、転送学習タスクで良い結果が得られることが示されています。Raina et al。(2007)は、手書き文字で構成されるトレーニングセットで学習した一連の「基底ベクトル」(ペンストロークおよびエッジとしての機能)により、手書き数字認識タスクの分類が改善されることを示しました。後のスパースコーディングベースのモデルは、「ディープ」ネットワークのトレーニングに使用され、スパースフィーチャ検出器のレイヤーを積み重ねて「スパースディープビリーフネット」を作成しました(Lee et al。、2007)。より最近では、スパースコーディングベースのモデルを使用していくつかのレイヤー(有名な「Google Brain」)でネットワークを構築し、純粋に教師なしで猫の画像を区別できる驚くべき結果が得られました(Le et al。 、2013)。
第三に、学習した基礎を使用して圧縮を実行することはおそらく可能です。しかし、実際にそれをしている人は誰もいません。
スパースコーディングとオートエンコーダーの違いは何ですか?
オートエンコーダーは、通常何らかの制約を使用して、入力を再構築しようとするモデルです。ウィキペディアによると、「効率的なコーディングを学習するために使用される人工ニューラルネットワーク」です。オートエンコーダの定義には、スパース性が必要なものは何もありません。スパースコーディングベースの制約は利用可能な手法の1つですが、他にもノイズ除去オートエンコーダー、収縮オートエンコーダー、RBMなどがあります。すべては、ネットワークに入力の適切な表現を学習させます(これは一般に「スパース」でもあります)。
スパースコーディングとオートエンコーダを使用するのはいつですか?
おそらく、深層ネットワークの特徴抽出や事前トレーニングに自動エンコーダーを使用することに興味があるでしょう。スパース制約を使用してオートエンコーダを実装する場合、両方を使用します。
スパースコーダーは、オートエンコーダーの半分のようなものです。自動エンコーダーは次のように機能します。
input => neural net layer => hidden outputs => neural net layer => output
逆伝播の場合、エラー信号、損失は次のとおりです。入力-出力
非表示出力にスパース性制約を適用すると、ほとんどがゼロになり、いくつかは1になります。次に、2番目の層は基本的に線形基底関数のセットであり、隠された出力のどれが1であるかに応じて加算されます。
スパースコーディングでは、この後半のみがあります。
codes => neural net layer => output
「コード」は実数の集まりであり、ニューラルネットレイヤーの重みで表される基底関数を選択します。オルスハウゼンの論文では、スパース制約をコードに適用しているため、コードはスパース自動エンコーダーと同様にスパースです。
ここで明確にわかる違いは、スパースコーディングの場合、ニューラルネットワークの前半が存在しないことです。コードは、ニューラルネットによって自動的に提供されません。
スパースコーディングでコードを取得するにはどうすればよいですか?勾配降下法などを使用して最適化する必要があり、入力画像に一致する出力を最適に提供するコードのセットを見つけます。毎回、すべてのテストイメージを含むすべてのイメージに対してこれを行う必要があります。
これとまったく同じトピックに関する最近の論文https://arxiv.org/abs/1708.03735v2を読むことをお勧めします。この論文では、グラウンドトゥルースディクショナリがオートエンコーダの2乗損失関数の重要なポイントになるようにオートエンコーダを設定できることを著者は示しています。