レポート第2回分の講評
第2回分のレポートを読んでいて,よく目にしたコメントについて.
- 指数関数の計算中にオーバーフロー(アンダーフロー)がおきた.
- これは,Boltzmann法でTの値が小さいときにおきることが考えられます.つまり,Q関数をTで割った値の絶対値が大きいために指数関数の計算途中で問題が生じるわけです.
- しかし,この問題は,今回のケースではちょっと頭を使うと解決できます.指数関数を作用させて求めた値を確率に直すときには,正規化のために,それらの和で割ることになります.したがって,分母と分子を先に事前に約分してから,指数関数の計算を行なえば,値の爆発を未然に防ぐことができます.
- 100回というのは,あくまで例として挙げた数値です.100回で学習が収束しない場合は,もっと学習回数を増やして下さい.多くの人は,500ないし1000回程度繰り返しています.
- epsilon-greedy では,epsilonの値にかかわらず(10%程度まで)結果があまり変わらない.
- それは正しい結果です.プログラムのバグではありません.できれば,どうして結果が変わらないのか,また,どういうケースでは結果に差が出てくるのかを考察してください.
- どうして結果がおかしいと思うのか,その根拠を考えてみて下さい.
- 次に,結果がおかしいかどうかを検算してください.「バグかもしれない」といってほっておくのはよくありません.
- 検算しておかしくなければ,自分の結果に自信をもってください.
- 穴をあけたときに近道をみつけだせるかどうかは,その時点での行動のランダム性に依存しています.何人かのレポートではは,その辺がきちんと考察されていました.