夕方に中央図書館を出て、一緒に勉強していた人を見送った後、恵比寿まで散歩。
なつかしくなって、高校の頃を再現してみた。
中央図書館で勉強。
恵比寿まで歩く途中の、2年前に閉店セールっぽいセールをやっていた店はまだ閉店セールっぽいセールをやっていた。あれは普通だったのか。
恵比寿駅まで歩いて一風堂のラーメンでおやつ。玉子がラーメンと一緒に入って出てくる。
その後道路を渡って恵比寿駅の後ろの入り口からエスカレーターを昇ってATREの本屋へ。
エスカレーターの位置とかはもちろん、水槽の位置や花瓶の位置まで変わってない。ほんとかわってないな。
新星堂と本屋のある階は変わっていないけど、下の階がソニープラザになっていた。ちょっと変わったところを発見して喜ぶ。
本屋ではコンピュータ書籍の場所が変わってなかった主な本の配置も。
そのまま本を買って、読みながら家に帰るというスタイルもそのままで。
なんか優雅でよかったなぁ。
ひさしぶりに行きました。
でも、昨日の夜は暑くてほとんど寝てないからねむすぎる。
食堂はあいかわらず、特に美味しいわけでもなんでもない。
人は相変わらず多い。
ぼくはオセロが超人的に弱いので、主に統計手法に頼ろうというオセロソフトPredetorですが、評価関数構築のために必死に回帰分析をしています。が、局所解に陥りまくっている模様。64マスとも埋まった状態での誤差をおとといの20石程度からなんとか10石程度までは下げたものの、これ以上の改善案が見つからず。
Fの話では、最急降下法による近似で問題ないレベルまで誤差を減らせるようだが、なぜかできない。まぁ、この手の問題は強い状況依存性があるからしょうがないか・・・。
なんとかならないかねぇー。
プログラマーの敵、”Segmentation Fault”ですが、OSの勉強をしていたら、いかにあれがすばらしいものであるかが判明。
プログラムをミスった時、パソコンが落ちてしまわずに、混乱して変なデータを書き込んだりせずに、おかしな計算結果を返したりせず、そして親切に何が起こったかを伝えて、その上で安全に終了してくれる。そんな、理想的な状態の時に出てくるメッセージなのですね。
Javaみたいにエラーメッセージとバグのある行と一緒にNullPointerExceptionを出しなさいなんてわがままいってごめんなさい。
それはそうと、OSの勉強が全然進みません。英語なんて嫌いだ。
Predetorの開発方針はこんな感じ
・細かい高速化は無視
開発期間が短いからね。そんなヒマはないだろう。それにものすごい努力をして2倍高速化しても、どの程度強くなるかというと・・・微妙。
・評価関数重視
評価関数の精度が数段良ければ、は数手先を読む事に値する。それは10倍、100倍の高速化による強化に匹敵する。すなわち、評価関数の精度がかなり違えばそれだけで超えられない壁となるわけです。
まぁ、でも統計オセロでは評価関数なんてほとんどみんな同じで、どれだけ評価用の値をチューニングするかにかかってるんだけど。そのチューニング法に重きを置く。
・探索アルゴリズムの改善
AlpheBeta法を根本的に改善するためにはMPCなどの手法しかない。でもそれをもうちょっと改善する方法がある気がするのでその辺の改善法を検討してみよう。ていうか、他のソフトとの差別化はこれくらいしかできなさそう。
来週の水曜日と木曜日。
さて、対策を考えてみよう。
まず、OS。とりあえず授業プリントはある。昨日Yと話していた感じでは、去年の試験は簡単そうらしい。そして「だいたい分かる」らしい。すなわち、授業に出ていればだいたいわかるらしい。しかし、ぼくが見たところ知らない単語だらけ。すなわち、授業に出ていなければほとんどわからないらしい。さて、これは、授業をサボりまくった罰としてOperating System Conceptsを700ページ読みなさいということだろうか?英語を700ページなんてどれだけ時間かかるんだ?うーん。
次に、コンパイラ。何を授業でやったかすら不明だが、LALR構文解析以外は大した事やってないらしい。ということは、大して勉強しなくて良いということだね?きっと。これも、授業をサボりまくった罰として中田さんの分厚い黄色い本を半分ちょいと読みなさいという事か。うーむ。
まぁ、両方ともいい本っぽいし、役に立つだろうから読んでもいいんだけど・・・うーん・・・。
簡単にまとめておこう。現在の有力度順に
vsOtha(by H)
強い。中盤11-14手くらい読める。終盤は25手くらい。実は、日本で一番強いオセロソフトはこれか?しかも、それをさらにチューンアップしているらしい。
Thell3(by F)
強いと予想される。もともとオセロに関する技術に詳しく、本まで出したほど。公開されているバージョンでは統計手法は使われていないが、今回は使ってくる予定。プログラミング言語の特性まで考えて設計しているらしい。
??(by U)
オセロプログラム初心者ながら、既にLOGISTELLOの評価法がどうとかボード表現にビット列を使うだとか、かなりの事を考えている。統計ソフトRを使うとか使わないとか。
??(by Y)
オセロが強い友達がいるらしく、コーヒーをおごっていろいろと技を教えてもらったらしい。関数型プログラミング言語OCamlで書くらしい。
??(by S)
Java大好き。この言語については知り尽くしていると思われるのでどんなアルゴリズムでも実装可能だろう。どんな手でくるのか?
??(by T)
徹夜は大嫌いだが、学校での寝泊まりは好きなようだ。自習室のゲームにかける情熱でオセロも取り組むのか?
??(by A)
とりあえずのマジメ度では学科内でこの人にかなう人はいないだろう。情報については一切非公開。
??(by K)
ロボコンは優勝したらしいがオセロは如何に?ハードウェアで実装という噂も??
??(by Y)
(本人曰く)最高のプログラミング言語Schemeで書かれるという噂だが、本人は出場を否定。
??(by K)
「プログラムに頼らず自分で打つ!」らしい。基本的なオセロ戦術を学んでくるのか?普通にかなりいい線行くのかも。
とりあえず、Predetor(オセロ)用のボード表現は作った。2年くらい前に作ったオセロ(Neothec)で用いていた物とは全然構造が違うもの。
前のより速いかどうかは分からないけど、ボードのコピーにかかる時間は約半分になったはず。