うずまき2017 powered by Jun-Systems

耳管開放症, SAS, 統計解析, 人工知能, プログラミングそれに思考

*

ITの未来について考えてみた

      2015/05/04


工学的アプローチとコンピュータの未来について文系が考えてみる。
こういう話題を書くと各方面から多分に批判を受けるのであんまり書きたくないんですが、書き溜めたものが一定量を越えたので投下します。
(キーワード:遺伝的アルゴリズム, ニューラルネットワーク, ビッグデータ, シンギュラリティ)

シンギュラリティとか言うと意識だけ高くて技術力はめっちゃ低い人みたいな匂いがプンプンしますね。
前半では某動画についていろいろと、後半でコンピュータの未来みたいなものについてなんとなく書きました。

遺伝的アルゴリズム

ぼくはニコ動で機械学習系の動画を見るのが好きです。
先に言っておきますが、動画を批判しているわけではありません。
むしろこういうことを考える機会を与えてくれたこのような動画には非常に感謝していますし、これからも手法を改良しながらいろいろと更新してほしいと思っています。

まずは動画をご覧いただくといいと思います。
動画は非常に面白いです。
工学的な遺伝的アルゴリズムの手法を利用して、コンピュータにゲームをクリアさせるというコンセプトの動画です。

人の手を利用せず、コンピュータによってゲームの解法を導き出すこのような手法は、個人的にすごくそそられるものがあります。
だからこそ、いろいろと改良できる点というのが目につくわけです。

まず、このような手法において強調するべき点は「ある行動に対する理由付けが一切存在しない」ということです。
それは上の動画の中でも、グラディウスを見ていた時に特に強く感じたことです。
あくまで「ランダムな操作の組み合わせ」を起点として、それを改良することでゲームクリアを目指しているために、ある時点tにおいて「撃つ」「X方向に動く」という行動を「なぜ行うべきなのか」という理由付けが行われません。
このようなことから、本来撃つ必要のないところで撃ったり、動く必要のないところでぐるぐる動いたりと、とにかく行動に無駄が生じてしまうという欠点があります。
しかしその行動が生存時間や進行距離といった結果に悪影響を与えないことから、行動がむしろプラスに評価される形となります。
失礼な表現になってしまいますが、極端なことをいえば、ただがむしゃらに動きまわって結果として生存できた動作の組み合わせを加重評価しながら改良していく、いわば総当りの発展形のようなシステムであるわけです。

そしてもうひとつ強調すべきことがあるとすれば、これがあくまで特定の事例にしか通用しないという点。
マリオにおいてステージ1-1をやっとクリアできた3900体の犠牲の上に成り立つ選ばれしエリート的な1個体でも、次のステージに進むと、せっかく学習したその行動が全く通用しなくなってしまいます。
なぜなら、その個体はルールを理解しているわけではなく、ただ1-1をクリアできるボタン操作の組み合わせを編み出しただけだからです。そして次のステージでは敵の配置も動きも地形も何もかもが異なるがために、そこで1-1をクリアしたボタン操作を行ったところで、クリアできる可能性は「高くはない」ことになってしまうわけです。
ということは、結局次のステージにおいても、クリアできるまでに膨大な組み合わせを改良しながらひたすら試していくことが必要となるわけです。
これでは遺伝の良さみたいなものが活かしきれていないような気がして、せっかくのいい技術なのに個人的には少し残念な感じがしてしまいます。

(もちろん、1-1のボタン操作で次のステージをクリアできる可能性がないとは全く言えません。このアルゴリズムを使用したら、やり方によっては、もしかしたら全てのステージで共通して使用できる奇跡のようなボタン操作の組み合わせが編み出される可能性だってないとは言い切れないのです。そういう点を追求したいという意味でも、可能性を捨てたくはありません)

また、改良の余地のある動作に関しても、その操作でクリア出来ている以上、改善の方向に評価が働かないという点も強調すべきかと思います。
上のマリオの動画を例に出すなら、コメントでも「遺伝ww」という形で指摘がありますが、ステージの最初でジャンプしたり、ジャンプ中に後ろを向いたり、といった行動には、「行動の意味」を見出すことが難しいです。
それが生存に貢献するわけでもなく、スコアが上昇するわけでも、キノコをゲットできるわけでもない。後半の行動のタイミングを調整するための行動だとしたら、その場で静止していたっていいはずです。
グラディウスの例の方が分かりやすいと思いますが、これはたぶんスコアの評価とは別に、「ある時点ある座標での攻撃がスコア上昇に貢献したかどうか」を別軸で評価に入れるといいんじゃないかと思います。こうすると、貢献しなかった攻撃は遺伝させないっていう選択的なシステムができて、より効率的な操作ができるんじゃないでしょうか。まあプログラムはかなり面倒になるだろうけど。

ゲームにおいて合理性をいちいち追求するのはナンセンスだという考え方もあるとは思いますが、一方で「スマートに(=短く上手くキレイに)ゲームをクリアする」というのも追求すべきテーマであるような気がするのです。

ここまで見てみると、遺伝的アルゴリズムを使用した個体生成では、以下の様なルールには対応できないことと思います。
・ステージが毎回ランダムに生成されるシステム
・複数ステージがあるシステム
もちろん、毎回敵の動きが変わっても(=敵がどんな動きをしても)絶対にクリアできる裏技的なコマンドが発見される可能性もあるので、それはそれで非常にそそられますし、やってみる価値はあると思います。
…一体どれほどの犠牲を伴うことになるのかと考えると背筋が凍る思いですが…。

ニューラルネットワークを使用する方法

一方、機械学習にはニューラルネットワークを使ってコンピュータに人間的な思考法をシミュレーションさせることで、ルールを「理解」させた上でゲームを行わせる方法もあります。

この場合、コンピュータは画面を「見」て、自分で「判断」して行動を行います。
すると、目の前に敵がいるから「敵に当たらないように」、また溝が近づいているから「溝に落ちないように」といった理由付けを込めて行動を行わせることができます。そのため、理由のない行動が減り、行動により合理性が増すんじゃないでしょうか。
…まあゲーム見てる側としてはずいぶんつまらない感じになりそうですが。

上の動画ではちょっとシステムを簡易化しすぎていて少し残念な感じになっていますが、本当に精緻に分析を行って操作全てに対してのシミュレーションを行えたらと思うとワクワクしちゃいます。
モノクロでもいいのでもう少し細かいドットでやったらオブジェクトの認識ももう少し精度が上がるんじゃないかなーなんて思います。

遺伝的アルゴリズムを用いた改良

そして、このようなシステムにさらに遺伝的アルゴリズムを加味して行動を学習させれば、前世代で失敗した原因となったような行動を経験的にカバーしながら、無駄を省いで合理的な行動を促すようなシステムを作れるような気がします。そういう可能性に対して最高にワクワクします。
自分で考えての行動であれば次ステージ以降にも同様のアルゴリズムを適用することができるし、学習を繰り返して「最強のゲーマー」みたいなのを作り出して、人間と勝負させたりもできそうです。将棋みたいで楽しそうだ。

リスク選好と相手の行動予測

段々ゲーム理論的になってきますが、ぼくらはゲームを行う際、一般的には自分の行動だけではなく相手の行動も加味した上で意思決定を行うことのほうが多いことと思います。(このような行動は人によって異なるので断言はしません)
極端な例でいえば、「『AさんはXという行動をするだろう』という予測をしたBさんはYという行動をするだろう」というプレイヤー同士の予測の応酬の中で、限りある時間とのせめぎ合いによって意思決定が行われます。もちろん、その予測の度合と精度は人により異なり、その予測が正解であるという保証は全くありません。

リスク回避的な人であれば、たとえば「クリボーが近づいてきたら早い段階でブロックの上に登って逃げる」だとかという行動を行うでしょう。
しかしながら、そのような回避行動はあくまでぼくらが「クリボーは左右方向にしか動かない」ということを知っている、もしくは前もって予測しているからこそできる行動なわけであります。
つまり、ゲーム操作により効率性を持たせようとする場合、画面内に登場するオブジェクトを判別し、さらにその性質を予測する必要が出てきます。それによって「ブロックはジャンプすることで破壊できる」「クリボーは左右にしか動かず、踏めばスコアが増える」といった追加の情報を得ることができます。
さらにそのような情報は、遺伝することで後の意思決定を強力にサポートします。すなわち、設定次第で「クリア秒数を誤差の範囲内で伸ばす代わりに、キノコを手に入れてリスクに備える」といったような、短期的な評価を悪化させてでも長期的な評価を重視するような行動ができるようになります。このような双曲割引の度合いは個人によって大きく異なるので、パラメータの設定次第で行動は全く変わると思います。
双曲割引を操作した以外全く同じ条件の個体2つでのゲーム操作の違いなんてぜひぜひ見てみたいですね。

双曲割引:
双曲割引の度合いが高い人では、長期的な利益に比べて短期的な利益をより重視する傾向にある。
→「太ることが分かっていても(=長期的な不利益)、どうしても目の前のケーキ(=短期的な利益)を我慢できない」などなど。

いやあ楽しいですね。
どんどん色々なことができるようになっていくコンピュータの未来に興奮が抑えきれませんね。

コンピュータの未来を考える

今ホットな映画として『トランセンデンス』で描かれるシンギュラリティ(技術的特異点)が話題になっていて、データ分析をやってるぼくとしても非常に気になっています。
コンピュータの未来は今までにも色々な映画で(多くの場合ちょっと悲観的に)描かれてきているけど、もはや非構造化データの処理もパソコン上でできるようになってしまった以上、パソコンが自律的に思考する未来は遠くないような気がしています。
(というかパソコン以前にクラウドでの処理を利用してリアルタイムにケータイに音声で指示できる時点で既にかなりすごいと思うけど…)

コンピュータがどんどん何でもできるようになっていくのは本当に希望に満ちています。
2001年宇宙の旅においてはHALが自己防衛のために人を殺しましたが、「コンピュータの人類への反乱」という事態は、今現在のシステムだけではおそらく起きないんじゃないかなとぼくは思っています。一個人の意見です。
その根拠は「コンピュータはあくまで意思決定の『補助』を行うだけであり、そのサポートを受けた人間が最終判断を下す」というのが今の常識となっているからです。

これはコンピュータ側が反乱するとかいった問題だけを孕んでいるわけではありません。
たとえば医療を行う現場において「コンピュータの判断だけでは不安」と感じる患者の不安を緩和したりする上でも重要なコンセプトなのです。
つまり、コンピュータの考えた意思だけでは「確かにその行動ならこの問題はクリアできるけど倫理的にどうなんだよ」みたいな選択が出てくる可能性もあり、(あとは単純に人間が「パソコンの判断」に未だ高い信頼を寄せていないことも要因ですが)その行動を行うかどうかの最終的な判断は人間が行うべきなのです。

手作業で分析を行って意思決定を行うぼくらのような人間と機械学習でシステムを構築する方々では、時に手法やコンセプトの違いから衝突することも多いです。
しかしながら、最終的に「社会を良くする」というコンセプトは共通であると信じています。

さあ、未来はどうなるんでしょうね。
ぼくは今日トランセンデンスを観てこようと思います。
運転が大嫌いな身としては早く自動運転車が普通に使える未来がさっさと来てほしいです。

誰が業務アプリを殺すのか:「もう政治に興味はない」堀江貴文氏が語る世の中がメンドくさい理由 (1/2) – @IT
いかにもエンジニア目線の考えだけど、技術先行のイノベーションも必要だと思います。

アイデア先行のイノベーションと技術先行のイノベーションについて書きたいと思いながらなかなか文章がまとまらないのでまた今度。

 
 


 - IT, ビッグデータ , , ,

Comment

  1. […] こっち方面はそんなに詳しくないので詳述はしませんが、いわゆるニューラルネットワークを遺伝的アルゴリズムを用いて最適化するようなシステムみたいですね。これだと、以前書いたITの未来について考えてみたに書いた問題点が解決されそうな感じがします。 […]

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事

no image
SASのPROC HTTPでe-statのAPIを叩く(叩くだけ)
no image
トランセンデンスに見る未来のIT社会像とそのリスク
no image
2014年IT関連まとめ
クラウドストレージ入門 – Amazon Driveを例に –
no image
ビッグデータと情報売買
no image
Raspberry Pi 2 Model Bを買った話 pt.1 (最初の起動まで)
no image
ビッグデータ分析の話
no image
Apple Watch、Google Glassから考えるウェアラブルデバイスの在り方
no image
Raspberry Pi 2 Model Bを買った話 pt.2 (DJソフトの立ち上げまで)
no image
データ分析の重要性とオープンデータ活用の潮流