忍者ブログ

ぐれーすけーるブログ

ゲームプログラミングを独習中なんだぜ☆

↑同人活動☆w
ホームページ☆
『きふわらべ』のダウンロード
は、ホームページへ飛ぶ↑☆

ぐれーすけーる は、ゲーム86パーセントでお送りするんだぜ☆↑押すと最新記事に飛ぶぜ☆



第25回世界コンピュータ将棋選手権1日目に
初出場した『きふわらべ』の記事はこちら↑☆
↑東方二次創作音楽
CD78サークル分買った
積みゲー1本ずつ1ステージだけ
遊んでいく記事は別ブログへ飛ぶ↑☆
秋葉原裏通りの潰れそうなオリジナル同人
ソフト店『さんげっと』の記事はこちら☆

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【将棋】きふわらべが頂上を目指す☆!第3回将棋電王トーナメント(5) 設定ファイルを1つに☆!

2015-07-23 23:10

「きふわらべの設定ファイルがぐちゃぐちゃなんだぜ☆! 整理だぜ~~~☆!」




「プロジェクトのフォルダーの中には、参照している .dll も 実体が入っているんだが、
.dll を、リンクで済ませる方法は無いのかなんだぜ☆?
ファイルがいっぱいで嫌なんだぜ~☆」




「これが怪しいんだが、 False にすると何が起こるんだぜ☆?

もしかして、リリースしたときに、参照のパスが全部切れるなんてことはないのか☆?」





「やってみたらバグったぜ☆」






「ソリューション・ファイル(.sln)の数を減らしてみたんだぜ☆」




整理が 進んだ な☆ww

微速微進、遅々前進だぜ☆ww

拍手[0回]

PR

【将棋】きふわらべが頂上を目指す☆!第3回将棋電王トーナメント(4) Bonanza6.0を調べる☆ww

2015-06-20 08:28

 「Wikipediaに、機械学習の数式が載っているんだぜ☆」



Bonanza
https://ja.wikipedia.org/wiki/Bonanza


「これは、『将棋の指し手ってのは こんな仕組みなんだぜ☆!』というのが
       書いてある……ように見える☆

       絵にすると、目の前に将棋盤が100個並んでいて、
       それぞれ色んな局面で、将棋の先生が 次の1手を指そうとしている場面☆

       将棋盤の数は 100面じゃなくて、
       数式なので 言語で表せる あらゆる数字が入ることができる、
       1例で適当に例えれば 5,000,000面ぐらい ある気分☆
       もう、限りない将棋盤☆ww」

 「がんばれ お父ん☆」


「そして、この式を計算すると、
       『コンピューターの指した棋譜と、プロ棋士の棋譜は、これだけずれている』
       という数字が出てくる……ように見える☆」

「がんばれ お父ん☆」


「この式の答えが 0 に限りなく近づくよう、
       がんばって、数式の中の 『v』 を 何度も何度も いじるのを繰り返す
       ……ように使うのだと思う☆」

「お父んの I guess で突き進む 勘 が試されているな☆」



「計算を終えると、 『v』 の内容は fv.bin に
       保存される……はず☆」


「おっ☆ 自信が上がってきたな☆」



「この数式は、まず = で左右に分かれる☆」






「 = (イコール)の
        左側には まとめた話し、
        右側には こまかな話し、
        が書いているはず☆

        まず 左側の J(P0,…,v) が何を言っているか
        勘で まとめてみるんだぜ☆」



「……、と思う☆wwww
       おっと、叡王戦が始まるので そっちを見てくるぜ☆ww」


拍手[0回]

【将棋】きふわらべが頂上を目指す☆!第3回将棋電王トーナメント(3) 新棋戦の発表の日じゃないか☆?なんだぜ☆

2015-06-18 02:36

  「とんかんとんかん してきたぜ☆ww」

きふわらべの目指せ電王戦なんだぜ☆!
http://kifuwarabe.warabenture.com/


 「おつ☆」

「今日は、Feature Vector について調べ物をしてみるんだぜ☆
       日本語では 特徴ベクトル とも呼ばれるな☆

       どういう例題を用意すれば 世間一般に受け入れやすいか、
       説明方法を考えるんだぜ☆」

「似顔絵じゃないか☆?」



「ふむ☆ 例えば 目を王様に例えるとして、

         ・左目と 距離1の右目
         ・左目と 距離2の右目
               …
         ・両目の中心と 距離1の鼻
         ・両目の中心と 距離2の鼻
               …
         ・両目の中心と 距離1の口
         ・両目の中心と 距離2の口
               …
         ・両目の中心と 距離1のあご先
         ・両目の中心と 距離2のあご先
               …
         ・両目の中心と 距離1のひたい
         ・両目の中心と 距離2のひたい
               …

       みたいに行けそうだな☆ww
       これは『特徴』だな☆
       『重み』はどう例えようかなんだぜ☆」

「平均的な顔というものがあるとして、

       『重み』の数字が大きくなるほど 平均的な顔、
       『重み』の数字が小さくなるほど 変な顔、

       というのは どうなんだぜ☆?」


「なるほど☆ 『重さ』に引っ張られて
       平均的な顔になるのかなんだぜ☆ww

       まず特徴を作ってから、サンプルを用意してみるか☆」


2015-06-18 05:20

「よーし、まとめたんだぜ~☆ 目ざ電ブログの方にも
       写しておくぜ☆」


 「らくがきがいっぱいなんだぜ☆!」


07:26

「三駒関係って、何がすごいんだぜ☆?」

「それが出てくる以前は、さっきの黒板に書いた 特徴 の部分を
       人間が1つ1つ考えていたんだぜ☆

       似顔絵で例えるなら、
       人物の描き方 の書籍はいっぱいあるな☆

       そこには、
       幼児タイプ、少年タイプ、成年タイプ、老人タイプ、
       みたいに 重要そうなカテゴリーを どんっ と作って、
       その中で 細分化していく、みたいな☆

       これを辞めて、
       特徴はこれだけあるから、自由に考えてくれ、と
       コンピューターに投げて 成功したのが 3駒関係の 発明 だぜ☆」

「数の暴力、とか言ってたやつなのかなんだぜ☆

       全ては 要素の組み合わせで 成り立っている、
       みたいな発想が 哲学とか、化学とか、数学 っぽいんだぜ☆」

「ものごとの 原因を探求していこうという 発想だな☆」



08:49

「パラメータを自動調整するという、
       ボナンザ・メソッドについて書いてある記事を ググって
       読んでいるんだが、ピンとこないんだぜ☆」

「自力で考え出したらいいんじゃないか☆
       筋の良い発想なら 同じ答えにたどり着くだろう☆」

「…………………/(^▽^)\

       ボナンザ・メソッドの数式は、Wikipediaに載っているんだぜ☆
       これが合っていてくれれば 勉強のしがいもあるんだが☆

       他で拾ったPDFファイルで出てくる数式もおんなじだし、
       多分 合っていると思って進めていいだろう☆」

       https://ja.wikipedia.org/wiki/Bonanza


「少しずつ 理解していくしかないか☆
       将棋というゲームが でかすぎる んだぜ☆
       もっと 小さなゲームがあるという 仮想ゲーム を作って、
       ボナメソ への理解の足がかりとしたいんだぜ☆

       似顔絵みたいな いい例が思い浮かべばいいんだが☆」

「マルペケ はどうだぜ☆」

「wwwwww☆
       最初の合法手は 9個だな☆」


        A┃B┃C
        ━╋━╋━
        D┃E┃F
        ━╋━╋━
        G┃H┃I


「ここで、 マルペケ のプロがいるとする☆wwwww
       プロマルペケ士が 1手目に 1 を選ぶとするぜ☆」

        ○┃B┃C
        ━╋━╋━
        D┃E┃F
        ━╋━╋━
        G┃H┃I

「ボナンザ・メソッドは、
       『そっくりさんになること』を目指す 学習メソッドなんだぜ☆

       プロマルペケ士が 1手目に A を選んだのだから、
       ボナンザだって  1手目に A を選びたいんだぜ☆

       別の言い方をすると、1手目に A 以外のものを選んだら
       ドボン にしたいんだぜ☆

       点数の付け方が もやっと 分かってきたな☆ww
       例えば、極端に点数を付けてみるぜ☆」

       100┃ 0┃ 0
       ━━━╋━╋━
         0┃0┃0
       ━━━╋━╋━
         0┃0┃0

「C、G、I も同じだろ☆ 100じゃないのかなんだぜ☆?」

「うぎぎ!」

       100┃   0┃ 100
       ━━━╋━━━╋━━━
         0┃  0┃  0
       ━━━╋━━━╋━━━
       100┃  0┃100

「おっと☆! 違うんだぜ☆ ボナメソの場合、
       真似したい手は、真似したくない全部の手の合計値を入れるんだぜ☆

       最初、こんな感じで 荒れ果てた田んぼみたいに
       数字が入っているとするだろ☆」

        20┃   5┃  10
       ━━━╋━━━╋━━━
        15┃ 30┃ 25
       ━━━╋━━━╋━━━
        10┃  0┃ 15

「B~I の手を全部足し算するぜ☆
       5 + 10 + 15 + 30 + 25 +
       10 + 0 + 15
       = 110

       これで、Aの点数を 110 ということにするぜ☆」


       110┃   5┃  10
       ━━━╋━━━╋━━━
        15┃ 30┃ 25
       ━━━╋━━━╋━━━
        10┃  0┃ 15

「うーむ☆ もっとよく調べないとな☆
       110 に直接なるのではなく、

       数式を見ると T[ ] というのがあって、
       プロマルペケ士の選んだ手と一致したときに
       大きな数字になり、そうでないとき 小さな数字になる、

       という クッションを 挟んでいるんだぜ☆」









//書きかけ

拍手[0回]

【将棋】きふわらべが頂上を目指す☆!第3回将棋電王トーナメント(2) 起動モードを3種類用意したい☆ww

2015-06-17 06:24

 「探索をいじるのが やっかい だったので、手をつける順番を変えるぜ☆」

 「好きなところから 手を付けてくれ」


「きふわらべの起動ボタンは 今1つだけなんだが」


「これを 3つのボタンに分けたいんだぜ☆」

・起動L (学習を意味する Learnの頭文字、L)
・起動F (直観を意味する Feel の頭文字、F)
・起動T (思考を意味する Thinkの頭文字、T)

「それぞれ、何なんだぜ☆?」

「起動Lボタンは、きふわらべの自習だぜ☆

このモードでは、きふわらべは
指定されたフォルダーに置いてある棋譜を 勝手に読んで勉強する☆」

「おっおっ☆ 機械学習の導入なのかなんだぜ☆(^▽^)」

「起動Fボタンは、きふわらべの自由研究の発表会だぜ☆
これは単純に、きふわらべ と対局する いままでと同じ やつなんだぜ☆」

「フラッドゲートによく放流されていたときのやつか☆」

「起動Tボタンは、きふわらべが対局中に なにか台詞を
しゃべるようにするんだぜ☆ww」


「しゃべって対局したら、将棋に口は要らないって
怒られるんじゃないのかなんだぜ☆?」

「エンターテイメント的な何かをやるために
入り口を用意しておくだけだぜ☆ww 具体的な案はない☆ww」



06:46

「改造に入る前に、ボタンのプログラムを ちょっとメモっておくんだぜ☆」

■WidgetsLoader_KifuNarabeVs#Step3_SetEvent

  ・ボタンが押されたら将棋エンジンを起動する、という設定が書かれている☆
  ・ボタンの名前は "BtnShogiEngineKido"


■WidgetsLoader_KifuNarabe#Step1_ReadFile

  ・ボタンの配置は、CSVファイルで書いている。
   そのファイルを読む☆
   そのファイルはこれ↓



「プログラムと、設定ファイルの2つを 対応付けを気にしながら
更新していくぜ☆」



「ボタンの名前を3つにするぜ☆」


「プログラムの方も 3つのボタン分用意するんだぜ☆」

「こんな感じか☆
     設定ファイルの座標をちょっと修正して」

「ボタン3つに変更したんだぜ☆」


07:09

「次に、今 きふわらべには うそ3駒関係 の配列を持たせているんだが」

 「ヒドス!」

「2駒関係 の配列を持たせようと思うんだぜ」

「好きにやってくれなんだぜ☆」


08:02

「まず、bonanza がやっている 3駒関係 を見てみるんだぜ☆


      (1)KPP  (玉 と 駒 と 駒)
      (2)KKP  (玉 と 玉 と 駒)

     この2つがあり、fv.bin というファイルに、順番に入っている☆
     2進数で書かれているので、人間には読めない☆」


「ふむう☆」

「きふわらべ にも、fv.bin を持たせればいいわけなんだぜ☆」

「fv(えふ・ぶい)って、何なんだぜ☆?」

「feature vector(フィーチャー・ヴェィター)だぜ☆」


「意味☆」

「意訳すると、似顔絵のすごいポイントまとめ、ぐらいの意味だぜ☆

     どこに線を引くと似るのか、どこに線を引くと似ないのかが、
     これは100回出てきてよくある、これは1回も出てこなくてありえない、
     みたいな数字で まとめられた表になっている☆」

「bonanza は 顔を描いて そっくり☆!とか
       やっているのかなんだぜ☆?」

「プロ棋士の棋譜にそっくり☆!……になるように
     物まね のコツを掴んでいるはずなんだぜ、多分……☆

     犬を描け、と言われて 猫ではなく犬に見える、
     ぐらい 特徴を捉えて 大きく外れてはいないはず☆

     ミックスジュースみたいに 混ざっているので
     誰に似ている、とは はっきりしないかもしれないが☆」


「で、fv.csv というファイルを作ろうと思うんだぜ☆」

「ふむ☆ ん☆? CSVファイルなのか☆ww」

「人間が、目で 観察できるデータにしようと思っているんだぜ☆
     理由は エンターテイメント☆」

「エンターテイメントって、なんなんだぜ~☆??」

「具体的な案はまだない☆wwwwwwwww」


10:16

 「ほっほー☆!(^▽^)」

「お、お父んも グラフィックができたのか☆」

「きふわらべ では、2駒関係 でやってみようと思っているんだぜ☆」

「ほう☆」


「3駒関係が流行りだしてから、
       よく KKP とか、 KPP という言葉が
       使われるようになったんだぜ☆」

「単語だけ よく聞くぜ☆」

「これらは、掛け算の記号が省かれているだけで、

         ・K × K × P
         ・K × P × P

       のように、数字のデカさ も表しているんだぜ☆

       K は およそ   80、
       P は およそ 1000 だぜ☆」

「何の数字なんだぜ☆?」

「Kは、王さまのいる場所だぜ☆
       将棋盤の81マスのどこかにいるな☆
       だから Kの大きさは ピッタリ 81 だぜ☆」

「Pは?」

「王さま以外の駒の場所だぜ☆

       例えば、金だったら 盤上の81マスの他に、
       駒台の上もあるな☆

       そして 先手と後手も区別する☆

       しかも種類は 金 だけじゃなく、歩や桂など
       7種類もあるんだぜ☆

       全パターン調べると、1000を超えるぐらいなんだぜ☆」



「Kは、Kingの頭文字☆
       Pは、Pieceの頭文字☆ 駒だな☆

       この他にも、E というのが増えてきているが、
       省略するぜ☆」



「KP と言うとき、

       5九の自玉 × 1七の自分の歩
       9九の自玉 × 8八の自分の銀
       2八の自玉 × 5五の相手の角
       1九の自玉 × 相手は3枚の持ち駒を持っている
       1九の自玉 × わたしは0枚の歩を持っている

       みたいな カップリングを表しているものとするぜ☆」

「ふむ☆」

「カップリングは、

         ・KK (全部でおよそ    640パターン)
         ・KP (全部でおよそ   8000パターン)
         ・PP (全部でおよそ1000000パターン)

       あることになるな☆
       KPと PKは同じなので、PKは省くんだぜ☆」


「PPで、無いパターン、無駄な重複 もあるんだぜ☆?

         ・わたしは歩を2枚持っている × わたしは歩を3枚持っている
         ・わたしは桂を4枚持っている × 相手は桂を4枚持っている
         ・1一の香          × 1一の香
         ・左右反転したら同じもの

       とか」

「大変だな☆ww」























拍手[0回]

【将棋】きふわらべが頂上を目指す☆!第3回将棋電王トーナメント(1) それよりまずは幅優先探索なんだぜ☆

2015-06-03 21:00

  「今日発表があったんだが、トナメが今年もあるみたいなんだぜ☆」

     将棋新棋戦
     http://ex.nicovideo.jp/denou/shinkisen/

  「前年と比べて、無職なんだから 時間がいっぱいあるわね!」

 「しかし トップクラスの選手は
      電気代が月3万とか 2週間で7万とか言ってるんだぜ☆
      機械学習やら 全幅探索やらで 電気を ぶんまわすのは
      真似すると 目玉が飛び出るんだぜ☆

      だがまあ、ちょっぴり かじるぐらいには 前向きに取り組むぜ☆」



 「それより まずは 幅優先探索なんだぜ☆
      きふわらべ め!
      深さ優先探索をやってたとはひどいんだぜ☆ 改造なんだぜ」


 「起きろ、きふわらべっ☆!」


  「久しぶりに起きたら、髪型が変わっていて、ごつい服を着ていた☆
         なんなんだぜ☆? これ☆?」

 「名付けて、ロケット大臣☆!」

 「☆!?」

 「服が空をイメージしていて、ロケットがドーンっと火を噴きながら
      1位を目指して 飛んでってる願いを掛けているんだぜ☆!」

 「う、うわああ☆ びえええええ☆!
        こんな恥ずかしい格好では外に出られないんだぜーっ☆!

        お父んの頭がドーンなんだぜ~☆!!!」


23:59

  カリカリカリ...


04:47

 「うぐふ☆ どふあ☆」

 「どうした、お父ん」


 「きふわらべの、エラーハンドリングのコードを
      書き直そうとしているんだぜ☆」

 「エラーハンドリングって、なんだぜ☆」

 「エラーが出たときに、
         ・ログを出すのか出さないのか、
         ・ポップアップ・ダイアログボックスを出して止めるのか、
         ・エラーが出ても進めるのか、
      どういう対応をするか、ということなんだぜ☆

      将棋のプログラムより、
      エラーハンドリングのプログラミングがでかくなったら、

      将棋エンジンじゃなくて、
      エラーハンドリングエンジンなんだぜ☆ww

      エラーハンドリングを小さく書き直したいんだぜ☆ww」

 「どれぐらい でかい のを、
        どれぐらい 小さく書き直す んだぜ☆?」

 「例えば、1つのプログラムに
      次の記述が7個ぐらい くり返し出てくるんだぜ☆」


                try{
                    ~略~
                }
                catch (Exception ex)
                {
                    //>>>>> エラーが起こりました。
                    string message = ex.GetType().Name + " " + ex.Message + ":棋譜ツリーの読みループの作成次ノードの前半20です。:";
                    Debug.Fail(message);
                    // どうにもできないので  ログだけ取って、上に投げます。
                    log.LogTag.WriteLine_Error(message);
                    throw ex;
                }

 「これを例えば、次のように書き直したいんだぜ☆」

                try{
                    ~略~
                }
                catch (Exception ex)
                {
                    owata.DonimoNaranAkirameta( "棋譜ツリーの読みループの作成次ノードの前半20です。" )
                }

 「おっ☆ わかりやすそうなんだぜ☆ww」



カリカリカリカリカリ......


05:47

 「うぬぐ☆ぶほあ☆!」

 「また何か飛び出してきたんだぜ☆ 今度は何だぜ☆?」

 「ログ出力の中には、
        ・読みたい情報
        ・読みたくもない情報
      があるんだぜ☆

      そこで、この情報は出る、この情報は出ない、と
      スイッチのON/OFFをやっていることがあったんだが、

      こんなことをプログラムの中に ぽつぽつぽつぽつ 毎度毎度
      書き込んでいては、それだけであふれて 収集が付かないんだぜ☆

      いったん、このログの種類によるON/OFF機能を、
      全部消してしまうぜ☆」

 「細かいことは なんにもしない方がいいんじゃないか☆ww

        細かく指定できれば便利、という思想が間違いなんだぜ☆ww
        『スモール、ミドル、ラージ』
        これ以上のことは お父んの頭では無理だな☆wwww」


 「くっ☆!」



トンカントンカン トンカントンカン トンカントンカン.........


08:30

 「うぐはあ☆」


 「また出てきたんだぜ☆」

 「ログファイルを分けておけば 見やすいかと思って、
        ・将棋エンジンのログ
        ・GUIのログ
        ・指し手の思考中のログ
      などなど いっぱいファイルを分けているんだが、

      好き放題に ログファイルを作れる 思想にしているので
      プログラムの色んなところで ログファイルを設定していて
      ごちゃごちゃなんだぜ☆」

 「プログラムの中核部分で 使えるログ・ファイルはこれだけ☆!
        と決めてしまって、
        各部のプログラムは それに従うようにしたらどうなんだぜ☆?」

 「そうすると、プログラムの中核部分が、
      プログラムの端々の部分に任せるような資源配分を
      管理することになってしまうんだぜ☆

      しかし、
      端々で無制限に拡張できる作りにしていたんだが、
      端々で無制限に拡張できたら 頭がまとまらないな☆!

      管理するしかないのかなんだぜ~☆」


 「ログ大臣(Log Minister)というのを1つ置いて、
      画面部(GUI Department)、
      エンジン部(Engine Department)、
      …
      という風に分けていく、という管理向けの構造に改造してみるかなんだぜ☆」

 「どうして急に ログを管理したくなったんだぜ☆?
        いままで 草ぼうぼう のように適当にやってたのに☆」

 「ログを 草ぼうぼう にしていると、
      プログラム全体が 草ぼうぼう になるからなんだぜ☆」


 「むむ☆ ログ大臣(Log Minister)ではなくて、
      オワタ大臣(Owata Minister)に役職名を変更するぜ☆」

 「なんのこだわりなんだぜ☆ww」

 「オワタ大臣は、ログも取るし、エラーで停止するのもやってもらう☆ww」



10:23



 「うっ☆ バグが☆」













拍手[2回]

ブログ内検索

PR



絶版・品切れ本を皆さまからの投票で復刊させる読者参加型のリクエストサイト
復刊ドットコム

ネイフィールウォーター

応援フリーエリア

デジゲー博
むずでょは、第1回から毎年 出展しているんだぜ☆

ウサギのように新品入荷☆
カメのようにまだ置いてある既刊☆

同人ソフト一押し店 さんげっと
むずでょは、さんげっと を応援しているんだぜ☆

TVアニメ「Charlotte(シャーロット)」公式サイト
ニコ生の Angel Beats! 一挙放送が 面白かったので次のも応援するぜ☆ww

プロフィール

HN:
むずでょ
性別:
非公開

最新コメント

[01/02 Free Tax Marlboro Gold Regular Cigarettes Coupons 3 Cartons]
[12/30 Hot Selling Newport Regular Cigarettes Outlet 160 Cartons]
[12/29 http://www.patersonlabs.com/Marlboro/41.html]
[12/29 http://xz84.com/Marlboro/16.html]
[12/29 http://www.paragoninks.co.uk/Marlboro/93.html]

P R