このトピックに関する質問がいくつかありますので、お役に立てば幸いです。私はディープラーニングの分野で初めての経験がありますが、いくつかのチュートリアルを行いましたが、概念を互いに関連付けたり区別したりすることはできません。
このトピックに関する質問がいくつかありますので、お役に立てば幸いです。私はディープラーニングの分野で初めての経験がありますが、いくつかのチュートリアルを行いましたが、概念を互いに関連付けたり区別したりすることはできません。
回答:
最初に、非常に単純な分類タスクを解決してみましょう。たとえば、スパムメッセージであふれているWebフォーラムをモデレートするとします。これらのメッセージは簡単に識別できます-ほとんどの場合、「buy」、「porn」などの特定の単語と外部リソースへのURLが含まれています。このような疑わしいメッセージについて警告するフィルターを作成します。それは非常に簡単になります-機能のリスト(たとえば、疑わしい単語のリストやURLの存在)を取得し、単純なロジスティック回帰(別名パーセプトロン)を訓練します。
g(w0 + w1*x1 + w2*x2 + ... + wnxn)
どこx1..xn
あなたの特徴は、(特定の単語またはURLのいずれかの存在)しているw0..wn
学ん係数と- g()
されるロジスティック関数は非常に単純な分類子それをだ結果は0と1の間であるようにするが、この単純な作業のために、それは非常に良好な結果を与えることがあり、作成線形決定境界。2つの機能のみを使用すると仮定すると、この境界は次のようになります。
ここで、2つの軸は機能(たとえば、メッセージ内の特定の単語の出現回数、ゼロ付近で正規化)、赤い点はスパム、青い点は通常のメッセージ、黒い線は分離線を示します。
しかし、すぐにいくつかの良いメッセージには「buy」という単語が多く含まれていますが、実際にはポルノ映画を参照していないURLやポルノ検出の詳細な議論は含まれていません。線形決定境界は、このような状況を単に処理できません。代わりに、次のようなものが必要です。
この新しい非線形の決定境界は、はるかに柔軟性があります。つまり、データにはるかに近くフィットします。この非線形性を実現する方法は多数あります-多項式の特徴(例x1^2
)またはそれらの組み合わせ(例x1*x2
)を使用するか、カーネルメソッドのように高次元に投影することができます。しかし、ニューラルネットワークでは、パーセプトロンを組み合わせることによって、つまり、多層パーセプトロンを構築することによってそれを解決するのが一般的です。ここでの非線形性は、レイヤー間のロジスティック関数に由来します。レイヤーが多ければ多いほど、MLPにより高度なパターンがカバーされます。シングルレイヤー(パーセプトロン)は簡単なスパム検出を処理できます.2〜3レイヤーのネットワークは機能のトリッキーな組み合わせをキャッチでき、5〜9レイヤーのネットワークは大規模な研究室やGoogleなどの企業で使用され、言語全体をモデル化するか、猫を検出します画像に。
これは、深いアーキテクチャを持つための重要な理由です。より高度なパターンをモデル化できます。
特徴と線形決定境界が1つだけの場合、実際には2つのトレーニングサンプル(1つはポジティブ、1つはネガ)だけで十分です。いくつかの機能および/または非線形の決定境界を使用すると、考えられるすべてのケースをカバーするために、いくつかの注文がさらに必要になります(例、、およびだけでなくword1
、考えられるすべての組み合わせを見つける必要があります)。そして実際には、数百および数千の機能(言語の単語や画像のピクセルなど)と、少なくともいくつかのレイヤーを処理して、十分な非線形性を持たせる必要があります。このようなネットワークを完全にトレーニングするために必要なデータセットのサイズは、10 ^ 30の例を簡単に超えており、十分なデータを取得することはまったく不可能です。言い換えると、多くの機能と多くのレイヤーを使用すると、決定機能が柔軟になりすぎますword2
word3
それを正確に学べるように。
ただし、それを約学ぶ方法があります。たとえば、私たちはその後、確率の設定で働く代わりに、すべてのすべての組み合わせの頻度を学習している場合は、我々は完全かつ制約のない減少、彼らは独立していることを前提としてのみ、個々の周波数を学ぶことができますベイズ分類をするナイーブベイズので、多くを要求します学ぶべきデータがはるかに少ない。
ニューラルネットワークでは、意思決定関数の複雑さ(柔軟性)を(意味的に)減らすためのいくつかの試みがありました。たとえば、画像分類で広く使用されている畳み込みネットワークは、近くのピクセル間のローカル接続のみを想定しているため、完全な画像(たとえば、 100x100ピクセル= 10000入力ニューロン)。他のアプローチには、機能エンジニアリング、すなわち、入力データの特定の人間が発見した記述子の検索が含まれます。
手動で検出された機能は実際には非常に有望です。たとえば、自然言語処理では、特別な辞書(スパム固有の単語を含むものなど)を使用したり、否定をキャッチしたり(たとえば、「良くない」)ことが役立ちます。また、コンピュータービジョンでは、SURF記述子やHaarのような機能はほとんどかけがえのないものです。
しかし、手動機能エンジニアリングの問題は、優れた記述子を思いつくのに文字通り何年もかかることです。さらに、これらの機能は多くの場合特定です
しかし、オートエンコーダーや制限付きボルツマンマシンなどのアルゴリズムを使用して、データから適切な機能を自動的に取得できることがわかりました。私は他の回答でそれらを詳細に説明しましたが、簡単に言えば、入力データ内の繰り返しパターンを見つけて、それをより高いレベルの機能に変換することを可能にします。たとえば、入力として行ピクセル値のみを指定すると、これらのアルゴリズムはより高いエッジ全体を識別して渡し、次にこれらのエッジから図形などを構築して、顔のバリエーションなどの本当に高レベルの記述子を取得します。
通常、このような(教師なし)事前トレーニングネットワークはMLPに変換され、通常の教師ありトレーニングに使用されます。事前トレーニングはレイヤーごとに行われることに注意してください。これにより、他のレイヤーを考慮せずに各レイヤー内のパラメーターを学習するだけでよいため、学習アルゴリズムのソリューションスペース(および必要なトレーニングサンプルの数)が大幅に削減されます。
監視されていない事前トレーニングは現在しばらくここにありますが、最近、他のアルゴリズムが両方の学習を改善することがわかりました-事前トレーニングとともに、それなしで。このようなアルゴリズムの注目すべき例の1つは、ドロップアウト -トレーニング中に一部のニューロンをランダムに「ドロップアウト」し、歪みを作り出し、次のデータのネットワークを厳密に防ぐシンプルな手法です。これはまだホットな研究トピックなので、読者にお任せします。
まず、ディープラーニングが必要な理由を理解する必要があります。モデルを作成するには、MLにラベル付きのテストデータ(監視ありまたは監視なし)が必要です。多くのドメインでは、データが大きくなるにつれて、ラベル付きのデータを維持することは困難です。深層学習ネットワークにはラベル付きデータは必要ありません。ディープラーニングアルゴリズムは、ラベルを把握できます。そのため、音声認識、コンピュータービジョン、言語理解の分野で非常に重要なデータのラベルをドメインの専門家が作成する必要がなくなります。Google Cat画像認識は非常に興味深い実験です。また、Googleに雇われた教授である「Geoffrey hinton」を知ることも興味深いです。
http://www.wired.com/2014/01/geoffrey-hinton-deep-learning/
このフレームワークで探索するにつれて、より多くの洞察を得ることができます。
ディープラーニングは長い間存在しています。CNN、RNN、Boltzmannマシンは確かに新しい技術のように見えますが、長い時間をかけて開発されました。ディープラーニングの履歴を確認する
https://en.wikipedia.org/wiki/Deep_learning#History
ディープラーニングの復活は、そのときから計算能力が指数関数的に増加したという事実によるものです。GPUを搭載したラップトップを使用すると、複雑なディープラーニングモデルをトレーニングできますが、これまでに比べて非常に短い時間です。ディープラーニングモデルは経験的にも非常に効率的です。画像、音声、および多くの分野の最新技術は、ディープラーニングモデルです。
これらの要因により、NLP / MLコミュニティの多くがディープラーニングへの焦点をシフトしていることがわかります。