画像データマトリックスがあります どこ 画像の例の数であり、 画像のピクセル数です。 、各画像は3チャンネルであるため 画像。さらに、50000の画像のそれぞれは、10の可能なクラスの1つに属しています。つまり、クラス ' car
'の5000個の画像、クラス ' 'の5000個の画像bird
などがあり、合計10個のクラスがあります。これはCIFAR-10データセットの一部です。
ここでの最終的な目標は、このデータセットで分類を実行することです。この目的のために、教授はこれについてPCAを試し、それらの機能を分類子に配置することを述べました。私の分類子として、1つの非表示レイヤーとsoftmax出力を持つ完全に接続されたニューラルネットワークを使用しています。
私の問題は、私がPCAを正しい方法で実行したと信じていることですが、私の方法が誤って適用されている可能性があると思います。
これは私がやったことです:
私のデータのPCAを計算するために、これは私がこれまでに行ったことです:
まず、平均画像を計算します 。しましょう なる の行 。そして、
共分散行列を計算する 私の画像データの:
の固有ベクトル分解を実行します 、降伏 、 、および 、ここで行列 主方向(固有ベクトル)を列としてエンコードします。(また、固有値がすでに降順で並べ替えられていると仮定します)。したがって:
最後に、PCAを実行します。つまり、新しいデータ行列を計算します。 、 どこ にしたい主成分の数です。しましょう -つまり、最初のものだけの行列 列。したがって:
質問:
私がこのデータに対してPCAを実行する私の方法は誤って適用されていると思います。私がそれを行った方法で、私は基本的に私のピクセルを相互に無相関化することになるからです。(私が設定したと仮定します)。つまり、結果の行多かれ少なかれノイズのように見えます。その場合、私の質問は次のとおりです。
- ピクセルの相関を本当に解除しましたか?つまり、将来の分類子が使用することを望んでいた可能性のあるピクセル間の結合を実際に削除しましたか?
- 上記の答えが正しい場合、なぜこの方法でPCAを実行するのでしょうか?
- 最後に、最後の点に関連して、画像でPCAを介して次元削減をどのように実行しますか。
編集:
さらに調査し、多くのフィードバックを行った後、質問を次のように絞り込みました。画像分類の前処理ステップとしてPCAを使用する場合、それはより良い方法です。
- 画像のk主成分で分類を実行しますか?(マトリックス 上記では、各画像は長さになります オリジナルの代わりに )
- または、k固有ベクトルから再構成された画像に対して分類を実行する方が良い(これは、なので、各画像はまだオリジナルのままです 長さから、それは実際にから再構築されました 固有ベクトル)。
経験的に、PCAを使用しない場合の検証精度> PCA再構成を使用した検証精度> PCA PCを使用した検証精度。
以下の画像は、同じ順序でそれを示しています。0.5> 0.41> 0.31検証精度。
長さの生のピクセル画像のトレーニング :
長さの画像のトレーニング しかし、k = 20の固有ベクトルで再構築されます。
そして最後に、$ k = 20主成分自体のトレーニング*:
このすべてが非常に光っています。私が見つけたように、PCAは主要なコンポーネントが異なるクラス間の境界を容易にすることを保証しません。これは、計算された主軸が、画像クラスにとらわれず、すべての画像にわたって投影のエネルギーを最大化しようとするだけの軸であるためです。対照的に、実際の画像は、忠実に再構築されているかどうかにかかわらず、分類を可能にするための、または実行する必要がある空間的な差異のいくつかの側面を維持しています。