質問

  • マルチ層NNを使用して、部分的に観察可能なマルコフプロセスに確率関数を実装しようとしています。
  • NNへの入力は次のとおりです。現在の状態、選択されたアクション、結果状態。出力は[0,1]の確率です(現在の状態で選択したアクションを実行すると結果状態につながる可能性があります)
  • トレーニングでは、前に述べた入力をNNに供給し、すでに発生した各ケースで出力= 1.0を教えました。

問題 :
ほぼすべてのテストケースでは、出力確率は0.95近くにあります。出力は0.9未満でした!ほぼ不可能な結果でさえ、それはその高い問題を与えました。

PS:これは、ケースのみを教えたが、非控えめなケースではないことを教えたからだと思います。

この問題を乗り越える方法はありますか?または、NNを使用したり、Prob関数を実装する別の方法である可能性がありますか?

ありがとう

役に立ちましたか?

解決

問題は、可能なすべての状態の合計が1に等しくなければならないことです。そのようなネットワークを構築する場合、それは保証されません。 2つの考えられる選択肢が私の頭に浮かぶ。そこでは、個別の状態を想定しています。

  1. 予測を行うときは、次の状態ごとにネットワークを実行します。その後、すべての確率の合計を分割することにより正規化します。
  2. 次の状態に従って1つの出力を使用します。その後、ソフトマックス層(分類のように)を使用して、0〜1の範囲で、確率として最大1までの値を解釈できます。

これら2つは、実際には数学的な観点からほぼ同等です。

連続変数の場合、分布(多変量ガウス)を想定し、その分布のパラメーター(平均および共分散STDEVなど)を出力として使用する必要があります。

他のヒント

NNを適合させるときは、より広い範囲のデータを適合させたい場合がありますが、トレーニングでは、0の確率に近づけたいデータはありますか?ない場合、私はあなたが悪い結果を得るかもしれないと疑っています。最初のステップとして、トレーニングデータセットでいくつかの異なるものを選択してみます。

また、NNをどのようにトレーニングしていますか?他の方法を使用してみましたか?アクティベーション関数はどうですか、おそらくいくつかの異なるものを使用することを試してください。

ニューラルネットを使用すると、モデルを選択する際の試行錯誤が役立つと思います。 (これがすべて具体的でない場合は申し訳ありません。)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top