t_wの輪郭

Feedlyでフォローするボタン
プログラミング機械学習遺伝的進化計算Genetic Programming
Cartesian Genetic Programmingで文章の類似度を学習あれWebGPUで遺伝的プログラミングあれCartesian Genetic Programmingあれ学習には遺伝的プログラミングというのを使っていますあれCartesian Genetic Programmingで生成したプログラムを誤差逆伝播で学習あれあれあれGPGPUで遺伝的プログラミングAutomatically Defined Functionsあれ「GPの研究者で,ADFsとCGPを知らないやつは,にわか」『遺伝的プログラミングの歴史』

あれ

2023/8/20 22:28:00

遺伝的プログラミング誤差逆伝播法を組み合わせるにあたって、誤差逆伝播法の具体的計算方法がウェブを見ていてもわからんので、『ニューロ・ファジィ・遺伝的アルゴリズム』を戸棚から引き出してきた。誤差逆伝播法の章にt_wの書き込みがされており、理解の道筋をたどることができる算段。

ただ、紙の書籍で取り回しが悪いので、アレしましょう。デライトに書きましょう。

あれ

2023/8/15 21:15:00

遺伝的プログラミングの学習結果をonnxにするというアイデアが降りてきた。
onnxのエコシステムに乗っけられるのが嬉しいポイント

あれ

2023/7/27 21:41:00

遺伝的プログラミングの計算を小数にしたら学習しなった。シット!!

整数値で計算させていた時には、数値が巨大化する問題がオーバーフローによって回避されていたらしい。

あれ

2023/7/25 23:49:00

遺伝的プログラミング誤差逆伝播法行くぞ!!!

遺伝的プログラミング(Cartesian Genetic Programming)で得られたグラフ構造に内在するパラメーターを誤差逆伝播法で学習してやるのだぁ!!

遺伝的プログラミング単体ではどうにも学習が進まないのでやってやろうじゃねぇかよとなった。

『生成 AI に必要な「基盤モデル」のメモリ使用量 98%削減につながる技術を開発 ─ 自動運転車や工作用ロボット用組み込みシステムへの搭載を目指す』も背中を後押しした。良い構造の小さいモデルで良い性能が出せることが示された。

あれ

2023/6/24 16:42:00

遺伝的アルゴリズムにしろ、遺伝的プログラミングにしろ、与えられた課題に有利なバグがあったら徹底活用してくるし、不利なバグがあったら徹底回避してくるので、バグの発見が難しい。内部で乱数が使われているのも輪をかけてバグの発見を難しくしてくる。

なので自動テストで一個づつ動いているか確認しようと思ったのだが、ちゃんと動いてるはずだったのに自動テスト書いたらpanicで全然動かへん。

なんで動いてるんだこいつ……

いや、なんかgo runで動かすとバグんないんだけど、go testするとバグる。なんだこれ、goroutine分からん。


やっぱりgoroutineというか並列処理みたいなことを再帰関数でやるってのは辞めた方が良い予感。ワシには難しすぎる問題になる。

func node_exec(node *Node, program Program, inputs *[constant.EMBEDDING_LENGTH + 1]int, input_map *map[int]int) int {
	if node.Executed {
		return node.Value
	}
	if node.Function < program.Static_functions_index_max {
		node.Executed = true
		node.Value = program.Functions[node.Function](inputs, input_map, &program.Queue, &program.Stack, 0, 0)
		return node.Value
	}

	wg := sync.WaitGroup{}
	node.Executed = true
	arg1 := 0
	arg2 := 0
	wg.Add(2)
	go func() {
		arg1 = node_exec(&program.Nodes[node.Index1], program, inputs, input_map)
		defer wg.Done()
	}()
	go func() {
		arg2 = node_exec(&program.Nodes[node.Index2], program, inputs, input_map)
		defer wg.Done()
	}()
	wg.Wait()
	node.Value = program.Functions[node.Function](inputs, input_map, &program.Queue, &program.Stack, arg1, arg2)
	return node.Value
}

あれ

2023/6/18 19:06:00

時間経過で学習が進まない……!
いまだかつてない雑な実装をしたせいだろうか

普通、遺伝的アルゴリズムないし遺伝的プログラミングを実装するときは、全個体を評価した後に、その評価を元に新世代に総とっかえするんだけど、今回実装がめんどかったので、以下のような処理でごまかしてる

  1. ランダムに2体取り出してくる
  2. 交叉と突然変異で新個体を作る
  3. 1. で取り出した個体のうち評価が低いものを新個体と入れ替える

あれ

2023/6/18 14:57:00

ボロボロの研究成果です

遺伝的プログラミング、精度出ねぇんだわ。

でも、モデルのサイズは小さいぞ!!
812KBや。
一般的な大規模言語モデルというかディイイイイイプラーニングはGBとかサクッと行く


食事の文章に関してはいい感じに類似判定されているのは、データ元の人格が出てますねぇ。