2

私はブラウザ内のこのオンラインデモで遊んできましたhttps://cs.stanford.edu/people/karpathy/convnetjs/demo/image_regression.htmlと私はテキストを使って画像を作ろうとしていました。読み取り可能なテキスト)を無駄にします。ニューラルネットワークをオーバーフィットする最良の方法は何ですか?

このニューラルネットワークは、ピクセルのX位置とY位置、および前記ピクセルの3つの出力 - RGBチャネルの2つの入力を受け取ります。ネットワークは選択された画像によって訓練され、次にそれを「描く」ことを試みる。

このネットワークは、各ピクセルが元のイメージに可能な限り近くなるように、つまりオーバーフィットになるように訓練したいと考えています。これはどのように達成できますか?どのような組み合わせやパラメータを使用すべきですか?多分、ネットワークの構造は異なっている必要があります(より多くの層、より多くのニューロンの層、異なる種類の層など)。

私は元からの構造を変更することなく、学習率で遊んで試してみたが、それでも400K回の反復の後のテキストのほとんどは区別がつかない:

screenshot after 400k iterations

は、それは単に時間の問題ですし、多分数百万回の反復後に望ましい結果が達成されるでしょうか?何とか(処理能力や他の明白なものを増やすことなく)スピードアップできますか?

毎回同じ入力に対して同じ値を返すようにするのは、本当に簡単な作業でなければならないと思われます。ネットワークは何百万回も正確に同じデータで訓練されています。灰色のピクセル?

私はニューラルネットワークを使い慣れていないので、多分それは愚かな質問であり、ニューラルネットワークはまったく使用できません。

+0

セマンティックセグメンテーションを試しましたか? –

+0

いいえこの特定のJSライブラリでどのように処理できるか教えてください。 –

+0

私はこのJSライブラリについて知らないけど、私はCaffeの画像にセマンティックセグメンテーションを使用しました。 –

答えて

4

実際には2Dからの回帰式なので、そのようなネットワークには余りにもフィットしないので、非常に「凹凸のある」サーフェスをモデリングする必要があります。あなたが必要とするのは、隠されたユニットがたくさんあります。これはあなたに余裕のある能力を与えるものです。

これは単なる時間の問題であり、数百万回の反復後に望ましい結果が達成されるのでしょうか?

いいえ、ネットワークは実際に問題を表現するには小さすぎます。

何らかの形で処理能力やその他の明白なものを増やすことなくスピードアップできますか?

ええ、.jsを使用しないでください(これは明らかですが、これはウェブベースの例であり、効率的ではありません)。

同じ入力に対して同じ値を返すたびに作ることは本当に簡単な作業であるべきと思われる - 倍の千の正確な同じデータ数百人に訓練されて、ネットワーク、なぜそれはまだ返しません非常に多くの灰色のピクセル?

なぜ難しいですか? NNは過度に過密になっていませんか? 高次元の問題のために簡単に過ぎます。データポイントは、超平面の組み合わせ(ニューラルネットの構築ブロック)を使用して簡単に分けることができます。ここでは、2D、非常に低次元の、非常に高密度のデータを扱っています。これは典型的なNNメソッドから離れています。イメージを簡単に学習させたい場合は、イメージを入力、全体イメージとして扱う必要があります。ここでは、代わりに、各ピクセルが入力であり、NNに対して学習プロセスを比較的困難にする。

+0

詳細な回答ありがとうございます。だから、このJSライブラリと同様のネットワーク設定(入力として1ピクセル)でそれを行う方法はありませんか?あなたは隠された入力の多くは、正確な数の任意のアイデアを助けることができると言った? –

関連する問題