アプリ版:「スタンプのみでお礼する」機能のリリースについて

最近ニューラルネットについて勉強しています。
特に準ニュートン法での学習について考えています。

ある日手に入れたデータで学習したところ、誤差があまり小さくならなかったので(何度も学習を試し、ノイズ混入も試したので、ローカルミニマムに引っかかっている感じではないと思います)、中間層のユニット数を莫大に大きくしました(最初試したときの100倍以上です)。
しかし誤差が全然変らない、という結果が出ました。

このように、自由度を上げても学習しきらないことってあるんでしょうか。もしあるのなら、その原因は何でしょうか。また、学習しない原因となっている邪魔なデータを探す方法ってあるのでしょうか(出来れば視覚的に見えると嬉しいです)。

宜しくお願い致します。

A 回答 (2件)

 中間層をたっぷり取ってメチャクチャ過剰学習させても、また多層にしても、なお出力を教師信号と一致させられないということは生じうる。

その残差が特に大きいのはどんな入力であるか、というのをリストアップしてみれば、何か見つかるかも。
 というのは、極めて近い(あるいは全く同じ)入力に対して全然違う幾つかの出力を要求すれば、当然残差が大きくなっちゃう。言い換えれば、(汎化能力のある)滑らかな関数によって出力の違いを説明するには入力ベクトルの情報が決定的に足りない(肝心な成分が抜けている)ってことですね。
 ところで、準ニュートン法は、どこから出発するかによって挙動が変わるのが難点であり、だから、大体このあたりで収束しそうだなという所までは他の(のろくても着実な)手段で探る方が良いかも。
    • good
    • 0
この回答へのお礼

返答有難うございます。

入力が同じなのに出力が異なるといったパターンが含まれていたようです(扱うデータの特性上、そうなっちゃってるみたいです・・・)。

準ニュートンは初期値にやっぱり依存しすぎますよね。最初は最急降下か何かであたりをつけて、ある程度行ったら切り替え、みたいな方が良いのでしょうか・・・

お礼日時:2014/05/17 08:34

結局の所、


ローカルミニマムに引っかかっている
んです。

3層のモデルですか?
ニューラルネットワークは、実用上は、なかなか、うまく学習することは難しいです。はっきり言って、バックプロパゲーションを超えるうまい方法は知られていません。
とくに、入力データの非線形が強い場合には、相当難しいです。
中間層のニューロンを増やすと、自由度が増えるので、逆に学習がうまくいかない原因にもなります。
もちろん、中間層に十分な数のニューロンがないと、そもそも学習不能になる可能性もあります。
これが原因で、機械学習におけるニューラルネットワークの適用はSVMなんかに押されて一時期かなり下火になりました。

ところが、最近、強い非線形のデータを学習したい場合には、3層モデルで中間層のニューロン数を増やす、のではなく、多層(10層など)のネットワークにするという話が出て、機械学習におけるニューラルネットワークが復権してきています。
入力に近い層から各層毎に学習していく、Deep Learningという手法なんかが有名です。
(「googleの猫認識」で有名)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!