今年はとにかく人工知能(AI)関連のニュースが多かったですね。ここは流行に乗ってProcessingでもAIすることにトライしてみたいと思います。AIとは何かAIの定義は人によって異なるのですが、おおよそ共通する意味としては、「人間にしかできない知的処理を機械に行わせる」といったあたりかと思います。面白いのは「人間にしかできないこと」というのが時代によって変化していることで、かつてはAIと呼ばれていた手書き文字の読み取り(OCR)やエアコンの温度の自動調整などは、その技術が一般化するのに伴い、わざわざAIと呼ばれることはなくなっています。そんな中でも、このところ特に"AI"として注目されているのは、複雑なイメージの認識や、絵・音楽・文章の創作といった、従来は難しかったけれど深層学習によって最近急激に発展した技術領域なのではないかと思います。プログラムによるアートの作成?ということで、いつのまにか流行に乗っていたようです。これだけではあんまりなので、もう少しそれっぽいAIをProcessingで作る方法を紹介してみたいと思います。Gamesというライブラリを使うことでAIを作ることができます。GamesはProcessingのライブラリのインポートメニューからインストールできます。Gamesがサポートしているのは、ルールベースのAI技術です。ルールベースのAIとは、ざっくり言うと「IF文の集合を効率よく表現する手法」のことで、ゲームのキャラクターのように何らかの法則に基づいて対象を自動で動かしたい時などに向いています。Gamesに付属してくるサンプルの画像がこちらです。続いてもう少しトレンドっぽい、機械学習によるAIの実現方法を調べてみます。機械学習によるAIとは、ざっくり言うと「データを解析することでIF文を自動的に作成する手法」で、画像や音声の認識など、参考になるデータはあるけど条件が複雑すぎてどうプログラムを書いたらよいかわからないようなものに向いています。残念ながら、Processing用の手軽な機械学習ライブラリは見当たらなかったので、REINFORCEjsというJavaScriptから簡単に使える強化学習のライブラリをp5.jsから呼んで利用してみることにします。こちらからダウンロードしたrl.jsをp5スケッチのlibrariesフォルダに配置して、index.htmlから以下のように読み込みます。</body></html>今回は試しに、円が四角の中に入ると報酬を与えるシンプルなAIを作成してみます。30);}env.getNumStatesで入力として与える状態の数を、env.getMaxNumActionsで行動の数を指定します。vy])で渡し、返ってきた行動を移動方向(上下左右の4方向)として扱っています。-1で枠内に入っているときは+1、枠外の時は-1の報酬を決定し、agent.learn(reward)でその値を与えています。実際の動作の様子がこちら。見ているといずれ円が常に枠内に入るようになるはずなのですが、時間の都合もあり実はまだ確認できていません。生暖かく見守ってみようと思います。2015に参加させていただ...2015-01-24Processing.rbをチラ見せ気づけばブログの更新が一ヶ月空いてしまいました。サボってい...2014-10-25PythonからProcessingを使ってみる日本語の解説記事はまだあまり見かけないのですが、Processing...2014-03-16Processing.jsが出力するJavaScriptを調べてみる(1)パズドラへ注ぎ込む額が徐々に増えています。engine!月別アーカイブはてなブログをはじめよう!tkitaoさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。