t_wの輪郭

本当に学習しているかを検証するために、20分かけて以下のパラメータで、1000世代の間、検証用データで学習させた。答えを教えている形になる。

  • プログラムのノード数:4000
  • 個体数:50個体
  • 学習中に個体評価する回数:15回
  • 突然変異率の上限初期値:0.01倍
  • 突然変異率の変動量:0.001倍

わずかに輪郭が見えてきている。

ただ、これ以上学習させるのは難しそうだ。


パラメーターを以下のように変更して再学習する。突然変異率が0.001倍近辺で下げ止まっており、突然変異率の変動量が制限となっている。

  • プログラムのノード数:4000
  • 個体数:50個体
  • 学習中に個体評価する回数:15回
  • 突然変異率の上限初期値:0.01倍
  • 突然変異率の変動量:0.0001


突然変異率を固定にしてみる。突然変異率が下がると、学習が進まなくなる傾向があると見た。

  • プログラムのノード数:4000
  • 個体数:50個体
  • 学習中に個体評価する回数:15回
  • 突然変異率:0.01倍

700世代学習させたが、あまりに学習しないので打ち切った。突然変異率は低い方が良いらしい。ノード毎に突然変異の発生を計算しており、ノード数4000もあると突然変異率は相応に低くする必要がありそうだ。


再度突然変異率の変動を可変にして、初期突然変異率を0.01から0.001に変更して再実験。

  • プログラムのノード数:4000
  • 個体数:50個体
  • 学習中に個体評価する回数:15回
  • 突然変異率の上限初期値:0.001倍
  • 突然変異率の変動量:0.0001倍

突然変異率の低さから多様性が失われてしまい、熱的死を迎えたため打ち切り。


一番良かった初期のパラメータをノードの数と突然変異率の変動量を変更してみる。
ノードの数は増やせば賢くなるだろうという短絡的な考え。
突然変異率は下がっていく過程が大事なのだ。たぶん。突然変異率が高い個体と低い個体が出てくる。

  • プログラムのノード数:8000
  • 個体数:50個体
  • 学習中に個体評価する回数:15回
  • 突然変異率の上限初期値:0.1倍
  • 突然変異率の変動量:0.0001倍

学習が途中で止まってしまう。突然変異率の変動量が高めになっていた方が、良い意味で突然変異率が下げ止まるようだ。


突然変異率の上限初期値を元に戻す。
突然変異の変動範囲を高い方に寄せて、突然変異が上がりやすくしてみる。

  • プログラムのノード数:8000
  • 個体数:50個体
  • 学習中に個体評価する回数:15回
  • 突然変異率の上限初期値:0.01倍
  • 突然変異率の変動範囲:0.0007 ~ -0.0003

学習の途上という感じがしなくもない。ノード数が多すぎる。
突然変異率は良さそうな所を行ったり来たりしている。


逆にノードの数を減らしてみる。小規模な問題ならノード数が少ない方が良さそうな予感。多い少ないの基準の分からなさよ。

  • プログラムのノード数:2000
  • 個体数:50個体
  • 学習中に個体評価する回数:15回
  • 突然変異率の上限初期値:0.01倍
  • 突然変異率の変動範囲:0.0007 ~ -0.0003

2000は減らしすぎということが分かった。


逆に個体数を減らしてみる。その分世代数を2000に増やす。その方が速く学習できる可能性がある。ネットの文献にそう書いてあった。

  • プログラムのノード数:4000
  • 個体数:20個体
  • 学習中に個体評価する回数:15回
  • 突然変異率の上限初期値:0.01倍
  • 突然変異率の変動範囲:0.0007 ~ -0.0003

いや、うん、学習はしてるんだけど、もっとも良い個体が伸びてこない。うむむ。


そろそろ眠いので今日はここまで