最近、私はディープラーニングについて読んでいますが、用語(またはテクノロジー)について混乱しています。違いは何ですか
- 畳み込みニューラルネットワーク(CNN)、
- 制限付きボルツマンマシン(RBM)および
- 自動エンコーダー?
最近、私はディープラーニングについて読んでいますが、用語(またはテクノロジー)について混乱しています。違いは何ですか
回答:
Autoencoderは、出力ユニットが直接入力ユニットに直接接続される単純な3層ニューラルネットワークです。たとえば、次のようなネットワークで:
output[i]
バックにエッジがあるinput[i]
すべてのためにi
。通常、非表示のユニットの数は、表示される(入力/出力)ユニットの数よりもはるかに少なくなります。その結果、そのようなネットワークを介してデータを渡す場合、最初に入力ベクトルをより小さな表現に「フィット」するように圧縮(エンコード)し、次に再構築(デコード)を試みます。トレーニングのタスクは、エラーまたは再構成を最小限に抑えることです。つまり、入力データの最も効率的なコンパクトな表現(エンコード)を見つけます。
RBMも同様のアイデアを共有していますが、確率論的なアプローチを使用しています。決定論的(例:ロジスティックまたはReLU)の代わりに、特定の(通常はガウスのバイナリ)分布を持つ確率単位を使用します。学習手順は、ギブスサンプリング(伝播:可視性が与えられたサンプルの隠蔽、再構築:隠されたサンプルが可視化されたサンプル、繰り返し)のいくつかのステップで構成され、再構成エラーを最小限に抑えるために重みを調整します。
RBMの背後にある直感は、いくつかの目に見えるランダム変数(異なるユーザーからの映画レビューなど)といくつかの隠れた変数(映画のジャンルやその他の内部機能など)があり、トレーニングのタスクはこれら2つの変数セットが実際にどのようになっているかを見つけることです互いに接続されています(この例の詳細については、こちらを参照してください)。
畳み込みニューラルネットワークはこれら2つに多少似ていますが、2つのレイヤー間で単一のグローバルウェイトマトリックスを学習する代わりに、ローカルに接続されたニューロンのセットを見つけることを目的としています。CNNは主に画像認識で使用されます。それらの名前は「畳み込み」演算子または単に「フィルター」に由来します。つまり、フィルターは、たたみ込みカーネルを簡単に変更することで、複雑な操作を簡単に実行できます。ガウスぼかしカーネルを適用すると、滑らかになります。Cannyカーネルを適用すると、すべてのエッジが表示されます。Gaborカーネルを適用して、勾配機能を取得します。
(ここから画像)
畳み込みニューラルネットワークの目標は、定義済みのカーネルの1つを使用することではなく、データ固有のカーネルを学習することです。アイデアはオートエンコーダーやRBMと同じです-多くの低レベルの機能(ユーザーレビューや画像ピクセルなど)を圧縮された高レベルの表現(映画のジャンルやエッジなど)に変換します-ただし、重みは次のニューロンからのみ学習されます空間的に互いに近い。
3つのモデルにはすべて、ユースケース、長所と短所がありますが、おそらく最も重要な特性は次のとおりです。
UPD。
次元削減
その後、最も重要なコンポーネントが新しい基盤として使用されます。これらの各コンポーネントは、元の軸よりも優れたデータベクトルを記述する高度な機能と考えることができます。
ディープアーキテクチャ
ただし、新しいレイヤーを追加するだけではありません。各レイヤーで、前のものからのデータの可能な限り最高の表現を学習しようとします。
上の画像には、このような深いネットワークの例があります。通常のピクセルから始め、単純なフィルター、次に面要素、最後に顔全体に進みます!これがディープラーニングの本質です。
ここで、この例では画像データを使用して、空間的に近いピクセルのより大きな領域を順次取得していることに注意してください。同じように聞こえませんか?はい、それは深い畳み込みネットワークの例だからです。オートエンコーダーまたはRBMに基づいて、畳み込みを使用して局所性の重要性を強調します。そのため、CNNはオートエンコーダーやRBMとは多少異なります。
分類
ここで言及したモデルは、それ自体は分類アルゴリズムとして機能しません。代わりに、事前トレーニングに使用されます -低レベルで使いにくい表現(ピクセルなど)から高レベルの表現への変換を学習します。深い(またはそれほど深くない)ネットワークが事前トレーニングされると、入力ベクトルはより適切な表現に変換され、結果のベクトルは最終的に実際の分類器(SVMやロジスティック回帰など)に渡されます。上の画像では、一番下に実際に分類を行うコンポーネントがもう1つあることを意味します。
これらのアーキテクチャはすべて、ニューラルネットワークとして解釈できます。AutoEncoderとConvolutional Networkの主な違いは、ネットワークのハードワイヤリングのレベルです。たたみ込みネットはほとんどハードワイヤードです。畳み込み演算は、イメージドメインではほとんどローカルであるため、ニューラルネットワークビューの接続数がはるかに少なくなります。画像領域でのプーリング(サブサンプリング)操作も、神経領域でのニューラル接続のハードワイヤードセットです。ネットワーク構造に対するこのようなトポロジの制約。このような制約が与えられると、CNNのトレーニングは、この畳み込み演算に最適な重みを学習します(実際には複数のフィルターがあります)。CNNは通常、畳み込み制約が適切な仮定である画像および音声タスクに使用されます。
対照的に、オートエンコーダーはネットワークのトポロジについてほとんど何も指定しません。より一般的です。アイデアは、入力を再構築するための適切なニューラル変換を見つけることです。これらは、エンコーダー(入力を非表示層に投影)とデコーダー(非表示層を出力に再投影)で構成されます。隠れ層は、潜在的な特徴または潜在的な要因のセットを学習します。リニアオートエンコーダは、PCAと同じサブスペースにまたがっています。データセットが与えられると、彼らはデータの基礎パターンを説明するための基礎の数を学びます。
RBMはニューラルネットワークでもあります。しかし、ネットワークの解釈はまったく異なります。RBMは、ネットワークをフィードフォワードではなく、隠れ変数と入力変数の同時確率分布を学習するという2部グラフとして解釈します。それらはグラフィカルモデルとして表示されます。AutoEncoderとCNNの両方が決定論的な関数を学習することに注意してください。一方、RBMは生成モデルです。学習した隠された表現からサンプルを生成できます。RBMをトレーニングするためのさまざまなアルゴリズムがあります。ただし、一日の終わりに、RBMを学習した後、そのネットワークの重みを使用して、それをフィードフォワードネットワークとして解釈できます。
RBMについてはあまり説明できませんが、オートエンコーダーとCNNは2つの異なる種類のものです。オートエンコーダーは、教師なしでトレーニングされるニューラルネットワークです。オートエンコーダの目標は、データを対応するコンパクトな表現に変換するエンコーダと、元のデータを再構築するデコーダを学習することにより、データのよりコンパクトな表現を見つけることです。オートエンコーダー(および元はRBM)のエンコーダー部分は、より深いアーキテクチャーの適切な初期重みを学習するために使用されてきましたが、他のアプリケーションもあります。基本的に、自動エンコーダーはデータのクラスタリングを学習します。対照的に、CNNという用語は、データから特徴を抽出するために畳み込み演算子(多くの場合、画像処理タスクに使用される場合は2D畳み込み)を使用するニューラルネットワークのタイプを指します。画像処理、フィルター、画像と複雑に絡み合っているものは、手元のタスク、たとえば分類タスクを解決するために自動的に学習されます。トレーニング基準が回帰/分類(教師あり)か再構成(教師なし)かは、アフィン変換の代替としての畳み込みの概念とは無関係です。CNNオートエンコーダーを使用することもできます。