haskell-ja > Archives > 2010/01/07

2010/01/07 01:06:21 UTCcut-sea
#
煙詰はあくまで作者側がそう設計しているものなので、その手数までの詰将棋が解けるソフトなら他の作物となんら違いはないですよ。
#
まー実際ほとんどの将棋ソフトはCとかjavaで書かれたりするっぽいから言語による向き不向きの議論はやっぱりそうかなと思いました。はい。
#
ただ将棋ソフトって高速化のためということのようですが、コードを読んでもやっぱり何をやっているか難しいらしいです。
#
私もボナンザをちょっとだけ覗いてみたのですが、意味不明。
#
実際何をやっているかわかりにくいと書いている人が多い。
#
コード解説するブログなんてのもあるみたいだけど、こういうのってより高度な思考をエミュレートしようと思ったときにコードを改造しにくいんじゃないかとは思った。
#
どうやら高速化のための技術が盛りだくさんだからということのようなのですが。
#
そういうのって、あとからロジックにさらなる変更を加えるときに大変じゃないの?と。
#
で、Haskellがそういうのに向いているという言葉に反応してしまったという。
2010/01/07 01:53:36 UTCikegami
#
なるほどね。その背景を読んでもなお、Haskell がそういうのに向いてる、向いてない、はあくまで主観の問題です。処理系 ghc は向いてないです。解を見つける前にメモリを食い尽くすでしょう。ghc でメモリを食い尽くさないテクニックを知っているプログラマでも、対処しようとすると、コードの可読性は、もんのすごく悪くなります。ロジックの変更も難しくなりますね。
#
あ、上の議論はあくまで現状 stable な ghc について、です。データ並列の技術が ghc に入って、かつ効率的に動くようになったら、綺麗に書ける、かもしれません。
2010/01/07 02:00:42 UTCeyasuyuki@twitter
#
それでも学童保育が終わるとかなり楽ですよ。体力もついて自分でいろいろできるようになるし。中学ぐらいになるとまた別の心配を親がすることになるけど。
2010/01/07 04:23:16 UTCshelarcy@twitter
#
データ並列 Haskell (DPH) は今のところ AND 並列性しか持ってないので、本当に効率良くしようとすると困難に直面する可能性がありますね。
#
詰将棋を効率良く解かせるなら OR 並列もあった方が良いのですが、OR 並列性を持たせると pure ではなくなってしまうので……。そこをどう解決するかが、DPH が一度完成した後の課題になると思います。
#
(一応、selective Vectorisation で pure でないプログラムも扱えるようにする予定ですが、それとは違う課題があるでしょう。 http://bit.ly/58tzq7 http://bit.ly/8YGbyC )
#
この点では ML コミュニティで作られている Manticore の方が有望なのですが、Manticore は実装をまだ公開していないので全く試せません。http://manticore.cs.uchicago.edu/
2010/01/07 07:02:49 UTCcut-sea
#
今「マッチ箱の脳」ニューラルネットワークを見ているのですが、
#
これって学習させるデータに矛盾みたいのがあるとどうなるんでしょう?
#
たとえば、棋譜データを読み込ませて学習させるとして
#
あ、違うな。いきなり複雑すぎるか。
#
たとえば、本には自分の好みのタイプを教え込むってのがあるけど
#
途中でAさんの顔に対して好みであると教え込んでて、
#
あとから意地悪にも同じAさんを見せた時に好みじゃないと教えた場合
2010/01/07 07:08:24 UTCikegami
#
「実装依存」なはなし
2010/01/07 07:08:34 UTCcut-sea
#
そうなんだ
2010/01/07 07:08:41 UTCikegami
#
どうなるんでしょう、って答えは決まりません
#
『マッチ箱の脳』は有名らしくて、ぼくの耳にも入ったけど読んでない
#
しかし、「ニューラルネットワーク」というのは、ひとつの概念であって、その実装はいろいろある
#
バズワードっぽい:ニューラルネットワーク
2010/01/07 07:16:31 UTCshiro
#
NNとかのアプリケーションのほとんどは、もともと無矛盾な公理からがちがちに推論するようなのを目指してるわけじゃないと思うので、矛盾ぽい学習データがたくさん入ってくると単にその特徴量について分類精度が落ちてくってだけじゃないかなあ。
2010/01/07 07:19:26 UTCikegami
#
完全に同意。ただ、人々のこころはうつろうので、重み付けが自由にできるのも、ニューラルネットワークのいいところというか、だめなところというか。バズワード。
2010/01/07 07:19:35 UTCshiro
#
長期的に学習と推論を平行して行うようなシステムで、過去の学習情報の重みがだんだん下がって行くようなのを作ったら、Aさんにユニークな特徴については「昔は好きだったけど今は嫌いになった」というふうな推論ができるようになったりして。
2010/01/07 07:20:08 UTCikegami
#
shiro さんと、「重み」という考え方が同期したので、感動した
2010/01/07 07:20:09 UTCshelarcy@twitter
#
「ナレッジマネジメントと人工知能: 矛盾する情報を扱う手段として矛盾許容論理が一部で使われてきた」 http://bit.ly/5oDxFo ふむふむ。
2010/01/07 07:21:47 UTCcut-sea
#
なるほど、じゃあ学習する順序によって変わってくるはずだ。
2010/01/07 07:22:22 UTCshiro
#
重みづけに時間変化を導入するならね >cut-sea
#
あれ、NNの動作って非線形だから順序依存があったりするのかな?
2010/01/07 07:23:56 UTCcut-sea
#
重み関係なくありそうだなーと。
2010/01/07 07:26:39 UTCikegami
#
シナプスの網なので、なにをシナプスらしいデータにするか、なにを網とするか、で全然違うニューラルネットワークになる
2010/01/07 07:26:44 UTCshiro
#
「NNの動作って…」というのは学習効率にその時点での重みが反映される場合、それまでに学習された重み付けによって感度が変わってくることがあるのかな、ということ。線形かどうかはあんまり関係ないkana
#
ベイジアンクラシファイアは何回か使ったけど、あれは基本的に学習順序関係ない
2010/01/07 07:28:41 UTCikegami
#
「シナプスの死」や、「網の切断」というのも使ってよい(らしい)ので、もうなにがなにやら
#
それぞれ生体の、忘却、リフレッシュに対応する
2010/01/07 07:29:25 UTCcut-sea
#
#
死=忘却はわかるけど
#
リフレッシュって?
2010/01/07 07:29:49 UTCikegami
#
ベイジアンによる学習のほうが、ずっと数学寄りだ、という理由で、ぼくはベイジアンのほうがニューラルネットワークより好き
#
リフレッシュとは、たとえば Chaton で喋るのやめて、戸外に出て、あーもう今日は夕方じゃん、夕飯どうしよっかなーとか考えること
#
忘れてはいないよね、でも、リフレッシュした
#
考えるという言葉が、学習っぽくないのであれば、
#
外に出たら、寒かったということを学習した
#
でもいいです
#
で、過去のニューラルネットワークで作った網のうち、時間のかかる仕事に関係あるのは、とりあえず切断して、火急の仕事や夕飯についての網のなか「だけ」で、ネットワークを活用する
2010/01/07 07:34:18 UTCcut-sea
#
シナプスの死って当然シナプスを消しさるんだろうから同時にそれに接続しているネットワークも消えると思うけど、そのネットワークだけが消えるのが網の切断だと理解してよい?
2010/01/07 07:34:20 UTCikegami
#
切断したのはとっておいて、明日また使いなおす
#
そうしないと、学習したのがもったいないじゃん
2010/01/07 07:35:11 UTCcut-sea
#
切断ってのは中断?
2010/01/07 07:35:39 UTCikegami
#
あー、バズワードを具体的に説明しようとすると、どんどん誤解と意思の不都合が増大する
#
もうやめようぜ、おれは降りた(と思うくらい)
2010/01/07 07:36:00 UTCcut-sea
#
了解
2010/01/07 07:54:05 UTCeyasuyuki@twitter
#
さっきは誤爆してすまん。矛盾があっても重みが変わるだけじゃないの?>NN 結果としてうまく学習できない可能性が高い
2010/01/07 08:43:56 UTCcut-sea
#
eyasuyukiの言ってる重みって「マッチ箱の脳」に出てくるマッチの本数ですよね
#
これはもちろん変わる。
#
で、それが矛盾する情報を学習させたときに、その矛盾するデータの前後関係によって結果として出来上がるNNの状態は変わるか?なんだけど、どうなんでしょう?
#
うまく学習できないというのは微妙な表現ですよねー
#
あれって正解を出す最終状態があるっていうより、常にここまで学習した情報に基づく判定器に過ぎないわけで、常に状態は変動しうる。
#
ある意味で矛盾する情報を与えたわけだから、さらに次にAさんが好きか問うたらどう答えるか?
#
そもそも矛盾する情報を教えたのだから正解を出すということ自体無理なので、そういう意味ではうまく学習できないとも言えるけど
#
最後に教えた状態で答えてくるんじゃないか?と。
#
そういう意味で順序に依存するかなーと思ったのです。
2010/01/07 08:53:03 UTCshiro
#
うーん、原理的なことを言えば、NNは(classifierとして使う場合は)特徴量の空間を分割しているだけですよね。そんで、学習データによってその分割の領域がうねうねと変わる。今、仮に特徴量を1つだけ、出力を3値 (yes, わからない, no) にclassifyするとして、特徴量xのデータでYesって学習データとNoって学習データを同量与えたら、たぶん
#
「わからない」が出てくるんじゃないかなと。Yes/Noの2値にclassifyするとしたら出力の値が多分境界近辺に出てきて他の要因で簡単にどっちかに触れるようになるとか。
2010/01/07 08:54:44 UTCcut-sea
#
あー確かにその境界にギリギリまで近づくってのはあるか。
2010/01/07 08:55:33 UTCshiro
#
まあ学習アルゴリズムによっていかようにもできるわけだけれど、すっかり上書きしちゃうようなふうには普通しないんじゃないかなと。
2010/01/07 08:57:04 UTCcut-sea
#
ペナルティをもらったりごほうびをもらったりしながら閾値が変動するだけか。そらそうだ。
#
1,2回の学習しかイメージしてないからそう思えてしまうだけで、実際大量の情報を食わせたらどんどん近似の精度が上がっていくわけね。
#
その精度が上がった結果として、好きと嫌いの微妙なラインという嗜好も表現してしまうと考えれば、
#
うまく学習できているといえそう。
#
ありがとうございました。>all
#
でわ泳いできます。
2010/01/07 09:02:58 UTCshiro
#
本題とは関係ないけど、「好き」vs「嫌い」というのは一次元のスペクトラムには乗らない気がする。「好きの度合い」と「嫌いの度合い」は別のベクタで、両方プラスというアンビバレントな状態もわりとありそうな。
2010/01/07 10:57:09 UTCikegami
#
帰りました。ふふ、たまには Haskell みたいな「きっちりしすぎ」な、はなしじゃなくて、こういうのもアタマの栄養になりますね、と思います
2010/01/07 14:05:17 UTCnwn
#
PDF できました。まさかこんな形で latex 童貞を捨てることになろうとは: https://dl.dropbox.com/u/360784/Monads.ja/monads.ja.pdf
2010/01/07 15:04:01 UTCcut-sea
#
「あんたなんか大っキライ!!…………………………でもスキ…」ってのが表現できそうね。w>別のベクタ