dポイントプレゼントキャンペーン実施中!

池谷裕二さんのHPで自己組織化マップSOM の説明がわかりやすく書いてあります。
http://gaya.jp/spiking_neuron/som.htm
そこで、同じ手順で自己組織化のシミュレーションをプログラミングしたのですが、
沢山のマス目の一つを選択してその周辺の8個のマス目を新しく作った色に
  「そのマスの周囲にも、少しだけ■を混ぜてやる。」
これが具体的にどんな計算なのかが分からずうまく自己組織化しません。HPの例から
画像ソフトに貼り付けてRGBを読むと
 染める色(紺色)       染められる色          結果の色
(R000 G000  B153) + (R000 G016  B255) =(R000 G009  B255)  青っぽいマス 
(R000 G000  B153) + (R164 G255  B000) =(R105 G255  B150)  緑っぽいマス
(R000 G000  B153) + (R255 G013  B000) =(R161 G255  B000)  赤っぽいマス
(R000 G000  B153) + (R052 G255  B203) =(R000 G184  B255)  水色っぽいマス
とこんな計算結果らしいのです。アルゴリズムが読めませんのであれこれ試してみました。
一色の強さ0~255までという限度がありますから単純に足すとたいがいの場合、RGBどの色かがオーバーフローします。それを単純にはみ出ただけ足切りしてもだめ。(上記の計算結果もそうなっていません)傾向が反映されたらとRGBを定数で割り算して加えると盤面全体がグレーに限りなく近づいてしまいます。
何とか自然に自己組織化するところがもっと多いマスで見たいのですが、「マス目にちょっと絵の具を垂らす。」ことをどのように計算式で表すのか、、、、ご存じの方、教えていただけませんか。

「RGBの色を混ぜるとは計算上どうなるので」の質問画像

A 回答 (1件)

(R1 B1 G1) + (R2 B2 G2) = (R3 G3 B3)



としたときに、荷重平均していってはどうでしょうか…

つまり、「R2にR1を2割混ぜる」なら、
R3 = R1*0.2 + R2*0.8
というように。(G・Bも同様)
(integerで計算するならば、R3 = (R1*20 + R2*80)/100 とすれば良いかと)

これなら、白と白を足してもオーバーフローせず白のままですし、灰色に白を垂らせばちょっとだけ明るくなることになります。

この回答への補足

ありがとうございました!!

簡単なバグを直したら自己組織化が観察できました。
https://picasaweb.google.com/1013582578687705326 …

よろしければご覧ください。

補足日時:2011/06/27 18:04
    • good
    • 0
この回答へのお礼

ありがとうございます。なるほど!気がつかないものですね。
早速に書き直して実行してみました。

ところが、ちょっと予定外の結果になります。今までは収束せずに困っていたのですが今回池谷さんのHPのような分類にいたらずに、何度実行しても黒のバックにバラバラに色が配置されるように収束します。予想と違うのですがなにか意味のある結果になるような気もするのです。

なぜだかは不明、私のプログラミングに問題があるのかもしれませんので(たいした物ではないのですが)もう一度見直してみます。
https://picasaweb.google.com/1013582578687705326 …
お礼に添付が出来ないので、こちらに結果を置かせていただきます。
よろしかったらご覧ください。

お礼日時:2011/06/27 16:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!