{Cartesian Genetic Programmingで文章の類似度を学習}(1)

{あれ K#EDD2/72DC}

乏しいデータで学習した割には悪くない感じになってきた。右上の地名エリアが類似度が出てないのは、学習データに無いのでそれはそうといった結果。

Wikipediaのデータで学習させてみたい。

(1){あれ}
{Cartesian Genetic Programmingで文章の類似度を学習}{あれ}(2)

{あれ K#EDD2/BBC1}

本番の学習でも地道なパラメーターチューニングが求められる

{Cartesian Genetic Programmingで文章の類似度を学習}{あれ}(2)
{Cartesian Genetic Programmingで文章の類似度を学習}{評価データで学習}(2)
{Cartesian Genetic Programmingで文章の類似度を学習}{学習しないシリーズ}(2)

{あれ K#EDD2/EE98}

遺伝的プログラミングで生成したプログラムの入力データとして、単語ベクトルを遺伝的アルゴリズムで学習させていた。単語ベクトルの変化量を乱数で決めているつもりだったが、定数の固定値になってしまっていた。つまり常に単語ベクトルの値が線形増加/線形減少していたのだった。そりゃ学習しませんぜ旦那。

それはそれとして、このバグを修正してもいまだ学習しないのである。

{Cartesian Genetic Programmingで文章の類似度を学習}{少データ}{データ量}{2023年6月28日}(4)

{あれ K#EDD2/2AFA}

帰ったら遺伝的プログラミングのチューニングをする。残念ながら望む学習結果には未だ至っていない。むしろ学習させるほどに望む結果から離れてしまう。何かが間違っているのは間違いない。

データ量が足りてないのだろうか?いや、むしろ少データで学習のテストをすべきだろう。段階的にデータの規模を大きくしたい。

{Cartesian Genetic Programmingで文章の類似度を学習}(1)

{あれ K#EDD2/1E21}

学習時の評価関数を「各文章の類似度のユークリッド距離」から「全対象文章の類似度のコサイン類似度」に切り替えてみた。
これでムラ感(類似度のヒートマップの模様)が学習されるはずだ。

評価関数が「良い」と判断しても、類似度のヒートマップの模様として現れてこないのが気になっていた。

{Cartesian Genetic Programmingで文章の類似度を学習}{単語ベクトル}(2)

{あれ K#EDD2/49E4}

基底となる単語ベクトルの学習に特化させてみたい

  • 遺伝的プログラミング部分を1000ノードと薄くして世代数を稼ぐ
  • 単語ベクトルの変動範囲を1/5にする
(1){あれ}
{Cartesian Genetic Programmingで文章の類似度を学習}(1)

{あれ K#EDD2/7CD3}

文字毎にトークンにしていたのを、単語ごとのトークンに切り替える。
さらに単語ベクトルの遺伝的アルゴリズムによる学習も行う。

{Cartesian Genetic Programmingで文章の類似度を学習}{評価データで学習}(2)

{2023年6月25日の遺伝的プログラミングのパラメーターチューニング K#EDD2/9C66}

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

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

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

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


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

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