ニューラルネットワークはどのように画像を認識しますか?


25

Neural Networkが画像認識でどのように機能するかを学習しようとしています。私はいくつかの例を見て、さらに混乱しました。20x20画像の文字認識の例では、各ピクセルの値が入力レイヤーになります。だから400ニューロン。次に、ニューロンの隠れ層と26個の出力ニューロン。その後、ネットワークをトレーニングすると、完全ではなく機能します。

ニューラルネットワークについて私を混乱させたのは、画像の中にあるものについて学習する方法です。何らかの方法でネットワークが画像の比較と認識を学習するために、しきい値処理、セグメンテーション、または測定を行う必要はありません。今では魔法のようです。ニューラルネットワークの学習を開始する場所


1
私が正しく理解していれば、ニューラルネットワークは抽象的な空間の多次元表面にすぎず、局所的な極端な可能性によって選択が可能になります。ニューラルネットワークを教えることは、この抽象的な表面をタスクに調整することです。それは私の初心者の理解です。

それでは、NNでの作業を開始するための説明またはリソースが必要ですか?明確にするとよいでしょう。

2
(現在)コースラには、あなたの質問専用の素敵な無料コースがあります。 coursera.org/course/neuralnets
pat

Coursera NNクラスは上級者向けのように見えますが、入門ほどではありません。Andrew Ngには、例えばYoutubeで見つけることができる穏やかな紹介があります。
ダグラスザレ

実際、Courseraコースは進歩しますが、確実に構築され、OPの質問に非常によく答えます。数字認識の例もたくさんあります。
クリスA.

回答:


24

1980年代に福島邦彦教授がネオコグニションについて研究した際に、ニューラルネットワークが画像データのように複雑なものを分類する方法を学習する方法についての大きな洞察が、ほんの一例と正しい答えを与えられて私に思いつきました。ネットワークに多数の画像を表示し、逆伝播を使用してそれ自体で物事を把握するのではなく、別のアプローチを取り、ネットワークをレイヤーごと、さらにはノードごとにトレーニングしました。彼はネットワークの各ノードのパフォーマンスと動作を分析し、意図的に応答するように意図的にそれらの部分を修正しました。

たとえば、ネットワークでラインを認識できるようにしたいと考えていたため、特定のレイヤーとノードを訓練して、3ピクセルの水平ライン、3ピクセルの垂直ライン、あらゆる角度での特定の対角線のバリエーションを認識しました。これを行うことで、彼は、ネットワークのどの部分が目的のパターンが存在したときに起動するかを正確に知っていました。次に、各層が高度に接続されているため、ネオコグニトロン全体が、物理的にどこに存在していても、画像に存在する各複合パーツを識別できます。そのため、特定のラインセグメントが画像のどこかに存在する場合、起動する特定のノードが常に存在します。

この状況を常に維持しながら、二乗誤差の合計を介して単純に式(または線)を見つける線形回帰を検討してください。曲線の「線」を見つけるために、x ^ 2またはx ^ 3またはさらに高次の多項式のいくつかのパラメーターを追加することを除いて、同じ積和計算を行うことができます。これで、ロジスティック回帰分類器ができました。この分類子は、本質的に線形ではない関係を見つけることができます。実際、ロジスティック回帰は任意に複雑な関係を表すことができますが、データを予測する上で適切な仕事をするためには、適切な数のパワー機能を手動で選択する必要があります。

ニューラルネットワークを考える1つの方法は、最後の層をロジスティック回帰分類器と見なすことです。そして、隠された層は自動「機能セレクタ」と考えることができます。これにより、入力フィーチャの正しい数とパワーを手動で選択する作業が不要になります。したがって、NNは自動パワーフィーチャセレクターになり、線形または非線形の関係を見つけるか 、任意の複雑なセットの分類子として機能します**(これは、学習する必要があるモデル)。最終的に、正常に機能するNNは、入力と出力の間の「関係」だけでなく、その代わりに抽象化またはモデルを追求することが期待されます。よく一般化します。

経験則として、ニューラルネットワークは、合理的に知的な人間が理論的には同じデータから十分な時間を与えられて学習できなかったものを学習することはできませんが、

  • まだ誰も理解していない何かを学ぶことができるかもしれません
  • 大規模な問題の場合、ニューラルネットワークを処理するコンピューターのバンクは、人々のチームよりもはるかに高速に(非常に低コストで)本当に優れたソリューションを見つけることができます。
  • いったんトレーニングされたNNは、トレーニングされた入力を使用して一貫した結果を生成し、適切に調整された場合は適切に一般化する必要があります
  • NNは退屈したり、気が散ったりすることはありません

1
最後のレイヤーが非表示レイヤーのフィーチャ選択の上でロジスティック回帰を行う方法についての段落の+1。これは、NNについて考える良い方法です。
jlund3

感謝しますが、すべてのANNの最後の層が実際にロジスティック回帰層であると正確に言っているのではなく、これが多くの問題を解決できる1つの可能な構成であることを明確にする必要があります。ほとんどランダムな方法であるため、通常、ANNのトレーニングでは、結果として生じる回帰が非常にランダムな方法で多くのノードとレイヤーに分散されます。特定の方法で応答するようにサブネットワークをトレーニングし、それらの出力を回帰層にポンプで送り、特定の問題に特化したネットワークを手作りすることができます。ANNのメモリと速度を非常に効率的にします。
mcstar

1
この答えはビューを取得し続けるので、私はそれが今5歳以上であり、フィードフォワード完全に接続されたネットワークのみを考慮すると指摘したいと思いました。ここでの概念的洞察はまだ有効ですが、過去10年間で標準になったNNの深い概念を実践者に十分に理解させることはできません。CNN(コンボリューションニューラルネットワーク)は、エッジ、コントラスト、シャープネス、色空間、シャドウなどを特定し、それを使用して低レベルの機能のコンテキストを決定できるようにすることで、ディープネットワークに超能力を与える非常に重要な最新の適応です。
mcstar

10

ニューラルネットワークは「汎用関数近似器」であると言われたことがあるかもしれません。本質的に、サイベンコの定理によれば、実数を実数にマッピングする関数については、シグモイド活性化関数を持つニューラルネットワークで近似することができます。実際、ニューラルネットワークを使用すると、チューリングマシンで計算可能な任意の関数(つまり、計算するアルゴリズムを記述できるもの)を計算できることがわかります。残念ながら、これらの証明は、ニューロンと重みのいくつかの有限構成については、任意の関数を近似できるとのみ述べています。

理論はすばらしく巧妙ですが、あなたの質問は、ある関数の計算をニューロンと重みのセットに実際にエンコードする方法に沿っているようです。説明のために、単純な例-排他的ORを考えてみましょう。XORは2つの入力を受け取り、それらの入力を渡します。入力の1つだけがアクティブ化されると、出力ノードがアクティブ化されます。両方の入力がアクティブ化されているか、アクティブ化されていない場合、出力ノードはアクティブ化されません。

ウィキペディアから借用したXORを計算できる3層のパーセプトロンネット。

3つの非表示ノードが異なることを行うことに注意してください。左端と右端のノードは、入力ノードのアクティベーションを尊重するだけで通過します。中間のニューロンは2つの入力を受け取り、両方がオンの場合は何らかの方法でそれらを無効にします。入力のこの巧妙な結合と再結合は、基本的にニューラルネットワークでの作業の実行方法です。

明らかに、より複雑な関数の場合、結合と再結合はより巧妙で複雑な方法で実行する必要がありますが、これは本質的に低レベルで行われることです。クレイジーなことは、これが計算可能な関数を計算するために本当に必要なすべてであるということです!繰り返しますが、チューリングマシンも一見シンプルになります...

問題は、任意の関数を計算するニューラルネットワークを魔法のように生成する方法が実際にはないことです。証明は、それを実行できるネットワークがあることを示しています。ニューラルネットワークをトレーニングするとき、単に非常に近いネットワークを見つけようとしています。

画像認識のコンテキストでは、ネットワークへのエンコードパターンを想像できます。たとえば、番号「1」を認識するために、ピクセルの列がほとんどまたはすべてアクティブになり、隣接するピクセルがオフになることを期待する非表示のノードを想像できます。この隠されたノードは、その特定の列の直線を認識するのにかなり適している可能性があります。これらを十分に組み合わせて、すぐに画像の十分な場所でそれを行うノードの束を手に入れ、ネットワークを表示すると、十分な直線の非表示ノードがアクティブになり、「1」を示します。問題は、ネットワークを一般化して、さまざまな入力セットを認識できるようにすることです。

ニューラルネットワークが計算を実行する方法の概念を多かれ少なかれ理解するのに役立つことを願っています。ただし、ニューラルネットワークについてかなり重要な点にぶつかった:一般に、ネットワークが特定の出力を吐き出す理由を理解することは一般的によくない。特に画像認識のようなものについては、ネットワークは一般に人間が機械の各可動部分を理解するのに苦労するのに十分な大きさです。さらに問題を複雑にしているのは、一般に、ほとんどのニューラルネットワークには、実際にネットワークがデータについて学習できる小さな機能ごとに1つの隠れノードがないことです。代わりに、数字の「1」を分類するために直線のようなものを検出することは、多くの隠されたノード上で非集中的な方法で行われます。その他のアルゴリズム、

もっと読みたい場合は、ai junkieでこのチュートリアルを読むことを強くお勧めします。ニューラルネットワークの仕組みの基本を説明し、ニューラルネットワークを使用してタンクを目標に向かって動かす簡単なコード例を示します。ただし、このチュートリアルでは、ニューラルネットワークをトレーニングする最も一般的な方法である逆伝播については説明しません。代わりに、単純な遺伝的アルゴリズムを使用します。彼が遺伝学について話し始めたら、読むのをやめることができると思います...


これらのすべての言葉と考えをまとめるためのすべての時間と努力に感謝します。特に画像認識の畳み込みニューラルネットワークに興味があります。OpenCVライブラリで顔検出の例を試しましたが、剛体オブジェクトにしか向いていないことがわかりました。ニューラルネットワークにはパターン認識に同様の制限がありますか?
user1731927

NN(またはその点でCNN)のパターン認識に制限がある理論上の理由はありませんが、既に発見したように、特定の問題は他の問題よりも学習しやすいです。機械学習の多くの問題と同様に、解決しようとしている特定のタイプの問題でうまくいくように、モデルを少し調整する必要があるでしょう。NNも例外ではありません。
jlund3

1
これは、画像分類などの2Dグリッドの問題を解決するためにNNをより適切に構成する方法に関する興味深い論文です。axon.cs.byu.edu/~martinez/classes/678/Papers/science.pdf
jlund3

1
接線方向では、「非剛体」視覚オブジェクト、または別の言い方をすれば、エッジがきれいな線を持たないオブジェクトを正しく分類することが困難であることが、まさにカモフラージュが優れた回避戦略であると判断した理由です。思考の糧。
mcstar

2

混乱したのは

画像の内容についてどのように学習するか。

画像にあるものは、画像のピクセルの値によってデジタルで表されます。画像の色の例をご覧ください。ピクセルには3つの値があり、それぞれ3つの主要な色-赤、緑、青(RGB)です。(10,50,100)のあるピクセルは、(40,50,100)のあるピクセルよりも「少ない」青色要素を持っていることを意味します。したがって、画像内の最初のピクセルは、青色が少ない領域を表します。これは、ニューラルネットワークが画像のある場所/領域から別の場所/領域まで学習し、最終的に画像の内容を「知る」情報です。同じ原理が、ニューラルネットワークへの入力として使用される可能性のある他の画像機能(色以外)にも適用されます。参照してください。この、及びこれを基本的な画像の概念のために、その後に移動し、この ニューラルネットワークの仕組みを学習します。


1

機械学習の問題はすべて同じです。いくつかのトレーニングデータがあり、このデータを表すモデルを学習し、さまざまなアルゴリズムでクラスター化、分類、学習する方法でこの知識を一般化することができます。

画像認識では、学習したい画像のセットが再びあります。

  1. これらの画像は最初に処理され、ピクセルとその値を使用するように、いくつかの特徴が画像(SIFT、Bag of WORDSなどの可能な画像特徴スキームのロット)から抽出されます。
  2. これらの画像に対応する特徴ベクトルをMLアルゴリズム(ニューラルネットワーク、SVMなど)に与えます。
  3. モデルを学ぶ
  4. このモデルを使用して、トレーニングデータで十分に見られるオブジェクトを認識します。

複数のものを認識したい場合は、それぞれに複数の分類器を使用します。


1

また、画像認識畳み込みニューラルネットワークで非常に人気があります。CNNの簡単な説明へのリンクがあります。

簡単に言えば、CNNでは、画像はまずエッジ、シェイプ、シェイプのコレクションなどの機能に分割されます。次に、これらの機能は、「通常の」完全に接続された多層ニューラルネットワーク(多層パーセプトロン)に「供給」されます。

より詳細には、一連のフィルターを適用して、フィーチャマップの形でフィーチャを抽出します。フィルターは、元の画像に適用されるマトリックス(最初はランダム)であるため、元の画像マトリックスとフィルターマトリックスのドット積が計算され、結果が合計されます。フィルターは元の画像に沿って一度に1ピクセル(ステップ)移動し、特徴マップのマトリックスが塗りつぶされます。機能マップは、フィルターごとに作成されます。次に、各機能マップの各ピクセルにRELU(Rectified Linear Unit)を使用して非線形性を導入しました。max()、sum()、またはaverage()のいずれかを適用したプーリングは、畳み込み後に行われます。最後に、この方法で抽出された特徴は、元の画像の「拡大された」断片のように見えます。これらの機能は、完全に接続された(すべてのユニットが接続された)ニューラルネットワークへの入力であり、各画像(自動車、樹木、ボートの画像でネットワークをトレーニングしたとしましょう)の確率は、各フィードフォワードがネットワークを通過した後に計算されます。ネットワークはトレーニングされます。つまり、逆伝播(誤分類エラーの最小化)によりパラメーター(重み)とフィルター行列が最適化されます。訓練されたネットワークに新しい画像が入力されると、画像を識別するためにフィードフォワードのみが必要です(ネットワークが十分に正確である場合、つまり十分な例などで訓練した場合)つまり、パラメーター(重み)とフィルター行列は逆伝播(誤分類エラーの最小化)によって最適化されます。訓練されたネットワークに新しい画像が入力されると、画像を識別するためにフィードフォワードのみが必要です(ネットワークが十分に正確である場合、つまり十分な例などで訓練した場合)つまり、パラメーター(重み)とフィルター行列は逆伝播(誤分類エラーの最小化)によって最適化されます。訓練されたネットワークに新しい画像が入力されると、画像を識別するためにフィードフォワードのみが必要です(ネットワークが十分に正確である場合、つまり十分な例などで訓練した場合)


0

ANNが任意の関数f(x)またはf(x、y、z、..)を作成できることを知っておくと便利です。しかし、関数がデータを分類する方法に制限があることを知ることも重要です...オブジェクトのパワーセットのより複雑なリレーションサブセットがあり、分類において重要であり、これらはそのような関数によってエレガントまたは自然な方法で記述されません、しかし、言語およびオブジェクトの分類において重要です。ただし、ANNはこれも実現できます。

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