合成音の「あぁ?」。

 今日の日記は、分かる人にだけ分かればいい話です。音声合成の話です。短い話です。つまらないです。

 私の研究の目的は音声合成ではないのですが、途中で合成の話が絡んできたのでそのことをちょこっと書きます。今回のミッションとしては、一つのスペクトルから人の声を合成するというものでありふれたものです。

 入力はこのスペクトルです。「あ」のスペクトルです。

 ほかにはなんらデータを使わず、データを使わないので機械学習もすることなく、いわばルールベースのやり方で音声を合成します。分析合成ではなく本当に合成ですね。

 で、これが合成音です。「あぁ?」という感じになっています。へー、こういう音になるんだなー、と思いました。人の声っぽく聞こえますかね。韻律は手動調整です。

 波形としてはこんな感じで、いたって普通の音声波形だと思います。

 というそれだけの日記です。たまには音声のことも書かないと将棋の話ばかりになってしまうので書きました。

 なお、最初の「あ」のスペクトルについてですが、「重点領域研究「音声言語」・試験研究「音声DB」連続音声データベース*1」という長い名前のデータベースの一つの音声のごく一部をお借りしています。

*1:板橋秀一「文部省「重点領域研究」による音声データベース」日本音響学会誌,48巻,12号,pp. 894-898 (1992)

弱いコンピュータ将棋「こまお」について。

 今日の日記は周回遅れの技術で作ったコンピュータ将棋の話です。

 先日、「こまお」移転先はこちら)というコンピュータ将棋を公開しました。こまおの特徴はとにかく弱いことです。攻めは遅く、受けはほとんどできず、筋は悪く、一手詰すら見つけられません。その上、平手から10枚落ち(玉と歩だけ)まであるので、10枚落ちを選べばほとんどの人が勝てるでしょう。アルゴリズム的にも数世代前のものを使っており、しかも、わざわざ駒損する筋を選んだりします。

 なぜ、そんなコンピュータ将棋を作ったのか。それが今日の日記の本題です。昨年末だったと思いますが、プロ棋士の遠山五段がニコニコ動画の生放送で、コンピュータ将棋について「人を育ててくれるようなコンピュータ」について言及していた憶えがあります(ちょっと記憶が曖昧なのですが)。そのときは、将棋の道場は人手不足でルールから教えなければならない人はさすがに教えていられないこともあるということがセットで語られていた気がします(ここ半年くらいでこのあたりはかなり変わってきた気もしますが)。これを聞いて当時の私は、「ルールならハム将棋で憶えることができるじゃないか」と思っていました。それから、そこから少しレベルアップした人には「金沢将棋」がすでにあると思っていました。そして、さらに強い人には「激指」もあります(私自身は金沢将棋も激指もプレイしたことはありませんが評判はよいです)。つまり、すでに人間を育てるソフトは充分に揃っていると思っていました。

 その考えが甘いと分かったのは、とある将棋初心者と盤をはさんで指したときでした。私もそれほど強くはないので、私が4枚(飛角香)落として指しました。その初心者の方は「金沢将棋のレベル1に負ける」と言っていました。序盤は問題なさそうに思えたのでいい勝負かと思った矢先、銀をタダで捨ててきました。狙いは特になさそうでした。そして、角と金を交換してきました。これも狙いはありませんでした。さらに飛車を捨てて銀と交換してきました。不思議な指し手だと思いつつも、指し続けました。終局して家に帰ってから、あの人はハム将棋の10枚落ちにも負けるだろうと思いました。

 将棋というのはやはりそこそこ強くないと面白くないもので、やはりある程度の強さがないと観戦すらできません。ある程度というのは私の感覚だと、ハム将棋の平手にまぐれで(あるいは攻略サイトを見ながら)一回勝つ程度です。で、そこまでたどりつくためには、何局も指す必要があります。そして、何局も指すためには、半分くらいは勝てないと続きません。将棋というのは勝てないと面白くないのです。そういうわけで、ハム将棋に勝てない人のための将棋が必要だと感じました。だから作りました。

 作る前に、指導対局をする側のプロ棋士にどういうことに気をつけているかといったことを聞いたりもしました。具体的に対局中にどういったアドバイスをするのかということです。いろいろと教えていただきましたが、相手の指し手についての感想を言うとのことだったので、私にできる範囲で人間の指し手について言語化しました。主に駒の価値に重点を置いた台詞になっています。指導対局では指導する側の指し手そのものにも意味があるものですが、そこまではとても実装できませんでした。また、指導を受ける側のアマチュアの方にも簡単に話を聞かせていただき参考にしました。

 実際に作ってみて、「勝てた!」という喜びの声も聞こえてきましたが、大きな反省点も二つありました。

 一つは、それでもやはり強すぎるらしいということです。10枚落ちに負ける友人もいました。また、開発過程をセミクローズドな空間で公開していたのですが、10枚落ちのランダム指しに苦戦する友人もいました。落とす枚数に応じて弱くするといった凝った設計にする必要もあったかもしれません。

 もう一つは、Firefoxを主たるテスト環境にしていたので気づかなかったのですが、IEだと重いということです。ウィンドウズのデフォルトブラウザがIEなのでそれを基準にテストするのが当然だったはずですが、思い至りませんでした。その後、軽くしようと努力しましたが(重いコードであるという自覚はあったのでいじれば軽くなるはずだと思っていました)、私の技術ではどうにもならず、結局最初の重いままの状態で公開しています。一つ言い訳を書くとすれば、JavaScriptを触るのは初めてであり、またGUIも初めてであり、そもそもコードを書くのは得意ではなかったのです。JavaScriptを憶えるのに購入したのは「JavaScript&jQueryレッスンブック」という本です。本自体は分かりやすかったですが、プログラミングが苦手なので途中で挫折しました。

 それから、反省点ではありませんが、やはり自然な指し手で弱くするのは難しかったです。弱いというのは要するに最善手から程遠いということですが、単純に悪い手を指そうとすると不自然になるのです。このあたり、学問的にも面白い研究課題だと思います。人間はなぜか自然な悪手を指すことができるのです。

 あと、「こまお」という名前をつけるにあたり知恵を貸してくださった方々ありがとうございました。どうでもいい話ですが、漢字で書くと「駒男」でもあり、「子猫(こ・まお)」でもあります。

 長くなりましたが、とにかくせっかく弱いコンピュータ将棋を作ったのでたくさんの初心者と戦って負けたいと思っています。

学者の試行錯誤ツイートについて。

 本日の日記は、学者の一般的な印象に関する話である。

 先日友人に、学問で食えないと愚痴を言っていた。そうしたらその友人に、「そういえばずっと前の音声の解説面白かったよ」と言われた。音声は私の専門である。それはそれで嬉しいのだけれど、その友人はそれを私の作業への最大限の肯定として言っていたのが残念でもあった。なぜ残念なのかといえば、解説こそが学者の仕事だという印象を抱かれていることがなんとなく分かったからである。付き合いの長い友人で、これからも付き合っていくだろう友人がそういう感じなので、おそらく周りに学者がいない人は、テレビや新聞で解説している学者の印象しかないだろうと思う。

 学者の作業で最も多くの時間を割かねばならないのは、研究に関する試行錯誤であり解説ではない。特に、素人への解説はエンターテインメントの側面が強いので、作業の中心とはならない。また、順序立てて公式のようなものを当てはめていけば結果が出ると勘違いされていることも多いが、むしろ試行錯誤の末に公式を創り出すのが学者の使命である。

 このあたり、なぜ勘違いされるのだろうと思っていたが、それは試行錯誤している姿を周りに見せていないからだと思う。私は現在、自宅で両親とともに住んでいて、そこで研究をしているのだが、最初はやはり研究に関して理解してもらえなかった。そんなある日、パソコンが壊れ、ヘッドフォンジャックをパソコンに挿していても内蔵スピーカーから音が漏れるようになった。結果的に、両親は数ヶ月間ずっと私が作った変な音を聞きつづけることになり、ようやく試行錯誤というものが何であるかということを理解するにいたった。そして研究作業がどのようなものかも分かったようであった。やはり、試行錯誤している姿を見せないと、研究を理解してはもらえないのだ。

 今、twitterで学者を見ていると、「最近の若い者は」というツイートや、教育に関する愚痴や、研究費への文句や、論文の締切りで忙しいという話や、任期の切実な身の上話や、言いようもなく辛いという心情吐露や、研究のhow toなどであふれている印象であり、肝心の「今日も実験に失敗した」「今日も分からなかった」「今日も思いつかなかった」というツイートがほとんどない。研究をしていれば毎日のようになんらかの失敗しているはずであるが、それがない。それでは学者の作業が一般の人に分からないのも仕方がない。

 私は、twitterでは将棋観戦クラスタにいるのでほとんど将棋のことばかりツイートしているが、google+では具体的な内容までは踏み込まないまでも実験失敗報告を結構書いている。意識的に書くようにしている。そういった類のことを多くの学者がツイートし始めたら、学者への印象が変わるんだろうなと思う。

大学の求人に関する記録。

 本日の日記は単なる記録です。おそらく読んでも面白くはありません。

 twitterから流れてきた情報ですが、東洋大学の教員の求人情報の中に注目すべきものがあるとのことでした。この求人サイトは研究者ならほぼ誰もが知っている有名なものです。就職先の機関は東洋大学の総合情報学部で、「情報基礎教育プログラム」担当の助教を求めているとのことでした。授業や研究以外にも様々な業務があり、普通の助教と何ら変わりはありません。

 ただ一ヶ所だけ注目すべき点は、「常勤(任期あり)1年間で再任なし」となっているところでした。教員を1年間しか雇っていられないということです。世の中は派遣切りなどが厳しく、ほかの職業に比べたら1年間も職が保証されているというのは幸せなことかもしれませんが、大学教員としては「常勤」で「1年間」で「再任なし」というのは珍しいことなので話題になりました。確かに、年々雇用条件が厳しくなっていたのですが、とうとうここまで来たかという感じです。

 少子化によりどの大学も経営が厳しくなっているので雇用条件をよくしろと要求するのは無理があると思われますが、とにかく事実として雇用条件はここまで厳しくなりました。今後もさらに厳しくなっていくことでしょう。

 そういうわけで、博士号取得ののち大学教員になりたいと考えている方はどうぞお気をつけください。また、進学先の大学を選んでいる高校生の方々もいろいろとお気をつけください。

 以上、単なる記録でした。

モンテカルロ5五将棋の試み、その3。

 昨日は電王戦でしたね。ということで、細々と続けている私のモンテカルロ法の試みの中間報告でもここに書こうと思います。詳しいことは過去のエントリを「モンテカルロ」でブログ内検索して読んでください。このシリーズはどうぶつしょうぎから始めたのですが、その最初のエントリはこれです。

 さて、まだ本将棋に至っておらず、相変わらず5五将棋なのですが、棋譜がそこそこまともになってきつつあります。前回ベンチマークと同様に、駒割りのみの単純なmin-max4手読みを後手にして、先手を私のモンテカルロ試行数10000試行/局面で対戦してみたところ、先手の85勝15敗でした。前回が28勝22敗だったので、結構な性能向上です。

 何を改善したかということですが、本質的なことはほとんどどうぶつしょうぎの頃と変わっておらず、特徴量を変えてみたり、パラメータの数値をちょっと変えてみたりしただけです。ただし、一行だけ本質的な改善をしています。その一行は何かというと、局面評価関数にわずかな割合で乱数を混ぜたということです。なぜそれが本質的なのかということは面倒なので説明しません。

 そこそこのまともさなので、来年の秋くらいのUEC5五杯に出てみたくなりました。一勝くらいはできるんじゃないでしょうか。でも、私はGUIが作れません。将棋所の使い方(USIの使い方)も分かりません。CUIならなんとかいけますが、体力がないので会場で操作をし続けることができません。というわけで、結局出ることはないでしょう。そのうちソースを公開すると思います。

 ところで、私のソフトの最大の特徴はモンテカルロがどうのこうのということではなく、棋譜なしで学習しているところだと思います。学習の仕方は過去の記事に書きました。予想するに、やはりモンテカルロではなくmin-maxの方が強いと思います。でも、学習法は私がやっているような感じの方がコンピュータらしい手が出るんじゃないかと思っています。

 以下、棋譜の一例。棋譜はご自由にお使いください(使う人はいないと思いますが)。

続きを読む

NVDAの人が出てるネットラジオ。

 面白かったネットラジオの紹介です。

 http://www.tomgnet.com/himatsubushi/live/backno.htm

 これの2011/12/20「NVDA日本語化プロジェクトメンバーの西本さんに聞く」というやつです。

 私のような目の見える人はほぼ使わないソフトなのですが、世の中には目の見えない人のために画面上の文字を読み上げてくれるソフトのジャンルがあり、スクリーンリーダーと呼ばれているようです。そのスクリーンリーダーの中にNVDAというもの(多分固有名詞)があり、その開発者がラジオに出ています。NVDAの最大の特徴はオープンソースだということなんだろうと思います。

 で、ラジオのホストは、スクリーンリーダーのユーザです。つまり、目の見えない人です。目の見える私としては、「なるほど、目が見えない人たちはこういうふうにパソコンと付き合っているのか」というのが面白かったです。また、我々がfirefoxを入れるためだけにIEを使うように、NVDAもほかの有料スクリーンリーダーの補助のために使われていたりなどするようです。事前知識なしで、面白い話満載です。それから、個人的に最も面白かったのは、「アクエストーク」(「ゆっくり」の声)を作っている人が昔何をやっていたのかが語られているところだったりしました。

 それから開発者の西本さんの経歴も面白いかもしれませんが、私は以前、東大の一室が会場の音音研というところでお世話になっていたので、それほど新鮮味はなかったです。

 真面目なことを書いておくと、技術がどう使われているのかとか技術がどう作り出されているのかとかそのあたりが分かる、ためになるラジオでもあります。

人工知能が東大に入るときの難所。

 一部で話題になっている「ロボットは東大に入れるか」(国立情報学研究所「人工頭脳プロジェクト」)であるが、私の周りでは専門外の方々の反応の大多数は「当然入れる」というものだった。私の直感では「難しい」ということになっているので、ここでは何が難しいのかということを簡単に書く。具体的に書くつもりはない。

 おそらく「当然入れる」と思っている人は、無意識のうちに「コンピュータを使えば当然入れる」と思ってしまっているのだろうと思う。さらにいえば、「人間がコンピュータを使えば当然入れる」と思っているはずである。その上で、「人間がいてもいなくてもコンピュータなら当然入れる」と推論してしまって、結論として「コンピュータなら当然入れる」と思ってしまうのだろう。でも、人間がいるかいないかというのは非常に大きな問題であり、その部分こそがこのプロジェクトの肝である。

 仮に、人間がコンピュータを使って受験することを考えよう。このとき、人間はまず問題文を読む。そして、コンピュータに必要な情報を入力し、解答に関する出力を得る。この出力をもとに人間は解答を書く。このとき人間は、問題文をコンピュータに分かるかたちに直すという作業をしている。そして、コンピュータの出力を人間に分かるかたちに直すという作業もしている。この人間がやっている「問題文の読解」「解答文の作成」こそが機械にとって難しい部分である。今回のプロジェクトはほぼこの二点へのチャレンジだと思ってよい(と書くといろいろと文句をいわれそうだが、そこが最も難しいところである)。

 コンピュータは確かに掛け算も足し算も即座に計算する。難しい微分方程式を即座に解いてくれたりもする。チェスで人間のチャンピオンにも勝った。クイズでも人間に勝った。人間にとって難しいことをことごとく成功させてきた。一方で、人間にとって簡単なことの多くはまだできないのである。自動車は時速百キロで走ることができるが、ロボットの二足歩行はまだまだ不自然であるし、「けんけんぱ」(片足飛びの遊び)などに至ってはまだまだ無理である。同じように、東大の入試よりもむしろ小学校の理科の方が人工知能にとっては難しいはずだという話もキックオフシンポジウムでは出た。さらにいってしまえば、幼児はものすごく速く母語(母国語)を憶えていくが、人工知能はまだまだ憶えることができない。そう、機械にとっての難しさは、ほぼ人間の感覚とは逆なのである。

 今回のプロジェクトが成功したら、人工知能の研究者はさらに「(人間にとって)簡単な」問題に取り組むだろう。それを素晴らしいと思うか滑稽だと思うかはあなたの自由である。