web-dev-qa-db-ja.com

深い畳み込みニューラルネットワークの設計方法

私が理解しているように、すべてのCNNは非常に似ています。それらはすべて、プール層とrelu層が続く畳み込み層を持っています。 FlowNetやSegnetのような特殊なレイヤーを持っているものもあります。私の疑問は、使用するレイヤーの数をどのように決定し、ネットワーク内の各レイヤーのカーネルサイズをどのように設定するかです。この質問に対する答えを探しましたが、具体的な答えが見つかりませんでした。ネットワークは試行錯誤を使用して設計されていますか、または私が知らない特定のルールはありますか?これをはっきりさせていただければ、とても感謝しています。

20
malreddysid

簡単な答え:設計ルールがある場合、まだ発見されていません。

コンピューティングには類似した質問があることに注意してください。たとえば、製造技術を動かすゲートである基本的な電子論理ユニットはほんの一握りしかないことに注意してください。すべてのコンピューティングデバイスは同じブールロジックを使用します。一部には、光電入力や機械的出力などの特殊な追加機能があります。

コンピューティングデバイスの設計方法をどのように決定しますか?


設計はCNNの目的に依存します。入力特性、精度、トレーニング速度、スコアリング速度、適応、コンピューティングリソースなど、これらすべてが設計に影響します。特定の問題に対しても、一般的な解決策はありません(まだ)。

たとえば、ImageNet分類の問題を考えます。これまでの勝者と競合者の構造的な違いに注意してください。AlexNet、GoogleNet、ResNet、VGGなど。入力を変更すると(たとえば、MNISTに)、これらは過剰になります。パラダイムを変更すると、役に立たなくなる可能性があります。 GoogleNetは画像処理の王子かもしれませんが、話されているフランス語を書かれた英語に翻訳するのは恐ろしいことです。ビデオ画面でホッケーパックをリアルタイムで追跡する場合は、これらの実装を完全に忘れてください。


これまでのところ、これを経験的な方法で行っています。多くの人が、何が機能するかを見るために多くの異なることを試みます。精度、トレーニング時間、または調整したい要因を改善するものについて、feelingsを取得します。合計CPU時間でうまく機能するもの、または並行して実行できるものを見つけます。 2の累乗である長さのベクトル計算を利用するようにアルゴリズムを変更します。問題をわずかに変更し、学習が他の場所でどのように適応するかを確認します。ドメインを変更して(たとえば、画像処理を書面のテキストに)、最初からやり直しますが、特定の種類のレイヤーを検討すると、特定のボトルネックを調整できるものが漠然と感じられます。

覚えておいてください、CNNはその長い間、ほとんど6年もの間人気がありませんでした。ほとんどの場合、私たちはまだ重要な質問が何であるかを学ぼうとしています。研究チームへようこそ。

更新

このページ を参照して、いくつかの一般的な状況下で機能するように見える戦術に関するヒントを参照してください。

36
Prune

最適な出力を得るためのCNNアーキテクチャの設計は困難であり、多くの場合経験的な仕事ですが、ネットワークの設計に使用される特定のトリックとテクニック(それらのいくつかの証拠も存在します)があります。

ここにリンクされているドキュメント "非常に深い畳み込みニューラルネットワークを設計するための実用的な理論" を読んでください。