カテゴリー「コンピュータ詰将棋」の記事

詰将棋創作プログラミング 23 柿木将棋自動化の効果

[2017年1月22日最終更新]

詰将棋創作プログラミング 23 柿木将棋自動化の効果

柿木将棋を詰将棋の創作に活用している人は多い。創作中には何度も柿木将棋で解答や検討をすることになるが、柿木将棋で詰将棋を入力したり解いたり余詰を調べる操作を自動化すると、どんな効果があり、どのぐらいの時間短縮になるのだろうか。

関連情報: 柿木将棋IX  詰将棋創作プログラミング  2 柿木将棋の活用

1.柿木将棋IXの自動化機能

あらかじめ詰将棋の棋譜ファイルを作っておくことが前提になるが、柿木将棋の起動・終了や棋譜ファイル読み込み、解答、余詰検討の操作は下記の機能で自動化できる。なお、柿木将棋IXは最新にアップデートしておくこと。

1)起動オプションを利用した自動化

柿木将棋はアイコンから起動するのが普通だが、Windowsのプログラムなので、コマンドラインから起動したり、バッチファイルから起動することも、そして他のプログラムの中から起動することもできる。そのとき起動オプションで /M と指定されていれば何も操作しなくても指定した棋譜ファイル(詰将棋)の解答をしてくれるし、更に /Z と指定されていれば余詰検討までしてくれる。

解答+検討のバッチファイルを作ってアイコンを置いておけば、棋譜ファイルをそこにドラッグするだけで、あとは操作不要。起動、棋譜ファイル読み込み、解答、余詰検討、ファイル保存、終了まで全自動でやってくれる。詳しくは詰将棋創作プログラミング 2 柿木将棋の活用を参照されたい。

2)詰将棋の連続実行

対局メニューにある詰将棋の連続実行では、指定されたフォルダにあるすべての棋譜ファイルに対して、全自動で解答や余詰検討をすることができる。たくさんの図を柿木将棋に検討させることを「自動創作」という人もいるようだが、それは特にプログラムを組まなくても柿木将棋だけでできるわけだ。

なお、柿木将棋IXには、詰将棋の連続実行以外にも、ツールメニューの棋譜解析の連続実行、棋譜情報の一括設定といった、複数のファイルを対象にした機能が用意されている。

以下の二つは自動化とはちょっと違うが、時間短縮に効果がある機能ということであげておく。

3)柿木将棋の多重起動

難しい詰将棋の場合、柿木将棋の解答、検討に時間がかかることが多い。終わるのを待つ間何もできないかというと、もう一つ柿木将棋を立ち上げれば別の図を解答、検討したりできる。どのぐらい多重に動かせるかはCPUのコア数やメモリ量などによる。

多重に実行したとき注意が必要なのが、柿木将棋の環境ファイルKSHOGI9.ENVや/M・/Zで解答や検討したときの結果ファイルKShogiResult.txtだ。タイミングによって競合すると誤動作する可能性がある。この二つは /E /F の起動オプションでファイルを切り替えることができるので、動かしたい多重度分のファイルを用意しておけば、安全に実行できる。詳しくは柿木将棋IXのヘルプで、高度な使い方-起動オプション を参照されたい。

また、必要なメモリも多重度分搭載されてないといけないので、パソコンの搭載メモリと詰将棋用のメモリ設定をあらかじめ確認しておこう。

多重度にもよるが、個々の柿木将棋の実行時間が単独で実行させたときより長くなることもあるので、解答時間や余詰検討の制限時間の設定にも注意が必要。

4)余詰発見時の打切り

「余詰を調べる」でポップアップされる設定画面に、「余詰検出で中断する」というチェックボックスがある。ここにチェックを入れておけば、余詰検討中、一つでも余詰が見つかったらそこで余詰検討を終了してくれるので、時間を短縮できる。当然、すべての余詰を見つけたい場合はチェックしてはならない。

なお、適当に並べた図は収束辺りがボロボロのことが多いので、調べる順序を「詰み上がり局面から調べる。」にしておくと時間短縮できる可能性が高い。

2.自動化機能による効果

上記の自動化機能により省略できるのは、柿木将棋の起動・終了やいくつかの操作で、1回だけなら数秒レベルの時間短縮で、効果は小さい。しかし、一般に創作途中では多くの図を柿木将棋で検討することになるので、毎回ファイルドラッグだけで操作不要になれば、かなり使い勝手は向上する。

多数(例えば100題)の詰将棋の棋譜ファイルがすでにあって、それをすべて解答、検討したいときは、自動化機能が威力を発揮する。手操作の場合、操作の時間はたいしたことはなくても、100回も操作するのはかなり面倒だし、なにより、柿木将棋が解答、検討しているのを終わるまで待たないと次の詰将棋の操作ができないので、100題終わるまで付きっきりでいなければならない。詰将棋の連続実行を使えば、寝る前に開始しておけば、何もしなくても柿木将棋ががんばってくれるので、起きてから結果を確認するだけでよい。

100題を50題、50題と二つのフォルダに分けて、2多重で柿木将棋を走らせれば、時間も半分ぐらいで終わることになる。

3.創作プログラミングによる自動化の効果

1)創作プログラミングでの自動化の範囲

詰将棋創作プログラミングは、柿木将棋の自動化機能を活用し、更に拡張したものだ。創作プログラミングによる自動化と柿木将棋の詰将棋の連続実行の違いは、解答、検討の操作だけでなく、詰将棋の入力の操作も自動化していることにある。

2)自動化による時間短縮効果

入力の時間は駒数にもよるが、数十秒~数分かかるので、これがほぼゼロになる効果はかなり大きい。

試しに1題(香歩問題29手詰)を入力して、解答、余詰検討して、時間をはかってみた。

起動、盤面編集、解答、余詰検討、終了の操作はいずれも数秒
図面の入力で40秒ぐらい
柿木将棋の実行時間は解答1秒、検討30秒(進行度300、100秒で打切り)

全体で90秒ぐらいのうち、人間の操作が約60秒、柿木将棋の実行時間が約30秒だったので、人間の操作がなくなれば約3倍の高速化になる。

もちろん、この時間は問題によって変わるし、検討にどれだけ時間をかけるかでも大きく変わる。

また不詰の図の場合には結論がでないことが多いので、適当な時間で打ち切ることになるだろう。これは、柿木将棋の起動オプションで /M100 (解答、100秒で打切り)のように指定できる。

3)操作不要になることの効果

連続実行であげたような、多数の図をチェックする場合には、操作不要になること自体が大きな効果になる。人間には仕事もあるし、睡眠も必要なので、長時間になると付きっきりで実行することはできず、全部終了するまでの時間は非常に長くなることが多い。

例えば、2000年に私が11玉裸玉の検証を行ったとき、1000題近い図を検討したのだが、終わるまでに約3か月かかった。幸い新たな完全作が1作見つかったのでほっとしたが、1作も見つからなかったら徒労の3か月になるところであった。

創作プログラミングを始めてから、持駒サーチプログラムの確認の意味も含めて、詰将棋創作プログラミング 3 裸玉全検の可能性で、11玉裸玉について再度検証してみた。このときの実行時間は約16時間だった。もちろん、これがすべて自動化の効果というわけではなく、2000年から2014年でソフトも進歩しパソコンの速度も向上しているなどの要因もある。

なによりも、こういう条件作の検討は、そもそも存在しない可能性もかなりあるので、それに人生の3か月を賭けるのはかなり勇気がいる。2000年のときは、新しい将棋ソフトの解図能力のテストも兼ねて始めたら、やめられなくなってしまったというのが実情であった。しかし、1日パソコンを実行させておくぐらいなら、仮に見つからなくてもそんなに痛くない。

直接の時間短縮の効果よりも、むしろこれが大きな効果で、詰将棋創作プログラミングで新しい試みをいろいろやれているのも、プログラムが完成してしまえば、あとは操作不要で待っていればよいからである。もちろん、出力された図が完全であっても発表レベルの作品はほとんどないので、あとは、人間ががんばっていい作品か判断して自分で納得のいく作品を見つけなければならないわけだが、完全らしい図のみを対象にすれば、この時間もかなり短縮できて、数時間から数日程度ですむことが多い。

4.柿木将棋自動化のすすめ

操作が不要になること、時間短縮できることは、ほとんどの人にとってメリットと思われるので、柿木将棋の自動化機能をこれまで使ってなかった方は、ぜひ一度試してはいかがだろうか。

プログラミングができ、更に自動化するため自分で創作プログラミングしてみたい方は、詰将棋創作プログラミングの連載が参考になると思う。Rubyで書こうとしている方は、詰将棋創作プログラミング 21 サンプルソースコードも参考に。

| | コメント (3) | トラックバック (0)

詰将棋創作プログラミング 22 詰将棋創作AIを作るには

[2017年1月17日最終更新]

詰将棋創作プログラミング 22 詰将棋創作AIを作るには

自分で詰将棋を創作(自動創作)する詰将棋創作AIを作るには何が必要だろうか。

1.詰将棋創作AIとは

詰将棋創作プログラミング 20 自動創作とはで書いたように、自動創作した、すなわちプログラムが自分で詰将棋で創作したといえるには、

  1. 企画、構想(どんな詰将棋を作るか考える)
  2. 図化(それが成立しそうな配置を考える)
  3. 検討(狙いが成立しているか確認)
  4. 選定、推敲(最終的な作品を決定)

の全フェーズを実行できる必要がある。

現在は人間にしかできないと考えられるので、これが実現できたら詰将棋創作AIと呼んでもよいだろう。個性を持った詰将棋創作AIが育ってきたら、人間と識別するのも難しい。

これまで、いろいろなアプローチでコンピュータによる詰将棋創作の研究が行われてきたが、「自動生成」とか「自動創作」とか呼んでいても、ほとんどは人間の指示に従い図化、検討だけをプログラムで行うもので、自動創作というよりは人間による詰将棋創作の支援ツールであった。

最近は、東大の入試に挑戦とか新聞記事や小説の自動生成とか登場して話題になっているが、これも人間がおぜん立てしているレベルでは、AIというより人間の支援ツールだろう。

詰将棋創作プログラミングはもともと人間による詰将棋創作の支援ツールを目指しているので、詰将棋創作AIの話はちょっとはずれてしまうが、夢の実現という意味で、そのためには何が必要なのか、思いつくままにあげてみよう。

2.詰将棋創作AIのために必要なこと

1)企画、構想(どんな詰将棋を作るか考える)

人間が創作するときのことを考えれば、手掛かりになるだろう。

まず、当たり前だが、詰将棋を知らない人間には詰将棋を作ることはできない。つまり、

  • 詰将棋とはどういうものか

を知っていることが前提になる。ここは比較的プログラム化容易なところだろう。次に、

  • その人の詰将棋の経験

が重要。これは、その人がこれまで解いたり鑑賞したりした詰将棋、そして目にした解説者や解答者、賞の選考委員などほかの人の評価などである。ある程度自分で創作するようになってからは、どういう詰将棋を創作していて、それがどう評価されたかも重要な情報だ。さらに

  • 詰将棋の狙いについての知識

もないと、その評価の理解が困難だろう。手筋、構想、趣向、条件、曲詰など、人が何を狙って詰将棋を作り、何をどう評価するか、更にこれまでの作品でどこまで実現されてきたかといった歴史の知識もある程度いるだろう。

人は一人一人感性も異なり、したがって、好みの詰将棋も違ってくる。だから知識、経験も偏っているのが普通で、創作する詰将棋も人によって違ってくる。

詰将棋創作AIもしかりで、どのように育てるかで、それぞれ個性的なAIになっていくだろう。

経験を与える部分は、既存の詰将棋データベースが利用できると思われるかもしれないが、現在のデータベースには解説も評価も狙いも入力されてないので、学習用の詰将棋データベースを構築するところから始める必要がありそうだ。自然言語を理解するAIをベースにできるなら、例えば詰パラ、将棋世界、近代将棋などのPDFを入力にしてデータベースを自動生成することも考えられる。また、スマホ詰パラはもともとアプリで、データは評価を含めサーバにあるので、開発者と協力すれば自動で取り込めるのではないか。

解説や評価を含め全詰将棋を収録した学習用データベースができれば、その中から特定の傾向の詰将棋(同じ作者とか超短編だけとか飛角図式だけとか)を抽出して経験を詰ませれば、形、手順を含めそれらと違和感がない詰将棋を創作できるようになればおもしろい。ただ、人間は作風の中でも常に新しい要素を入れることを考えて創作しているので、創作AIも、似たような作品を作るだけでなく、新しい試みをできるようにしなければいけないだろう。

2)図化(それが成立しそうな配置を考える)

これまで一番研究されてきた図化のフェーズだが、正算、逆算、全検、ランダムといった手法だけでなく、少し高度な作品だと、手順法(中核の手順を先に作って、それを成立させる配置を作る)も必須。昔提案したことがあるが、難しいためか、この研究もほとんどされていない。構想作系は特に作意手順だけでなく変化紛れも重要で、これと作意手順の差異が狙いになっていることが多い。

3)検討(狙いが成立しているか確認)

完全性の検討の技術は、柿木将棋など現在でもかなりの水準にある。ただ、余詰のときにそれを修正する技術は新たに開発する必要があるだろう。

企画・構想段階でどんな詰将棋を作ろうとしたのか明確になっていれば、それが成立しているか判断するのは難しくないと思われる。

4)選定、推敲(最終的な作品を決定)

推敲もこれまでほとんど研究されたことがない項目だ。不要駒除去ぐらいなら簡単だろうが、いろいろ可能な配置を生成し最善の配置を見出すのは案外大変かも。

選定、推敲の段階で重要なのは

  • 生成した詰将棋の評価

である。これは前述の学習用データベースを元に評価することになる。

人間らしいAIを作るのなら、自分が経験した範囲内の詰将棋の評価をもとに生成した詰将棋の評価をするのがいいのだろうが、数が少ないと分析が難しい。賢いAIを作りたいなら全詰将棋の評価をもとにした方がよさそうだ。

個々の詰将棋を分析して、評価される要素をパラメタ化し、それがどのように評価されたのかをふまえて、全詰将棋から各パラメタの重みづけと評価の相関を学習する。それができれば、新たに創作した詰将棋がどう評価されるか、逆にどのような評価を期待するなら、どのように詰将棋を作ればよいか判断することもできるだろう。

ただし、詰将棋の評価は絶対的な評価が存在するわけではなく、人によって変わるだけでなくメディアによっても時代によっても変わるし、1号局と2号局でも全然違ってくる。類似作は評価減だ。その辺りを的確に判断して評価することは、かなり難しいかもしれない。

これまで、非常に狭い範囲の詰将棋を対象に人間の感性評価の研究が行われたことがあるが、それは評価する人間の集合が比較的同質だから研究しやすい面があったと思う。だいたい、発表するメディア、コーナーによって、そこに集う人の集合が形作られるので、最初からそれを意識して創作、評価するのがいいのだろうか。

3.詰将棋創作AIは夢かグランドチャレンジか

こうして少し考えただけでも、詰将棋創作AIの研究はまだほとんど手つかずで、道は遠そうだ。研究者、資金、リソースがそろえば案外進む可能性もありそうだが、詰将棋のワールドワイドな知名度はほぼゼロなので、成功しても元が取れないしね。

前にコンピュータ詰将棋の課題で、「課題D: プログラムだけで煙詰を作る」をグランドチャレンジだと書いたが、詰将棋創作AIはそれよりずっと広い取り組みが必要でさらに厳しいチャレンジだ。スマホ詰パラに限定して進め、3手詰ぐらいで感触をつかむのがいいのかも。

創作技術的には、人間が指示する創作支援ツールレベルでできないことは当然自動的にもできないので、まずは、詰将棋創作プログラミングの方向で頑張るのが、一つの基礎研究になるのかもしれない。

| | コメント (0) | トラックバック (0)

詰将棋創作プログラミング 21 サンプルソースコード

[2017年1月13日最終更新]

詰将棋創作プログラミング 21 サンプルソースコード

詰将棋創作プログラミング 1 最初は年賀詰で開発した、持駒サーチのプログラムのソースコード(Ruby)を、自分でも創作プログラミングをしてみたい方のために、サンプルとして公開する。

1.サンプルソースコードの公開について

詰将棋創作プログラミングで作成しているプログラムは、私自身だけで利用する前提で書いているため、ユーザインターフェースは最小限にしか用意していない。例えばフォルダーやファイル名は固定、パラメタは柿木将棋で事前設定およびプログラムを直接書き替えて設定する。そういう事情と、使い捨てのプログラムで次々いろいろな機能を試していることもあって、これまで要望はあったが、プログラムの公開はしていなかった。

作成しているプログラムはいずれも数十~数百行の小さなもので、テキストファイルの処理と柿木将棋の呼び出しぐらいしかしていないので、少しプログラミングできる方なら、この連載を読めば自分でも書けると思う。しかし、最初はどんな風に書いていいかとまどうかもしれないので、自分用のプログラムでも少しは参考になるかと思い、サンプルとして一つソースコードを公開することにした。

プログラミング言語はRubyを使用しているが、私も初めて使用した言語で、早く動かすこと優先で本やWebの情報を見ながら書いたので、Rubyらしくないコーディングになっていてお手本としては適切ではない。あくまで参考程度にとどめて、みなさんはもっとよいプログラムを書いてほしい。また、質問されても答えられない可能性が高いので、自力で読める方だけ参照されるようお願いする。

盤面や駒の表し方は、池さんの「コンピュータ将棋のアルゴリズム」を参考にしている。
http://usapyon.game.coocan.jp/ComShogi/index.html
「将棋のルール」の章を読めばソースコードも説明されていて参考になると思うので、将棋のプログラムを初めて作る方は参照されることをお勧めする。

2.持駒サーチのソースコード

Windows用。Ruby 2.3の64ビット版使用。
頭に、使い方、パラメタがある。


#! ruby -Ks

=begin
持駒サーチ 1.01 2014年4月8日

盤面図を入力に、詰将棋として成立する持駒の組み合わせを探す。
まずはTETSUの環境に特化して記述。汎用化は考えない。
必要なファイルはc:/tstに置く(詰将棋創作支援ツール)。
コマンドプロンプトより起動、文字コードはSJISにしておく。
起動前にtstに移動しておく(cd c:/tst)。
入力盤面図はms_in.kifにあらかじめ作っておく。
余詰設定は柿木将棋IXで事前にしておく(1手100秒、進行度300、検出時打切り)。
思考・対局設定の詰将棋の設定で、棋譜に解答時間を設定するをオンにしておく。
実行結果ファイルは上書きするので、必要なら他にコピーすること。
 ms_result.txt     全実行結果
 ms_kanzen.txt     完全作リスト
 ms_tsumi.txt      最小持駒リスト
持駒の最大枚数、駒種の最大枚数をMOCHIMAX、KOMASYUMAXで指定できる。
解図時間の上限をKAIZULIMITで秒単位で指定できる。
KSHOGIRESULTのユーザ名は実行環境ごとに書き替えること。
=end

# パラメタ

MOCHIMAX = 15                      # 持駒の最大枚数 1-38
KOMASYUMAX = 7                     # 持駒の最大種類数 1-7
KAIZULIMIT = 30                    # 解図時間制限 秒単位

KSHOGIEXEM = "c:/PROGRA~2/Kakinoki/KShogi9/KShogi9.exe ms_kshogi.kif /M" +  KAIZULIMIT.to_s    # 解図
KSHOGIEXEZ = "c:/PROGRA~2/Kakinoki/KShogi9/KShogi9.exe ms_kshogi.kif /Z"        # 余詰を探す
KSHOGIRESULT = "c:/Users/ユーザ名/Documents/柿木将棋/KShogiResult.txt"          # 柿木将棋実行結果
##### ユーザ名は実行するPC毎に、そのPCでのユーザ名に書き替えること

INKIF = "c:/tst/ms_in.kif"                 # 持駒サーチの入力棋譜
KSHOGIKIF = "c:/tst/ms_kshogi.kif"         # 柿木将棋に渡す棋譜
RESULT = "c:/tst/ms_result.txt"            # 持駒サーチの結果
KANZEN = "c:/tst/ms_kanzen.txt"            # 見つかった完全作
TSUMI = "c:/tst/ms_tsumi.txt"              # 見つかった詰んだ組み合わせ(最小持駒)

・・・・・・


全ソースコード(約300行)はこちら。

詰将棋創作プログラミング 3 裸玉全検の可能性のときに高速化のため事前チェックなど手を加えて少し大きくなっているが、元々は200行ぐらいだった。

3.持駒サーチの実行について

このソースコードは、詰将棋創作プログラミングをしてみたい方のためにサンプルとして公開するものであり、そのままで実行することは想定していない。

私の環境では動いているプログラムなので、Rubyと柿木将棋IX(最新のアップデート)をインストールして環境を整えれば実行は可能かもしれないが、保証できないので、動かしたい方は自己責任でお願いする。

4.持駒サーチ実行例

1) 事前準備

1a. 未インストールなら、Ruby、柿木将棋IXをインストール

c:/tstフォルダを作り、Rubyのパスを張っておく。

1b. 柿木将棋IXで、余詰設定、詰将棋設定

(軽く設定しておいて、完全作候補だけあとから時間をかけて調べるのが効率的)

☑ 時間制限をする 10秒
☑ 進行度制限をする 100
☑ 各局面で複数の余詰を検出する
☑ 余詰検出で中断する

・ 長手数用
・ 詰上り局面から調べる

☑ 棋譜に解答時間を記録する

1c. 上記のms.rbをc:/tstにダウンロード、パラメタ、ユーザ名を書き替え

MOCHIMAX = 8                       # 持駒の最大枚数 1-38
KOMASYUMAX = 4                     # 持駒の最大種類数 1-7
KAIZULIMIT = 5                     # 解図時間制限 秒単位

KSHOGIRESULT = "c:/Users/xxx/Documents/柿木将棋/KShogiResult.txt"          # 柿木将棋実行結果

xxxは実行するPCでのユーザ名を設定

2) 盤面図を作って持駒サーチを実行

2a. 柿木将棋IXで、c:/tst/ms_in.kif を作成

  9 8 7 6 5 4 3 2 1
+---------------------------+
| ・ ・ ・ ・ ・ ・ ・v桂v香|一
| ・ ・ ・ ・ ・ ・ ・v玉 ・|二
| ・ ・ ・ ・ ・ ・ ・ ・ ・|三
| ・ ・ ・ ・ ・ ・ 銀 ・v歩|四
| ・ ・ ・ ・ ・ ・ ・ ・ ・|五
| ・ ・ ・ ・ ・ ・ ・ ・ ・|六
| ・ ・ ・ ・ ・ ・ ・ ・ ・|七
| ・ ・ ・ ・ ・ ・ ・ ・ ・|八
| ・ ・ ・ ・ ・ ・ ・ ・ ・|九
+---------------------------+
持駒:なし

2b. 持駒サーチ実行

コマンドプロンプトを起動(文字コードはSJISに)
cd
c:/tst
ruby ms.rb

2c. 実行結果は下記ファイルに格納される

c:/tst/ms_result.txt 全実行結果

c:/tst/ms_kanzen.txt 完全作候補リスト: 手順は保存されないので後で柿木将棋で調べる。ちゃんと時間をかけて検討することも必要。

・・・
持駒枚数最大:8 持駒駒種最大:4 解図時間最大5秒

飛 銀 歩四 : 27手で詰みました(▲2三飛、0:01)。
   余詰:0、非限定:1、手順前後:0、迂回:0 検出しました。
角 金 桂 香 : 15手で詰みました(▲4四角、0:02)。
   余詰:0、非限定:6、手順前後:0、迂回:0 検出しました。
金二 : 3手で詰みました(▲2三金、0:01)。
   余詰、非限定等は見つかりませんでした。
金 銀 : 5手で詰みました(▲2三銀打、0:00)。
   余詰、非限定等は見つかりませんでした。
・・・

c:\tst\ms_tsumi.txt 最小持駒リスト: 裸玉の検討のときなど有効

なお、上記ファイルをブラウザで表示して文字化けする場合は、テキストエンコーディングをShift_JISに設定すること。

| | コメント (0) | トラックバック (0)

詰将棋創作プログラミング 20 自動創作とは

[2017年1月14日最終更新] 反響のリンク追加

詰将棋創作プログラミング 20 自動創作とは

詰将棋パラダイス誌の2017年1月号のデパートで、eureka作品が5作発表されている。eurekaは、私とコンピュータが協力して創作した詰将棋で使用しているペンネームである。これまでに創作した作品はeureka作品集で見ることができる。これに関連して、ちえのわ雑文集で、自動創作を禁止すべし、という提言が掲載されている。内容は詰パラを読んでほしいが、ここでは「自動創作とは何か」について触れておきたい。

  • 「・・・ 今月号のデパート出題稿を見てみてほしい。これらは全て自動創作によって得られた作品とのことだ。そしてさらに驚くべきことに、その全てが好作。人の作る条件作の水準を大きく上回っていると私には感じられた。
     それもそのはず、何せコンピュータは1日に数万というオーダーで条件に合った完全作を得ることができるらしい。1日に1作を仕上げるのがやっとの我々が敵わないのも当然だ。条件作という領域から人が立ち退きを迫られる日はそう遠くないかもしれない。
     しかし考えてみると、なぜ我々がコンピュータにこの楽園を明け渡してやらねばならないのだろうか。・・・」 (詰パラ2017年1月号、ちえのわ雑文集)

詰将棋創作プログラミングの連載では、どういう考え方でどんな取り組みをしてどういう作品を作ってきたか、できるだけ詳しく公開しているのだが、この筆者は読んでいないのかもしれない。「とのことだ」、「らしい」と自分の直観と聞いたことだけで判断して「我々は自らの手でその果実を禁じられたものとしなければならない」とまでいわれると、最近将棋でも同じようなことがあっただけに、ちょっと恐怖を感じる。思いこんでいる人には、それに沿う説明以外はすべて納得できないといわれるのだろうなあ。

  • 「人間の脳とコンピュータは、処理方式が全く異なり、それぞれ違う得意分野がある。詰将棋の解答で人間を凌駕しているソフトウェアが、詰将棋の創作では人間に遠く及ばない。ならば、人間とコンピュータが協調して、おもしろい詰将棋を創作することを考えればよいのではないか。詰将棋作家の将棋ソフトの利用は、現在は検討(余詰チェックなど)が中心だが、それだけでも非常に大きな効果があり、解答・検討能力に優れた柿木将棋が詰将棋作家の必須ソフトになっている。創作活動全般にソフトウェアが活用できるようになったら、もっと多くの人が詰将棋を創作できるようになったり、新次元のすばらしい詰将棋が生まれてくる可能性もあるのではないか。」
     (TETSU、詰将棋創作プログラミング
  • 「1.妄想力と実現力
     詰将棋の創作には、おおざっぱにいうと二つの力が必要です。
     一つはどんな詰将棋にするか狙いやイメージを決める妄想力。仕事でいえば、企画、構想といった段階です。
     もう一つは、その妄想を実際に詰将棋に図化する実現力。ここは棋力が重要なので、棋力の低い私には大変です。
     妄想力はコンピュータには苦手で、ここは人間ががんばるところ。でも、実現力の方はコンピュータを活用すれば、かなり効率化できそうです。」
     (加藤徹、詰将棋パラダイス2014年7月号 おもちゃ箱だより)
  • 「一般に、能力のある一部の人しかできなかったことが、機械の支援によってできるようになると、自分たちの領域を侵食されることに対する反発と、これまであこがれていたことができるようになる喜びの両方の反応がでてくる。だんだん意識が変わってくると、機械にできることは機械にまかせて、人間はそれも活用してよりクリエイティブな領域に挑戦するようになっていく。
    ソフトの進化は止まらないので、それをいかに活用して楽しめるか考えたいものだ。」
     (TETSU、詰将棋創作での将棋ソフトの活用

詰将棋の創作は、大雑把にいうと次のようなフェーズになる。

1) 企画、構想(どんな詰将棋を作るか考える)

 どんな配置にするか、どんな手筋、趣向、構想、条件を織り込むか、作品の狙いを明確化

2) 図化(それが成立しそうな配置を考える)

 正算、逆算、全検など手法はいろいろ

3) 検討(狙いが成立しているか確認)

 手順が狙い通りか、余詰などがないか

4) 選定、推敲(最終的な作品を決定)

 いろいろある案からよいと考える図を決める

将棋ソフトなど存在しない時代は、もちろん、原則すべて人間(基本は作者だが、協力者、検討者、選者も)がやっていた。将棋ソフト(柿木将棋など)が登場し、進歩してくると、3)検討はソフト中心に行うのが普通になり、また2)図化でもソフトが大きな役割を果たすようになっている。しかし、図化、検討に柿木将棋が活用されたとしても、それで作られた作品を柿木将棋作とはいわない。柿木将棋は作者によって活用されているツールにすぎず、企画、構想も最終的な選定も作者が実施しており、そこにオリジナリティがあるからである。

コンピュータ(ソフト、AI)による自動創作といえるためには、1)から4)まで自動でできることが必要と考えるが、現在のところ、それは夢である。

詰将棋創作プログラミングで実現しているのは、上記で述べた現在の柿木将棋を活用した創作法の効率化である。一般に創作途中ではたくさんの図を検討する必要があり、その都度柿木将棋に入力して解答、検討を実行する必要がある。その部分の人間の操作をプログラムを組むことで自動化しているわけである。効率化されているとはいえ、創作法という意味では私が以前から創作していたのと同じである。

上記のことからeureka作品は他の私名義の作品と同様、私の作品と考えている。私もほかの人に説明するときに「コンピュータ作」ということがあるが、「自動創作」ということばが、私の作品であることを否定する意味で使われているのなら、とても悲しいことだ。

なお、柿木将棋IXは標準でプログラムから呼び出すことができ、プログラムが組める人なら誰でも同様のことができる(柿木将棋の活用参照)。たぶんほかにも実行している人がいるだろう。効率化、時間短縮は誰にとってもメリットなので、近いうちに創作法の一つのスタンダードになるかもしれない。

ちえのわ雑文集の提言について、ネット上でいくつか反響があったので、最後にあげておきたい。


関連情報: コンピュータ将棋2017  2016  詰将棋創作プログラミング
  詰将棋創作での将棋ソフトの活用  コンピュータがもたらした平等の時代
  ソフト利用詰将棋創作の問題点  コンピュータ詰将棋の課題
  コンピュータによる詰将棋創作  コンピュータで詰将棋  柿木将棋IX

| | コメント (2) | トラックバック (0)

コンピュータがもたらした平等の時代

[2016年7月29日最終更新] 機械創作コンテンツの時代 を追記

詰将棋パラダイス誌1997年4月号-1999年4月号に連載された「毎日がパラダイス」は、詰将棋作家でもあり小説家としても著名な故吉村達也さんが、自身の話から詰棋界のもろもろの課題(コンピュータ詰将棋、詰将棋は数学か小説か、入選とは、規約論争・・・)まで切り込むおもしろいエッセイだった。

詰将棋創作での将棋ソフトの活用では、コンピュータ詰将棋がもたらす暗黒の未来予想(吉村達也 毎日がパラダイス 第5回 運命の神が動き始めた (PDF))を紹介したが、吉村さんは当時のコンピュータ詰将棋の状況を良く見ていて、コンピュータ詰将棋のプラスの面についてもいろいろ書かれている。その一つとして第18回の記事を紹介しよう。

「機械の能力が人間のそれを圧倒的に上回ってくれたおかげで、実力者の前では初心者は小さくなっていなければならないというお稽古ごとの世界にありがちな上下関係は消滅し、本当の意味での平等さが詰棋界にやってきたのです。」

プログラムが囲碁のトップ棋士を大差で破ったことで、職を奪われるのではないかなど、いろいろな分野で不安が語られているが、1998年にすでにコンピュータによる変化のマイナス面、プラス面をしっかり見据えていた吉村さんの慧眼には感心する。一読をお勧めしたい。

20世紀にすでにコンピュータが人間を超えた詰将棋では、暗黒の未来も予想されていたわけだが、実際にはよい循環になり、ITは詰将棋界の発展に大きく寄与している。

人間がソフト・アプリを道具として使いこなすことで、

  • 本当の意味での平等さが詰棋界にやってきただけでなく
    (上記のPDF参照)
  • 時間短縮効果で、忙しくて詰将棋から離れていた人が戻ってきたり
    (私もその一人)
  • 鑑賞を中心とした愉しみ方が可能になったり
    (自分で解かなくてもソフトで解図させ鑑賞できる)
  • 新しい詰将棋ファンも大幅に増加したり
    (スマホ詰パラの貢献が大きい)
  • それまでになかったような作品が登場してきたり
    (柿木将棋活用の創作はいまでは常識)

と、良いことがたくさん。

さらにソフト・アプリの機能も日々進化しており、鑑賞支援、創作支援など今後もより便利になっていくことが期待される。

詰将棋創作での将棋ソフトの活用でも書いたが、「ソフトの進化は止まらないので、それをいかに活用して楽しめるか考えたいものだ。」

関連情報: コンピュータ将棋2017  2016  将棋ソフト・コンピュータ将棋
  詰将棋創作での将棋ソフトの活用  詰将棋創作プログラミング
  柿木将棋IX  スマホ詰パラ


コンピュータ創作の危険性 2016年6月28日追記

詰工房で、コンピュータ創作の危険性に警鐘を鳴らしている方に話を聞きました。

  • 特定ジャンルをコンピュータで全検して、全作品リストを公開することは、そのジャンルに特化して創作している人の楽しみを奪うので良くない
  • eurekaでしなくても、開発が続けばそういうことをする人がでてくるかもしれない。だから開発自体をやめるべき

といった趣旨だったでしょうか。ただしコンピュータ使用の創作自体を否定しているわけではなく、柿木将棋はその人が詰将棋を始めたときすでにあったので問題ないとして、自身でも活用されています。

詰将棋創作プログラミング 10 陣内竜堂はいつ出現するかでもちょっと書きましたが、1997年にはすでに「詰将棋の3×3金銀図式の数え上げ」という発表がなされています。「金銀3×3図式は「これにて一件落着」!」(門脇芳雄)となってしまったわけですね。

こういったことに対して詰棋界はどうしたら良いのか。吉村達也さんの考えが毎日がパラダイスの第10回で示されているので、これも参考に紹介しておきます。


機械創作コンテンツの時代 2016年6月29日追記

宮島陽人さんより、機械創作の著作権についてコメントをいただきました。ありがとうございます。詰将棋の場合は機械創作かどうか以前に、あまりお金に絡まないので裁判の判例もなく、詰将棋の著作権があるかどうかも意見がわかれているのが現状です。

柿木将棋IX詰将棋創作プログラミングのように創作支援ツールとして人間を助けているうちはとにかく、AIが人間の創作技法や評価方法を習得して独自にどんどん作るようになると、困ったことになる人もでてくるかも。著作権は別としても、大量の機械創作コンテンツが出回るようになると、人間が創作したコンテンツでもそれらと差別化できないようなものは埋もれてしまって淘汰されそうですね。

x年後にはスマホAI詰パラが立ち上がり、「1000種(人?)の創作AIが詰将棋を創作、毎日100作追加、入門コーナー、手筋コーナー、上級コーナー、難解コーナー、趣向詰コーナー、構想作コーナー、曲詰コーナーなどなどお好きなコーナーでお楽しみください」 とかなると、解いたり鑑賞して楽しむ人は大喜びでしょうね。解答者と創作したAIが会話できたり、アクセス履歴を分析してその人にあった詰将棋を出題してくれたり、かなり魅力のあるコンテンツになりそうです。

人間創作中心の既存詰将棋メディアは、なくなってしまうかというと、それに対抗していろいろな作品、企画で魅力を増していくでしょうから、よりおもしろくなっていくでしょうね。

こういう時代を詰棋界の発展と見るか、既存秩序の崩壊と見るか、立場や考え方で見方は変わってきそうです。

| | コメント (1) | トラックバック (0)

詰将棋創作プログラミング 19 5手詰将棋の特性

[2016年2月4日最終更新]

詰将棋創作プログラミング 19 5手詰将棋の特性

1.詰将棋の評価

コンピュータで詰将棋を生成させるときの問題は、詰将棋の評価である。評価といっても、発表された詰将棋を人間が評価するのとはレベルが違って、まずは詰将棋といえるかどうか判断するレベルの評価が必要になる。最終的な評価は人間がするにしても、事前に自動である程度の評価をさせないと、人間が大量のゴミの山からダイヤを探すようなことになる。人間レベルの自動評価は、発表に足る作品をたくさん自動生成できるようになってから考えればよいだろう。

詰将棋創作プログラミング 11 ランダムに自動創作続きでは、手順中の「同」の数でフィルタリングしたが、これもその目的である。まだ手順の解析はできていなかったので、棋譜ファイルを文字列検索するだけですむ簡易な判定をしたわけだ。

2.手順データから詰将棋の特性を考える

詰将棋創作プログラミング 18 取らず手筋の源流で説明したように、手順を解析して情報を追加し検索で利用できるようにした。そこで、この手順データを利用して、詰将棋の特性を考えてみたい。

といっても、ここでは各種の趣向をこらした芸術的な詰将棋はさておき、入門用の簡単な詰将棋を考える。そこで、一つのサンプルとして、「22玉、右上5×5以内の5手詰」について検討することにした。

データベースからこの条件の既存作品を検索したところ、約1700作あった。単にこの手順データを見ても特性が判りにくいので、比較対象として、5手詰1000作を「ランダムに自動創作」を使って自動生成した。ただし、余詰チェックも捨て駒チェックもバイパスして、柿木将棋が5手で駒余りなしに詰ますというだけのしろものである。

既存作品から最近の分1000作を選び、この自動生成の1000作と比較すれば、どのへんが詰将棋の特性なのか見えてくるのではないか、またある図が詰将棋といえるかどうか判断する評価関数がつくれるのではないか、というもくろみだ。

3.比較の方法

各手ごとの手順データは今のところ次のものを用意している。
(再掲。詳しくは詰将棋創作プログラミング 18 取らず手筋の源流を参照)

# 各手ごとの手順データ
# 手数 指手         先後 移動元 移動先 駒 成 玉位置 相対元  相対先
# N    TE           SG   FS,FD  TS,TD  KM NF GS,GD  FSS,FDS TSS,TDS
# 1,   2三飛成(26),1,   2,6,   2,3,   7, 2, 1,4,   1,2,    1,-1,
# 王手 元が盤 先が駒 回/離 自利き 敵利き 同 入替 連移
# OS   FB     TK     TG    NJ     NT     DO IK   RI
# 1,   1,     0,     1,    0,     2,     0, 0,   0

24項目あって、5手詰の場合このデータが5手分ある。ただし、手数と先後は自動的に決まるし、指手は後の項目と重複しているので、この3項目を除いた21項目×5手の105項目について、既存作品、自動生成の各1000作の中で各値の作が何作あるか、調べることにした。

4.調査結果

調査プログラムを実行した結果は次のような感じ。

FS 移動元(筋):
1手目 [[673, 896], [60, 11], [60, 20], [97, 23], [72, 43], [27, 7], [0, 0], [0, 0], [0, 0], [0, 0]]
2手目 [[1, 17], [98, 0], [703, 980], [121, 2], [60, 1], [6, 0], [0, 0], [0, 0], [0, 0], [0, 0]]
3手目 [[457, 910], [95, 10], [111, 25], [159, 22], [132, 27], [35, 6], [0, 0], [0, 0], [0, 0], [0, 0]]
4手目 [[15, 53], [187, 364], [525, 315], [220, 268], [35, 0], [7, 0], [0, 0], [0, 0], [0, 0], [0, 0]]
5手目 [[548, 775], [81, 33], [80, 80], [122, 71], [120, 36], [38, 5], [0, 0], [0, 0], [0, 0], [0, 0]]
FD 移動元(段):
1手目 [[673, 896], [77, 25], [57, 20], [66, 24], [89, 26], [27, 9], [0, 0], [0, 0], [0, 0], [0, 0]]
2手目 [[1, 17], [185, 2], [646, 980], [92, 0], [50, 1], [15, 0], [0, 0], [0, 0], [0, 0], [0, 0]]
3手目 [[457, 910], [101, 19], [149, 17], [104, 23], [115, 24], [63, 7], [0, 0], [0, 0], [0, 0], [0, 0]]
4手目 [[15, 53], [197, 251], [503, 269], [232, 427], [30, 0], [12, 0], [0, 0], [0, 0], [0, 0], [0, 0]]
5手目 [[548, 775], [121, 37], [101, 30], [94, 82], [87, 65], [38, 11], [0, 0], [0, 0], [0, 0], [0, 0]]
・・・

全結果は「dbc026_result.txt」をダウンロード(ブラウザで表示するときはShift_JISでエンコード)。

例えば最初の項目FS 移動元(筋)で、取りうる値は0(駒台)、1筋から9筋で全部で10個。その0~9の値が既存作品、自動生成の各1000作中何作あるかペアで示している。

最初の[673, 896]は、1手目駒打ちの図が既存作品では673作(67.3%)、自動生成では896作(89.6%)あったことを示す。かなり有意な差があることをうかがわせる数字である。

この結果を利用して詰将棋(といえる)かどうか判断する評価関数を作る予定であるが、ここでは私がざっと見て気づいたことを書いてみたい。

5.5手詰将棋の特性

1)NF 成不成(成れない、不成、成):

1手目 [[677, 898], [119, 30], [193, 72]]
2手目 [[989, 1000], [0, 0], [0, 0]]
3手目 [[478, 914], [168, 20], [343, 66]]
4手目 [[989, 1000], [0, 0], [0, 0]]
5手目 [[573, 788], [165, 90], [251, 122]]

不成も成も既存作品の方が自動生成よりずっと多い。その分紛れが多い局面を意識的に作りこんでいるからだろうか。なお、既存作品の合計が1000になってないのは手順無しの図が11あったため。

2)OS 王手種別(非王手、直接王手、離し王手、空き王手、両王手)

1手目 [[0, 0], [900, 937], [19, 14], [49, 49], [21, 0]]
2手目 [[989, 1000], [0, 0], [0, 0], [0, 0], [0, 0]]
3手目 [[0, 0], [815, 893], [58, 36], [83, 70], [33, 1]]
4手目 [[989, 1000], [0, 0], [0, 0], [0, 0], [0, 0]]
5手目 [[0, 0], [909, 927], [11, 23], [57, 48], [12, 2]]

いずれも大部分が直接王手。両王手(一番右)は圧倒的に既存作品が多く、自動生成で偶然両王手になるのはほとんどないことがわかる。

3)FB 移動元が駒台(打ち)/盤上(移動)

1手目 [[673, 896], [316, 104]]
2手目 [[1, 17], [988, 983]]
3手目 [[457, 910], [532, 90]]
4手目 [[15, 53], [974, 947]]
5手目 [[548, 775], [441, 225]]

既存作品は自動生成と比べて駒打ちが少ない。後手の駒打ち(合駒)は既存作品の方が多いかと予想していたが、5手だと合駒を使った良い手順が作りにくいせいか。

4)TK 移動先が空きマス/敵駒

1手目 [[973, 1000], [16, 0]]
2手目 [[261, 907], [728, 93]]
3手目 [[975, 1000], [14, 0]]
4手目 [[232, 924], [757, 76]]
5手目 [[986, 1000], [3, 0]]

先手は駒取りがほとんどない。後手は既存作品では7割以上が駒取りだが、自動生成では1割以下とはっきり分かれた。次の同のデータをみるとだいたいは捨て駒を取る手だが、それ以外でも詰方の駒を取る手がある程度ある。詰方の駒が消えた方が美しいという意識で創作されているためだろうか。

5)DO 同以外か同か

1手目 [[989, 1000], [0, 0]]
2手目 [[328, 968], [661, 32]]
3手目 [[988, 1000], [1, 0]]
4手目 [[292, 972], [697, 28]]
5手目 [[989, 1000], [0, 0]]

既存作品で意識的に捨て駒を入れているのが見える数字。

6)TG 移動先が玉の回り(1)/離れたマス(2):

1手目 [[0, 0], [862, 875], [127, 125]]
2手目 [[0, 0], [903, 999], [86, 1]]
3手目 [[0, 0], [805, 855], [184, 145]]
4手目 [[0, 0], [884, 999], [105, 1]]
5手目 [[0, 0], [851, 905], [138, 95]]

後手の離れたマスへの移動は既存作品の方が圧倒的に多い。これは桂打ちや飛角香の離し王手を取る手などで、ランダムでは入りにくいのかもしれない。

7)NJ 移動先への自駒の利き(0駒、1駒・・・)

1手目 [[562, 128], [398, 842], [27, 30], [2, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]]
2手目 [[372, 862], [506, 132], [100, 6], [11, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]]
3手目 [[660, 112], [320, 847], [9, 39], [0, 2], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]]
4手目 [[514, 763], [378, 217], [83, 20], [14, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]]
5手目 [[104, 52], [880, 909], [5, 36], [0, 3], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]]

ここもはっきり分かれた項目だ。既存作品では先手は0つまり同玉と取れる捨て駒が多く、自動生成ではヒモ付きの王手が多い。後手は逆に自動生成で8割が0になっているが、玉が守り駒のない地点に逃げる手だろう。

8)NT 移動先への敵駒の利き

1手目 [[33, 124], [480, 863], [418, 12], [52, 1], [6, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]]
2手目 [[760, 977], [223, 23], [6, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]]
3手目 [[80, 145], [601, 841], [258, 14], [42, 0], [8, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]]
4手目 [[853, 939], [133, 58], [3, 3], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]]
5手目 [[115, 94], [838, 903], [33, 3], [2, 0], [1, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]]

先手の王手に自動生成では1枚だけ、つまり玉しか利いてないのが8~9割。それに対し、既存作品の1、3手目では2枚以上利いている数もかなりある。同玉、同xといろいろ受けのある捨て駒、あるいは焦点の捨て駒ということだろう。

6.詰将棋らしい作品を作るには

上記の特性から、詰将棋らしい手順にするには、初形のランダム生成では難しい(効率が悪い)ことがわかった。対策としては二つの方向が考えられる。

1)詰将棋らしい手順が出そうな配置(どんな配置?)を優先して生成する
2)詰上りから逆算して、詰将棋らしい手が出る方向に逆算を進める

逆算のプログラムは、まだ一度も書いたことがないので、少し試行してみようかな。

| | コメント (0) | トラックバック (0)

詰将棋創作プログラミング 18 取らず手筋の源流

[2016年1月30日最終更新] リストを修正

詰将棋創作プログラミング 18 取らず手筋の源流

1.手順データの拡充

詰将棋創作プログラミング 15 データベースを手順で検索で、手順パターンで既存作品を検索する話をした。続く詰将棋創作プログラミング 16 手筋を手順パターンで表現では、手筋を表現するには、手順のデータがまだ不十分として、拡張する項目の案を書いた。

その案を実装して、拡張された手順ファイルを作成するプログラムを開発した。

ktbu026.rb 手順ファイルに項目追加
tejun.txtを読み込み、項目を追加してtejunx.txtに書きだす

16で述べた以外にも追加した項目もあり、全部で下記の項目を検索に利用できるようになった。

# 各手ごとの手順データ
# 手数 指手         先後 移動元 移動先 駒 成 玉位置 相対元  相対先
# N    TE           SG   FS,FD  TS,TD  KM NF GS,GD  FSS,FDS TSS,TDS
# 1,   2三飛成(26),1,   2,6,   2,3,   7, 2, 1,4,   1,2,    1,-1,
# 王手 元が盤 先が駒 回/離 自利き 敵利き 同 入替 連移
# OS   FB     TK     TG    NJ     NT     DO IK   RI
# 1,   1,     0,     1,    0,     2,     0, 0,   0

# 駒     KM= 歩~玉:1-8 と~龍:9-15
# 成     NF= 成れない:0 不成:1 成:2
# 王手   OS= 非王手:0 直接王手(桂も):1 離し王手:2 空き王手:3 両王手:4
# 元が盤 FB= 移動元が駒台(打):0 移動元が盤上:1
# 先が駒 TK= 移動先が空きます:0 移動先が敵駒(駒取り):1
# 回/離  TG= 移動先が玉の回り:1 移動先が玉から離れたマス:2 (玉の手は1)
# 自利き NJ= 移動先への自駒の利きの数(移動後)
# 敵利き NT= 移動先への敵駒の利きの数(移動後)
# 同     DO= 移動先が前の手と違う:0 移動先が前の手と同じ(同):1
# 入替   IK= 移動先が前の手の移動元と違う:0 移動先が前の手の移動元と同じ:1
# 連移   RI= 連続移動ではない:0 2手前の駒が連続移動:1

この拡張した手順ファイルを正規表現で検索するプログラムを作成した。今後の活用を考えて、検索対象の手数指定(5手詰だけを検索とか)、同一作の除外をできるようにした。

ktbu027.rb 正規表現による手順検索 拡張項目を指定可能に
・対象詰将棋の手数範囲(最小手数、最大手数)を指定可能に
・同一作は対象外とするオプションを追加(同一図番号リストを利用)

2.取らず手筋作品を検索

入替(入れ替わり)の項目は、若島正さんが詰将棋パラダイス2015年8月号、11月号で「夢想の研究」で取り上げている「取らず手筋」(ウムノフ)を検索できるように追加したものである。「取らず手筋」とは、若島さんの命名で、取れる駒をあえて取らず、(捨て駒などで)他のマスに移動させてから元いたマスに動く(駒取りにならない)という手筋のこと。

論考では移動させる手段を捨て駒に限って考察しているので、ここでも、その条件での検索を考える。

この手筋を上記の手順データを用いてパターン化すると、次のようになる。

[/SG=2.+KM=[^8].+DO=1/,/FB=1.+IK=1/]

後手(SG=2)が玉以外の駒(KM=[^8])で同xと取る(DO=1)、その駒が元いたマスに(IK=1)盤上の駒が移動(FB=1)という指定。

実際に検索してみたところ、同一図は除外して、5350作が見つかった。

3.取らず手筋の源流

若島さんは前述の「夢想の研究」で無双、図巧の取らず手筋作品を分析していて、それ以前の取らず手筋作品としては勇略第76番を紹介し、「『無双』と『図巧』以前には、取らず手筋に属するごくわずかな例が見出させるにしても、それはたまたま取らず手筋になっているという偶然の産物であり、作者による意識的な産物ではない。」としている。

そこで、検索結果から無双、図巧も含めて、それ以前の取らず手筋作品をリストしてみよう。

##### No.246182 伊藤看寿  17手 将棋図巧 P013 宝暦5 
##### No.246190 伊藤看寿  21手 将棋図巧 P021 宝暦5  7手目76桂以下余詰
##### No.246192 伊藤看寿  23手 将棋図巧 P023 宝暦5 
##### No.246196 伊藤看寿  43手 将棋図巧 P027 宝暦5  11手目62馬以下早詰
##### No.246202 伊藤看寿  15手 将棋図巧 P033 宝暦5 
##### No.246204 伊藤看寿  17手 将棋図巧 P035 宝暦5 
##### No.246205 伊藤看寿  13手 将棋図巧 P036 宝暦5 
##### No.246206 伊藤看寿  23手 将棋図巧 P037 宝暦5 
##### No.246207 伊藤看寿  29手 将棋図巧 P038 宝暦5 
##### No.246210 伊藤看寿  23手 将棋図巧 P041 宝暦5 
##### No.246211 伊藤看寿  27手 将棋図巧 P042 宝暦5 
##### No.246225 伊藤看寿  25手 将棋図巧 P056 宝暦5 
##### No.246234 伊藤看寿  31手 将棋図巧 P065 宝暦5 
##### No.246240 伊藤看寿  39手 将棋図巧 P071 宝暦5 
##### No.246242 伊藤看寿  35手 将棋図巧 P073 宝暦5  4手目同馬以下不詰
##### No.246246 伊藤看寿  19手 将棋図巧 P077 宝暦5 
##### No.246253 伊藤看寿  31手 将棋図巧 P084 宝暦5 
##### No.246254 伊藤看寿  15手 将棋図巧 P085 宝暦5 
##### No.246439 久留島喜内  41手 将棋妙案 P0033 宝暦? 古写本 26歩が無いのが正
##### No.246449 久留島喜内  35手 将棋妙案 P0043 宝暦? 詰将棋大全集 これが原図
##### No.246542 久留島喜内  11手 橘仙貼璧 P036 宝暦? 将棋妙案32番
##### No.246560 久留島喜内  99手 橘仙貼璧 P054 宝暦? 
##### No.246571 久留島喜内  23手 橘仙貼璧 P065 宝暦? 
##### No.246578 久留島喜内  11手 橘仙貼璧 P072 宝暦? 
##### No.246579 久留島喜内  35手 橘仙貼璧 P073 宝暦? 将棋妙案43番
##### No.246581 久留島喜内  43手 橘仙貼璧 P075 宝暦? 
##### No.246585 久留島喜内  39手 橘仙貼璧 P079 宝暦? 将棋妙案33番 この方が正図
##### No.246618 久留島喜内  7手 橘仙貼璧 P112 宝暦? 
##### No.246647 三代宗看  11手 将棋無双 P001 享保19 
##### No.246648 三代宗看  47手 将棋無双 P002 享保19 
##### No.246655 三代宗看  29手 将棋無双 P009 享保19 
##### No.246666 三代宗看  45手 将棋無双 P020 享保19  豪快な伏線作品
##### No.246668 三代宗看  33手 将棋無双 P022 享保19 
##### No.246681 三代宗看  17手 将棋無双 P035 享保19 
##### No.246683 三代宗看  47手 将棋無双 P037 享保19  簡単な修正は困難
##### No.246684 三代宗看  13手 将棋無双 P038 享保19 
##### No.246686 三代宗看  33手 将棋無双 P040 享保19  2手目42玉で不詰
##### No.246693 三代宗看  13手 将棋無双 P047 享保19 
##### No.246704 三代宗看  31手 将棋無双 P058 享保19 
##### No.246707 三代宗看  39手 将棋無双 P061 享保19 
##### No.246711 三代宗看  9手 将棋無双 P065 享保19 
##### No.246718 三代宗看  41手 将棋無双 P072 享保19  金鋸の原型
##### No.246722 三代宗看  31手 将棋無双 P076 享保19  19手目53香成で余詰
##### No.246734 三代宗看  31手 将棋無双 P088 享保19  14手目2七龍で不詰
##### No.246740 三代宗看  57手 将棋無双 P094 享保19 
##### No.246745 三代宗看  41手 将棋無双 P099 享保19 
##### No.246888 伊野辺看斎  41手 象戯手段草 P0003 享保9 
##### No.246889 伊野辺看斎  53手 象戯手段草 P0004 享保9 
##### No.246914 伊野辺看斎  31手 象戯手段草 P0029 享保9 
##### No.246974 伊野辺看斎  35手 象戯手段草 P0089 享保9 
##### No.247007 三代大橋宗与  17手 将棋養真図式 P019 享保元  手鑑54番
##### No.247031 三代大橋宗与  21手 将棋養真図式 P043 享保元  手鑑88番
##### No.247036 三代大橋宗与  23手 将棋養真図式 P048 享保元 
##### No.247061 三代大橋宗与  21手 将棋養真図式 P073 享保元 
##### No.247343 二代伊藤宗印  25手 将棋勇略 P0076 元禄13 
##### No.247624 五代大橋宗桂  11手 象戯手鑑 P032 寛文9 
##### No.247634 五代大橋宗桂  17手 象戯手鑑 P042 寛文9 
##### No.247642 五代大橋宗桂  31手 象戯手鑑 P050 寛文9 
##### No.247645 五代大橋宗桂  17手 象戯手鑑 P053 寛文9 
##### No.247646 五代大橋宗桂  17手 象戯手鑑 P054 寛文9 
##### No.247661 五代大橋宗桂  17手 象戯手鑑 P069 寛文9 
##### No.247666 五代大橋宗桂  27手 象戯手鑑 P074 寛文9 
##### No.247674 五代大橋宗桂  11手 象戯手鑑 P082 寛文9 
##### No.247680 五代大橋宗桂  11手 象戯手鑑 P088 寛文9 
##### No.247770 初代伊藤宗看  13手 将棋駒競 P073 慶安2   
##### No.247776 初代伊藤宗看  19手 将棋駒競 P079 慶安2   
##### No.247804 三代大橋宗桂  15手 将棋衆妙 P005 正保3   
##### No.247817 三代大橋宗桂  15手 将棋衆妙 P018 正保3   
##### No.256612 別所素庵  15手 素庵作物 P030 江戸初 諸国作物集50
##### No.256664 別所素庵  15手 素庵作物 P083 江戸初 諸国作物集80
##### No.256678 別所素庵  13手 素庵作物 P097 江戸初 

リストの下の方は、年代が不明あるいはTumeBaseが認識できないため年代順のソートで後ろになったもの。同一作の除外の際、こちらがオリジナルとされてしまうのでちょっと不便だ。改善を検討しよう。 [1月30日 発表年月表記とオリジナル判定を修正、リストを差し替えた。]

衆妙の2作はいずれも歩を動かす作品であまり不利感がない。駒競の2作も歩と桂で、意識して創作した感じではない。手鑑では作品数も一挙に9作に増え、ちょっと見た感じでは内容的にも意識して創作しているようだ。ちゃんと見てみなければいけないが、五代宗桂が取らず手筋の創始者といえるのかもしれない。

作品はいずれも詰将棋博物館で見ることができるので、興味がある方はどうぞ。

| | コメント (0) | トラックバック (0)

ソフト利用詰将棋創作の問題点

[2016年1月26日最終更新] 変化別詰の記述を補足 評価方法の記述を補足

将棋ソフトの解図・検討能力が人間以上になって、詰将棋の創作は以前よりずっと敷居が低くなった。しかし、その分、従来型の出題形式では問題点もいろいろ見えてきた。その対応のため、詰将棋学校での新評価法を提案する。

関連情報: 柿木将棋IX  詰将棋創作での将棋ソフトの活用  将棋ソフトでの詰将棋解答
  詰将棋解答・創作での将棋ソフトの利用について  詰将棋創作プログラミング


1.ソフトの利用で創作はどう変わったか

昔は解答もかなりできる人でないと詰将棋を創作することが困難だった。私は若いころから創作は好きだったので、詰将棋パラダイス誌にたくさん投稿したが、解答力があまりないので、不完全で返送されるのが常だった。

しばらく冬眠して、創作を再開したときには、詰将棋を解ける将棋ソフトが存在していた。昔、完全にできなくて放置してあった図が次々完成した。投稿しても不完全で返送されることはほとんどなくなった。その頃の将棋ソフトは、解図はそこそこの能力があったが、余詰検討はできなかったので、変化や危なそうな紛れの盤面をすべて作ってそれを解かせて手順を確認していた。だから、自力で解いてなくても、一応変化紛れを含めて手順を確認していたわけだ。

将棋ソフトは進化し、解図から余詰の検討までしてくれるソフトも出現してきた。自分より解図能力が高いソフトが検討までしてくれるので、創作時間は飛躍的に短くなった。その反面、どうしても頼り切りになって、変化紛れの確認はおろそかになりがちだ。

最近取り組んでいる詰将棋創作プログラミングでは、変化はおろか作意手順もソフトが出力してくる。その候補作の中からよい作品を選ぶのが人間の仕事だが、これは作者というより、詰将棋コーナーの担当者の仕事で、数が多いととても変化紛れを全部確認するなんてできなくなる。

私の経験を書いてみたが、現在では柿木将棋IXが詰将棋作家の必需品のようになっており、大概の作家にとっては検討能力が自分よりずっと上なので、神様のように考えている人もいる。このような環境では変化紛れまで含めた手順をきちんと把握している人はそう多くないのではないだろうか。特に最近創作を始めた人は、最初からそういう環境なのだから。

2.解答者にとってはどう変わったか

昔は作者自身が事実上自分の作品を解いていたので、解答者がどのくらい解きやすいか、どう感じるか、ある程度予想もついていた。こういう作り方の時代は、作者が詰められないような難しい変化は存在しえないし、結論がだせないようなきわどい紛れがあれば、駒配置を変えて消しておく。変化同手数とか変化別詰とかあれば、解答者が困らないように調整したりする。だから、作品の難解さは作者の棋力に大きく依存していた。「作者と解答者の知恵比べ」という面があったのである。

ところが、作家は将棋ソフトという強力な武器を手に入れて使い放題になっているのに、解答者は表面上ソフトの利用は禁止されていることが多い。おもちゃ箱展示室では解答者も自由にソフトを使って鑑賞できるが、これはむしろ例外に近い。詰将棋パラダイスなどでソフト解答を禁止せざるを得ないのは、昔ながらの解答競争という形式をとっているためだろう。確かに、自力で解答する人とソフトを使って解答する人が競争するのはフェアではない。禁止されているのにこっそりソフトを使っている解答者がいるのもうなずけるような気がする。

しかし、「作者と解答者の知恵比べ」が、「作者+ソフトと解答者の知恵比べ」になっているのも、またフェアでないように思える。しかもソフトは解答者のことを考慮してくれないので、いたずらに難解になったり、紛らわしい変同や変別もそのままになっていたりする。すべての詰将棋愛好家の楽園であるべき詰将棋パラダイスだが、解答者にとってだんだん居心地が悪くなっているようなことはないだろうか。

近頃人気では本誌の詰将棋パラダイスをはるかにしのぐスマホ詰将棋パラダイスでは、大道詰将棋と同じように受方の手は自動的に選択されるようになっている。解答者は詰方の着手だけを選択すればいいわけだ。しかも大道詰将棋と違って失敗しても何回でも無料で再挑戦できる(もともと無料のアプリだが)。この方式は、ソフトは使えなくても解答者の負担はずっとへるので、作者がソフト利用できるのとある意味バランスがとれているのかもしれない。

3.新評価法の提案

創作にソフトを利用したとしても、変化紛れを含めすべての手順は作者の責任であり、きちんと確認してから投稿、出題するのが筋である。とはいえ、ソフトありきの現代でタテマエをいっても何もかわらない。

そこで一つ新たな作品評価方法を提案する。

詰将棋パラダイスの詰将棋学校では、A(3点)、B(2点)、C(1点)、誤解・無解(対象外)となっている。これをA(3点)、B(2点)、C(1点)、誤解・無解(0点)に変更するのだ。

「作者と解答者の知恵比べ」の時代、詰将棋学校の評価は、A(4点)、B(2点)、C(1点)、誤解・無解(4点)であった。詰将棋は試験のように「解かなければいけない問題」であり、解けなければ作者の勝ちということでA評価と同じ点数が与えられたのだ。

現代でも全問正解を目指して詰将棋を「解かなければいけない問題」ととらえる人ももちろんいるが、音楽、映画、小説などと同じような「楽しむコンテンツ」としての面が強くなってきているのではないだろうか。

例えば小説で、表現が下手でストーリーを誤解した人がたくさんいたら・・・
難しい分厚い小説で、本屋で手に取る人がほとんどいなかったら・・・
0点を付けるのが妥当な気がする。

この評価方法にすることで、高い評価を得るためには、作者には誤解、無解を避ける努力が求められる。これはソフトに丸投げではできないので、作者自身が自分の詰将棋に向き合う時間も増えることになる。変化紛れもきちんと作りこむことは、昔ながらのちゃんとした作家はソフトを使っても当然のように実行していることなので、効率は悪くなってもしっかりやるべきだと思うのである。

[補足] 2016年1月26日

「「作者と解答者の知恵比べ」の時代、詰将棋学校の評価は、A(4点)、B(2点)、C(1点)、誤解・無解(4点)であった。」と書いたが、詰将棋学校のABC評価がいつから始まったのか、気になって調べてみたら、1962年の7月号からだった。それまでは、優秀作投票(時期により1位のみか1・2位)または5点を各作に配分という方式だった。意外だったのは、始まったときの配点はA3B2C1誤無1(不詰という誤答は2)と、私の案に近かったこと。それが、A3B2C1誤無3と変更(解答者の負けとみてその作者に3点を与える)、更にA4B2C1誤無3を経て、A4B2C1誤無4に落ち着いたようだ。

4.変化別詰×のルールはそのままでよいか

変化別詰とは、変化手順(受方が作意と違う受けをした場合の詰手順)の余詰のことである。作意手順の余詰は作品が不完全とされるが、変化別詰は作品としては許容されている。

その変化別詰を書いてきた解答は○にすべきか×にすべきか、昔、詰パラ誌上で何年にもおよぶ大論争があった。最後に二人の巨頭、変別○論の森田氏と変別×論の山田氏が徹底討論をして、「それぞれの前提のもとではどちらも成立する。○論の方がすっきりするが、社会通念上○論を規約にしては受け入れられないのではないか。規約上は×論にして、微妙な問題は運用で○にすることでカバーしよう」ということで変化別詰は×に決定した。

詰将棋が「解かなければいけない問題」であり、「作者と解答者の知恵比べ」の時代の社会通念からすれば、これは妥当な選択だったと思われる。作者が変化紛れまでしっかり検討して作りこんでいるのだから、解答者も単に解いたという証明だけでなく、作者の意図まで把握してほしいと考えられたわけだ。

社会通念が変化した現在でもこのままでよいかというのは検討課題だが、詰将棋規約自体が大昔の綿貫規約がいまだに形式上は生きていて、その後の改定が何度も失敗して放棄されている現状では、変化別詰だけとりあげてもあまり意味がないような気もする。

3の評価方法にすれば紛らわしい変化別詰は減るはずだし、現在でも「担当者の判断で○にできる」ことになっているので、運用で対処すればよいのだろう。「誤解者が1割以上でた変化別詰の解答は○にする(評価は0点扱い)」とか指針をつくるのも有効かもしれない。

[補足] 2016年1月26日

長年変別×ルールが続いているため、このルールの何が問題なのか、ソフトまかせの創作でなぜ発生しやすくなるのか、わからない方もいるかもしれないので、ちょっと補足する。

変化別詰を×とするルールは、すべての応手に対して詰方が最短で詰めた手順を発見することを求めている。将棋ソフトでいえば柿木将棋の短手数用が必要になるが、これでは少し手数が長くなると解けなくなるのは現在では誰でも知っている。つまり、現在のソフトにもできないことを人間である解答者全員に要求しているということだ。

変別×ルールが決まったころ、作者は自分ではしっかり検討しているつもりなので、解答者にもきびしく要求しがちだった。しかし、その後優秀なソフトがでてきて、当時の作品の相当数に早詰、不詰などがあったことがあきらかになっている。初心者を含む解答者全員に要求していたことが、出題側(作者、検討者、担当者)ができてなかったわけである。

森田山田討論で、すべての応手に対して詰方が最短で詰めた手順を発見するのは解答者に対する要求として厳しすぎるという森田氏の主張に対し、山田氏は「実際にはそんなに難しい作業ではないと考えています。それは、一般に作意手順は変化手順とは区別し易く構成されているからです。」と答えている。作者がきちんと変化を作りこまなければ、とても難しい要求であることを山田氏も認識していたのだろう。つまり作者性善説にたったルールなので、そんなの知らないよというコンピュータとか、ルールを悪用して誤解させようという作者がでてくると、困ったことになるわけである。昔なら担当者がチェックして没にしていたかもしれないが、今はソフト頼りの担当者も多いので、余計に危ない。

| | コメント (0) | トラックバック (0)

詰将棋創作プログラミング 17 eureka作品集

[2017年4月22日最終更新] 作品41の解答と解説

詰将棋創作プログラミング 17 eureka作品集

この詰将棋創作プログラミングで、コンピュータとTETSUが協力して創作した作品は、(作品1を除き)作者名をeurekaとしている。これまで29作を紹介してきたので、作品集としてまとめてみた。いくつかの作品はおもちゃ箱詰将棋パラダイス誌で出題または紹介している。また、この29作以外に発表したeureka作品(作品30~41)もあるので、合わせて掲載する。

Tst001 作品1 TETSU 15手 解答

初形馬1枚 2014年年賀詰 平成26年(年)

Tst002 作品2 eureka 19手 解答

初形曲詰「/」 飛角図式

Tst003 作品3 eureka 31手 解答

立体金一色詰 斜め対称

Tst004 作品4 eureka 27手 解答

金一色図式

Tst005 作品5 eureka 29手 解答

大道棋 香歩問題

Tst006 作品6 eureka 35手 解答

大道棋 香歩問題

Tst007 作品7 eureka 33手または35手駒余り 解答

大道棋 香歩問題

Tst008 作品8 eureka 19手 解答

金一色無防備図式 上下左右対称

Tst009 作品9 eureka 15手 解答

金一色図式 左右対称

Tst010 作品10 eureka 35手 解答

金一色無防備図式 左右対称

Tst011 作品11 eureka 15手 解答

実戦型簡素図式

Tst012 作品12 eureka 19手 解答

実戦型簡素図式

Tst013 作品13 eureka 29手 解答

実戦型簡素図式

Tst014 作品14 eureka 23手 解答

角一色図式 左右対称

Tst015 作品15 eureka 27手 解答

角一色図式 上下左右対称

Tst016 作品16 eureka 19手 解答

角一色図式 上下左右対称

Tst017 作品17 eureka 27手 解答

角一色図式 左右対称

Tst018 作品18 eureka 19手 解答

角一色図式 左右対称

Tst019 作品19 eureka 29手 解答

都玉無防備正純飛角図式 飛角周辺配置

Tst020 作品20 eureka 19手 解答

左右対称無防備周辺正純飛角図式

Tst021 作品21 eureka 21手 解答

飛一色図式 角一色持駒

Tst022 作品22 eureka 31手 解答

左右対称飛一色図式 角一色持駒

Tst023 作品23 eureka 31手 解答

飛一色図式 角一色持駒 途中で角一色図式に

Tst024 作品24 eureka 13手 解答

実戦型詰将棋自動生成

Tst025 作品25 eureka 11手 解答

実戦型詰将棋自動生成

Tst026 作品26 eureka 13手 解答

実戦型詰将棋自動生成

Tst027 作品27 eureka 17手 解答

実戦型詰将棋自動生成

Tst028 作品28 eureka 21手 解答

実戦型詰将棋自動生成

Tst029 作品29 eureka 21手 解答

実戦型詰将棋自動生成

Tst030 作品30 eureka 15手 解答

馬一色図式 上下左右対称

Tst031_2 作品31 eureka 27手 解答

龍一色図式

Tst032 作品32 eureka 21手 解答

初形曲詰「一」 飛角図式

Tst033 作品33 eureka 17手 解答

初形龍1枚

Tst034 作品34 eureka 21手 解答

双裸玉 2016年年賀詰 2016

Tst035 作品35 eureka 17手 解答

2017年年賀詰 20171 17

Tst036 作品36 eureka 27手 解答

2017年年賀詰 2017 四金詰

Tst037 作品37 eureka 21手 解答

飛角図式

  • 詰将棋デパート1
     (詰将棋パラダイス 2017年1月)

Tst038 作品38 eureka 35手 解答

左右対称角一色図式

  • 詰将棋デパート2
     (詰将棋パラダイス 2017年1月)

Tst039 作品39 eureka 39手 解答

実戦型簡素図式

  • 詰将棋デパート3
     (詰将棋パラダイス 2017年1月)

Tst040 作品40 eureka 39手 解答

左右対称角一色図式

  • 詰将棋デパート4
     (詰将棋パラダイス 2017年1月)

Tst041 作品41 eureka 41手 解答

左右対称馬一色図式

  • 詰将棋デパート5
     (詰将棋パラダイス 2017年1月)

| | コメント (0) | トラックバック (0)

詰将棋創作プログラミング 16 手筋を手順パターンで表現

[2016年1月22日最終更新]

詰将棋創作プログラミング 16 手筋を手順パターンで表現

前回(詰将棋創作プログラミング 15 データベースを手順で検索)は手順パターンを既存作品の検索に利用する話だったが、そこで「創作のための作品評価の準備としても必要な機能」だと書いた。この点をもう少し説明してみたい。

1.自動創作でのコンピュータによる評価の必要性

コンピュータによる創作支援では、多数の候補図の中でどれを採用するかが問題になってくる。詰将棋創作プログラミング 11 ランダムに自動創作およびその続きでは、最終的には人間が評価することにして、その候補を絞るために手順中の「同」の出現回数でフィルタリングした。これにより、人間が判断する数を大幅に削減できたわけである。これは捨駒が含まれているかを見ようとしたものだが、捨駒は取るとは限らないので、この見方はかなり大雑把である。

まだ今後の話だが、逆算による自動創作とか考えると、逆算した局面の候補はかなり多いので、すべての局面を生成するとしたら、何手か逆算を重ねると(完全作だけでも)局面の数が爆発してしまうことは容易に予想できる。これを避けるには2手(あるいは1手)逆算するごとに、その局面を評価して候補を絞ることが必要になってくる。その評価をすべて人間がするのでは効率が悪すぎるので、最終的な評価は人間がするにしても、途中の段階ではコンピュータに評価を任せたい。

2.コンピュータによる評価方法

コンピュータに評価させるには、当然のことながら、評価値をコンピュータが計算できることが必要である。駒数など静的に判断できる要素はそう難しくなさそうだが、問題は手順の評価だ。「同」の数だけではあまりに原始的なので、手順パターンを利用して、より精度の高い評価をさせたいわけだ。

手順の評価にもいろいろな要素があるが、基本的な評価項目として「捨駒」「中合」など手筋が含まれているか、があげられる。こういった手筋をコンピュータに理解させるために手順パターンで表現できるようにしたい。

パターン化できれば、そのパターンが含まれている既存作品の数とか、高い評価を得た作品が多く含んでいるパターンとか調べて、データベースを利用して評価関数のパラメータの最適値を求めることが可能になるかもしれない。

3.手順データの拡張

現在の手順ファイルtejun.txtのデータを基にした手順パターンでは、捨て駒とか移動合とか基本的な手筋を表現することもできない。そこで、これらを表現できるように各手のデータを追加することを検討している。

ただ、データ数が増えると検索で何番目とか指定するのも大変になるので、増やす前にキーワードで指定できるようにしてみた。いまある情報は次の通り。

# 手数 指手 先後 元 先 駒 成 玉 相対元 相対先
1,2三飛成(26),1,2,6,2,3,7,2,1,4,1,2,1,-1

1)何手目か:N=1
2)指し手(kif形式):TE=2三飛成(26)
3)先手(1)か後手(2)か:SG=1 (先手)
4)移動元(打の場合は0,0):FS=2,FD=6
5)移動先:TS=2,TD=3
6)駒(歩(1)~玉(8)、と(9)~龍(15)):KM=7
7)成れない(0)か不成(1)か成(2)か:NF=2
8)玉位置:GS=1,GD=4
9)玉相対の移動元(打の場合は0,0):FSS=1,FDS=2 (1,4 + 1,2 = 2,6)
10)玉相対の移動先:TSS=1,TDS=-1 (1,4 + 1,-1 = 2,3)

例えば、歩不成なら /歩.+NF=1/ (".+"は任意の文字1つ以上の意味)と指定できるようになった。

ここまでの情報でも、不成(NF=1)、打ち合(打、かつSG=2)、頭金(金打、かつTSS=0,TDS=1)とか、ある程度の表現はできるが、捨て駒のような基本手筋が表現できないのでは極めて不十分。

そこで、追加情報として、とりあえず次の項目を考えている。

11)非王手(0)か直接王手(1)か離し王手(2)か空き王手(3)か両王手か(4):OS=1
12)移動元が駒台(0)か盤上(1)か:FB=0
 *指し手の"打"の有無でも判別可能
13)移動先が空きマス(0)か敵駒(1)か:TK=0
14)移動先が玉の回りのマス(1)か玉から1間以上離れたマス(2)か:TG=1
15)移動先への自駒の利きの数(移動する駒の利きは除く):NJ=1
16)移動先への敵駒の利きの数:NT=2
17)前の手と違うマス(0)か同じマス(1)か:DO=0
 *指し手の"同"の有無でも判別可能

4.手筋の手順パターンによる表現

上記項目を基本要素として、これらの組み合わせで手筋を表現できればよいわけである。この項目で何が表現できるか、あげてみよう。

先手後手とも
駒打ち:  FB=0  移動元が駒台
移動:   FB=1  移動元が盤上
玉の回り: TG=1  移動先が玉の回りのマス
駒取りなし:TK=0  移動先が空きマス
駒取り:  TK=1  移動先に敵駒あり
自利きなし:NJ=0  移動先への自駒の利きがない
自利きあり:NJ=[^0] 移動先への自駒の利きの数が1以上
敵利きなし:NT=0  移動先への敵駒の利きがない
敵利きあり:NT=[^0] 移動先への敵駒の利きの数が1以上

先手の手
捨て駒:  OS=1(直接王手)かつ TK=0(駒取りなし)かつ
      NJ=0(自利きなし)かつ NT=[^0](敵利きあり)
 *自利きありでも、玉以外の敵駒の利きがあれば捨て駒と呼ぶかも。
打捨て駒: 捨て駒 かつ FB=0(駒打ち)
移動捨て駒:捨て駒 かつ FB=1(移動)

後手の手
合:    KM=[^8](玉以外)かつ TK=0(駒取りなし)
打ち合:  合 かつ FB=0(駒打ち)
移動合:  合 かつ FB=1(移動)
中合:   合 かつ NJ=0(自利きなし)
打ち中合: 中合 かつ FB=0(駒打ち)
移動中合: 中合 かつ FB=1(移動)
捨て合:  合 かつ TG=1(玉の回り)
      かつ NJ=1(移動先への自駒の利きの数が1)
      かつ NT=[^0-1](移動先への敵駒の利きが2以上)
打ち捨て合:捨合 かつ FB=0(駒打ち)
移動捨て合:捨合 かつ FB=1(移動)

たぶんまだ情報が足りないが、それは随時追加を検討していけばよいだろう。

5.手順パターンによる表現の限界

上記により、捨て駒作品とか、ある程度の手筋は表現できるようになるが、いくら情報を追加しても表現できる範囲には限界がある。例えば、打歩詰がらみの構想などは作意の手順パターンだけでは表現できない。変化や紛れの手順も合わせてみないとわからないからである。

こういう高級な作品については、また別の創作支援機能が必要になるだろう。

| | コメント (0) | トラックバック (0)

より以前の記事一覧