Skip to content

Instantly share code, notes, and snippets.

@aidiary
Created December 28, 2016 06:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aidiary/25ed4207e05abc7fcc5d17a645b87fd3 to your computer and use it in GitHub Desktop.
Save aidiary/25ed4207e05abc7fcc5d17a645b87fd3 to your computer and use it in GitHub Desktop.
This file has been truncated, but you can view the full file.
AUTHOR: aidiary
TITLE: 富士通研究所の見学
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 02/21/2002 05:30:47 PM
CATEGORY: 自然言語処理
-----
BODY:
<div class="section">
<p>見学内容の中で特に印象に残ったのは、自然言語を用いた検索だった。「早稲田大学が開発した技術は?」のような文で検索できる。デモでは新聞記事の中だけからの検索だったが、あれが、Web全体で使用できたらとても面白いと思う。自然言語理解が欠かせないか?</p>
<p>以前、Yahoo!の掲示板で、検索エンジンで自然言語が使えたら、高度な人工無脳(人とおしゃべりするようなソフトウェア)が作れるんじゃないか?という話題があったのを思い出した。例えば、人工無脳に話し掛けると、その内容を検索エンジンにかけて、Webから適当な話題を提供するようなもの。</p>
<p>そういうのってもうあるのかな?</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: バイオインフォマティクスの世界
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 02/28/2002 10:23:25 AM
CATEGORY: 生物学
-----
BODY:
<div class="section">
<p>第42回人工知能セミナー「<a href="http://www.ai-gakkai.or.jp/jsai/seminar/42.html" target="_blank">バイオインフォマティクスの世界</a>」へ参加した。内容は少し難しかったように思う。特に興味深かったのは、慶應義塾大学の冨田勝さんの「E-CELLプロジェクト:細胞のコンピュータ シミュレーションとその未来医療への応用」というお話だった。4月の報告会ではこれについてやろうかな。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: ワーム
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 02/28/2002 10:14:15 AM
CATEGORY: 人工生命
-----
BODY:
<div class="section">
<p>バッドトランスBというワームに感染した。ウィルスバスターでリアルタイム検索を使用していて、捕捉はできたのだが、メールを削除するときうっかりプレビューしてしまったためだった。今度からは慎重に対処しなければ。</p>
<p>どういう害があるのか調べてみたのだが、ワームなので、勝手にメールをばらまくらしい。あと、キーボードで打った文字が自動的に転送されてハッキングされるらしい。駆除したから多分大丈夫だけど心理的負担はかなり大きい。</p>
<p>こういうのって、一回自分で被害にあってみないと、危機意識が湧かないって言うけど、本当にそうだなと思った。でも、自分が被害に遭うと同時に多くの人に被害を与えてしまうというのはかなり困る。今回もたぶんそういう人から送られてきたんだと思うんだけど。自分も何人かに送っていると思うとかなり悪い気がする。</p>
<p><strong>ウィルスやワームというプログラムは研究対象としては、かなり興味深いと思う</strong>。以前、自動的にウィルスやワームを退治して回るワームは作れないのかな(いくら良いのでも日本の法律じゃ不正アクセスになっちゃうか?)と想像していたのだが何か良いワームというのも既にできているらしい。</p>
<p>以前、どっかの掲示板で「ウィルスの作り方教えてください、技術的にどうなっているか知りたいんです」とかいう投稿があってかなりたたかれていたのを思い出した。私も純粋に作り方知りたいんだけどさ・・・マクロウィルス程度ならどうなってるか想像つくけどね。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 役に立つこと
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 02/28/2002 10:18:36 AM
CATEGORY: 日記
-----
BODY:
<div class="section">
<p>以前、研究室に配属されたときの宴会で人工知能の研究がしたいと言ったら、先生に「<strong>脳を作ったら何の役に立つのか</strong>」という問いを受けたことがあった。その時は、「<strong>脳(のモデル)を作ることで、現実の脳がどうなっているのかを知る手がかりになる</strong>」という良く言われているようなことを答えた。</p>
<p>それから、少し考えてみたのだが、「役に立つ」というのは、良いことだがそればかりを追求するのはどうかなという思いが絶えず浮かんでいる。例えば、偏見かもしれないが、天文学や物理学で宇宙の果てがどうなっているかということを調べても実社会には何の役にも立たないだろう。それなのに、それに生涯を捧げて研究している人もいるのはなぜか考えた。</p>
<p>科学というのは、「<strong>未知のものを探求する学問</strong>」だと考えているから、未知のものがなくなるまで続くはず。知能とか心とか感情とか生命とかというのは、現在では多分未知のものだから、未知じゃなくしたいというのが人情!つまり、「役に立つ、立たない」という前にそれが何か知りたいというのが先行していると思う。</p>
<p>情報「工学」はもちろん面白くていろいろ作るのは楽しいが、情報「科学」もそれ以上に面白い。情報工学を専攻したから、たまたま方法論が工学的で何かを作るが、結局は、作ったものが役に立つかではなくて、ただそれを元にして未知のものを知りたいからというだけではないか。</p>
<p>ついでに産学協同を推進するという話で、企業の利益になるものだけしか研究しなくなるというような批判が出された、という記事を読んだことがあるような気がする</p>
<p><strong>予算とかも考えたことがない人の戯言</strong>になってしまった。現実はそんなことを言っていられないくらい厳しいものなのだろう。特に国の予算を使ってるならなおさら。</p>
<p>趣味ならいくらでも好き勝手に自分のしたいことを追究できるんだけどね。プロの研究者がそれじゃやっぱまずい・・・</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 生物学の知識
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 03/01/2002 10:27:22 AM
CATEGORY: 生物学
-----
BODY:
<div class="section">
<p>昨日の講演で小長谷さんが、「<strong>バイオインフォマティクスをやるには生物学の知識が欠かせない。この部分で差がつく</strong>」というようなことをおっしゃっていた。</p>
<p>というわけで下の本を借りてみた。</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4315517305/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/414NB9W831L._SL160_.jpg" class="hatena-asin-detail-image" alt="細胞の分子生物学" title="細胞の分子生物学"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4315517305/hatena-hamazou-22/">細胞の分子生物学</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/Bruce%20Alberts" class="keyword">Bruce Alberts</a>,<a href="http://d.hatena.ne.jp/keyword/%C3%E6%C2%BC%B7%CB%BB%D2" class="keyword">中村桂子</a>,<a href="http://d.hatena.ne.jp/keyword/%BE%BE%B8%B6%B8%AC%B0%EC" class="keyword">松原謙一</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%CB%A5%E5%A1%BC%A5%C8%A5%F3%A5%D7%A5%EC%A5%B9" class="keyword">ニュートンプレス</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2004/11</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 大型本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 2人 <span class="hatena-asin-detail-label">クリック</span>: 45回</li>
<li><a href="http://d.hatena.ne.jp/asin/4315517305" target="_blank">この商品を含むブログ (27件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>これは、かなり厚い本だけど有名で中身は面白い。読み終えるか大いに疑問だが・・・。</p>
<p>実はこの本にはかなり思い入れがある。以前、トランスナショナルカレッジ・オブ・レックスが出している『DNAの冒険』という本を読んだ。これは、漫画的だが、『細胞の分子生物学』に書かれていることを一般の人が読んでまとめた内容だった。読みやすく、感動した。これがきっかけで生物学にすごく興味を持った。</p>
<p>私もいずれ購入してじっくり読んでみたいな。すんごい高いんですが(;;)</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: バイオニック・ヒューマン
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 03/04/2002 10:33:37 AM
CATEGORY: ロボティクス
-----
BODY:
<div class="section">
<p>読売新聞に面白い記事が出ていた。人間と機械を融合させる研究が進んでいるらしい。米科学誌サイエンスで「バイオニック・ヒューマン(生物工学人間)」の特集が組まれている。失われた機能の回復をめざす研究が中心。人工心臓、人工肝臓、人工網膜、人工の腱、コンピュータ制御の義手などがあるらしい。</p>
<p>手塚治虫さんの『火の鳥』という漫画に体の臓器の60%を人工のものに取り替えられ、頭脳も電子頭脳に取り替えられた主人公が出てくる。この主人公が手術をした博士に「おねがいだ。ぼくを人間かロボットかどっちかにはっきりさせてくれっ!」と叫ぶシーンが出てきたが、こういうことがそう遠くない未来におきるのだろうか?</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/404185105X/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/41RMPXV8HXL._SL160_.jpg" class="hatena-asin-detail-image" alt="火の鳥 (5) (角川文庫)" title="火の鳥 (5) (角川文庫)"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/404185105X/hatena-hamazou-22/">火の鳥 (5) (角川文庫)</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%BC%EA%C4%CD%BC%A3%C3%EE" class="keyword">手塚治虫</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B3%D1%C0%EE%BD%F1%C5%B9" class="keyword">角川書店</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1992/12</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 文庫</li>
<li><span class="hatena-asin-detail-label">購入</span>: 1人 <span class="hatena-asin-detail-label">クリック</span>: 3回</li>
<li><a href="http://d.hatena.ne.jp/asin/404185105X" target="_blank">この商品を含むブログ (29件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>神経細胞と電子素子の接合も試みられていて興味深い。素子と神経を微細なワイヤでつなぎ、他人の感覚も素子で受信できるという話が載っていた。文字通り「他人の痛みがわかる」らしい。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: ライフゲーム
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 03/05/2002 10:44:32 AM
CATEGORY: 人工生命
-----
BODY:
<div class="section">
<p>ライフゲームはコンウェイ(John Horton Conway)が発明したコンピュータゲーム。ゲームと言っても勝ち負けや相手がいるわけではなく、初期値を与えて、経過を見るだけ。画面に映る抽象的な動画はまるで生命のようにも感じられる。</p>
<p>このライフゲームとフォン・ノイマンの推論法を利用して、コンウェイは自己再生可能な物体が構成できることを証明したらしい。難しいことはよくわからないけど、『ライフゲイムの宇宙』という本にいろいろ書かれている。全体をさーっと読んでみたが、物理関係の話のところはちょっとよく分からなかった。</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4535783837/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/61F699PB3SL._SL160_.jpg" class="hatena-asin-detail-image" alt="ライフゲイムの宇宙" title="ライフゲイムの宇宙"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4535783837/hatena-hamazou-22/">ライフゲイムの宇宙</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%A6%A5%A3%A5%EA%A5%A2%A5%E0%A1%A6%A5%D1%A5%A6%A5%F3%A5%C9%A5%B9%A5%C8%A1%BC%A5%F3" class="keyword">ウィリアム・パウンドストーン</a>,<a href="http://d.hatena.ne.jp/keyword/William%20Poundstone" class="keyword">William Poundstone</a>,<a href="http://d.hatena.ne.jp/keyword/%CD%AD%DF%B7%C0%BF" class="keyword">有澤誠</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%C6%FC%CB%DC%C9%BE%CF%C0%BC%D2" class="keyword">日本評論社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2003/06/12</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 4人 <span class="hatena-asin-detail-label">クリック</span>: 30回</li>
<li><a href="http://d.hatena.ne.jp/asin/4535783837" target="_blank">この商品を含むブログ (30件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>このライフゲームのプログラムはプログラマなら1度は作るほど有名なもの。というわけで、Javaで書いてみた(下の関連リンク)。難しそうだと思っていたが、結構簡単だった。規則はほんの少ししかないのに、あんな複雑な現象が起きるのには驚くばかり。これを、複雑系とか創発というんだろうな。</p>
<p>【関連リンク】</p>
<ul>
<li><a href="http://www.ibiblio.org/lifepatterns/" target="_blank">Conway’s Game of Life</a></li>
<li><a href="http://d.hatena.ne.jp/aidiary/20041225/1274163262">Javaで書いたライフゲーム</a>(2004/12/25)</li>
</ul>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 生命の定義
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 03/08/2002 09:56:08 PM
CATEGORY: 生物学
-----
BODY:
<div class="section">
<p>Yahoo!の掲示板を読んでいたら、生命の定義という話が出てきたので記録しておく。どれも有名な格言らしい。が、本当に定義できるのかは、かなり怪しいと思う。</p>
<ul>
<li>生命とは死に抵抗する力の総体である。(M.F.X.ビシャー)</li>
<li>生命とは正常で特異的な構造の積極的維持である。(J.S.ホールデン)</li>
<li>生命とは制御である。(トラペズニコフ)</li>
<li>生命とは蛋白質の存在様式である。(F.エンゲルス)</li>
<li>生命という言葉は意味をもたない。そんなものは存在しない。生命とは何かという問いに対する決まった答えはない。(A.セント.ジェルジ)</li>
<li>生命は定義するより研究する方が易しい。(L.ボーリング)</li>
</ul>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 人工生命
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 03/13/2002 10:50:47 AM
CATEGORY: 人工生命
-----
BODY:
<div class="section">
<p>最近、人工生命に興味が起こりいろいろ調べてみた。すごいリンク集として『<a href="http://www2.create.human.nagoya-u.ac.jp/~ari/stuff/alifesoft.html" target="_blank">人工生命の宝庫</a>』というのがあった。ここのリンク集からもいろいろ調べられるが、基礎知識がないと少しつらいので、『進化する"ビットの生命たち"のふしぎ 人工生命』という本を借りて読み始めた。</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4906391117/hatena-hamazou-22/"><img src="http://d.hatena.ne.jp/images/hatena_aws.gif" class="hatena-asin-detail-image" alt="人工生命―進化する"ビットの生命たち"のふしぎ" title="人工生命―進化する"ビットの生命たち"のふしぎ"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4906391117/hatena-hamazou-22/">人工生命―進化する"ビットの生命たち"のふしぎ</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/Ellen%20Thro" class="keyword">Ellen Thro</a>,<a href="http://d.hatena.ne.jp/keyword/%CA%C6%C4%C5%B8%F7%B9%C0" class="keyword">米津光浩</a>,<a href="http://d.hatena.ne.jp/keyword/%BF%C0%C0%AE%BD%DF%BB%CA" class="keyword">神成淳司</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%AB%A5%C3%A5%C8%A5%B7%A5%B9%A5%C6%A5%E0" class="keyword">カットシステム</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1995/09</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><a href="http://d.hatena.ne.jp/asin/4906391117" target="_blank">この商品を含むブログ (3件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>分かりやすく書かれていて基礎を知るにはいいと思う。サーベイでやった遺伝的アルゴリズム(GA)もこの分野の技法らしい。いろいろ面白い話が載っているので今度まとめたい。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: フェッセンデンの宇宙
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 03/16/2002 10:56:29 AM
CATEGORY: SF
CATEGORY: 人工生命
-----
BODY:
<div class="section">
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4906391117/hatena-hamazou-22/"><img src="http://d.hatena.ne.jp/images/hatena_aws.gif" class="hatena-asin-detail-image" alt="人工生命―進化する"ビットの生命たち"のふしぎ" title="人工生命―進化する"ビットの生命たち"のふしぎ"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4906391117/hatena-hamazou-22/">人工生命―進化する"ビットの生命たち"のふしぎ</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/Ellen%20Thro" class="keyword">Ellen Thro</a>,<a href="http://d.hatena.ne.jp/keyword/%CA%C6%C4%C5%B8%F7%B9%C0" class="keyword">米津光浩</a>,<a href="http://d.hatena.ne.jp/keyword/%BF%C0%C0%AE%BD%DF%BB%CA" class="keyword">神成淳司</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%AB%A5%C3%A5%C8%A5%B7%A5%B9%A5%C6%A5%E0" class="keyword">カットシステム</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1995/09</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><a href="http://d.hatena.ne.jp/asin/4906391117" target="_blank">この商品を含むブログ (3件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>まえがきから引用。</p>
<blockquote>
<p>「人工生命は本当に生きているといえるのか?」</p>
<p>(中略)</p>
<p>この質問への最もよい回答は、創造物自身に尋ねてみることでしょう。彼らは自分が生きていると思っているでしょうか?彼らは自由意志をもっていると思っているでしょうか?彼らは「世界がどう始まったのか」とか「生物はどのように進化してきたのだろうか」などについて理論を作り上げたりするでしょうか?彼らは生命を作りたいと考えたりするでしょうか?</p>
<p>(中略)</p>
<p>いったい、私たち自身が全宇宙を巨大なコンピュータに埋め込んだような巨大シミュレーションの一部ではないと、誰がいえるのでしょうか?</p>
</blockquote>
<p>この文章を読んだとき、昔読んだ『フェッセンデンの宇宙』という古典SFを思い出した。</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4309621848/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/510CSDBPP1L._SL160_.jpg" class="hatena-asin-detail-image" alt="フェッセンデンの宇宙 (全集・シリーズ奇想コレクション)" title="フェッセンデンの宇宙 (全集・シリーズ奇想コレクション)"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4309621848/hatena-hamazou-22/">フェッセンデンの宇宙 (全集・シリーズ奇想コレクション)</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%A8%A5%C9%A5%E2%A5%F3%A5%C9%A1%A6%A5%CF%A5%DF%A5%EB%A5%C8%A5%F3" class="keyword">エドモンド・ハミルトン</a>,<a href="http://d.hatena.ne.jp/keyword/%C3%E6%C2%BC%CD%BB" class="keyword">中村融</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B2%CF%BD%D0%BD%F1%CB%BC%BF%B7%BC%D2" class="keyword">河出書房新社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2004/04/15</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 9回</li>
<li><a href="http://d.hatena.ne.jp/asin/4309621848" target="_blank">この商品を含むブログ (66件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>フェッセンデンはコンピュータの中に人工的な世界を作り上げた。この世界は現実世界をシミュレーションしたもので、人工生命も住んでいて、コンピュータの中で私たちのように普通に生活している。フェッセンデンはその世界にとって神様みたいなもので、好きなことができるが人工生命たちはその存在を知ることはできない。</p>
<p>というような、話だったと思う。それで最後のおちが「<strong>実は私たちの現実世界もフェッセンデンによって作り出されたものかもしれない</strong>」というものだった。</p>
<p>すごい意味深な話だと思う。SF作家というのはすごいことを考え付くものだなと感心した。</p>
<p>この話の亜種はけっこういろんなとこに出てくる。たとえば最近読んだとこでは『ループ』も同じ筋書きだったし、手塚治虫さんや藤子・F・不二雄さんの短編でも出てきた。面白いテーマだもんね。</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4048730959/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/61P1KEVRVTL._SL160_.jpg" class="hatena-asin-detail-image" alt="ループ" title="ループ"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4048730959/hatena-hamazou-22/">ループ</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%CE%EB%CC%DA%B8%F7%BB%CA" class="keyword">鈴木光司</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B3%D1%C0%EE%BD%F1%C5%B9" class="keyword">角川書店</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1998/01</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 13回</li>
<li><a href="http://d.hatena.ne.jp/asin/4048730959" target="_blank">この商品を含むブログ (11件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: フランケンシュタイン・コンプレックス
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 03/19/2002 11:27:35 AM
CATEGORY: SF
CATEGORY: 人工生命
-----
BODY:
<br>
<div class="section">
<p>『人工生命の美学』という本を読んでいたのだが、そこに「<span style="color:#FF0000;">フランケンシュタイン・コンプレックス</span>」という面白い話が載っていた。</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4896911350/hatena-hamazou-22/"><img src="http://d.hatena.ne.jp/images/hatena_aws.gif" class="hatena-asin-detail-image" alt="人工生命の美学―コンピュータがつくる新たな生態系 (キーワード事典)" title="人工生命の美学―コンピュータがつくる新たな生態系 (キーワード事典)"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4896911350/hatena-hamazou-22/">人工生命の美学―コンピュータがつくる新たな生態系 (キーワード事典)</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/T%A1%BEBRAIN%20CLUB" class="keyword">T‐BRAIN CLUB</a>,<a href="http://d.hatena.ne.jp/keyword/HUMANMEDIA" class="keyword">HUMANMEDIA</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%CD%CE%C0%F4%BC%D2" class="keyword">洋泉社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1994/02</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 4回</li>
<li><a href="http://d.hatena.ne.jp/asin/4896911350" target="_blank">この商品を含むブログ (2件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>元は、SF作家のアイザック・アシモフが作った言葉らしい。アシモフのいうフランケンシュタイン・コンプレックスとは「人類は自分たちが創り出した怪物によって自分たちが滅ぼされるのではないかという恐れを常に抱いている」というもの。</p>
<p>このようなコンプレックスがあるために、人工知能を持ったロボットを創るとか、人工生命を創るという話をすると一般の人からは偏見の目でみられることが多いらしい。そういうのが人間に対して反乱を企てるということなんだろう。上の本からの引用。</p>
<blockquote>
<p>また、万人が納得する人工生命や人造人間が技術的に可能になったとしても、それが人間に危害を加えるものになるとは限らない。ある若き倫理学者は、雑談の中で、ALが人間並みの知能を獲得したものならば、倫理観や思いやりも人間並みで、したがって、むやみに人間を殺戮はしないと考えるのが筋であるという意見を述べていた。人間がむやみやたらと犬や猫を殺しまくることはしないのと同じだ、と。</p>
</blockquote>
<p>『フランケンシュタイン』というのは、メアリー・シェリーが1831年に書いた小説。今まで名前は聞いていたけど読んだことがなかったので文庫で買ってみた。</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4488532012/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/21EYNRC0KDL._SL160_.jpg" class="hatena-asin-detail-image" alt="フランケンシュタイン (創元推理文庫 (532‐1))" title="フランケンシュタイン (創元推理文庫 (532‐1))"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4488532012/hatena-hamazou-22/">フランケンシュタイン (創元推理文庫 (532‐1))</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%BF%B9%B2%BC%B5%DD%BB%D2" class="keyword">森下弓子</a>,<a href="http://d.hatena.ne.jp/keyword/Mary%20Shelley" class="keyword">Mary Shelley</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%C5%EC%B5%FE%C1%CF%B8%B5%BC%D2" class="keyword">東京創元社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1984/01</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 文庫</li>
<li><span class="hatena-asin-detail-label">購入</span>: 4人 <span class="hatena-asin-detail-label">クリック</span>: 11回</li>
<li><a href="http://d.hatena.ne.jp/asin/4488532012" target="_blank">この商品を含むブログ (48件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>今まで、フランケンシュタインって怪物の名前のことだと思っていたのだけど、実は怪物を創った博士の名前だったんだ。へぇ~。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: コンピュータウィルスの実用的利用
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 03/24/2002 11:02:17 AM
CATEGORY: 人工生命
-----
BODY:
<div class="section">
<p>コンピュータウィルスを何か実用的な仕事に利用できないかという研究があるらしい。Purdue大学の<a href="http://www.cerias.purdue.edu/homes/spaf/" target="_blank">Eugene Spafford</a>などのA-Lifer(A-Lifeの研究者)は他人のハードディスクを壊す目的ではなく、A-Lifeの一つの形態としてコンピュータウィルスを研究している。</p>
<p>彼はコンピュータウィルスを使って実用的仕事が可能であると考えているらしい。自分も何かに応用できないかなと前に考えたことがあったけど、この人はどんな研究をしているのか興味がある。道具は使い方次第で変わるのだから、考え方をひっくり返してみれば今まで思いもつかないような利用方法があるかもしれない。</p>
<p>同じような話題で一つ面白いと思ったのは、コンピュータネットワークに免疫系を持たせるという話。コンピュータウィルスに対する抗体を作るという話なんだろう。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 頭に電極
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 03/25/2002 11:03:51 AM
CATEGORY: 脳科学
-----
BODY:
<div class="section">
<p>今日の読売新聞の夕刊に面白い記事が出ていた。</p>
<blockquote>
<p>猿の脳から直接コンピューター作動</p>
<p>アカゲザルの脳とコンピューターをつなげることで、コンピューターのカーソルを動かす実験に米ブラウン大の研究チームが成功した。障害で手を動かすことができない人を補助する機械への応用が期待できるという。</p>
<p>研究チームは、アカゲザルの脳に電極を差し込み、手を動かす時の脳の活動を詳しく計測。これをコンピューターで解読し、脳の活動に合わせてコンピューター上のカーソルを動かすプログラムを作った。このプログラムをサルの脳と連動させてみたところ、脳が手を動かそうと思念しただけでカーソルを動かすことに成功した。</p>
</blockquote>
<p>この記事を読むと、手を動かすときに決まってでる脳波があるみたい。こういう方面から人工知能を作る手助けはできないものかな?しかし、人間の脳に直接電極を差すのは倫理的にはまずいんじゃないだろうか。現在はペンフィールドがやったような直接脳を刺激するような実験は禁止されていたような気がする。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: CBRCの見学
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 03/28/2002 11:06:34 AM
CATEGORY: 生物学
-----
BODY:
<div class="section">
<p>今日は、<a href="http://www.cbrc.jp/index.ja.html" target="_blank">CBRC</a>の見学につれていってもらった。</p>
<p>端的に言うと「難しそう」と感じた。やればできると信じてはいるけれど、不安に感じた1日だった(かも)。話の内容は面白いものが多かったと思う。「バイオインフォマティクス」の本を読んでいたので、話の概要はつかめた。あと『細胞の分子生物学』をさらっとだけど読んでおいたのが一部理解に役に立った。</p>
<p>見学の最中に、各ブースにおいてある本に注目していた。皆さんがどんな本で勉強しているのか参考?になった。秋山さんとのお話で得意な分野を聞かれたけど、答えられなかった。今まではなるべく広範囲に講義を取って、勉強してたけど、これと言って得意なものはないなと感じた(企業の面接ではアピールしなくちゃいけないのに、これはやばいと思う)。得意というのはどういうことができれば得意なのか基準が曖昧だけど、自分で納得ができるものを持ちたいと感じた。あと、英語の必要性を痛感した。ポスターがほとんど英語だった!英語の論文はかなり躓きが多い。単語になれていないせいもあるけど練習しないといけない。書くのも同様。</p>
<p>プログラミング能力についてもまずいかも。プログラミングは好きだけど、あまり得意とはいえないような気がする(あまり大規模なプログラムを使ったことがない!)上の3つは来年度の目標にしようと思う。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: ROBODEX2002の見学
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 03/29/2002 11:08:04 AM
CATEGORY: ロボティクス
-----
BODY:
<div class="section">
<p>今日は、パシフィコ横浜で開催されている<a href="http://www.robodex.org/" target="_blank">ROBODEX2002</a>というロボットの博覧会を見学してきた。雨なにの満員で盛況ぶりが伺えた。まあ、「AIの体だから」見ておこうかと思ってはるばる横浜まで行ったけど行っただけの価値があったと思う。</p>
<p>まず、「アシモ」というホンダが開発したロボットには驚いた。ついこの間?までは二足歩行は難しくてまだまだできないと聞いた気がしたのだけど勘違いだろうか。アシモが歩いて手を振ったりするのをずっと見てたんだけど、中に人が入っているみたいであまり違和感がなかった。次に、SONYの名前は忘れたけどパラパラダンスを踊るロボットが出てきた。動きの滑らかさはこっちもすごいと思った。</p>
<p>他にもたくさんロボットがあったけど、一つ気になることがあった。<strong>ロボットが本当に感情を持っているように「見せすぎ」じゃないか</strong>。実際、今日のデモとかを見ていると、ロボットが意識、感情などを持っているように「見える」ものがたくさんあった。例えば、アシモって観客に向かって手を振ったりしていて、あたかも自発的に動いているように見えたけど、あれ実はプレステ2のコントローラみたいので人間が動かしていた(動かせるっていうこと自体すごいけど)。</p>
<p>SONYの踊るロボットも観客の人と「自発的に」うまく会話したりやりとりしていて、本当に「心」があって会話能力があるように見えた。このロボットは誰かが操作しているのか自律型なのかは分からなかったけど、お客さんの中にはロボットが「心」を本当に持っていて、コミュニケーションができると勘違いしてしまった人も大勢いるんじゃないかなと思う(まさか自分が勘違いしているなんてことはないよね)。講演で東工大の広瀬さんが話していたけど、大衆に過度の期待を持たせるのはまずいみたい(理由は何でだっけ・・・)。</p>
<p>他に、講演があったので聴いた。一つ目は「ロボットとヒト その知能と心 ~知能研究の最前線で、2人の研究者が得たものとは~」という題名のもの。題名からして面白そうと思った。ここで、印象に残ったのは、「<strong>ロボットは多機能な機械であるが、産業の観点で見ると単機能の機械にはコストの面で到底及ばない</strong>」という話。ヒューマノイド型のロボットは視覚、音声認識、手、移動など様々な機能を持っている機械だけど、それぞれの機能に特化した機械(例えば、手なら工業用のアーム)には到底及ばずヒューマノイド型ロボットの産業的な利用価値は低いという意見だった。そして、利用価値のある分野を3つ挙げていた。</p>
<ol>
<li>エンターテインメント用、ヒューマノイド型のロボットは人間にとって親しみが湧きやすいという理由。 </li>
<li>究極の携帯端末、携帯電話はせいぜい視覚と聴覚しか利用していない携帯端末(物理的な距離を越えられる)だが、ヒューマノイドロボットを自分の分身(つまり、もう一人の自分)として自由に操作してロボットが感じた全ての感覚を人間に伝えようということ。 </li>
<li>脳機能の解明。ロボットを作り動かすことによって人間の脳機能を理解するという話。従来のAIは体を持たなかったが、本来「脳と体は不可分」な関係だという主張だった。 </li>
</ol>
<p>もう一つ講演を聴いた。「ヒューマノイド VS メカノイド ~あなたなら、どちらのロボットを研究しますか?~」という題。ヒューマノイドの研究者として早稲田大学の高西さん、メカノイドの研究者として東工大の広瀬さんがトークバトルを行った。ヒューマノイドというのは「人間の形をしたロボット」のこと。メカノイドというのは造語らしいが「機械らしいロボット(例えば、蛇型とか蜘蛛型とか」。早稲田がロボットが有名という話は聞いていたけど、ヒューマノイドの研究では世界一のレベルらしい。残念だけど、広瀬さんの方が話し方が上手で早稲田はちょっと負けていたように思う。</p>
<p>広瀬さんは「ヒューマノイド批判」をした。それは、いつかヒューマノイドができても現実的な実用価値はほとんどない。それぞれの目的に特化した形を持つ「メカノイド」の方が現実的だということ。例えば、掃除をしてくれるヒューマノイドがたとえ出来たとしても、掃除機自体を知的にした方がコスト的に安上がりだ、また災害救助において一体何億もするようなヒューマノイドがいるよりも、蛇型のような細い隙間に入れるようなメカノイドの方が安くて便利という感じ。それに、企業はロボット研究者に何度も裏切られて、ロボットという言葉に拒否反応を起こしている。今はヒューマノイドを考えるより、地雷撤去ロボットとかもっとすぐに結果が出せる実用的なものを作るべきと主張。</p>
<p>それに対するヒューマノイド擁護として、ヒューマノイドは人間の体を理解するのに役立つ。現に、義足などはヒューマノイドの技術が使われているし、顎の病気の人にヒューマノイドで得られた技術を応用することによって治療に成功したという話などを出していた。また、なによりインターフェイスとして人に親しみを感じさせるなど。</p>
<p>どちらの先生も互いの研究を真っ向から批判しているわけではなく、互いに理解しているようには感じた。この議論を聞いていて、AIもハードとソフトの違いだけで同じ話だなと感じて、考えさせられることは多かった。</p>
<p>帰りにアイボが売っていた(始めてみたけど新型の丸顔の方は結構可愛いと思った)んだけど、高くて買えなかったorz代わりに「<strong>無能系 ピチピチゴンザレス</strong>」という虫みたいなのがランダムに走り回るやつを記念に買った。「無能系」というのが何とも言えない良いネーミングだと思う。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: AIは中世の錬金術
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 03/30/2002 08:21:19 PM
CATEGORY: 哲学
-----
BODY:
<div class="section">
<p>ドレイファスさんがAIを批判している人というのは知っていたが、彼は「<strong>AIは中世の錬金術に似ている</strong>」と発言しているらしい。</p>
<dl>
<dt>錬金術(alchemy)</dt>
<dd>古代エジプトに起り、アラビアを経てヨーロッパに伝わった原始的な化学技術。近代化学の基礎がつくられるまで全ヨーロッパを風靡、卑金属を金・銀などの貴金属に変化させたり、不老不死の万能薬を製出することなどを試みた。<strong>これらに成功はしなかったが、種々の化学物質を取り扱う技術の発達を促した</strong>。 </dd>
</dl>
<p>もしAIが錬金術と同じく見果てぬ夢であったとしても意義はあるはず。錬金術の定義の後半が大切だと思う。つまり、結果(錬金術なら金を作る、AIなら知能を作る)は出せなくても、その過程に意義あるものが出てくるということ。AIの研究を通して様々な研究分野が派生したし、役立つ概念が生み出されたというのはよく言われている。それに、錬金術は理論的に不可能だと証明されたけど、AIはまだされていない。AIが不可能と証明されてしまう日はいつか来るんだろうか。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: ゲノムと情報圧縮
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 04/06/2002 06:47:40 PM
CATEGORY: 生物学
-----
BODY:
<div class="section">
<p>『情報処理』に面白い話が載っていた。</p>
<p>60兆といわれる細胞の集合体である人間を再構成するのに必要な情報がたった30億文字(CD-ROM1枚分ちょっと)しかないという事実だ。遺伝子に限っては3万~4万程度しかない。</p>
<p>そこで、どのようにすれば30億文字に人間を再構成できる情報を格納できるか?情報圧縮、情報表現形式はどうなっているのか?という疑問が出されているらしい。これは自分にとっては新しい視点で興味を持った。</p>
<p>確かにCD-ROM1枚分の情報で人間が出来るなんてすごいと思った。コンピュータの情報形式とは全く違うのか?そこまで情報を縮めるすごいアルゴリズムがあるのか?あるいは人間を作るのに膨大な情報は必要ないのか?一体どんな理由なのだろう。新しい圧縮アルゴリズムを発明する鍵になったりしないのかな。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 脳をつくる
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 04/06/2002 06:51:14 PM
CATEGORY: ロボティクス
CATEGORY: 脳科学
-----
BODY:
<div class="section">
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4320027515/hatena-hamazou-22/"><img src="http://d.hatena.ne.jp/images/hatena_aws.gif" class="hatena-asin-detail-image" alt="脳をつくる―ロボット作りから生命を考える" title="脳をつくる―ロボット作りから生命を考える"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4320027515/hatena-hamazou-22/">脳をつくる―ロボット作りから生命を考える</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%C3%E6%CC%EE%B3%BE" class="keyword">中野馨</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B6%A6%CE%A9%BD%D0%C8%C7" class="keyword">共立出版</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1995/08</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><a href="http://d.hatena.ne.jp/asin/4320027515" target="_blank">この商品を含むブログ (5件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>という本を借りた。ここに、その意義が載っていたので引用。</p>
<blockquote>
<p>この種の研究は、脳の機能を工学的に実現してみて、そのモデルから脳の"しくみ"を推測し、解明しようとするいわゆる構成的研究なのである。その立場からいえば、仮に情報処理装置開発には役立たなくても脳のモデルを作る必要がある。</p>
</blockquote>
<p>なるほど、そういえばヒューマノイドを研究している高西先生も「<strong>構成論的研究</strong>」とおっしゃっていた。でも何かこういう理由は、「役に立たない」と非難されて、予算を得るために後から無理やり理由付けしたような感じがしてしまうんだけどどうなんだろう。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: ニューラルネットワーク
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 04/08/2002 11:07:03 AM
CATEGORY: 機械学習
-----
BODY:
<div class="section">
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4893620681/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/41J0Q889K5L._SL160_.jpg" class="hatena-asin-detail-image" alt="Cでつくるニューラルネットワーク" title="Cでつくるニューラルネットワーク"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4893620681/hatena-hamazou-22/">Cでつくるニューラルネットワーク</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%CA%BF%CC%EE%D7%A2%C8%FE" class="keyword">平野廣美</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%D1%A1%BC%A5%BD%A5%CA%A5%EB%A5%E1%A5%C7%A5%A3%A5%A2" class="keyword">パーソナルメディア</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1991/03</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 9回</li>
<li><a href="http://d.hatena.ne.jp/asin/4893620681" target="_blank">この商品を含むブログ (9件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>上の本を借りた。この本はニューラルネットの説明だけでなく、実際にC言語を使ってプログラムを書いているところがいい。ニューラルネットワークを使った学習が主な内容。プログラムは少し複雑みたいだけど何とかなると思う。</p>
<p>パターン理解の授業では、理論だけでプログラムとかは書かなかったので、実際に書いて動かしてみるとさらによく分かるのではないかと思う。</p>
<p>同じ著者だけど遺伝的アルゴリズムの例を実際にC言語で書いた本もあった。</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/489362136X/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/41M5ADFSEAL._SL160_.jpg" class="hatena-asin-detail-image" alt="応用事例でわかる遺伝的アルゴリズムプログラミング" title="応用事例でわかる遺伝的アルゴリズムプログラミング"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/489362136X/hatena-hamazou-22/">応用事例でわかる遺伝的アルゴリズムプログラミング</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%CA%BF%CC%EE%D7%A2%C8%FE" class="keyword">平野廣美</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%D1%A1%BC%A5%BD%A5%CA%A5%EB%A5%E1%A5%C7%A5%A3%A5%A2" class="keyword">パーソナルメディア</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1995/12</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 3回</li>
<li><a href="http://d.hatena.ne.jp/asin/489362136X" target="_blank">この商品を含むブログ (3件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4893621734/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51B7449HKML._SL160_.jpg" class="hatena-asin-detail-image" alt="遺伝的アルゴリズムと遺伝的プログラミング―オブジェクト指向フレームワークによる構成と応用" title="遺伝的アルゴリズムと遺伝的プログラミング―オブジェクト指向フレームワークによる構成と応用"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4893621734/hatena-hamazou-22/">遺伝的アルゴリズムと遺伝的プログラミング―オブジェクト指向フレームワークによる構成と応用</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%CA%BF%CC%EE%D7%A2%C8%FE" class="keyword">平野廣美</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%D1%A1%BC%A5%BD%A5%CA%A5%EB%A5%E1%A5%C7%A5%A3%A5%A2" class="keyword">パーソナルメディア</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2000/03</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 2回</li>
<li><a href="http://d.hatena.ne.jp/asin/4893621734" target="_blank">この商品を含むブログ (4件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 産総研(つくば)でGAに関する研究の見学
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 04/09/2002 11:11:26 AM
CATEGORY: 機械学習
-----
BODY:
<div class="section">
<p>させてもらった。進化型ハードウェアについてだった。まず義手を見た。義手をつけている人が回りにいないので知らなかったが、筋電義手と言って、腕の筋肉から出る電位を利用して動かせることを始めて知った。しかし、筋電には個人差があるらしく、以前は(というか今もか)<strong>人が機械に合わせて練習して使うらしい</strong>。遺伝的アルゴリズム(GA: Genetic Algorithm)を取り入れると個人差を義手の方が学習することができ、<strong>機械が人に合わせることができるらしい</strong>。この考え方は大事だと思った。</p>
<p>他に、分散参照法というGAを用いた圧縮技術、ディジタル回路のクロックスキューの調整、アナログ回路のバラつきの調整などにGAを用いた例をわかりやすく説明していただいた。ここで気が付いたことはGAを使って必ずしも最適解を探そうとはしていないことだった。前にGAのサーベイをしたとき、「局所解に陥ることがあり、必ずしも最適解が得られない」ことが問題点としてあげられていた。しかし、工学的に使う場合には、必ずしも最適解を見つける必要はなく、仕様さえ満たせばよいのだと分かった。特に、アナログ回路で要求仕様を満たした点で探索を打ち止める話を聴いたとき特にそう思った。つまり、GAは工学的に十分応用できるんだと感じた。</p>
<p>そのあと産総研の構内にある地質標本館を見学した。地学にはあまり興味なかったのだけど、化石があったのがとても面白かった。特に、カブトガニはとんがっている方が後ろというのを始めて知った。動いている映像を見られたのはもっと興味深かった。今の生物とは何か違うという印象が強かった。オーム貝の動いている映像を見られたのもよかった。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: わが国におけるバイオインフォマティクスの将来戦略について
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 04/10/2002 11:14:02 AM
CATEGORY: 生物学
-----
BODY:
<div class="section">
<p>という五條堀孝さんのお話を聴いた。バイオインフォマティクスには2つの立場、生命を情報の流れてして見る情報生命科学(Information Biology)と生命科学に情報技術を使うバイオITがある。一つ目の立場では、システムとして統合化してシミュレーション(ドライ)してみた後、これをウェットで検証する必要性を話していた(ナノテクノロジーなどの利用も)。</p>
<p>現状の課題としては、標準化、国際的研究戦略(将来の方向)、人材不足があげられていた。データの解析には今はクラスタマシンを使っているが、グリッドコンピューティングを検討中らしい。こういう話はPCクラスタ班の話だと思う。つながりがちゃんとあるんだと感じた。また、新しいパラダイムの構築する必要があることを話していた。現在はゲノム創薬へ向かう「価値のパイプライン」だけがあるらしい(そのため、米国ではヒトにこだわっているみたい)。バイオインフォマティクスを他の価値(例えば、健康診断への応用などをあげていたと思う)見つける必要がある。今後の重要な情報技術として可視化技術をあげていた(テキスト関係のアルゴリズムはいうまでもなく)。また、日本の戦略としてはオンリーワン(または世界で一番手)、他分野の融合をあげていた。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 人間にできてコンピュータにできないこと
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 04/10/2002 11:17:37 AM
CATEGORY: 哲学
-----
BODY:
<div class="section">
<p>を考えてみるようヒントを頂いたので、本を何冊か調べてみることにした。</p>
<p>というわけで手始めにH. L. ドレイファスの本を読んでみた。</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/478280069X/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51lGmLiVTrL._SL160_.jpg" class="hatena-asin-detail-image" alt="コンピュータには何ができないか―哲学的人工知能批判" title="コンピュータには何ができないか―哲学的人工知能批判"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/478280069X/hatena-hamazou-22/">コンピュータには何ができないか―哲学的人工知能批判</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%D2%A5%E5%A1%BC%A5%D0%A1%BC%A5%C8%A1%A6L%2E%A5%C9%A5%EC%A5%A4%A5%D5%A5%A1%A5%B9" class="keyword">ヒューバート・L.ドレイファス</a>,<a href="http://d.hatena.ne.jp/keyword/Hubert%20L%2E%20Dreyfus" class="keyword">Hubert L. Dreyfus</a>,<a href="http://d.hatena.ne.jp/keyword/%B9%F5%BA%EA%C0%AF%C3%CB" class="keyword">黒崎政男</a>,<a href="http://d.hatena.ne.jp/keyword/%C2%BC%BC%E3%BD%A4" class="keyword">村若修</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%BB%BA%B6%C8%BF%DE%BD%F1" class="keyword">産業図書</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1992/04</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 4回</li>
<li><a href="http://d.hatena.ne.jp/asin/478280069X" target="_blank">この商品を含むブログ (11件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p><a href="http://d.hatena.ne.jp/aidiary/20020330/1111490479">AIは中世の錬金術</a>(2002/3/30)に書いたAIは錬金術だというのはこの本に書いてあることだった。この本には、過去(今もだけど)AIがぶち当たった障壁が並べてある。著者の意見は「<strong>規則に従う運命にあるデジタルコンピュータが、その原理的能力をはるかに超えて、ある種の知能を表現しようとすることはできない</strong>」ことらしい。実際、著者はウェットでなら人工知能を作ることが原理的にできないとする理由はないと言っている(つまり、今の形式のコンピュータでは無理という意味らしい)。</p>
<p>過去のAI研究は、楽観論、幻滅のパターンを繰り返してきたらしい。ここまで批判されると信念が揺らぎそうになるけど、一体どうなんだろう。今までのやり方が悪かっただけと気軽に言えるのだろうか。この本には人間にはできて、コンピュータにはできないことも記されているので参考になる。ちょっと古い本なので現状で解決策が出ているのかは不明だが、それらコンピュータにできないことが現在どのような技術で解決しようとしているのかを調べてみるとよいかなと思う。ここら辺だとかなり哲学的な話が多いように感じる。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: ニューラルネットの学習
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 04/11/2002 11:20:24 AM
CATEGORY: 機械学習
-----
BODY:
<div class="section">
<p>『<a href="http://d.hatena.ne.jp/asin/4893620681">Cでつくるニューラルネットワーク</a>』という本の1番最初のプログラムを書いて実行してみた。</p>
<p>この例題は赤と赤、白と白を混ぜると色は変わらない。赤と白を混ぜると色が変わるというのをニューラルネットに学習させるというもの。バックプロパゲーション(誤差逆伝播法)によってニューロンの結合重みを変えて学習するみたい。</p>
<p>今までは式だけで実際にプログラムを書いたことはなかったが、実際に実行してみて驚いた。本当に学習できてる!誤り率がだんだん小さくなっていくのが目に見えて分かった。何か楽しいね。</p>
<p>ニューラルネットも何となくGAに似ていると感じた。要するにNNはバックプロパゲーションを行って誤り率がある値を下回るまで学習させる、一方、GAは適合度がある値を超えるまで遺伝的操作を繰り返す。方法が違うだけでアプローチ的には似ているように思った。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: ヒトの脳ができること
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 04/14/2002 11:21:39 AM
CATEGORY: 哲学
-----
BODY:
<div class="section">
<p>まとまってないけど、ひとまず考えたことを列挙。</p>
<p>推論できる。予測できる。計算できる。学習できる。記憶できる。言語を使える。翻訳できる。会話できる。思い出せる。世界像を自己形成できる。自己組織化できる。概念を形成できる。曖昧さに対処できる。意志を持てる。願望(欲望)を持てる。性格がある。誤る。連想できる。自発性を持つ。想像できる。創造できる。予測不可能な行動が取れる。感情がある。直感がある。注目できる。自己認識できる。意識を持つ。自我がある。問題解決できる。計画を立てて行動できる。ゲーム(チェス、将棋、碁など)ができる。合目的行動ができる。認識できる。視覚を持つ。聴覚を持つ。嗅覚を持つ。触覚を持つ。味覚を持つ。</p>
<p>概念的に曖昧なものがあるし、重なっているところもあると思う。他にもたくさんあるだろうけど、思いつかない。</p>
<p>ほとんどがAIやロボティクスの研究対象になっている。でも、意識や自我を持たせるなんて何か方法があるのだろうか。ヒトが持っているんだから何か方法があるのは確かだと思う(信じなくちゃ始まらない)。</p>
<p>それは、アルゴリズムで書けるのだろうか?それとも、自己組織化させたり創発させる方が有望なのだろうか?というか、意識や自我っていう概念が曖昧すぎる気もする。認知心理学・認知科学という分野でも研究されているらしいからそっちの方の本も読めたらなと思う。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: エージェントアプローチ人工知能
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 04/15/2002 11:24:35 AM
CATEGORY: 人工知能
-----
BODY:
<div class="section">
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4320028783/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51AFYGD6G1L._SL160_.jpg" class="hatena-asin-detail-image" alt="エージェントアプローチ 人工知能" title="エージェントアプローチ 人工知能"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4320028783/hatena-hamazou-22/">エージェントアプローチ 人工知能</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%C1%A5%E5%A5%EF%A1%BC%A5%C8%A5%E9%A5%C3%A5%BB%A5%EB" class="keyword">スチュワートラッセル</a>,<a href="http://d.hatena.ne.jp/keyword/%A5%D4%A1%BC%A5%BF%A1%BC%A5%CE%A1%BC%A5%F4%A5%A3%A5%B0" class="keyword">ピーターノーヴィグ</a>,<a href="http://d.hatena.ne.jp/keyword/Stuart%20Russell" class="keyword">Stuart Russell</a>,<a href="http://d.hatena.ne.jp/keyword/Peter%20Norvig" class="keyword">Peter Norvig</a>,<a href="http://d.hatena.ne.jp/keyword/%B8%C5%C0%EE%B9%AF%B0%EC" class="keyword">古川康一</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B6%A6%CE%A9%BD%D0%C8%C7" class="keyword">共立出版</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1997/12</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 1人 <span class="hatena-asin-detail-label">クリック</span>: 15回</li>
<li><a href="http://d.hatena.ne.jp/asin/4320028783" target="_blank">この商品を含むブログ (20件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>3年の人工知能論の講義で参考文献の1つに挙げられていた。前は途中であきらめたのだが、もう一度読み直してみた。</p>
<p>AIに関する広範囲の説明があり概観するのはとてもよいと思った。この本には膨大な参考文献があるのだけど、ああいう古い文献は手に入るのだろうかな?</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: Eliza
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 04/18/2002 09:49:26 AM
CATEGORY: 自然言語処理
-----
BODY:
<div class="section">
<p>AIの分野で何か面白いものがないか探していたのだが、<a href="http://www.manifestation.com/neurotoys/eliza.php3" target="_blank">Eliza</a>というのを見つけた。これも人工知能論でずーっと前に聞いたことがあるが、会話をするプログラム。Emacs、Mule、MeadowではM-x doctorで起動できる。</p>
<p>ワイゼンバウムという人が1960年くらいに作ったのが始まり。本当は決まりきったパターンを返すだけなのに、まるで人間のように会話するということが広まりAIに対する過度の期待を人々に与えてしまったといういわくつきのプログラムらしい。ワイゼンバウムはこの結果に困惑し、なぜ人々はこんなものに人間性を感じるのか考えたといわれる。</p>
<p>今、自然言語処理の授業をとっている(一回目から休講だったけど)が、その話に結びついている。その中身がどうなっているのか知りたかったのでWebで探し回り、ソースリストを見つけたのだが、Perl(Chatbot::Eliza)またはLispで書かれていたため読めなかった。</p>
<p>Elizaはたいしたことないプログラムらしいが、さらに<a href="http://alicebot.blogspot.com/" target="_blank">Alice</a>(どうして女性の名前がついてるんだ?)というのがある。これはより高級で過去の会話の内容を記憶しておくらしい。より普通の会話ができる。なかには、チャットしていて相手がプログラムだということに気が付かない人もいるらしい。こういうプログラムはさらにたくさん書かれていて、<a href="http://www.loebner.net/Prizef/loebner-prize.html" target="_blank">チューリングテストの大会</a>にも出場するらしい。いったいどういう技術を使っているのか気になる。たぶん知識処理、学習、推論、自然言語処理などAIの中心となっているものがたくさん使われているんだろうけど。</p>
<p>チューリングテストに批判的なAI学者は多いと聞いたことがある(中国語の部屋の批判など)。多分それは正しいと思う。チューリングテストに出てきるようなプログラムはいかに人間を騙すかというテクニックに偏っていて、知能を表現しているとは言い難いらしい。でも見方を変えると、ヒトはどんな振る舞いに人間らしさを感じるかという心理学的に面白い話題になるだろうし、チューリングテストにパスするくらいならいろいろ実用できるんじゃないか。</p>
<p>前に<a href="http://d.hatena.ne.jp/aidiary/20020221/1111912247">富士通へデータマイニングの見学</a>(2002/2/21)に行ったときに、新聞のデータベースに自然言語で質問できるシステムを見せてもらったことがある。これがWebでできれば面白いと思うがまだ実用はされていないのだろうか。Googleではまだ無理みたいだし、ほかの検索エンジンでも知っている範囲ではできるのはないように思う。Elizaが自然言語で応対し、Webからデータを学習して利用するようなプログラムはできないのだろうか。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: Chatbot::Elizaのソース解読
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 04/22/2002 11:05:49 AM
CATEGORY: 自然言語処理
-----
BODY:
<div class="section">
<p>ElizaのPerlスクリプトを読んでみた。</p>
<p>まだ、Perlの文法で知らないところが多いので、細かいところはほとんどわからなかったが、どのように会話を作り出すかはわかった。あらかじめよく使われるパターンを列挙してリストが作ってあった。ユーザの入力の単語と一致するリストを探し、そこからユーザの入力単語と組み合わせて疑問文にして出力しているだけのようだ。ユーザがリストにない入力をしてきたら、適当にはぐらかしている。</p>
<p>これは、英語だからこのように作れただろうけど、日本語にしたら大変だと思う。一致するかどうかのテストも難しくなるし、漢字とひらがなの違いなんかも問題になるはず。</p>
<p>これを最初に作ったワイゼンバウムさんはすごいと思うけど、内実はAIとはかなり遠いように感じた。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: シーマン
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 05/01/2002 10:22:33 PM
CATEGORY: ゲームAI
-----
BODY:
<div class="section">
<p>というゲームをやってみた。オヤジの顔をした人面魚と会話するゲーム。</p>
<p>音声認識は単語しか認識しない(上にあまり認識率がよくない)のであまりすごくないが、コンセプトとしてはかなり面白いと思った。一応AIの技術が使われているのかな。でも、単語しか認識せずしかも毎回同じような反応しかしないので、高度な意味処理はしていないように思う。AIもロボットと同じようにエンターテインメントとしての応用はされているのだろうか。ロボットに使われているのかな。</p>
<p>家族にも見せたのだが、こっちの言うことに正しく反応するので驚いているみたい。内部を知らなければそう思うよな。インタフェースが違うだけでElizaの時と同じように思う。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: Lisp
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 05/03/2002 10:24:25 PM
CATEGORY: 人工知能
-----
BODY:
<div class="section">
<p>を勉強した。本は、WinstonとHornの『LISP』。内容はLispの文法的なものだけではなく、人工知能での応用まで書かれている。Lispは学会誌とかを読んでいるといろいろなところで出てきている。人工知能では必須のプログラム言語らしいので是非習得したい。</p>
<p>LispインタプリタにはEmacsを使っていたが、機能が少ない(progが使えなかった)ので、他のを探したら、GNUにGCL(Gnu Common Lisp)というのがあった。これは、Common Lispに準拠しているらしく機能が豊富でよいと感じた。でも、インタフェースではEmacsの方が使いやすいと思う。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: Web Intelligence
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 05/04/2002 10:26:11 PM
CATEGORY: 機械学習
-----
BODY:
<div class="section">
<p>今日、5月号の人工知能学会誌が届いたのでぱらぱら見てみたら、Web Intelligence という特集があった。</p>
<p>武田英明, 知性のネットワークとしてのWWW―Webインテリジェンスに関する一考察―</p>
<p>WWWは巨大な情報ネットワークであり、情報学のあらゆる分野(人工知能も含む)で避けて通れない問題となっているらしい。特に、人工知能はより積極的にかかわらなくてはならない。なぜなら、WWWは単に情報ネットワークシステムであるだけでなく、仮想的な巨大なデータベース、知識ベースであるからである、と書いてあった。また、既にWeb Intelligence(WI)という国際会議がZhongという人を主催者として開かれているらしい。Zhongによると、</p>
<blockquote>
<p>Web Intelligence(WI)はWebとインターネットに人工知能(Artificial Intelligence:AI)と先進的情報技術(Information Technology:IT)を活用したものである。</p>
</blockquote>
<p>という漠然とした定義で何が目的なのかよくわからないが、<strong>Webに焦点を当てた研究の新分野の傘ないしラベル</strong>と考えようとしているらしい。知的ネットワークとしてWebに焦点を当てるのはすごいいいように思った。面白そうな分野だ。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: スモールワールド現象
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 05/05/2002 09:09:34 PM
CATEGORY: 複雑系
-----
BODY:
<div class="section">
<blockquote>
<p>R. Alvertらは、WWWの(N=)8x10^8ページのリンク関係を調べ、ネットワークの直径を求めた結果、D=18.59と報告している。これは、任意の2ページ間を19クリックで到達できることを意味している。このように、ネットワークの要素数Nと直径Dのオーダに、O(D) &#60;&#60; O(N)なる関係が成立する現象は、「Small World現象」と呼ばれる。</p>
<p>人工知能学会誌 Vol.17, No.3</p>
</blockquote>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: AI事典
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 05/07/2002 09:01:02 AM
CATEGORY: 人工知能
-----
BODY:
<div class="section">
<p>という本を見つけた。</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4320120639/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/41BNEMY218L._SL160_.jpg" class="hatena-asin-detail-image" alt="AI 事典 第2版" title="AI 事典 第2版"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4320120639/hatena-hamazou-22/">AI 事典 第2版</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%C5%DA%B2%B0%BD%D3" class="keyword">土屋俊</a>,<a href="http://d.hatena.ne.jp/keyword/%C3%E6%C5%E7%BD%A8%C7%B7" class="keyword">中島秀之</a>,<a href="http://d.hatena.ne.jp/keyword/%C3%E6%C0%EE%CD%B5%BB%D6" class="keyword">中川裕志</a>,<a href="http://d.hatena.ne.jp/keyword/%B6%B6%C5%C4%B9%C0%B0%EC" class="keyword">橋田浩一</a>,<a href="http://d.hatena.ne.jp/keyword/%BE%BE%B8%B6%BF%CE" class="keyword">松原仁</a>,<a href="http://d.hatena.ne.jp/keyword/%C2%E7%DF%B7%B9%AC%C0%B8" class="keyword">大澤幸生</a>,<a href="http://d.hatena.ne.jp/keyword/%B9%E2%B4%D6%B9%AF%BB%CB" class="keyword">高間康史</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B6%A6%CE%A9%BD%D0%C8%C7" class="keyword">共立出版</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2003/03/18</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 1回</li>
<li><a href="http://d.hatena.ne.jp/asin/4320120639" target="_blank">この商品を含むブログ (7件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>読んでみたら、AIで使われる言葉や概念がよく説明されている。さらに、各分野の関係や概念間のつながりも書かれているのでとてもよい。最近の論文を読んでいて、よく分からない言葉とか概念はほとんど説明されているみたいなのでかなり便利だと思った。</p>
<p>--</p>
<p>第2版が出ました。事典なので結構高いな・・・</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 形式と内容―内容指向人工知能研究の勧め―
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 05/09/2002 09:06:05 AM
CATEGORY: 人工知能
-----
BODY:
<div class="section">
<p>という論文(人工知能学会誌,Vol.11,No.1)を読んだのだがとても興味深かった。<strong>人工知能研究のあるべき姿</strong>みたいな内容。今後の研究姿勢としても考える価値があることなので記録しておく。</p>
<p>前に、<a href="http://d.hatena.ne.jp/aidiary/20020228/1112059116">役に立つこと</a>(2002/2/28)で偉そうなことを書いたがそれにも関係がある話だった。</p>
<p>溝口理一郎氏は次のように書いている。</p>
<blockquote>
<p>人工知能は純粋科学ではない。したがって、学問的な夢を追い続けるだけでは十分でない。実社会から期待される技術を提供しつつ、そのことを通して科学としての学問の進展を促進するという二つの側面は、工学系の学問として成立するために不可欠な車の両輪であるということをまず確認しておきたい。</p>
<p>(中略)</p>
<p>学術活動の活性化にはエネルギーが必要である。その最大の原動力は研究のおもしろさにある。しかし、それだけでは不十分である。学術活動に対する周囲からの要求に応えることも、同じように必要である。学問には、宇宙物理学のように「わかる」ことだけで人類の知的好奇心が満たされ、それが「何の役に立つのか?」という質問に答える必要がない学問と、その質問を無視することができない学問があり、人工知能研究は残念ながら後者に属するのである。</p>
</blockquote>
<p>また、溝口氏の人工知能研究に対する立場として、次のように書いている。</p>
<blockquote>
<p>学問が健全であるためには、その方法論の進化が着実に当初のゴールの達成に貢献することが実感できなければならない。</p>
<p>(中略)</p>
<p>高すぎるゴールは、研究を健全に進めることに貢献しない。不健全さはさまざまな問題をひき起こす原因となる。筆者には、「人工知能」をつくるなどというだいそれたことをいわないほうがよいように思われる。「人工知能」は遠すぎる目標であることを明言してはどうだろう。</p>
<p>(中略)</p>
<p>「(人工知能の目的は)ある制限された問題に対して、知的に振舞うシステムをつくるための理論と技術に関する研究」で十分ではないだろうか。</p>
</blockquote>
<p>部分的に抜き出しただけなので、全文を読まないと誤解されてしまうようなところもある。この問題は<strong>人工知能は科学か工学か</strong>という問題が根底にあるように思う。溝口氏は工学よりと取れる。ただし、「不可欠な車の両輪」というところから科学の面を否定しているわけではない。つまり、バランスが大切だとも述べている。</p>
<p>一方、北野宏明氏は溝口氏の意見に対して、</p>
<blockquote>
<p>工学は「動いてなんぼ」の世界であり、「役に立つ技術が良い技術である」という結果主義の世界である。</p>
<p>(中略)</p>
<p>AIの研究から得られた発想や技法は大切であるが、「現場で働くシステム」を作るとなるとAIなどとはいっていられないのである。AIシステムを作るなどという要求は現実には存在しないのであって、あるシステムを作るときに、そのような技術が使えるかが問題である。AI研究から派生した技術でも、使えるものは使えばよいのである。よって、AI研究から派生した技術は、隠し味程度であれば十分であると考えるのがよい。</p>
<p>(中略)</p>
<p>もしそれ(人工知能)が、人間と同じような知能(欠点も含めて)持つシステムを意味するなら、経済的有用性はない。人を雇ったほうが安いからである。</p>
</blockquote>
<p>とAIの工学的な応用に同調し、産業としては人工知能を作るという目標には問題があると述べている。しかし、AIの科学的な面も捉えていて、次のようにも言っている。</p>
<blockquote>
<p>科学者は、鳥を見て、鳥がいかに飛ぶかの機構を研究し、工学研究者は、鳥ではなく、飛行機を作る。哲学者は、鳥にとって飛ぶとはどのような意味があるのかを論じ、作家は「カモメのジョナサン」を書くのである。</p>
<p>(中略)</p>
<p>「人工知能研究に、科学としての側面はないのか?」という疑問である。確かに、工学的側面は大きく、ほとんどの研究は工学として行われているということも事実である。しかし、私は、人工知能の研究には、知能の本質を、合成的理解というアプローチで研究するという側面もあると考える。鳥を見て、鳥がいかに飛んでいるかを研究しようということである。</p>
<p>(中略)</p>
<p>人工知能という分野のなかには、純粋に工学的な研究と、科学的な研究の2種類があり得るといっているのである。</p>
<p>(中略)</p>
<p>人工知能に、科学的研究があるなら、それは、知能の基本原理を探るという目的になるであろう。確かに、知能は、少数の原理で記述できるような対象・現象ではないと思われる。しかし、原理がなにもないわけではないであろう。それならば、その原理とは何かを探ることは重要な研究であると考えられる。</p>
<p>(中略)</p>
<p>溝口先生は、人工知能の目標は、それが到達できない目標ゆえに不健全であると述べている。物理学は、物質と空間に関する理解という、大きな目標のもとに発展してきたし、生物学は、生命現象の理解という目標のもとに発展してきた。それらは、簡単に到達できない目標であり、いまだに完成はしていない。しかし、物理学や生物学が、不健全であるというものはいないであろう。人工知能の科学的側面、つまり、知能の合成的理解という目標が、それらの学問の目標設定に比べて不健全であるとは思えない。</p>
<p>(中略)</p>
<p>人工知能を工学として捉えるなら、私は溝口先生の主張にほぼ同意できる。しかし、人工知能に科学的研究の側面があることも見逃してはならない。科学的研究の成果は遅かれ早かれ工学分野に大きなインパクトを与えるのである。</p>
</blockquote>
<p>と人工知能の科学的側面の重要性も強調している。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: ロボット工学三原則 by Issac Asimov
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 05/13/2002 09:17:30 AM
CATEGORY: SF
-----
BODY:
<div class="section">
<p>第一条:ロボットは人間に危害を加えてはならない。また、その危険を看過することによって、人間に害を及ぼしてはならない。</p>
<p>第二条:ロボットは人間に与えられた命令に服従しなければならない。ただし、与えられた命令が、第一条に反する場合は、この限りではない。</p>
<p>第三条:ロボットは、前掲第一条、第二条に反する惧れのない限り、自己を守らなければならない。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 応用を指向した人工知能基礎研究
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 05/15/2002 09:15:46 AM
CATEGORY: 人工知能
-----
BODY:
<div class="section">
<p><a href="http://d.hatena.ne.jp/aidiary/20020509/1114819565">形式と内容―内容指向人工知能研究の勧め―</a>(2002/5/9)の続き。</p>
<p>エンジニアリングへの応用:研究と現場の溝を越えて,人工知能学会誌,Vol.14,No.3,pp.398-401</p>
<p>というAIの工学的応用に関する座談会の記事を読んだ。今は、「人工知能氷河時代」と言われ、人工知能学会の会員数も以前に比べ減ってきている。この現状を捉えて、今後の人工知能研究のあり方について述べている。そこから心に残った部分の引用。</p>
<p>西田豊明氏</p>
<blockquote>
<p>今でも研究スタイルに関する悩みはなかなか消えません。世の中の進歩は加速されるばかりで、役に立つ研究をしようとするとある程度実現可能なことをせざるを得ません。ところが、それでは「大学でなければできないこと」を研究しているとは言えません。他方、遠くの目標を設定すると、あまりまわりの役に立たないばかりか、実現不可能なことを言っていると受け止められます。</p>
</blockquote>
<p>この前に、企業はどうしても利益に結びつく実用的な研究をせざるを得ず、リスクをおかすような研究はできない。そういうのは、大学に任せるべきだという話が出ている。大学と企業の研究の違いは何か、あるのか?</p>
<p>鷲尾隆氏</p>
<blockquote>
<p>AIの何が問題なのでしょうか。1つはAIの過去の宣伝や期待に対する失望だと思います。現状のAIは他の諸理論や諸技術と同じく、工学的に言えば一つの要素技術に過ぎません。もう1つはAIと我々が呼ぶ研究領域の定義が極めて曖昧で、人間の知的機能の中で他の理論や技術でより高い性能で代替できる部分を除いていくと、今のAI以外の理論や技術で実現できない部分は殆ど残らない現実があります。</p>
<p>この2番めの点に関しては、そもそもAIをパターン認識のような要素技術の孵卵器(インキュベータ)だと割り切って捉える方向と、何とかAI固有の核になるような理論や技術を創出していく方向の2通りのやり方が考えられると思います。私としては、AIが孵卵器であることにこそ、その価値と魅力を認めるべきだと思います。</p>
</blockquote>
<p>AIが要素技術の大力修氏孵卵器(インキュベータ)だという考え方は私の大学時代の先生も書かれている。</p>
<p>上田:<a href="http://www.ueda.info.waseda.ac.jp/~ueda/readings/ai-software.html" target="_blank">人工知能とソフトウェア文化</a></p>
<blockquote>
<p>企業の中でシステム開発を行う場合は、担当する技術者がいかに熱意をもっていようとも、経理部門を説得できなければ実用システムに予算は付きません。通常、経理の人間は技術のことはいくら説明を尽くしても分かりません。信用するのは実績と評判です。現在はAIに逆風が吹いています。学会誌等に載っている成功事例を見せることができれば追い風が得られるのですが、人工知能学会誌には経理部門を納得させるような記事がないのです。</p>
</blockquote>
<p>大力修氏</p>
<blockquote>
<p>きついことを言うようですが、AIを産業界で使うためには経済原理を無視できません。人間の知能の本質を解明し代行する夢は重要ですが、それを除いた部分で勝負しないとエンジニアリング応用は進みません。夢を唱えて実質が進まないのは悲しいと思います。</p>
</blockquote>
<p>疑問。人工知能研究を理論と応用に分けられないのか。例えば、物理は基礎物理と応用物理、数学は純粋数学と応用数学、医学は基礎医学と臨床医学というように分かれている。なぜ人工知能は基礎人工知能と応用人工知能に分かれないのだろう。歴史が浅いのが原因か。分離できない原因があるのか。基礎では実現不可能すぎて研究することがないのか。他の分野との違いは何なのか。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 考えるコンピュータ 人間の脳に近づく機械
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 05/17/2002 09:18:51 AM
CATEGORY: 人工知能
-----
BODY:
<div class="section">
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4478880042/hatena-hamazou-22/"><img src="http://d.hatena.ne.jp/images/hatena_aws.gif" class="hatena-asin-detail-image" alt="考えるコンピュータ―人間の脳に近づく機械" title="考えるコンピュータ―人間の脳に近づく機械"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4478880042/hatena-hamazou-22/">考えるコンピュータ―人間の脳に近づく機械</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/R%2EC%2E%A5%B7%A5%E3%A5%F3%A5%AF" class="keyword">R.C.シャンク</a>,<a href="http://d.hatena.ne.jp/keyword/%C0%D0%BA%EA%BD%D3" class="keyword">石崎俊</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%C0%A5%A4%A5%E4%A5%E2%A5%F3%A5%C9%BC%D2" class="keyword">ダイヤモンド社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1985/11</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><a href="http://d.hatena.ne.jp/asin/4478880042" target="_blank">この商品を含むブログ (3件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>1985年の古い本。この時代はAI全盛期?でエキスパートシステムを称えた本やAIは何でもできる的の本が多いのだが、これは違う。著者はAIの全盛期などまだ来ておらず、これから解決すべき課題は山ほどあると述べており、マスコミの過熱を批判している。まだ少し読んだだけだが、AIを創る上で何が必要で、現在(1985年時点)何が問題かが書かれているように見受けられる。参考にしたい。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 人工知能に興味を持ったきっかけ
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 05/17/2002 09:20:32 AM
CATEGORY: 人工知能
-----
BODY:
<div class="section">
<p>直接研究とは関係ないが回顧録。内省してみると、いつからAIに興味を持ったのか覚えていない。初めてこの言葉を目にしたのは、ドラゴンクエストIVというゲームで、キャラクタ&#8212;が思考ルーチンを持って勝手に行動してくれることをAIと宣伝していた(大げさ)。当時は、<strong>AIなどもちろん知らず、愛(ai)のことかと勘違いしていた</strong>のを覚えている(AIが日本語で愛と同じ綴りというのは面白い)。</p>
<p>AIやロボットの研究者は小さいころに「鉄腕アトム」のアニメを見て感動した、という話を良く聞く。自分はそんなに昔の世代ではないのでアトムは殆ど知らないが、自分の場合アニメでは「ドラえもん」か?小さい頃に鉄人兵団というドラえもんの映画を初めて見てロボットが心を持つ的な話(というかドラえもんの存在自体そうなのだけど、この映画ではもっと強烈に描かれていたため)を知り面白いと思ったのを覚えている。</p>
<p>そういえば、今日の新聞におもちゃメーカーが共同で2006年までにドラえもんを作るという記事が載っていた。AIやロボットの現在の技術を総動員してつくるらしい。1体で車ほどの値段がすると書いてあるが誰が買うんだ?買うほど魅力的なものにしたいと書いてあるのだけれど。</p>
<p>人工知能という学問分野があるのを知ったのは、何とついこの間の大学3年で人工知能論の授業を取ったときだった。イメージしていたのと大分違うなと思ったのだが、勉強していくうちに面白いと興味を持つようになっていき、現在に至る。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 映画 A.I.
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 05/18/2002 10:01:47 PM
CATEGORY: SF
-----
BODY:
<div class="section">
<p>を見た。感想。ますますAIが誤解されそうな内容だった。そのものずばりAIなんて名前は付けないでほしかった!映画は特に影響力は大きいし。今回は、HALみたいにAIが悪いのじゃなくて、人間の方が悪い設定だったみたい。でも、AIを創ること自体問題で研究者が一番悪いみたいな流れだったように思う。アメリカのキリスト教文化ではそうなるのか。たぶんあんな状況になるのはずっと先(いつかは来ると信じているが)で今考える必要なんてないのだろうけど・・・</p>
<p>最終的にはAIがああいう方向性に突っ走って社会問題になることもあるかもしれない(まず、クローンが先にそうなるだろうが)。科学が暴発することは歴史が証明している。だからこそ一人一人が正確な知識を持って科学に対して議論していかなきゃいけないのに、あれじゃ逆に誤った知識を植え付けてしまい、AI研究まで抑圧してしまう。その先の工学の誤った利用のところを抑圧しなければならないのに。</p>
<p>純粋にフィクション映画としては面白かった。特に、<strong>ロボットよりヒトが醜悪に描かれていたこと</strong>(道具を使う責任は全て人間にある。ヒト型のロボットをばらばらに破壊して面白がる程度まで人間が行ったらもう人間とは呼べない!)。その人間とは対照的にヒトの形をしていない未来人がより人間的だったことも意味深い。あと、設定として都市が海中に沈んだりしていたこと。あの謎の生命体。最もいいと思ったのは熊のぬいぐるみ。<strong>AIロボットを実現するとしてもヒト型にするのはやはり少しは問題だ</strong>。あの熊みたいな方がよい。逆にAIがらみのところは憤りであまり面白くなかった。あと、アメリカの映画って必ず○○○のシーンがあるけどどうにかならないのかね・・・もし家族で見てたら場が持たない(笑)</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 知性とは何か?
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 05/19/2002 09:21:54 AM
CATEGORY: 哲学
-----
BODY:
<div class="section">
<blockquote>
<p>人間以外のものを知性的と呼ぶことは、人間の尊厳を汚すことになるのではないかという議論がある。人間が宇宙の中心であるという考えを変えなければならなくなるのがこわいのだ。だが、イルカや鯨、猿、犬、猫などが知的であることはまちがいない。</p>
<p>知性とは何か。あたりさわりないところで定義すれば、プログラムされていない方法で新しいことに反応する能力ということになろうか。驚いたり考えたりする能力こそ真の知性であり、その定義を使えば、コンピュータはいつかその知性を得るといえそうである。</p>
<p>真の論点は、コンピュータがその知性をどのくらいもてるか、どのようにして獲得するか、実際にもつのかそれともシミュレーションなのか、そしてその違いが、どうすれば私たちにわかるかということである。</p>
<p>R. C. Schank</p>
</blockquote>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: ネットワークを渡り鳥するプログラム
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 05/26/2002 11:26:56 PM
CATEGORY: 人工生命
-----
BODY:
<div class="section">
<p>下原さんの論文に面白い話が載っていたので引用。</p>
<blockquote>
<p>現在、我々は、ティエラをネットワーク型に拡張し、インターネットなど地球規模のコンピュータ・ネットワーク上でのソフトウェア進化の実験を進めている。</p>
<p>世界中の多くの人々がかかわる動的な環境としてのインターネットは間接的にディジタル生物(コンピュータ・プログラム)に自然でかつ変化と複雑性に富む環境を与えることができる。多くの人々がコンピュータを利用している間は、ディジタル生物に与えられる計算時間もメモリ空間も限られる。従って、そのような厳しい環境でも適応できるものしか生き残れない試練のときとなる。しかし、人々が帰宅してコンピュータを利用する人が居なくなると、今度は計算時間もメモリ空間も最大限利用でき、ディジタル生物にとってはまさに天国となる。競争のない豊かな環境でディジタル生物はサバイバルに直接かかわらない機能を育むことができる。</p>
<p>そのようなことが日々、しかも、世界中のコンピュータの中で繰り返される。ディジタル生物はインターネットで結ばれたコンピュータ間を自由に移動することもでき、より豊かな計算時間とメモリ空間を求めて絶えず地球の裏側(夜側)に向けて移動することが予想される。</p>
</blockquote>
<p>このような考え方は魅力的に感じた。今でもWWWロボットみたいなのはネットワーク中を渡り歩いているのだろうけど、もっと知的になったら面白いと思う。</p>
<p>コンピュータウィルスの撲滅なんかもまかせられるかもしれない。逆にこれが凶悪ウィルスになるかもしれないけれど。ティエラを作ったトマス・レイもこれが心配で仮想マシン上で実行したそうだ。</p>
<p>それにWWWロボットの作り方が公表されないのも過度にインターネットに負荷をかけないためとも聞いたことがある。こういう実験をインターネット上でやるのはまずいかもしれないけれど、考え方は非常に面白い。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 機械には決してXができない
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 05/27/2002 08:13:51 PM
CATEGORY: 哲学
-----
BODY:
<div class="section">
<p>チューリングテストを提案したチューリングさんの論文<span class="footnote"><a href="/aidiary/#f1" name="fn1" title="A. M. Turing:[http://www.loebner.net/Prizef/TuringArticle.html:title=Computing Machinery And Intelligence], Mind, Vol.59, pp.433-460, 1950">*1</a></span>に「機械には決してXができない」とXの例を列挙している部分がある。</p>
<blockquote>
<p>親切であること、機知に富むこと、美しいこと、友好的なこと、自発性があること、ユーモアのセンスがあること、善悪の判断がつくこと、誤りを犯すこと、恋に落ちること、苺とクリームを楽しむこと、誰かを恋に落とすこと、経験から学ぶこと、言葉を正しく使うこと、自分自身の考えの主題になること、人間と同じぐらいの行動の多様性を持つこと、本当に新しいことをすること。</p>
</blockquote>
<p>ずいぶん昔の話なので今ではできていることがある。例えば、「経験から学ぶ」というのは限定されるが可能だし、「言葉を正しく使うこと」もある程度は可能になってきたと思う。</p>
<p>あと、抽象的すぎてよく分からないものもある。「親切であること」?ヒューマンインターフェースの問題か。「善悪の判断がつくこと」?ヒトにもできないのじゃないか、第一善悪の判断基準は何か。「苺とクリームを楽しむこと」?感情と五感ということか。「恋に落ちること」?先生が「恋するコンピュータ」というお話しをしていたけどどうなんだろう。「誤りを犯すこと」?最適解が求められず、局所解に陥るのは違うのか。「美しいこと」?フラクタルはきれいだし、コンピュータアートでも美しいのはあるのでは。</p>
<p>この中で最も重要なのは「<strong>自発性があること</strong>」だと思う。つまり機械に意志を持たせるということ。言い換えると欲望とか願望を持たせることだろう。これができないと自律性を持たせることはできそうにない。</p>
<p>よく読むとチューリングさんがこう考えているわけではないような・・・一般的に言われていることらしい。</p>
<p>【関連リンク】</p>
<ul>
<li><a href="http://www.unixuser.org/~euske/doc/turing-ja/index.html" target="_blank">計算する機械と知性</a></li>
</ul>
</div>
<div class="footnote">
<p class="footnote"><a href="/aidiary/#fn1" name="f1">*1</a>:A. M. Turing:<a href="http://www.loebner.net/Prizef/TuringArticle.html" target="_blank">Computing Machinery And Intelligence</a>, Mind, Vol.59, pp.433-460, 1950</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 人工知能ができない理由
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 05/28/2002 00:08:59 PM
CATEGORY: 哲学
-----
BODY:
<div class="section">
<p>人工知能には<strong>強いAI</strong>と<strong>弱いAI</strong>という2つの立場がある。「知的であるかのように行為する機械を作れるか?」という問いに対して、できるという主張を弱いAIと言う。一方、知的に行為する機械は本物の、意識的な心を持っているという主張を強いAIと言う。おのおのに対していろいろな方面から批判が出されている(数学、物理学、哲学、心理学、果ては神学)。この2つの立場は別に対立するものではなくて、強いAIを信じながら弱いAIを信じないということもできる。知的に振舞う機械は作れないと信じながらも、もしできたらそれは意識を持つと認めればよい。</p>
<p>おのおのの立場に対する批判をまとめてみると面白いと思う。そうなると、情報科学ではなくて哲学よりにいってしまうかもしれないけれど、本当にこの分野に入るときは大事になってくるに違いない。でも、哲学の議論は抽象的すぎて難しい。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: コンピュータには何ができないか
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/03/2002 00:11:30 PM
CATEGORY: 哲学
-----
BODY:
<div class="section">
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/478280069X/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51lGmLiVTrL._SL160_.jpg" class="hatena-asin-detail-image" alt="コンピュータには何ができないか―哲学的人工知能批判" title="コンピュータには何ができないか―哲学的人工知能批判"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/478280069X/hatena-hamazou-22/">コンピュータには何ができないか―哲学的人工知能批判</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%D2%A5%E5%A1%BC%A5%D0%A1%BC%A5%C8%A1%A6L%2E%A5%C9%A5%EC%A5%A4%A5%D5%A5%A1%A5%B9" class="keyword">ヒューバート・L.ドレイファス</a>,<a href="http://d.hatena.ne.jp/keyword/Hubert%20L%2E%20Dreyfus" class="keyword">Hubert L. Dreyfus</a>,<a href="http://d.hatena.ne.jp/keyword/%B9%F5%BA%EA%C0%AF%C3%CB" class="keyword">黒崎政男</a>,<a href="http://d.hatena.ne.jp/keyword/%C2%BC%BC%E3%BD%A4" class="keyword">村若修</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%BB%BA%B6%C8%BF%DE%BD%F1" class="keyword">産業図書</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1992/04</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 4回</li>
<li><a href="http://d.hatena.ne.jp/asin/478280069X" target="_blank">この商品を含むブログ (11件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>ドレイファスの本を読み始めた。彼は現在の人工知能には否定的な立場だ。ちょっと引用してみる。</p>
<blockquote>
<p>これらの困難を顧みるとき(注:その前に人工知能研究への批判が長々と書かれていた)、どうして認知のシミュレーションの研究者はコンピュータの情報処理が人間の隠れた情報処理を明らかにすると考えるのか。また、どうして人工知能の研究者は、人間の課題遂行の方法はデジタル方式のものでなければならないと考えるのか。わたしの知るかぎり、この分野でこれらの点について自問した者は一人もいないと思われる。実際、科学的活動の分野では、<strong>人工知能は最も自己批判に乏しい分野なのである</strong>。これら知的な人々が、ほとんど一致して自分達の困難を過小評価したり認識し損ねたりし、独善的に自分達が進歩の途上にあると主張し続けたことには、何らかの理由があるはずである。彼らの考えには、彼らが正当化の必要を感じないでいられるための何らかの力が働いているはずである。その力はもちろん、彼らの成功がもたらすものではない。われわれはいまこそ、人工知能研究者が増え続ける困難に直面しながらも、なぜそのように戸惑いのない自信を見せているのか、その理由を見出さなければならない。</p>
</blockquote>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 第五世代コンピュータ計画
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/07/2002 00:16:27 PM
CATEGORY: 人工知能
-----
BODY:
<div class="section">
<p>第五世代コンピュータ計画というのが、日本の国家プロジェクトとしてあったらしい。アメリカなども日本に追い越されないように、新しいプロジェクトを起こすほどだったそうだ。当時の高校の英語の教科書にも載っていたが「<strong>考えるコンピュータ</strong>(thinking machine)」の実現を目指したらしい。結局、どうなったのだろうか。成果はどんなものなのか。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 脳を創る
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/07/2002 00:16:28 PM
CATEGORY: 脳科学
-----
BODY:
<div class="section">
<p>という研究はAIとは少し違うみたい?ニューラルネットに近いのだろうか?でも研究者の方は人工知能学会にもよく論文を提出しているが。ちょっと見たところでは、ハードウェアに近いような気がする。学習と記憶などを対象としているみたいだけど、どこまで進んでいるのだろうか。AIにこだわらずこっちも注目していきたい。</p>
<p>ドレイファスの主張の一つに「規則に従うディジタル方式のコンピュータでは人間知能を実現できない」というものがある。もしこれが本当なら根本からコンピュータアーキテクチャを変えなければ、実現できないことになる。他のアーキテクチャについても注目しておいた方がいいと思った。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: ゼウスの頭からアテナが十分に成長した姿で生まれたように
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/07/2002 00:16:29 PM
CATEGORY: 哲学
-----
BODY:
<div class="section">
<p><a href="http://d.hatena.ne.jp/asin/478280069X">コンピュータには何ができないか―哲学的人工知能批判</a>の一節。</p>
<blockquote>
<p>ファイゲンバウム、サイモン、ミンスキー、ワイゼンバウム、その他の人々によって今日定義されているかぎりでは、人工知能は完全な成人の知能を生み出す試みであるように見える。ちょうど、ゼウスの頭からアテナが十分に成長した姿で生まれたように。</p>
</blockquote>
<p>ドレイファスはこう述べ、さらに、<strong>胎児の初期反射をプログラムし、コンピュータに学習させてみることは、文脈を理解するという問題の解決になるかもしれない</strong>と述べている。</p>
<p>胎児の発達に基づいて、知能を獲得するというアプローチは前に論文にもあったが、胎児がどのように発達するのかはまだ分かっていない。でも、もし知能を創ろうとしたら、最初から造りこむような方法は無理なような気がする。何とかして学習させ、適応させ知能を創発させるしかないんじゃないか。知識表現や学習のさせ方などまだまだ分からないことがあるみたいだけど、もし今のAIの延長上に知能を見出すならそういう方法が適当に思う。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: チューリングテストについて考えたこと
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/10/2002 00:18:07 PM
CATEGORY: 哲学
-----
BODY:
<div class="section">
<p>チューリングテストととは、「機械は考えることができるか」という問いに対するテスト法として、1950年アラン・チューリングが提案した。隔離された二つの部屋の一方に端末と質問者、もう一方に機械または人間を置き、端末を通じた対話によって質問者は相手が機械か、人間かを判断し、機械を人間と判断してしまったら、この機械は「考えている」と見なしてよいという主張。</p>
<p>前から、この問題については本当にそう主張してよいか考えていたが、最近次のようなことを思いついた。</p>
<p>ヒトは自分以外の他人が「考えている」とどのように判断しているのか。自分が「考えている」というのは、デカルトの「われ思うゆえに、われあり」という主張の通り、認められる(?)。でも他人が「考えている」という判断はこの方法ではできそうにない。だって、自分は他人になれないのだから。では、どうして他人も「考えている」と思うことができるかというと、帰納法を使って、「自分は人間で考えることができる。だから、他の人間も考えられるに違いない。」と思うか、三段論法風に、「人ならば考えることはできる(自明かな?) 」「彼(彼女)は人である」よって「彼(彼女)は考えることができる」と推論しているか、または、相手が「考えている」ように"見える"からとしか言えない。つまり、相手が「考えている」というのは脳を解剖してもわからないのだから、外見的な動作でしか判断できない、と思う。</p>
<p>つまり、機械についても同様で、その機械が「考えている」かは、その機械をばらして中身を見てもわからない。つまり、チューリングテストみたいな外見的な動作でしか判断できないんじゃないか。と考えていた。</p>
<p>今日、「哲学者はアンドロイドの夢を見たか」という本を読んでいたら、これと全く同じことを考えている人がいた(当然か)。</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/488679016X/hatena-hamazou-22/"><img src="http://d.hatena.ne.jp/images/hatena_aws.gif" class="hatena-asin-detail-image" alt="哲学者はアンドロイドの夢を見たか―人工知能の哲学" title="哲学者はアンドロイドの夢を見たか―人工知能の哲学"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/488679016X/hatena-hamazou-22/">哲学者はアンドロイドの夢を見たか―人工知能の哲学</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%B9%F5%BA%EA%C0%AF%C3%CB" class="keyword">黒崎政男</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%C5%AF%B3%D8%BD%F1%CB%BC" class="keyword">哲学書房</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1987/10</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 2回</li>
<li><a href="http://d.hatena.ne.jp/asin/488679016X" target="_blank">この商品を含むブログ (3件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>チューリングテストを認める立場を関係論的把握、認めない立場を実体論的把握と述べている。関係論的把握は、相手との関係の中で知能のあるなしを把握するしかできない、つまり存在者が一人しかいなかったら、知能は存在しえない。後者は、知能は存在者に内属している性質であり、他者がいなくても存在しうる、と見なす。</p>
<p>実際、AI研究者たちは、「チューリングテストを認める関係論的把握によってしか、作ったプログラムが知能を持っているかテストする方法はない」としていることが多い。AI批判者は「中国語の部屋」のサールのように、実体論的把握でしか知能は認めないとしているが、実際、この立場では知能を持っているかテストする方法がないという問題がある。つまり、人工知能はいつまでたっても絶対にできないということになってしまう(テストできないから)。</p>
<p>でも、チューリングテストにも問題はあると思う。例えば、相手を機械だと判断するのは非常に易しい、という主張があった。どうするかというと、難しい算術演算を質問してみる。もし機械なら"死ぬほどの正確さとスピード"で答えを返してくれるからすぐわかってしまう。チューリングの論文では、こういうことが無いように、人間のようにしばらくしてから答えを返したり、微妙な間違いをするからくりが必要だと述べている。しかし、こんなことは意味の無い努力に思える。チューリングテストを批判する人たちは、こういう人を騙すつまらないトリックを使って、テストにパスさせるようなのは絶対に知能ではないと主張しているのを聞いたことがある。何か新しいチューリングテストが必要じゃないかな。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 錬金術と人工知能
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/10/2002 08:23:08 PM
CATEGORY: 哲学
-----
BODY:
<div class="section">
<p><a href="http://d.hatena.ne.jp/asin/478280069X">コンピュータには何ができないか―哲学的人工知能批判</a>を読み終わった。少し難しいがなかなか面白かった。著者のドレイファスは「人工知能は錬金術に似ている」という発言をしたが、それについて面白い文章が載っていた。まずは、人工知能研究者のファイゲンバウムとフェルドマンの陳述。</p>
<blockquote>
<p>アーマーによって示唆された連続的知能という概念によれば、われわれがこれまで書くことのできたコンピュータ・プログラムは、依然として低次の目的である。重要なのは、われわれが人間知能を表現するという画期的事件に向けて絶えず歩みを進めることである。われわれがそこに至りえないとする根拠が何かあるだろうか。何もありはしない。この連続体について、越えられない障害を示すような一片の証拠、論証、証明、定理も、いままで何も提示されてこなかったのである。</p>
<p>p.514</p>
</blockquote>
<p>次は、この檄の15世紀版。</p>
<blockquote>
<p>パラケルススの考えた諸実体の連続体に関連づけて言えば、われわれが行うことのできた粗悪な金属への変態は依然としてレベルの低いものである。大事なことは、画期的事件に向かって、つまりどんな要素でも別のものに変えることのできる賢者の石に向かって漕ぎ続けることである。われわれにそれを見つけることができないとする根拠があるだろうか。ありはしない。一片の経験的証拠も、論理的論証も、証明とか定理も、この連続体沿いに越えることできないハードルが一つでもあるということを実証したものは、これまで何も示されてはいないのである。</p>
<p>p.585</p>
</blockquote>
<p>・・・次に、他の個所からの引用。</p>
<blockquote>
<p>錬金術師は泥のようなものから水銀を蒸留することに成功した。彼らはその大成功のために、鉛を金に変えるためのむなしい努力を数百年続けた後でも、化学的レベルでは金属の性質を変えることはできないと信じることを拒否したほどだった。しかし彼らは―副産物としてではあるが―炉、レトルト、坩堝などを発明した。これは人工知能研究者にそっくり当てはまる。彼らは人工知能を生み出すことには失敗しているが、アセンブリ・プログラム、デバッグ・プログラム、プログラム編集プログラムなどを開発してきたし、MITロボット計画では非常にすばらしい機械腕が作られたのである。</p>
<p>p.515</p>
</blockquote>
<p>なるほど、対比としてはよく似ているようにも思う。「水銀を蒸留することに成功した」に対応するのは、たぶん、人工知能初期の研究の成功だろうな。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: なぜ人工知能は失敗に終わらなければならないのか?
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/10/2002 08:26:10 PM
CATEGORY: 哲学
-----
BODY:
<div class="section">
<p>ドレイファスのAI批判のまとめは、この本の訳者がうまく表している。</p>
<blockquote>
<ol>
<li>離散的ビットを用いて明示的に書かれた規則(プログラム)というデジタル・コンピュータの原理に基づく人間知能の理解は、伝統的世界観、つまりは要素主義プラス計算主義の上でのみ成り立つ。 </li>
<li>人間の知能はその世界観によっては説明できず、現象学的世界観からのみ記述できる。 </li>
<li>それ故、デジタル・コンピュータによる人間知能の実現を目指す人工知能研究は失敗に終わる。</li>
</ol>
<p>p.597</p>
</blockquote>
<p>また、この本の話題を扱った下の本も読んだが、そこでもドレイファスの主張がまとめられている。</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/488679016X/hatena-hamazou-22/"><img src="http://d.hatena.ne.jp/images/hatena_aws.gif" class="hatena-asin-detail-image" alt="哲学者はアンドロイドの夢を見たか―人工知能の哲学" title="哲学者はアンドロイドの夢を見たか―人工知能の哲学"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/488679016X/hatena-hamazou-22/">哲学者はアンドロイドの夢を見たか―人工知能の哲学</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%B9%F5%BA%EA%C0%AF%C3%CB" class="keyword">黒崎政男</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%C5%AF%B3%D8%BD%F1%CB%BC" class="keyword">哲学書房</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1987/10</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 2回</li>
<li><a href="http://d.hatena.ne.jp/asin/488679016X" target="_blank">この商品を含むブログ (3件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>要は、今の人工知能の前提である「ヒトの知能は記号によって表現できる」という記号主義、計算主義は昔から哲学者によって既に考え続けられてきている。しかし、記号主義、計算主義はハイデッカー、ウィトゲンシュタイン、メルロー=ポンティ・ポランニーなどによって完全に否定され、既に乗り越えられている。よって、現在の人工知能は哲学者によって否定された路線を進んでいるだけであって失敗を運命付けられているということらしい。ちなみにハイデッカー達の主張する新しい人間理解の論点は、</p>
<ol>
<li>対象についての経験を組織化し統一する際には身体の役割が不可欠なものである。 </li>
<li>行動が規則によらずに組織化されうるためには、「状況」が不可欠の役割をはたす。 </li>
<li>状況というものを組織化する際には、人間の意図や欲求といった要素が不可欠である。 </li>
</ol>
<p>らしい。身体の重要性はどこかで聞いたことがある。ドレイファスの主張に対するAI研究者の態度としては、無視したり、最近の研究を評価していないといった反論が(もちろん)多い。が、中にはSHRDLUという自然言語処理のシステムを作ったウィノグラドみたいにこれに触発されてAI批判にまわったという例もある。AI研究者のこれに対する反論も興味があるが、他の本に書いてあるみたいだから読んでみようと思う。こういう議論は不毛な気もするが、読むぶんには面白い。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 計算主義
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/11/2002 05:56:30 PM
CATEGORY: 哲学
-----
BODY:
<div class="section">
<blockquote>
<p>考えるとは計算することである、と私は解する。計算するとは、加算された合計を集めたり、あるものかが他から減算されたとき何が残っているかを知ることである。つまり、考えることは足し算や引き算と同じなのである。…したがって、すべての思考はこれら二つのこころの操作として理解することができる。</p>
<p>ホッブス『物体論』</p>
</blockquote>
<p>この計算主義的考え方は初期の人工知能研究者の前提の1つだったらしい。今はどうだか知らないけれど。今まで、こういうことを考えたことがなかったから、哲学について知るのもなかなか面白いと思った。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: ブレイスウェル・ロボット
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/12/2002 05:57:30 PM
CATEGORY: ロボティクス
-----
BODY:
<div class="section">
<p>人類の探査の手が恒星間宇宙まで伸びていくと、もはや有人探査は問題外であり、すべてロボットに任せる必要がある。地球からの遠隔操作はできないため、それらのロボットは人間に匹敵する知能を持っていなければならない。ブレイスウェル博士は1960年、このような認識のもとにある論文を発表した。</p>
<p>博士は、SETIの電波による異星人探し(SETI計画)は、不確定要因が多すぎるとしている。電波による交信は経済的だが、不確実さが大きい。たとえ、受信されても解読される保証が全くないし、返事を出せないこともありえる。しかし、ロボット探査なら、それらの不確実さを排除でき、そのロボット自身が異星文明との直接の接触点になると提言した。この提言は価値を認められ、このロボットは「ブレイスウェル・ロボット」と呼ばれた。</p>
<p>AI事典を読んでいたら、こんなような話が書いてあった。この前、人工知能学会誌を読んでいたら、「<strong>人工知能の真の活躍の舞台は宇宙にある</strong>」ということが書かれていた(どの巻かは調べ中)。地球には溢れるほどヒトがいるため、人工知能を応用してロボットを作っても地球では意味がない。これから宇宙探査が本格化して、遠くの探査をし始めると、"死なない"ロボットが重要になってくる。まだ、人工知能の実現さへ分からないけど、面白い話だと思う。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: マインズ・アイ
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/13/2002 07:33:07 PM
CATEGORY: 哲学
-----
BODY:
<div class="section">
<p><a href="http://d.hatena.ne.jp/aidiary/20020610/1113103087">チューリングテストについて考えたこと</a>(2002/6/10)で他人が知能を持っているかどうかは、見かけからしか判断できない。機械もまた同様ということを書いたが、『マインズ・アイ』という本にも同じことが書いてあった。この問題は「<strong>他者の心の問題(他我問題)</strong>」と呼ぶらしい。</p>
<p></p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/448492126X/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/41VVDHKkKZL._SL160_.jpg" class="hatena-asin-detail-image" alt="マインズ・アイ―コンピュータ時代の「心」と「私」〈上〉" title="マインズ・アイ―コンピュータ時代の「心」と「私」〈上〉"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/448492126X/hatena-hamazou-22/">マインズ・アイ―コンピュータ時代の「心」と「私」〈上〉</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%C0%A5%B0%A5%E9%A5%B9%A1%A6R%2E%A5%DB%A5%D5%A5%B9%A5%BF%A5%C3%A5%BF%A1%BC" class="keyword">ダグラス・R.ホフスタッター</a>,<a href="http://d.hatena.ne.jp/keyword/D%2EC%2E%A5%C7%A5%CD%A5%C3%A5%C8" class="keyword">D.C.デネット</a>,<a href="http://d.hatena.ne.jp/keyword/%BA%E4%CB%DC%C9%B4%C2%E7" class="keyword">坂本百大</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%BA%E5%B5%DE%A5%B3%A5%DF%A5%E5%A5%CB%A5%B1%A1%BC%A5%B7%A5%E7%A5%F3%A5%BA" class="keyword">阪急コミュニケーションズ</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1992/11</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 9回</li>
<li><a href="http://d.hatena.ne.jp/asin/448492126X" target="_blank">この商品を含むブログ (24件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p> </p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4484921278/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/41b51200ZcL._SL160_.jpg" class="hatena-asin-detail-image" alt="マインズ・アイ―コンピュータ時代の「心」と「私」〈下〉" title="マインズ・アイ―コンピュータ時代の「心」と「私」〈下〉"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4484921278/hatena-hamazou-22/">マインズ・アイ―コンピュータ時代の「心」と「私」〈下〉</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%C0%A5%B0%A5%E9%A5%B9%A1%A6R%2E%A5%DB%A5%D5%A5%B9%A5%BF%A5%C3%A5%BF%A1%BC" class="keyword">ダグラス・R.ホフスタッター</a>,<a href="http://d.hatena.ne.jp/keyword/D%2EC%2E%A5%C7%A5%CD%A5%C3%A5%C8" class="keyword">D.C.デネット</a>,<a href="http://d.hatena.ne.jp/keyword/%BA%E4%CB%DC%C9%B4%C2%E7" class="keyword">坂本百大</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%BA%E5%B5%DE%A5%B3%A5%DF%A5%E5%A5%CB%A5%B1%A1%BC%A5%B7%A5%E7%A5%F3%A5%BA" class="keyword">阪急コミュニケーションズ</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1992/11</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 5回</li>
<li><a href="http://d.hatena.ne.jp/asin/4484921278" target="_blank">この商品を含むブログ (17件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p></p>
<blockquote>
<p>自分自身に関しては、われわれは内面的営みと、外から観察可能な行動との一致を直接観察することができる。しかし、もし、独我論を厳格に超克したうえで一歩を進めようとすると、われわれはただちにある一つの明らかに不可能な作業をなしえなければならないことになる。すなわち、<strong>他人において、その内面と外面が一致しているということを確認する作業である</strong>。彼ら自身がその内面と外面が一致していると告白したとしても、この問題に対しては何の役にも立たない。</p>
<p>(中略)</p>
<p>もし、利発につくられたロボットが彼自身の内面的営みについてわれわれに語ることができた(らしい)とするならば、(すなわち、適切なコンテクストの中で適切なノイズを発することができたとするならば)、その時、このロボットを意識をもつもののグループの中に入れるということは正当なこととなるであろうか。</p>
<p>(中略)</p>
<p>しかし、その時、われわれはどうして、われわれがからかわれているのではないということを証明することができるのであろうか。かくして、問題は次のようなものとなるだろう。<strong>すなわち、そのロボットの特殊な内面の燈火は本当に点されているのだろうか。あるいは、そこには単なる暗闇以外の何ものもないのではなかろうか。</strong></p>
</blockquote>
<p>もし、機械に意識を持たせたい、という段階まで進んだとしたら、この問題は避けて通れないと思う。結局は、人がその機械をどのように捉えるかという判断によってしまうのではないか。</p>
<p>チューリングテストの論文はこの本にも収録されていた。人工知能初期の論文は本になっていることが多い。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 人工知能における「読んでおくべき本」
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/13/2002 07:36:41 PM
CATEGORY: 人工知能
-----
BODY:
<div class="section">
<p><a href="http://www.ai-gakkai.or.jp/jsai/whatsai/PDF/article-aibook.pdf" target="_blank">http://www.ai-gakkai.or.jp/jsai/whatsai/PDF/article-aibook.pdf</a></p>
<p>というのを見つけた。上の『マインズ・アイ』も紹介されていた。あと、教科書として読んでいる『エージェントアプローチ人工知能』『AI事典』なんかも紹介されていた。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: なぜヒトの知能か
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/16/2002 07:41:10 PM
CATEGORY: 認知科学
-----
BODY:
<div class="section">
<p>「記憶」について調べるため、『認知科学5 記憶と学習』という本を読んだ。</p>
<p>この本は、認知科学、神経科学、脳科学、情報科学など記憶に関して幅広く書いてある。認知科学ではかなり面白い実験が行われている。学習について見てみると、ヒトはもちろん、犬、猫、鳥、魚、昆虫も学習ができる(学習の定義にもよるけど)。中には、ミミズでさえも学習ができることが記されている。</p>
<p>前から疑問に思っていたのだが、<strong>なぜ人工知能はヒトの知能ばかりを対象にしているのだろう</strong>。犬、猫、鳥、魚、昆虫、ミミズの知能は実現できたのだろうか。こういう動物にも小さいかもしれないけど、一応、神経や脳もある(はずだよな)し、本能が大部分だが知能もあると思う。「<strong>人工本能</strong>」なんてのもあるのだろうか。あるいは、ヒト以外の生物は完全に機械でアルゴリズム化でき研究する意味もないのだろうか。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 記憶
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/18/2002 09:15:04 PM
CATEGORY: 認知科学
-----
BODY:
<div class="section">
<p>『記憶と学習』を一通り読み終わった。記憶に関する研究は、</p>
<ul>
<li>認知科学 </li>
<li>脳科学 </li>
<li>神経科学 </li>
<li>情報科学(人工知能とコネクショニズム)</li>
</ul>
<p>で行われている。これらをひっくるめて「認知科学」とも言うらしい。認知科学は、人や猿、その他の動物を使って、短期記憶、エピソード記憶など記憶のモデル(脳の中身はブラックボックスとして扱う)を作っている。脳科学は、脳をマクロ的に見て、海馬は記憶に関係しているといったようなことをやっている。神経科学は、脳をミクロ的に見て、個々のニューロンの働きを調べたりしている。情報科学は、記号処理中心の人工知能とニューラルネットが中心のコネクショニズムに分かれていて(ニューラルネットは人工知能と違うとみなしている感じを受ける)、脳を構成的な方法で理解しようとしている.</p>
<p>人工知能では、決定木学習、意味ネットワークと意味記憶、スキーマ表現、スクリプト表現、プロダクションシステムといった方法がとられる。コネクショニズムでは、パーセプトロン、誤差逆伝播法、Hopfieldネットワーク、Boltzmannマシン、アソシアトロンなどがある。</p>
<p>一回読んだだけなので、確実に全部理解してないが、コネクショニズムの方法は難しい。パーセプトロンがどうして学習できるか理屈ではわかっていても、直感的には理解しにくい(GAも似たようなもんだが)。Hopfieldネットワークにいたっては、統計熱力学とかが出てきて理解できるかすら怪しい。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: パーセプトロン
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/20/2002 09:24:26 AM
CATEGORY: 機械学習
-----
BODY:
<div class="section">
<p>のプログラムを書いた。最も単純化をしたもの。データ構造をどういうふうに書くかなどよく理解できた。あとは、他のニューラルネットも同じような形で書くことができるし、実験もできると思う。GUIを使ったパターン認識も少し拡張するだけでできる(かもしれない)。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: ニューラルネットと記号処理
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/20/2002 09:25:50 AM
CATEGORY: 機械学習
-----
BODY:
<div class="section">
<p>ニューラルネットは、従来の人工知能が不得意としている分野、すなわちパターン理解、音声認識、類推、連想などを得意としているが、人工知能が得意としている記号処理は不得意と言われる。よって、<strong>従来の記号処理中心の人工知能とニューラルネットは相補的な関係にある</strong>、という話を読んだ。しかし、相補的であってよいのだろうか?</p>
<p>ヒトの脳は、原始的なパターン理解、音声認識の上に、ヒト特有の(もしかしたら違うかも知れないが)高度な記号処理能力(言語理解、論理、推論など)を持っている。ヒトの脳は全部超複雑なニューラルネット(っぽいもの?)だけでできているはずだから、ニューラルネットが脳のモデルと主張するには、ニューラルネットだけで記号をも扱えるようにならなければいけないことになる。<strong>ニューラルネットと記号処理を結びつける研究</strong>は行われていると聞いたことがあるが、どうなっているのか。</p>
<p>ニューラルネットで行われている連想記憶の研究は、自分が知っている範囲では、画像の一部から全体、または、ノイズの入った画像から元の画像のように画像処理が中心になっている。しかし、自分が想像していた連想記憶はそういうのではなくて、意味ネットワークのような記号、意味、属性に基づくものだった。ニューラルネットの連想記憶でそういうのはできるのだろうか。その前に、ニューラルネットで記号を扱うにはどうしたらよいかというのが問題か。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: GAとニューラルネット
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/20/2002 09:27:02 AM
CATEGORY: 機械学習
-----
BODY:
<div class="section">
<p>は非常に似ているような気がする。どちらも最適化技法だし、ニューラルネットの重み付けと選択・交叉・突然変異の過程は対応づけられそうだし、教師信号による重み変えは適応淘汰に対応していそう。また、局所最適解に陥ってしまうところも似ている。数学的に完全な対応付けはできているのだろうか。どっちかにできることは、もう一方でも実現できるのか。今日、ニューラルネットで巡回セールスマン問題が解けるという話を読んで、そう思った。GAでそれが解けることは前にやった。どっちがどのように優れているとかいう議論はあるのか。GAとニューラルネットの合成みたいなことがやられていると聞いたことがあるから、どこかにあるだろう。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 2層と3層の違い
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/21/2002 09:28:15 AM
CATEGORY: 機械学習
-----
BODY:
<div class="section">
<p>昨日のパーセプトロンを拡張して、入力層8ユニット、出力層5ユニット、</p>
<p><pre>
入力 出力
11000000 10000
00111000 01000
00001111 00100
10101010 00010
11001100 00001
</pre></p>
<p>を学習する2層パーセプトロンを作って実験した。収束したのでうまくいったと思ったけど学習してなかった。この例題はよく見ると、3層パーセプトロンのものだったので、2層ではできないのだろうか。2層と3層では学習できる能力にどのような差があるのか、もう少し調べてみる。あと、線形分離可能は2次元なら直線で分割できるだが、次元がもっと増えるとどのようにすれば確かめられるのかわからない。数学でやったかな。明日は、3層パーセプトロンを実装してみる。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 3層パーセプトロン
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/24/2002 09:29:00 AM
CATEGORY: 機械学習
-----
BODY:
<div class="section">
<p>2層を3層に拡張してANDを学習させてみたのだけど、全然収束しなかった。どこかにミスがあるはずだが、今のところわからない。それよりも、「パーセプトロン」の意味が本によって違うように感じる。入力層、出力層の間に隠れ層が入ったものは、3層パーセプトロンということが多い(2層と書いてある本もある)が、これは、誤差逆伝播法と同じ意味なのか。</p>
<p>最初に提案されたパーセプトロンは2層で、その後誤差逆伝播法を用いて改良されたのが3層(またはそれ以上)パーセプトロンと思っているのだが、なんだか、混乱してきたのでもう一度整理してみる。あと、出力関数のモデルがいろいろあるが、違いがわからない。また、層を増やすとどう影響するのかもわからない。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 連想機械アソシアトロン
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/26/2002 10:40:58 PM
CATEGORY: 機械学習
-----
BODY:
<div class="section">
<p>連想の情報処理モデルは海外と日本で同時期に出された(Nakano, Kohonen, Andersonなど)。その中で、日本の中野馨さんが提案したものはアソシアトロンと呼ばれる。ヒトの連想機能はまだよくわかっていないが、中野さんは連想を次のように定義した。</p>
<blockquote>
<p>計算機の記憶装置のようなアドレスは一切なく、積み重ねて記銘されている多数の記憶事項のうち、アドレスを指定するかわりに、任意の記憶事項の一部分を入力すると、その事項の全体を思い出すような機能。</p>
</blockquote>
<p>そして、アソシアトロンは、</p>
<blockquote>
<p>従来の記憶装置のような記憶事項ごとに場所を割り当てるようなやり方とは異なり、各事項を装置全体に分散させて記銘する。</p>
</blockquote>
<p>ことができる。原理は以外に単純(といっても数学的には奥深いんだろうけど)で、「相関行列」というものを使う。実際に、行列を計算してみたところ、本当に部分から全体を求めることができた。どうしてこんなことができるのか不思議な気がしたが、相関行列の性質を調べてみないとわからない。</p>
<p>まだ、いろいろと問題があるみたいだが、応用も広そう(概念形成、言語の自然発生のモデルなど)に感じた。想起の仕方も曖昧性を受け入れるなどヒトに近いと思われる。今度は、プログラムを書いて実験してみたい。Kohonenさんが考えたのも原理としては同じらしい。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 3層パーセプトロン
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/26/2002 10:42:23 PM
CATEGORY: 機械学習
-----
BODY:
<div class="section">
<p><a href="http://d.hatena.ne.jp/aidiary/20020624/1114820940">3層パーセプトロン</a>(2002/6/24)の続き。</p>
<p>パーセプトロンに関しては、何冊か調べてみて、ようやく(自分としては)整理できた。</p>
<dl>
<dt>単純3層パーセプトロン</dt>
<dd>Rosenblattが提案した最初のモデルで、感覚層(S層)、連合層(A層)、反応層(R層)の3層。S層とA層の間の重みはランダムに与えられ変化しない。A層とR層の重みは学習則により変化させる。A層の閾値はランダムに与えられ変化しない。R層の閾値は変化する。基本的にR層のユニットは1つである。反応関数は、McCulloch,Pittsが提案した0と1のみの階段関数を用いる。学習できるのは、入力が線形分離可能なものだけ。MinskyとPapertによって、この限界が指摘され第1次ニューロブームが終わった。</dd>
</dl>
<dl>
<dt>Widrow-Hoff学習則(デルタ則)</dt>
<dd>単純パーセプトロンは線形分離可能なものしか、学習できないという欠点があった。しかし、線形分離可能でないものでも、教師信号と出力の2乗誤差の和を最小にするように収束することが望まれた。実際は、A層とR層の2層から成る。単純パーセプトロンと違うところは、0、1の2値ではなく、連続値を使うところ。あと、2乗誤差の差を設定できるところ。閾値モデルにシグモイド関数を使うところ。前に作ったのは、これだった。</dd>
</dl>
<dl>
<dt>誤差逆伝播法</dt>
<dd>Rumelhart, Hinton, Williamsによって提案され、第2次ニューロブームの火付け役となった。入力層、隠れ層、出力層の3層。重み(どの層間のも)は、誤差逆伝播によって変更される。閾値モデルにシグモイド関数を使用。線形分離不可能なものも学習可。</dd>
</dl>
<p>安西祐一郎著『認識と学習』にC言語で書かれた誤差逆伝播法の全ソースが載っていたので、それを元にして上の3つを実験してみる。あと、誤差逆伝播法では層を多くすると、収束までの学習回数が減るらしいが、まだ限界はよくわからない。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: コネクショニズムに関する本
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/29/2002 03:27:56 PM
CATEGORY: 機械学習
-----
BODY:
<div class="section">
<p>記憶について調べているけど、実装としては、ニューラルネット的な方法が多い。そこで、ニューラルネットについての本をいくつか借りた。</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4627821905/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/518MCF4G04L._SL160_.jpg" class="hatena-asin-detail-image" alt="ニューラルネットワークアーキテクチャ入門" title="ニューラルネットワークアーキテクチャ入門"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4627821905/hatena-hamazou-22/">ニューラルネットワークアーキテクチャ入門</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/J%2E%A5%C7%A5%A4%A5%DB%A5%D5" class="keyword">J.デイホフ</a>,<a href="http://d.hatena.ne.jp/keyword/Judith%20E%2E%20Dayhoff" class="keyword">Judith E. Dayhoff</a>,<a href="http://d.hatena.ne.jp/keyword/%B7%CB%B0%E6%B9%C0" class="keyword">桂井浩</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%BF%B9%CB%CC%BD%D0%C8%C7" class="keyword">森北出版</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1992/04</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 4回</li>
<li><a href="http://d.hatena.ne.jp/asin/4627821905" target="_blank">この商品を含むブログ (2件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4627824505/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/41K0P5Z0F3L._SL160_.jpg" class="hatena-asin-detail-image" alt="ニューロコンピューティング入門" title="ニューロコンピューティング入門"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4627824505/hatena-hamazou-22/">ニューロコンピューティング入門</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%BA%E4%CF%C2%C0%B5%C9%D2" class="keyword">坂和正敏</a>,<a href="http://d.hatena.ne.jp/keyword/%C5%C4%C3%E6%B2%ED%C7%EE" class="keyword">田中雅博</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%BF%B9%CB%CC%BD%D0%C8%C7" class="keyword">森北出版</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1997/01</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 1回</li>
<li><a href="http://d.hatena.ne.jp/asin/4627824505" target="_blank">この商品を含むブログ (2件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4874083080/hatena-hamazou-22/"><img src="http://d.hatena.ne.jp/images/hatena_aws.gif" class="hatena-asin-detail-image" alt="入門と実習 ニューロコンピュータ" title="入門と実習 ニューロコンピュータ"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4874083080/hatena-hamazou-22/">入門と実習 ニューロコンピュータ</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%CB%A5%E5%A1%BC%A5%ED%A5%F3%A5%CD%A5%C3%A5%C8%A5%B0%A5%EB%A1%BC%A5%D7" class="keyword">ニューロンネットグループ</a>,<a href="http://d.hatena.ne.jp/keyword/%B6%CD%C3%AB%BC%A2" class="keyword">桐谷滋</a>,<a href="http://d.hatena.ne.jp/keyword/%C8%D3%BE%C2%B0%EC%B8%B5" class="keyword">飯沼一元</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B5%BB%BD%D1%C9%BE%CF%C0%BC%D2" class="keyword">技術評論社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1989/09</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 1回</li>
<li><a href="http://d.hatena.ne.jp/asin/4874083080" target="_blank">この商品を含むブログ (2件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>これらの本には「連想記憶」についての記述も載っていた。ニューラルネットは複雑なのでなるべく避けたかったのだが、やはり大事なので読んで理解しておく。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: ラッダイト運動
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/29/2002 03:28:41 PM
CATEGORY: 人工知能
-----
BODY:
<div class="section">
<blockquote>
<p>おそれるのは優れた知能を持つコンピュータの出現ではなく、劣った知能を持つ人間の出現なのである。</p>
<p>コンピュータには何ができないか(p.596)</p>
</blockquote>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 慣れ
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/30/2002 10:44:20 PM
CATEGORY: 認知科学
-----
BODY:
<div class="section">
<blockquote>
<p>それまで出会ったことのない刺激が提示されると、生体はそれに対して注目し、新しい状況に対処できるように、心拍の減少、汗腺の反応、四肢の血管の収縮などを含む一連の生理的変化を伴った全体的反応を示す。これは定位反応と呼ばれる。一方、同じ刺激が繰り返し提示されると、こうした反応は次第に減少する。これが慣れである。</p>
<p>記憶と学習(p.46)</p>
</blockquote>
<p>この慣れという反応は無脊椎動物でも見られて、高等動物と共通した脳内メカニズムがあると考えられているらしい。次に、パブロフの犬でおなじみの古典的条件付けという話も載っているのだが、これらは、コンピュータでモデル化できそうに思った(たぶん、もうされているだろうけど)。</p>
<p>今まで、ニューラルネットはパターン認識の使い道しか知らなかったのだが、プロダクションシステムみたいに知覚を入力として、最適な行動を出力するようなニューラルネットの使い方もあるかもしれない。そして、同じような知覚入力が何度も来たら、ある行動が出力しやすいように回路を変化させる。そして、2つの知覚入力が来たら、それらを連合させて条件反射みたいなこともできるかもしれない。たぶん、どこかにあるだろうが面白そうだ。</p>
<p>こういう分野の話を読んでいると、何かに応用できそうだと思うことが時々ある。何だか宝の山のようにも思える。その"何か"を見つけて、理論化、体系化するのはすごい難しいだろうけれど。その点、遺伝的アルゴリズム(GA)を体系化したHollandさんは、すごいと思う。その態度は、見習いたい。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: アイデアについての2つの原理
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 07/01/2002 10:45:51 PM
CATEGORY: 日記
-----
BODY:
<div class="section">
<ul>
<li>アイデアは一つの新しい組み合わせである。 </li>
<li>新しい組み合わせを作り出す才能は事物の関連性を見つけ出す才能によって高められる。</li>
</ul>
<p>by J.W.Young</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 忘却
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 07/01/2002 10:45:52 PM
CATEGORY: 認知科学
-----
BODY:
<div class="section">
<blockquote>
<p>われわれはしばしば、何かを忘れてしまった、想起できないという経験をするが、忘却は長期記憶貯蔵から情報が消失してしまったために生じるのであろうか。あるいは、情報は存在するが検索することができなくなってしまったのだろうか。</p>
</blockquote>
<p>これに関しては面白い実験が紹介されている。まず、何かを被験者に記憶させる。その後、一方の被験者はそのまま普通に生活させ、他方には睡眠をとらせる。数時間後、どちらの被験者がより記憶をとどめているか?というもの。</p>
<p>結果は、「睡眠をとった方が記憶をより留めている」となった。これは、起きている被験者は精神活動をしてしまい、新たに得られた情報によって古い情報の検索が困難になっているためと説明されている。寝ていれば、精神活動が抑えられ、記憶が上書きされないということらしい(テスト前日には必須だ)。つまり、検索失敗説が今のところ有利。</p>
<p>次に、コンピュータは忘却機能を持つことに意味があるだろうか。そりゃ、HDDの容量不足なら、ファイルを「忘却」しないと駄目だけど、そういう意味ではなくて、知的なコンピュータ、またはエージェントみたいなものが自発的にという意味で。それ以前に、ヒトが忘却機能を持つことに何か意味があるのか。ヒトもコンピュータと同じように容量不足だから忘却が必要なのか、それとももっと重要な利点があるのか。もし、利点があれば「人工知能」につけるのもいいかも知れない。</p>
<p>確か、どこかに「忘却」を利用した論文があったようにも思う。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 第X世代コンピュータ
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 07/02/2002 10:47:29 PM
CATEGORY: 人工知能
-----
BODY:
<div class="section">
<p>人工知能学会誌に面白い話が載っていた。第五世代コンピュータは<a href="http://www.icot.or.jp/ARCHIVE/HomePage-J.html" target="_blank">第五世代博物館</a>によると、知識情報処理と大規模並列処理を中心としたコンピュータと位置付けられている。</p>
<p>記事を読むと現在は第六世代コンピュータに入っていると言う。そして、第九世代まで予測している。面白かったので引用。</p>
<blockquote>
<dl>
<dt>第六世代コンピュータ</dt>
<dd>コネクショニズムに基づく各種ニューラルコンピュータ。</dd>
<dt>第七世代コンピュータ</dt>
<dd>シンボリズムに基づく第五世代コンピュータとコネクショニズムに基づく第六世代コンピュータの最適機能分散システム。</dd>
<dt>第八代コンピュータ</dt>
<dd>チップの進化が続き、バイオチップ、分子チップをベースにきわめて大容量の知識が気楽にアクセスできるようになる。これらの知識をもとに、各種推論エンジンを自己組織化できるリフレクティブアーキテクチャシステム。</dd>
<dt>第九世代コンピュータ</dt>
<dd>おそらく脳科学、遺伝子科学の進展につれ、チップ化した第八世代コンピュータが生体そのものに埋め込まれた姿が第九世代コンピュータで、有限の資源、有限のエネルギー、有限の食料の問題に遭遇する21世紀宇宙船「地球」号にも適応できる新たなタイプの人類が生まれるのではないだろうか。</dd>
</dl>
<p>人工知能学会誌、Vol.13、No.3、p.504</p>
</blockquote>
<p>この著者(國藤進さん)によると、一つの世代の研究開発が10年かかり、今(1998年)第六世代の終わりなので、第九世代コンピュータの時代は2020年代としている。最後に著者はこうまとめている。</p>
<blockquote>
<p>人工知能学会の編集委員としては、いたずらにブームの栄枯盛衰を嘆くのではなく、自らブームを創造し、その栄枯盛衰を楽しむ気概が必要である。なぜなら、未来は我々自身が垣間見る夢を現実化する永続的プロセスであり、我々自身のために我々自身によって創造されるものだからである。</p>
<p>人工知能学会誌、Vol.13、No.3、p.504</p>
</blockquote>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 創発
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 07/03/2002 10:48:56 PM
CATEGORY: 人工生命
-----
BODY:
<div class="section">
<p>マルチエージェントの論文にはよく創発という言葉が出てくる。創発とは、個々の個体のレベルでは、機械的な感覚、反応系に基づいて単純な行動戦略しか取れないのに、それらが多数集まることによって組織的な秩序を持った行動が発現される現象を言う。</p>
<p>この現象はもとは、人工生命の分野でC.Langtonが提唱したものだが、今では、多くの分野で創発が見られることがわかった。</p>
<p>社会では、個々の個体は人間一人一人、多数集まって社会を作ることによって秩序が生まれている。経済でもアダム・スミスが「神の見えざる手」と表現したように、個々の人間は自分の利益を追求していても、全体的には秩序が保たれている。生命においても、多数の細胞が集まることによって、全体的に秩序を保っている。同様にニューロンが集まることによって、知能や心が創発している。</p>
<p>創発の仕組みを知ることは、今まで分からなかった多くのことを解明する第一歩だと思う。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 人工知能研究トピック
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 07/07/2002 10:49:39 PM
CATEGORY: 人工知能
-----
BODY:
<div class="section">
<blockquote>
<p>1990年1月に出版された「人工知能ハンドブック」(旧ハンドブックと略称)の内容を見ると、当時と比べて現在の人工知能の学術分野に大きな変化と進歩の跡がうかがえて興味深い。実際最近の人工知能研究のトピックスを人工知能学会誌(1996~2002)で見てみると、上位から順に、学習、基礎、GA、ロジック、エージェント、オントロジー、自然言語、推論、探索、事例ベース推論となっている。米国のAAAIワークショップ(1992~2002)では、エージェント、Web、計画、事例ベース推論、ナレッジマネージメント、ロボット、学習、マイニング、推論、電子商取引、がよく取り上げられている。旧ハンドブックで、大項目として取り上げられていた、AIマシン、パターン理解、AI言語とツール、エキスパートシステム、機械翻訳は、いずれも陰を潜めている。</p>
<p>人工知能学会誌, Vol.17, No.4 (2002)</p>
</blockquote>
<p>とあった。実際に、10年分目を通してみるとその通りだった。特に、エキスパートシステムは目に見えて少なくなっている。論文として載らないから研究されていないと判断はできないと思うが、衰えてきているということだろう。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 理想と現実
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 07/09/2002 10:51:03 PM
CATEGORY: 日記
-----
BODY:
<div class="section">
<p>今日も論文分類をした。結構進んだ。分類が終わったら、各分野の概要をまとめる。読んでいて、よく出てくる話題や論文もまとめる。まとめるのは慣れていないから、かなり苦労しそうだが何とかなる(ならいいけど)。</p>
<p>結構、時間をつぎ込んでいるのだが何となく充実感が薄い。AIの諸分野でどんなことをやっているか大まかにつかめてきたのだけれど。この大まかが少し気になる。</p>
<p>中学生の頃から「座右の書」にしているのに、John Todd「自分を鍛える」といういかにもありきたりな題名の本がある。</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4837972357/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/41wI551CutL._SL160_.jpg" class="hatena-asin-detail-image" alt="自分を鍛える!―生産的な習慣をつくるヒント (知的生きかた文庫)" title="自分を鍛える!―生産的な習慣をつくるヒント (知的生きかた文庫)"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4837972357/hatena-hamazou-22/">自分を鍛える!―生産的な習慣をつくるヒント (知的生きかた文庫)</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%B8%A5%E7%A5%F3%A5%C8%A5%C3%A5%C9" class="keyword">ジョントッド</a>,<a href="http://d.hatena.ne.jp/keyword/John%20Todd" class="keyword">John Todd</a>,<a href="http://d.hatena.ne.jp/keyword/%C5%CF%C9%F4%BE%BA%B0%EC" class="keyword">渡部昇一</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%BB%B0%B3%DE%BD%F1%CB%BC" class="keyword">三笠書房</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2002/02</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 文庫</li>
<li><span class="hatena-asin-detail-label">購入</span>: 2人 <span class="hatena-asin-detail-label">クリック</span>: 5回</li>
<li><a href="http://d.hatena.ne.jp/asin/4837972357" target="_blank">この商品を含むブログ (7件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>John Todd氏は、19Cの牧師さんなので内容はかなり時代錯誤的なものもあるんだが全体的にすごくいいことが書いてあると思う。その中に、次のような一節がある。</p>
<blockquote>
<p>一つの学問をものにするのは、一つの国を征服するのと実によく似ている。もし砦や要塞を片端から徹底的に征服していくなら次々に勝利を得られるだろうが、もしあちこちに砦や要塞を征服し残しておくと自分の背後に敵を迎えることになり、すぐにもう一度征服しなおさなければならなくなる。</p>
<p>ものごとをうわべだけいい加減にやるのが癖になると、このように必ず屈辱感を味わうことになり、自尊心が傷つくことになる。したがって、たとえ自己満足にすぎなかろうとも、何事も徹底してやるべきである。はじめのうちはたいした進歩は望めないだろう&#8212;進歩といっても微々たるものであろう。が、これからの長い人生のうちには勝利を手にすることができるだろう。</p>
<p>自分を鍛える</p>
</blockquote>
<p>理想と現実は遠い。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: R&amp;D
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 07/15/2002 11:09:58 PM
CATEGORY: 日記
-----
BODY:
<div class="section">
<p>人工知能学会誌を読んでいたら面白い記事があった。</p>
<p>坂間: AIにかける橋, 人工知能学会誌, Vol.12, No.5, p.653 (1997)</p>
<blockquote>
<p>「研究開発をR&Dと表現するが、これは全くの誤りである。R(Research)とD(Development)は、水と油のように性質が異なるものである。このため、R⇔Dと表現すべきである。」私も長く研究管理に関わってきたが、RとDの対立にたびたび遭遇した。R派は、一般に実用化やビジネス化を毛嫌いする。「D派の成果は実用に役立つが、単に泥にまみれて作ったものだ。普遍性も新理論もない」と言ったりする。一方D派は、「R派の成果は、研究のための研究であり、狭いコミュニティの自己満足にすぎない。Toy Worldでの成果は全く現実世界には通用しない」と言ったりする。よく考えてみると、AIの領域にも、RとDの間に水と油のような関係、言い換えると、RとDの間に深い谷が存在しているのではないだろうか。</p>
</blockquote>
<p>なるほど、なるほど。では、どうしたらよいのか?著者はこう指摘している。</p>
<blockquote>
<p>AIにおいて今重要なのは、RでもDでもない。RとDをつなぐかけ橋が重要である。RのためのRは簡単である?DのためのDは簡単である?創意工夫が要求され、非常なる努力を要するものは、RとDをつなぐことに存在すると考える。そして、RとDのかけ橋のために努力している人々の成果を、言い換えれば、古い学問体系や基準では無視されてしまう成果を正しく評価できる、AIにふさわしい新しい基準の芽を早急に確立する必要があるだろう。</p>
</blockquote>
<p>AIは面白い研究の宝の山だと思う。それをどう応用問題に結びつけるか。今まで、多くの人がそれに向けて努力をしているのは、論文を読めば大体分かる。一方、研究のための研究というのが多いのも時々感じる。自分はどうするのだろう。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: エージェントとは
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 07/23/2002 03:12:15 PM
CATEGORY: 人工知能
-----
BODY:
<div class="section">
<p>エージェントは最近AIの中でも流行みたいだが意味がよくわからなかった。「自律的に行動する主体」という認識しかなかったのだが、調べてみるといろいろな意味があって興味深かった。石田さんの論文<span class="footnote"><a href="/aidiary/#f1" name="fn1" title="石田亨: エージェントを考える, 人工知能学会誌, Vol.10, No.5, 1995">*1</a></span>によると、エージェント研究は次のように分類できるようだ。</p>
<dl>
<dt>Autonomous agent</dt>
<dd>各自の意思決定原理機構に基づき動作する。自律性を強調する場合に用いられる。</dd>
<dt>Intelligent agent</dt>
<dd>例えば心的状態(メンタルスペース)を持ち、問題解決や学習機構を有する。知性を 強調する場合に用いられる。</dd>
</dl>
<dl>
<dt>Society of mind</dt>
<dd>知性を実現する機能単位をエージェントと呼ぶ。脳と心の働きが特殊化された機能単位の相互作用で生じると考える。</dd>
<dt>Multi agent</dt>
<dd>個々の機能ではなく、協調や交渉などの相互作用を研究対象とする。エージェントは相互作用を生じさせる基本単位。</dd>
</dl>
<dl>
<dt>Software agent</dt>
<dd>ネットワーク内に存在する自律的なソフトウェアの総称。利用者の電子秘書(代理プログラム)として働く、あるいはネットワーク内でプログラム間の仲介を行う。Network agentと呼ばれることもある。</dd>
</dl>
<dl>
<dt>Interface agent</dt>
<dd>計算機の新たな利用者インタフェース、利用者とコミュニケーションするソフトウェアがエージェントと呼ばれる。表情を持つなど擬人化されたものも多い。</dd>
</dl>
<dl>
<dt>Believable agent</dt>
<dd>迫真性を備えたエージェント。情感を持ち(持つように感じられ)、通常のソフトウェアを超えた存在感を有する。</dd>
</dl>
<dl>
<dt>Agent oriented programming</dt>
<dd>プログラム方法論、および言語。オブジェクト指向の発展型としてエージェント指向を考える。</dd>
</dl>
<dl>
<dt>Mobile agent</dt>
<dd>ネットワーク内を自由に動き回る機動性を有し、利用者に必要な情報を収集する。</dd>
</dl>
<dl>
<dt>Telescript agent</dt>
<dd>General Magic社の提供するスクリプト言語およびプロトコルネットワークを通じて送出された遠隔ホスト上で動作するプログラム(遠隔プログラミング)がエージェントと呼ばれる。 </dd>
</dl>
<p>と、いろいろな意味がある。自分は、Intelligent agentの意味に一番近いイメージを持っていた。『<a href="http://d.hatena.ne.jp/asin/4320028783">エージェントアプローチ 人工知能</a>』という本は、人工知能の技術をエージェントを中心としてまとめていて、他の教科書と趣きが違う。人工知能は分野が細分化され、各分野が独立して存在するような状況だが、もし「人工知能」を創りたいならそれらを統合しなければならない。その中心としてエージェントが存在するように思える。</p>
<p>Society of mindの考え方は、ミンスキーさんの書いた『<a href="http://d.hatena.ne.jp/asin/4782800541">心の社会</a>』という本で知った。心は心を持たない単純なエージェントが集まり協調動作をすることによって起きるという考え方だったと思う。かなり抽象的なのだが考え方は面白い。</p>
<p>検索は最近のAIの研究として取り上げられることが多い。エージェントの応用分野としても、Webを主とするネットワークでの利用が多い。検索の中でもWebを巡回するロボットが最も興味あるところだが、どうなっているのか知りたい。これは、一種のエージェント(Software agent、Mobile agent)だろう。Webページを集めると聞いたが、実際はどんなことをしているんだ?学習したり、プラニングしたりするような自律性とあるのかな。</p>
<p>あとコンピュータウィルスも興味深い。適応して、学習して、自律性を持ったコンピュータウィルスが現れるかもしれない。今のコンピュータウィルスの機能とか構造とか調べるのも面白いかもしれない。逆に、コンピュータウィルスを退治する免疫細胞なんかの研究もあるみたいで興味深い。</p>
</div>
<div class="footnote">
<p class="footnote"><a href="/aidiary/#fn1" name="f1">*1</a>:石田亨: エージェントを考える, 人工知能学会誌, Vol.10, No.5, 1995</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: SETI@Home
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 07/28/2002 11:11:22 PM
CATEGORY: 日記
-----
BODY:
<div class="section">
<p>に参加してみた。昨日宇宙関係のテレビを見ていたら、SETI@Homeが紹介されていた。ゼミでも何回か出てきたし、前から興味あったので調べてみた。別にインターネットつなぎっぱなしじゃなくても、電源入れっぱなしじゃなくてもよさそうなので参加してみることにした。</p>
<p>その番組によると、SETIの研究者はあと50年以内に知的異星人が見つかると主張している。本当だろうか?何か人工知能ができる確率よりずっと低そうに思うのだけど。BIO班なのだから<a href="http://folding.stanford.edu/" target="_blank">Folding@Home</a>の方がいいかなと思ったけど、何となくSETIの方が面白そう。別に2つ入れても動作に支障はないだろうけれど。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: コンピュータが子供たちをダメにする
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 07/30/2002 11:14:32 PM
CATEGORY: 日記
-----
BODY:
<div class="section">
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4794210965/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/41D9HRNKPXL._SL160_.jpg" class="hatena-asin-detail-image" alt="コンピュータが子供たちをダメにする" title="コンピュータが子供たちをダメにする"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4794210965/hatena-hamazou-22/">コンピュータが子供たちをダメにする</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%AF%A5%EA%A5%D5%A5%A9%A1%BC%A5%C9%A5%B9%A5%C8%A1%BC%A5%EB" class="keyword">クリフォードストール</a>,<a href="http://d.hatena.ne.jp/keyword/Clifford%20Stoll" class="keyword">Clifford Stoll</a>,<a href="http://d.hatena.ne.jp/keyword/%C1%D2%B9%FC%BE%B4" class="keyword">倉骨彰</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%C1%F0%BB%D7%BC%D2" class="keyword">草思社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2001/11</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 1回</li>
<li><a href="http://d.hatena.ne.jp/asin/4794210965" target="_blank">この商品を含むブログ (11件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>という本を読んだ。題名が面白そうだったのでつい借りてしまった。何か前にも同じような本を見たことがあると思ったら、</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4794204302/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51YaQfD7pPL._SL160_.jpg" class="hatena-asin-detail-image" alt="カッコウはコンピュータに卵を産む〈上〉" title="カッコウはコンピュータに卵を産む〈上〉"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4794204302/hatena-hamazou-22/">カッコウはコンピュータに卵を産む〈上〉</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%AF%A5%EA%A5%D5%A5%A9%A1%BC%A5%C9%A1%A6%A5%B9%A5%C8%A1%BC%A5%EB" class="keyword">クリフォード・ストール</a>,<a href="http://d.hatena.ne.jp/keyword/%C3%D3%B1%FB%E6%D6" class="keyword">池央耿</a>,<a href="http://d.hatena.ne.jp/keyword/Clifford%20Stoll" class="keyword">Clifford Stoll</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%C1%F0%BB%D7%BC%D2" class="keyword">草思社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1991/09</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 16人 <span class="hatena-asin-detail-label">クリック</span>: 168回</li>
<li><a href="http://d.hatena.ne.jp/asin/4794204302" target="_blank">この商品を含むブログ (59件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4794204310/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51Bh7421c%2BL._SL160_.jpg" class="hatena-asin-detail-image" alt="カッコウはコンピュータに卵を産む〈下〉" title="カッコウはコンピュータに卵を産む〈下〉"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4794204310/hatena-hamazou-22/">カッコウはコンピュータに卵を産む〈下〉</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%AF%A5%EA%A5%D5%A5%A9%A1%BC%A5%C9%A1%A6%A5%B9%A5%C8%A1%BC%A5%EB" class="keyword">クリフォード・ストール</a>,<a href="http://d.hatena.ne.jp/keyword/%C3%D3%B1%FB%E6%D6" class="keyword">池央耿</a>,<a href="http://d.hatena.ne.jp/keyword/Clifford%20Stoll" class="keyword">Clifford Stoll</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%C1%F0%BB%D7%BC%D2" class="keyword">草思社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1991/09</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 10人 <span class="hatena-asin-detail-label">クリック</span>: 11回</li>
<li><a href="http://d.hatena.ne.jp/asin/4794204310" target="_blank">この商品を含むブログ (33件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4794207433/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51GM11ER2KL._SL160_.jpg" class="hatena-asin-detail-image" alt="インターネットはからっぽの洞窟" title="インターネットはからっぽの洞窟"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4794207433/hatena-hamazou-22/">インターネットはからっぽの洞窟</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%AF%A5%EA%A5%D5%A5%A9%A1%BC%A5%C9%A5%B9%A5%C8%A1%BC%A5%EB" class="keyword">クリフォードストール</a>,<a href="http://d.hatena.ne.jp/keyword/Clifford%20Stoll" class="keyword">Clifford Stoll</a>,<a href="http://d.hatena.ne.jp/keyword/%C1%D2%B9%FC%BE%B4" class="keyword">倉骨彰</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%C1%F0%BB%D7%BC%D2" class="keyword">草思社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1997/01</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 10回</li>
<li><a href="http://d.hatena.ne.jp/asin/4794207433" target="_blank">この商品を含むブログ (26件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>と同じ著者(クリフォード・ストール)の3作目だった。</p>
<p>著者はコンピュータ自体を非難しているわけではなく(著者自身もコンピュータをばりばり使っている)、コンピュータの子供の教育への過剰な利用、マスコミの過熱な報道と過度のIT政策に反対している。高校生ならまだしもコンピュータの教育は早ければ早いほどよいといって3歳児に使わせたり、幼稚園、小学校にまで予算をつぎ込んでコンピュータを設置するのは異常だとしている。子供たちにはコンピュータを使うよりもっと重要なことがあるはずだというわけである。</p>
<p>コンピュータは教育に役立つ(知的CAIのこと)なんてのは、馬鹿げている。子供に必要なのは優秀な教師とのインタラクション、教室での粘り強い反復学習、読書、仮想世界でなく現実の自然、人間とのコミュニケーションである。コンピュータでゲーム感覚で楽しむのなんて勉強じゃない、インターネットで派手な星の写真や動物、自然を見るより、外へ出たほうが何倍もよい。インターネットは情報の宝庫で学習に役立つなんて嘘だ。小学生はインターネットを使ってそんな情報にアクセスするとは思えない、きっとゲーム、チャット、メールにはまってしまうはずだ。そして、何時間もの貴重な時間を失うことになる。今の小学校の情報化で儲けているのは、コンピュータ会社とその関係者であり、彼らはその結果として子供たちにどんな影響を与えるのか全く考えていない。</p>
<p>というのが主張であると読み取った。正論だと思う。自分も初めてインターネットを使い始めたときは、面白くて何時間も平気で使っていたからな。アンケートによると97%もの人がインターネットを使っていると時間を忘れてしまうという。きっと中毒性があるのだろう。自律できる大人ならともかく子供にとっては危険すぎるかもしれない。『インターネット中毒』なんて本もあったと思う。</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4620312398/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51ND3G6HYGL._SL160_.jpg" class="hatena-asin-detail-image" alt="インターネット中毒―まじめな警告です" title="インターネット中毒―まじめな警告です"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4620312398/hatena-hamazou-22/">インターネット中毒―まじめな警告です</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%AD%A5%F3%A5%D0%A5%EA%A1%BC%A1%A6S%2E%A5%E4%A5%F3%A5%B0" class="keyword">キンバリー・S.ヤング</a>,<a href="http://d.hatena.ne.jp/keyword/Kimberly%20S%2E%20Young" class="keyword">Kimberly S. Young</a>,<a href="http://d.hatena.ne.jp/keyword/%BE%AE%C5%C4%C5%E8%CD%B3%C8%FE%BB%D2" class="keyword">小田嶋由美子</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%CB%E8%C6%FC%BF%B7%CA%B9%BC%D2" class="keyword">毎日新聞社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1998/09</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 1人 </li>
<li><a href="http://d.hatena.ne.jp/asin/4620312398" target="_blank">この商品を含むブログ (11件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>次のくだりが印象に残った。</p>
<blockquote>
<p>テクノロジーが力を授けるって?でも僕は、自分の人生がモデムに小刻みに吸い込まれていくのを見ているうちに、インターネットは力を授けたりしない、ということに気づいた。インターネットは僕らから力を奪う。</p>
<p>p.187</p>
</blockquote>
<p>また、パワーポイントによるコンピュータを使った発表にも喝を入れている(別に使うなとは言っていない、ようは使い方。)</p>
<blockquote>
<p>だったら人前で話すとき、評判を得るにはどうする、っておたずねですか?それは、自分の話のテーマをとことん理解し、コンピュータやレーザーポインタやPCプロジェクトを使わずに、即興で話ができるようにすることです。そして、重要なポイントを黒板にチョークで書いて、大きな声で強調すること。コンピュータにではなく、聴衆に顔を向けて話すこと。(中略)また、陳腐なクリップアートも捨て去ること。あらかじめプログラムされた音響効果はやめにして、自分の声で話すこと。誰かが作った、作りかけのデータではなく、自分自身の考えを示すこと。</p>
<p>自分の話で人を楽しませること。自分の体験談で人を感動させること。自分の素晴らしさで人を驚かせること。自分の熱意で人を説得すること。興奮を伝え、好奇心を駆り立てること、です。そのほか、何をやってもかまいませんが、とにかくプレゼンテーション・ソフトで人を退屈させることだけはだめです。</p>
<p>pp.222-223</p>
</blockquote>
<p>中間発表前に痛い指摘だな・・・自分も前から思っていたのだけど、大学に入ってからPPを使った授業が多くなって、何かものたりないような気はしていた。どうしてだろう?</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 卒業論文中間発表
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 07/31/2002 11:17:19 PM
CATEGORY: 日記
-----
BODY:
<div class="section">
<p>だった。機械学習に関しての調査を続行することになった。機械学習というと、<a href="http://d.hatena.ne.jp/aidiary/20020409/1112148686">産総研にGAの見学に行った</a>(2002/4/9)ときの筋電義手を思い出す。あれは、従来の「人間が機械に合わせていた」義手を「<strong>機械が人間に合わせる</strong>」ことを目標としたものだった。身近に義手を使う人もいないし、使っているところも見たことがないので、自分にとっては研究のモチベーションが薄いと思っていたが、その発想は大事だと思う。「<strong>進化するハードウェア</strong>」って分野らしい。今までの経緯からハードウェアよりはソフトウェアに興味がある。ソフトウェアの進化というとまずは機械学習だろう。</p>
<p>東大の<a href="http://ardbeg.c.u-tokyo.ac.jp/~hlab/" target="_blank">開研</a>に見学に行ったとき、そこの院生の人が「前まで機械学習の研究をやっていたけど、人間の学習とどうも違う。だからもっと人間の学習に近いことをやりたい」という話をしてくれた。そのとき、機械学習ってそんなに人間のとは関係ないものなのかという印象を持った。今回調査をしているうちに、本当に何か違和感を持った。決定木の学習?概念学習?分類学習?人間はそれらの能力を持っているが、やってる方法は全く違うと思った。人工知能は人間の方法にこだわっていないからあれでいいのだろうが。それより、それは何に使えるか問題だ。今のところよく分からないのは概念学習と分類学習!一体何に応用できるんだ(知的エージェントやロボットにとって)?そこら辺を注意しておく。あの時、自分も機械学習に興味があったので、どうしようか迷ったものだが、たとえ同じ考えにいたってもそれはそれで仕方がない。でも、その前に人工知能の手法としての機械学習がどんなものか把握しておくことは重要だ。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 機械学習関連の本
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 08/01/2002 10:31:25 PM
CATEGORY: 機械学習
-----
BODY:
<div class="section">
<p>機械学習関連の本を探した。今のところ次の本を読む予定。</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4320023153/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51MsSTz6J0L._SL160_.jpg" class="hatena-asin-detail-image" alt="知識獲得入門―帰納学習と応用 (知識獲得と学習シリーズ)" title="知識獲得入門―帰納学習と応用 (知識獲得と学習シリーズ)"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4320023153/hatena-hamazou-22/">知識獲得入門―帰納学習と応用 (知識獲得と学習シリーズ)</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/R%2ES%2E%20Michalski" class="keyword">R.S. Michalski</a>,<a href="http://d.hatena.ne.jp/keyword/%C5%C5%C1%ED%B8%A6%BF%CD%B9%A9%C3%CE%C7%BD%B8%A6%B5%E6%A5%B0%A5%EB%A1%BC%A5%D7" class="keyword">電総研人工知能研究グループ</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B6%A6%CE%A9%BD%D0%C8%C7" class="keyword">共立出版</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1987/05</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><a href="http://d.hatena.ne.jp/asin/4320023153" target="_blank">この商品を含むブログ (1件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4320023161/hatena-hamazou-22/"><img src="http://d.hatena.ne.jp/images/hatena_aws.gif" class="hatena-asin-detail-image" alt="学習と問題解決 (知識獲得と学習シリーズ)" title="学習と問題解決 (知識獲得と学習シリーズ)"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4320023161/hatena-hamazou-22/">学習と問題解決 (知識獲得と学習シリーズ)</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/R%2ES%2E%20Michalski" class="keyword">R.S. Michalski</a>,<a href="http://d.hatena.ne.jp/keyword/%C5%C5%C1%ED%B8%A6%BF%CD%B9%A9%C3%CE%C7%BD%B8%A6%B5%E6%A5%B0%A5%EB%A1%BC%A5%D7" class="keyword">電総研人工知能研究グループ</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B6%A6%CE%A9%BD%D0%C8%C7" class="keyword">共立出版</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1987/06</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><a href="http://d.hatena.ne.jp/asin/4320023161" target="_blank">この商品を含むブログ (1件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/432002317X/hatena-hamazou-22/"><img src="http://d.hatena.ne.jp/images/hatena_aws.gif" class="hatena-asin-detail-image" alt="教示学習と知的CAI (知識獲得と学習シリーズ)" title="教示学習と知的CAI (知識獲得と学習シリーズ)"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/432002317X/hatena-hamazou-22/">教示学習と知的CAI (知識獲得と学習シリーズ)</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/R%2ES%2E%20Michalski" class="keyword">R.S. Michalski</a>,<a href="http://d.hatena.ne.jp/keyword/%C5%C5%C1%ED%B8%A6%BF%CD%B9%A9%C3%CE%C7%BD%B8%A6%B5%E6%A5%B0%A5%EB%A1%BC%A5%D7" class="keyword">電総研人工知能研究グループ</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B6%A6%CE%A9%BD%D0%C8%C7" class="keyword">共立出版</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1987/07</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><a href="http://d.hatena.ne.jp/asin/432002317X" target="_blank">この商品を含むブログ (1件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4320023188/hatena-hamazou-22/"><img src="http://d.hatena.ne.jp/images/hatena_aws.gif" class="hatena-asin-detail-image" alt="知識獲得と認知科学―学習とは何か (知識獲得と学習シリーズ)" title="知識獲得と認知科学―学習とは何か (知識獲得と学習シリーズ)"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4320023188/hatena-hamazou-22/">知識獲得と認知科学―学習とは何か (知識獲得と学習シリーズ)</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/Ryszard%20S%2E%20Michalski" class="keyword">Ryszard S. Michalski</a>,<a href="http://d.hatena.ne.jp/keyword/%C5%C5%C1%ED%B8%A6%BF%CD%B9%A9%C3%CE%C7%BD%B8%A6%B5%E6%A5%B0%A5%EB%A1%BC%A5%D7" class="keyword">電総研人工知能研究グループ</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B6%A6%CE%A9%BD%D0%C8%C7" class="keyword">共立出版</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1988/02</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><a href="http://d.hatena.ne.jp/asin/4320023188" target="_blank">この商品を含むブログ (1件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4320023196/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51vPOVaPBKL._SL160_.jpg" class="hatena-asin-detail-image" alt="概念と規則の学習―例からの学習 (知識獲得と学習シリーズ)" title="概念と規則の学習―例からの学習 (知識獲得と学習シリーズ)"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4320023196/hatena-hamazou-22/">概念と規則の学習―例からの学習 (知識獲得と学習シリーズ)</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/R%2ES%2E%20Michalski" class="keyword">R.S. Michalski</a>,<a href="http://d.hatena.ne.jp/keyword/%C5%C5%C1%ED%B8%A6%BF%CD%B9%A9%C3%CE%C7%BD%B8%A6%B5%E6%A5%B0%A5%EB%A1%BC%A5%D7" class="keyword">電総研人工知能研究グループ</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B6%A6%CE%A9%BD%D0%C8%C7" class="keyword">共立出版</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1988/04</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><a href="http://d.hatena.ne.jp/asin/4320023196" target="_blank">この商品を含むブログ (1件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/432002320X/hatena-hamazou-22/"><img src="http://d.hatena.ne.jp/images/hatena_aws.gif" class="hatena-asin-detail-image" alt="発見的学習 (知識獲得と学習シリーズ)" title="発見的学習 (知識獲得と学習シリーズ)"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/432002320X/hatena-hamazou-22/">発見的学習 (知識獲得と学習シリーズ)</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/Ryszard%20S%2E%20Michalski" class="keyword">Ryszard S. Michalski</a>,<a href="http://d.hatena.ne.jp/keyword/%C5%C5%C1%ED%B8%A6%BF%CD%B9%A9%C3%CE%C7%BD%B8%A6%B5%E6%A5%B0%A5%EB%A1%BC%A5%D7" class="keyword">電総研人工知能研究グループ</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B6%A6%CE%A9%BD%D0%C8%C7" class="keyword">共立出版</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1988/07</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><a href="http://d.hatena.ne.jp/asin/432002320X" target="_blank">この商品を含むブログ (1件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4320023218/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/519cYq0laHL._SL160_.jpg" class="hatena-asin-detail-image" alt="類推学習 (知識獲得と学習シリーズ)" title="類推学習 (知識獲得と学習シリーズ)"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4320023218/hatena-hamazou-22/">類推学習 (知識獲得と学習シリーズ)</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/Ryszard%20S%2E%20Michalski" class="keyword">Ryszard S. Michalski</a>,<a href="http://d.hatena.ne.jp/keyword/%C5%C5%C1%ED%B8%A6%BF%CD%B9%A9%C3%CE%C7%BD%B8%A6%B5%E6%A5%B0%A5%EB%A1%BC%A5%D7" class="keyword">電総研人工知能研究グループ</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B6%A6%CE%A9%BD%D0%C8%C7" class="keyword">共立出版</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1988/12</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 5回</li>
<li><a href="http://d.hatena.ne.jp/asin/4320023218" target="_blank">この商品を含むブログ (1件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4320023226/hatena-hamazou-22/"><img src="http://d.hatena.ne.jp/images/hatena_aws.gif" class="hatena-asin-detail-image" alt="知識獲得用語集と総合文献集 (知識獲得と学習シリーズ)" title="知識獲得用語集と総合文献集 (知識獲得と学習シリーズ)"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4320023226/hatena-hamazou-22/">知識獲得用語集と総合文献集 (知識獲得と学習シリーズ)</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%C5%C5%C1%ED%B8%A6%BF%CD%B9%A9%C3%CE%C7%BD%B8%A6%B5%E6%A5%B0%A5%EB%A1%BC%A5%D7" class="keyword">電総研人工知能研究グループ</a>,<a href="http://d.hatena.ne.jp/keyword/Ryszard%20S%2E%20Michalski" class="keyword">Ryszard S. Michalski</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B6%A6%CE%A9%BD%D0%C8%C7" class="keyword">共立出版</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1989/10</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 1回</li>
<li><a href="http://d.hatena.ne.jp/asin/4320023226" target="_blank">この商品を含むブログ (1件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4627826613/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51PNPA99TZL._SL160_.jpg" class="hatena-asin-detail-image" alt="強化学習" title="強化学習"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4627826613/hatena-hamazou-22/">強化学習</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/Richard%20S%2ESutton" class="keyword">Richard S.Sutton</a>,<a href="http://d.hatena.ne.jp/keyword/Andrew%20G%2EBarto" class="keyword">Andrew G.Barto</a>,<a href="http://d.hatena.ne.jp/keyword/%BB%B0%BE%E5%C4%E7%CB%A7" class="keyword">三上貞芳</a>,<a href="http://d.hatena.ne.jp/keyword/%B3%A7%C0%EE%B2%ED%BE%CF" class="keyword">皆川雅章</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%BF%B9%CB%CC%BD%D0%C8%C7" class="keyword">森北出版</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2000/12</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 4人 <span class="hatena-asin-detail-label">クリック</span>: 26回</li>
<li><a href="http://d.hatena.ne.jp/asin/4627826613" target="_blank">この商品を含むブログ (26件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>この知識獲得と学習シリーズは、米国のコンピュータ学習の国際会議の論文をもとに編集された「Machine Learning: An Artificial Intelligence Approach Vol.I, Vol.II」の翻訳。学校には、Vol.Iしかなかった。日本語訳も2と3が抜けていた中途半端なのでリクエストしたら注文してくれることになった。特に8番目の総合文献集はすごい。海外の機械学習関連の論文が完全に分類・整理されている。訳者が日本語の論文も追加で載せている。ただし、1987年ぐらいまでなのでそこから先はされていないらしい。やる余地は残されているのだろうか。</p>
<p>機械学習にもいろいろあって、<strong>上の8冊の内容と強化学習は手法も目的も全く違う</strong>。特に強化学習に興味が出てきたので本も読もうと思う。ひとまずこれだけ完璧に理解すれば、論文の理解もよくなるだろう。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 1巻を読了
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 08/06/2002 10:34:16 PM
CATEGORY: 機械学習
-----
BODY:
<div class="section">
<p><a href="http://d.hatena.ne.jp/aidiary/20020801/1115127085">機械学習関連の本</a>(2002/8/1)の続き。</p>
<p>機械学習に関して大分見通しがよくなってきた(が卒論の見通しはよくない)。例からの学習(つまり帰納学習)に関しての内容がほとんどだった。漠然としたイメージだったのが、アルゴリズムとしてがっちりしたものに変化した気がする。機械学習はなぜ重要かなどの話題もありよかったと思う。しかし、1987年と古い本なので時代遅れの印象も受けた。1987年というとエキスパートシステム全盛の時代でこれにからむ話題が多いが、今でも使われてるのだろうか。今では、エキスパートシステムなんて言葉は死語で隠れた技術として裏で働いているような感じを受ける。次は、図書館にあった4巻から読もうと思う。</p>
<p>しかし、これらの手法がエキスパートシステムの知識獲得を除いてどんなものに応用できるかはよくわからない。論文に出てくる例題は積み木の世界、パズル、チェスなどのいわゆるおもちゃの世界なのだが、もっと大規模化できるとしても何に使えるのか。あまり想像がつかない。たぶん、自分が知らないだけだろうからそれに注意して読んでいく。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 帰納学習(例からの学習)
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 08/06/2002 10:34:17 PM
CATEGORY: 機械学習
-----
BODY:
<div class="section">
<p>知識獲得と学習シリーズ1巻からの引用。</p>
<blockquote>
<p>論証(今では演繹とよんでいる)を通じて科学的知識を獲得することは、根源的直接命題を知らない限り不可能である・・・われわれは帰納により根源的命題を知らなければならない。なぜならば、知覚ですらも帰納により普遍的なことがわかるからである・・・</p>
<p>アリストテレス、分析論後書</p>
</blockquote>
<p>これを読んだとき、妙に納得した。演繹というのは、論理に基いて完全に証明可能な方法で結論を導く方式のこと。数学では、公理から演繹を行い定理を作り数学の体系を作ること(トップダウン的)ができる。でも物理では公理にあたる究極的な原理がわからないから演繹しようがない。自然界で起こる個々の例から帰納によってボトムアップ的に究極原理を見つける。対照的だと思った。</p>
<p>コンピュータではどうかというと、演繹はもちろん得意。人間がプログラムとデータを与えれば、完全な論理と計算に基いて結論をすごい速さで求めてくれる。じゃ、帰納は?というと帰納学習の研究で一生懸命やられているがすごく難しいらしい(どう難しいかは今調べ中、しかし、帰納をするのにアルゴリズムに基いた演繹的な方法でやるというのも矛盾したものを感じている)。でも、科学技術と人類の発展は帰納によって推進されるように思う(というか事実そうだろう)。人間の帰納の力を増すための機械、人間を越える帰納する機械を実現するためにも重要な分野だと感じた。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 森羅万象解き明かす
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 08/26/2002 10:36:14 PM
CATEGORY: 複雑系
-----
BODY:
<div class="section">
<p>最近、更新をさぼっていたけどまた再開することにした。ちょっと古いが8月20日の読売新聞に面白い記事が載っていた。ウルフラムという人が書いた『A New Kind of Science』という本についてでその内容が興味深い。</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/1579550088/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51MDQ4ARGGL._SL160_.jpg" class="hatena-asin-detail-image" alt="A New Kind of Science" title="A New Kind of Science"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/1579550088/hatena-hamazou-22/">A New Kind of Science</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/Stephen%20Wolfram" class="keyword">Stephen Wolfram</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/Wolfram%20Media%20Inc" class="keyword">Wolfram Media Inc</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2002/05/14</li>
<li><span class="hatena-asin-detail-label">メディア:</span> ハードカバー</li>
<li><span class="hatena-asin-detail-label">購入</span>: 2人 <span class="hatena-asin-detail-label">クリック</span>: 20回</li>
<li><a href="http://d.hatena.ne.jp/asin/1579550088" target="_blank">この商品を含むブログ (11件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>著者のウルフラムさんの名前はどこかで聞いたことがあると思っていたら、Mathematicaを作った人だった。その記事を一部引用。</p>
<blockquote>
<p>新理論を要約すると、自然界で複雑と見える現象はすべて、単純な法則に基づく計算の繰り返しによって成り立っているという。</p>
<p>この考えが正しければ、自動車の渋滞から生命の誕生、宇宙生成の仕組みまで、森羅万象はすべて簡単なコンピューター・プログラムで記述できる可能性が出てくる。</p>
<p>ウルフラム氏の理論の基礎を成しているのは、セルオートマトン(CA)と呼ばれるコンピューター・プログラムだ。単純な変換ルールを連続して適用していくことによって、チェス盤のような格子状のパターンが様々に変化するシステムのことで、近代コンピューターの父と呼ばれるフォン・ノイマンらが考案した。</p>
<p>CAは単純な約束事の繰り返しにすぎないが、ルールを少し変えるだけで、雪の結晶や貝殻のような複雑な模様を描くことができ、また交通渋滞のよい近似モデルも作ることができる―八〇年代前半にこうしたルール作りの基本型を提案したのが、ウルフラム氏だ。CA研究はその後、物理学者や数理工学者らの間でブームとなった。</p>
<p>自然科学では、現象を把握するのに、微分方程式などを活用してモデル化し、分析する手法を常とう手段としてきた。しかし方程式による近似解が適用できるのは通常、その現象に限られる。</p>
<p>ところがウルフラム氏の理論は「CAは多岐にわたる減少の普遍的なモデルになる」としており、同理論が、微分法を発明したニュートン以来の科学的方法論への挑戦、と評される根拠もここにある。</p>
<p>提唱者が他の人物なら、単なる「たわごと」と片づけられたかもしれないが、天才の名をほしいままにしたウルフラム氏なので、科学界も無視できない様子だ。</p>
</blockquote>
<p>本当だったら面白い!特に「複雑な現象はすべて単純な法則に基づく計算の繰り返し」というのは、「創発」のことを言っていると思われる。いつか人工知能の方針も簡単な要素の組合せによる創発に移るかもしれない。でも、「普遍的なモデル」ってあるのだろうか。物理の究極原理の「大統一理論」みたいなものなのか。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: Robocode
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 08/27/2002 10:37:13 PM
CATEGORY: ゲームAI
-----
BODY:
<div class="section">
<p><a href="http://robocode.sourceforge.net/" target="_blank">http://robocode.sourceforge.net/</a></p>
<p>これもいつだったか忘れたが読売新聞に載っていた。IBMがJavaを使える技術者を育てるために提案したものらしい。ロボットをプログラムして互いに戦わせ勝つのが目的。ロボットは操作できないので自律性が必要となる。ためしにやってみたが面白そうに思った。人工知能の機械学習や適応進化の技術が使えるかもしれないとふと思った。1試合が短いから無理かもしれないが。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 教師あり学習
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 08/28/2002 10:38:23 PM
CATEGORY: 機械学習
-----
BODY:
<div class="section">
<p>機械学習には、2つのタイプがある。1つ目は教師あり学習、2つ目は教師なし学習である。</p>
<p>教師あり学習にもいろいろなタイプがあるが、共通しているのは教師が例を与えることによって機械に学習させるという点である。この学習の目的の一つに分類がある。これは、教師が与えた例を機械が正確にクラス分けできるようにするのが目的である。この教師は人間でもよいし、プログラムでもよいのだが、正解(次の場合は、例がどのクラスに分類されるか)を知っている必要がある。</p>
<blockquote>
<p>教師:では機械、この例1はクラスAに分類される。覚えなさい。</p>
<p>機械:ハイ、先生。分カリマシタ。</p>
<p>教師:よろしい。次この例2はクラスBに分類される。覚えなさい。</p>
<p>機械:ハイ、先生。分カリマシタ。</p>
<p>教師:例3はクラスC。</p>
<p>機械:ハイ、先生。分カリマシタ。</p>
<p>教師:例4はクラスB。</p>
<p>機械:ハイ、先生。分カリマシタ。</p>
<p>教師:例5はクラスA。</p>
<p>機械:ハイ、先生。分カリマシタ。</p>
<p>……</p>
<p>教師:例999はクラスC。</p>
<p>機械:ハイ、先生。分カリマシタ。</p>
<p>教師:よし、そろそろ勉強は終わりにしよう。</p>
</blockquote>
<p>のように書くのも疲れるような機械的な処理が延々と続けられる。この結果、機械は何を学んだのか?ただ、例とクラスの対応を記憶しておくだけなら人工知能とはいえない。なんと、機械は、与えられた例の集合からそのクラスの特徴を抽出し、各々のクラスの概念を学ぶことができるのだ。そのため、次のようなことができる。</p>
<blockquote>
<p>教師:おー、この機械はずいぶん賢くなったな。では、問題を与えよう。この例1000はどのクラスに分類される?</p>
<p>機械:(計算中)クラスBデス、先生。</p>
<p>教師:正解!</p>
</blockquote>
<p>学習過程で例1000は与えていないのにも関わらず、機械は分類できる。これは、学習過程で例とクラスの対応をただ記憶していたのではなく、例からクラスの概念を学べたことを意味している。よって、これ以後は、新しい例でも分類を正しく行うことが可能になる。このような学習は教師あり学習の中の例からの学習、帰納学習、概念学習などと呼ばれる。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 教師なし学習
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 08/29/2002 10:39:03 PM
CATEGORY: 機械学習
-----
BODY:
<div class="section">
<p>教師あり学習にもいろいろあって全然書き足りないが、さっさと教師なし学習にうつる。教師なし学習はその名の通り教師がいない!つまり、例や正解を教えてくれる人がいないのだ。じゃ、機械はどうやって学習すればよいのか?教師がいなけりゃ、試行錯誤の独学あるのみこれに尽きる。</p>
<p>教師なし学習の一つに強化学習がある。これは、機械が環境と直接やりとりして、環境から得られる報酬だけを頼りに学習していく方法である。ここに正解(もちろん、たくさんの報酬を得られる方法のこと)を教えてくれる教師はいない。機械は環境との試行錯誤のやり取りを通して、自力でたくさんの報酬を得られる方法を学ばなければいけないのだ。こんな感じ。</p>
<p>(注)強化学習は昨日の機械みたいに分類を学習するわけではない(たぶん、分類もできるだろうが)。ここでは、報酬を最大とする行動を学ぼうとしている。</p>
<blockquote>
<p>機械:先生ガイナイカラ、正解が分カリマセン。</p>
<p>機械:ジャ、トリアエズ行動1を実行シヨウ。</p>
<p>機械:ガガ、報酬ガゼンゼンエラレナカッタ。モウ行動1は実行シナイゾ。</p>
<p>機械:ヨシ、行動2ヲ実行シヨウ。</p>
<p>機械:ガー、タクサン報酬ガ得ラレタゾ。モウ1回実行シヨウ。</p>
<p>機械:マタ報酬ガ得ラレタゾ。モウ1回!トイキタイガ、モットイイ行動ガアルカモシレナイナ。行動3ヲ選ンデミヨウ。</p>
<p>機械:ヤッタ。モットタクサン報酬ガ得ラレタゾ。</p>
</blockquote>
<p>という風に進む。教師がどの行動がたくさん報酬が得られるか教えてくれないので機械は試行錯誤を続けて自分で見つけるしかないのだ。</p>
<p>今、教育問題がいろいろあるけど、教師あり学習の機械と教師なし学習の機械を人間の生徒に置き換えてみると結構面白いと思った。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 研究室の合宿
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/04/2002 10:40:26 PM
CATEGORY: 日記
-----
BODY:
<div class="section">
<p>だった。ディベートというのをやった。あるテーマについて賛成派と反対派に分かれて論理を競って相手を言い負かせばよいみたい。説明を聞いていた感じでは論理の訓練みたいで、議論して結論を出すことが目的ではないらしい(自分の考えと違っていても賛成(反対)しなくてはいけないというのは驚いた)。</p>
<p>あとは、焼肉食べて、花火やって、お酒飲んだ。普段はほとんど飲まないが、お酒が自分の精神にどう影響を与えるか実験しようと思い、ちょっと多く飲んでみた。わずかだが気分が高揚し、精神が開放的になることを確認できた(どうしてそうなるかはよく知らないが)。久々に大笑いしたように思う。</p>
<p>で、話題は変わるけど、笑うっていう行為は人間にしかできない高等な機能という話をどこかで聞いたことがある。そういえばそうだなとすごく納得した。ちょっと想像しても、人間以外に笑う動物は見たことがない(猿は微妙だけど)。「笑う」って一体何なのか。「喜び」という感情の表現形態の一種なのだろうか。喜ぶなら犬などの他の動物でもできている(と思われる)。犬が尻尾を振ることに対して、人間は顔面筋を動かしているだけなのか、それとも別の意味があるのだろうか。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: インターネットはグローバル・ブレイン
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/05/2002 10:42:04 PM
CATEGORY: 人工知能
-----
BODY:
<div class="section">
<p>最近、いろいろ読んでると立花隆さんが結構出てくる。人工知能学会誌に対談が載っていたので、興味が出てきてそれ関係の著作を調べてみた。脳や人工知能関係の本もいろいろあったので読んでみよう。</p>
<p>もっとも読みたかったのが立花さんの著作ではないが『立花隆先生、かなりヘンですよ』っていう本でやっと図書館に入ったのですぐ借りた。生協で立ち読みしてたら、人工知能の立花さんの考え方を批判している部分があって興味を持った。あと、『インターネットはグローバル・ブレイン』っていう本が批判の対象になっているので合わせて借りた。</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4896915801/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/515J13RN2TL._SL160_.jpg" class="hatena-asin-detail-image" alt="立花隆先生、かなりヘンですよ―「教養のない東大生」からの挑戦状" title="立花隆先生、かなりヘンですよ―「教養のない東大生」からの挑戦状"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4896915801/hatena-hamazou-22/">立花隆先生、かなりヘンですよ―「教養のない東大生」からの挑戦状</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%C3%AB%C5%C4%CF%C2%B0%EC%CF%BA" class="keyword">谷田和一郎</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%CD%CE%C0%F4%BC%D2" class="keyword">洋泉社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2001/11</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 1人 <span class="hatena-asin-detail-label">クリック</span>: 2回</li>
<li><a href="http://d.hatena.ne.jp/asin/4896915801" target="_blank">この商品を含むブログ (8件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4062084643/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51Y7H4WH14L._SL160_.jpg" class="hatena-asin-detail-image" alt="インターネットはグローバル・ブレイン" title="インターネットはグローバル・ブレイン"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4062084643/hatena-hamazou-22/">インターネットはグローバル・ブレイン</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%CE%A9%B2%D6%CE%B4" class="keyword">立花隆</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B9%D6%C3%CC%BC%D2" class="keyword">講談社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1997/12</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><a href="http://d.hatena.ne.jp/asin/4062084643" target="_blank">この商品を含むブログ (3件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: N本腕バンディット問題
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/06/2002 10:43:10 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>をプログラムして実験してみた。簡単に言うと、目の前にN本レバーがあるとする。各レバーを引くとお金がもらえるのだが、レバーによってもらえる量にばらつきがある。このとき、どのような方法を取れば最も多くお金がもらえるかという問題。</p>
<p>まずとっさに思いつくのは各レバーを一回ずつ引いて、どのレバーが最もお金をもらえるか調べ、後はずっとそのレバーを引きまくる方法だと思う。これは貪欲法という。でもこの方法には問題点がある。レバーを引くたびにもらえるお金は正規分布に従っていて、ばらつきがあるからである。例えば、レバー3が最も多くもらえると思っていても、実際は、たまたまその一回だけ多かっただけで実際の平均値は少ないかも知れないのだ。</p>
<p>では、どうしたらよいのか。それは、たまに他のレバーをランダムに選んでみればよい。もしかしたら、そのレバーは今まで一番いいと思っていたレバーより、さらに良いものかも知れないからだ。このように、ちょっと冒険して他のを選んでみることは探査といい、εの確率で探査をする方法をε-貪欲法という。</p>
<p>で、問題なのは、εをどう設定するかで知識利用と探査のトレードオフと言われている。目先の利益に突っ走って一番高いと思っているレバーだけ引きまくってても最終的な利益は低く、また、一か八かのかけをしてランダムに選ぶ探査ばかり行っていても最終的な利益は低いままである。で、このεをどの程度にすれば最も最終的な利益が多くなるかプログラムして実験してみた。</p>
<p>もう本に結果は書いてあるんだが、1000回レバーを引けるときは、εが0.1のとき、最も最終利益が高くなる。つまり、10回に1回はランダムにレバーを選び、残りの9回は堅実にお金の最も多い(と思っている)レバーを選べばよい。</p>
<p>この結果はなかなか面白い。人生でも直接的な利益ばかり目指していないで、10%の割合で損するかもしれない冒険をしてみた方が最終的な利益は多くなるってこと言ってるのかな。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: Machine Learning誌
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/09/2002 10:44:51 PM
CATEGORY: 機械学習
-----
BODY:
<div class="section">
<p>の強化学習に関する論文を読み始めた。が、意味があまり(全然だったりして)よく分からない。何か日本の論文とは傾向がまるで違う。もっと、理論寄りで数式がだらだら出てくる。これが一流誌なのだろう。図書館に全巻ないので、上のサイトのPDFを使おうと思っていたのだが、お金が必要なことが判明した・・・</p>
<p>あと、強化学習に関する海外と日本のサイトを見て回った。たくさん資料があってよい。あとで整理しておこうと思う。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: コンピュータはしろといわれたことしかできない
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/10/2002 05:04:00 PM
CATEGORY: 哲学
-----
BODY:
<div class="section">
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4826900252/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51FFJKK1JTL._SL160_.jpg" class="hatena-asin-detail-image" alt="ゲーデル,エッシャー,バッハ―あるいは不思議の環" title="ゲーデル,エッシャー,バッハ―あるいは不思議の環"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4826900252/hatena-hamazou-22/">ゲーデル,エッシャー,バッハ―あるいは不思議の環</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A4%CF%A4%E4%A4%B7%A4%CF%A4%B8%A4%E1" class="keyword">はやしはじめ</a>,<a href="http://d.hatena.ne.jp/keyword/%CC%F8%C0%A5%BE%B0%B5%AA" class="keyword">柳瀬尚紀</a>,<a href="http://d.hatena.ne.jp/keyword/%A5%C0%A5%B0%A5%E9%A5%B9%A1%A6R%A1%A6%A5%DB%A5%D5%A5%B9%A5%BF%A5%C3%A5%BF%A1%BC" class="keyword">ダグラス・R・ホフスタッター</a>,<a href="http://d.hatena.ne.jp/keyword/%CC%EE%BA%EA%BE%BC%B9%B0" class="keyword">野崎昭弘</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%C7%F2%CD%C8%BC%D2" class="keyword">白揚社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1985/05</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 2人 <span class="hatena-asin-detail-label">クリック</span>: 46回</li>
<li><a href="http://d.hatena.ne.jp/asin/4826900252" target="_blank">この商品を含むブログ (104件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>この本に次のような文章があった。</p>
<blockquote>
<p>「コンピュータはしろといわれたことしかできない」というふるい金言があるが、これはある意味で正しいけれども、次の点を見逃している。「コンピュータに『しろ』といったことの結果は、あらかじめわかってはいない。」だからコンピュータの行動は、人間の場合と同じように不可解、驚異的かつ予想外である。</p>
<p>p.308</p>
</blockquote>
<p>この「コンピュータはしろといわれたことしかできない」という考え方は、チャールズ・バベッジと一緒に解析エンジンの研究をしたエイダ・ラブレイスの備忘録にはじめて登場し、その後、広く伝わったらしい。</p>
<p>著者のこの主張は私も考えたことがある。以前、人工知能に関する講義のレポートで</p>
<blockquote>
<p>主張1「計算機が知的なはずがない(P1).だって,プログラムされたことしかできない(Q1)のだから」 --- Q1は正しいか?Q1はP1を含意するか?</p>
</blockquote>
<p>という課題が出た。このとき、上の引用と全く同じ考え方を持ち出して、「<strong>計算機はプログラムされたことしかできないが、その結果はプログラマには予想もつかないことだから知的な動作をすることはありえる</strong>」と書いたのを思い出した。</p>
<p>人工知能はまさにその通りで、決定的なアルゴリズム(しろといわれたことしかしない方法)で、非決定的な動作(しろといわれないこともする人間の知能)を何とか生み出そうとしているように思う。何か矛盾しているようにも感じるが興味深い。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: Sarsa(λ)
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/12/2002 10:50:29 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>強化学習の学習法の1つであるSarsa(λ)アルゴリズムを<a href="http://lslwww.epfl.ch/~anperez/RL/RL.html" target="_blank">Introduction to Reinforcement learning</a>に載っていたプログラムを参考に実装してみた。手元の本にはアルゴリズムが擬似コードで載っているだけなので、細かい実装法で分からないところがあったのだが、これ1つ実装してみただけで見通しがすごくよくなった。強化学習はアルゴリズムがたくさん提案されているが、ほとんど構造は似たようなものなので、これを参考に他のも実装して実験できるようになるだろう。</p>
<p>このプログラムでは迷路の抜け方を学習するんだけど、実際に実行してみて感動した!強化学習は教師なし学習なので迷路の抜け方を具体的に教えない。ただ報酬を定義してやるだけで見事に最適な抜ける方法を導き出した(報酬はエージェントの行動を誘導しているが、具体的な方法を指示しているわけではない)。これって、<strong>不可解、驚異的かつ予想外な行動</strong>じゃないですか?GAのときもそうだけど、自分はそう思う。</p>
<p>昔、パックマンっていう円に切れ込みを入れたようなキャラが敵を避けながら餌をできるだけ食べまくるゲームがあったけど、あれ強化学習を利用して人間よりうまくすることはできそうな気がする。全然実用じゃないけれど、プログラムの練習にはちょうどいいかもしれない。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 強化学習とは何か?
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/13/2002 10:51:36 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>強化学習とは、<strong>感覚系と運動系の連係</strong>を用いた<strong>環境との相互作用からの学習</strong>を理論化したもの。感覚系によりまわりの環境、状況を知覚し、運動系によって行動する。そこから得られた情報を使って学習する。</p>
<p>このような学習は私たちも通常行っていると思われる。例えば、車の運転。道がゆるやかに右方向へ曲がっている状況を知覚した。さて、どんな行動をとればいいだろう。ハンドルを左に回してみる。道から大きく外れてしまった。じゃ、右に60度くらい回してみる。右へ行ったけど、道から外れてしまった。じゃ、右に10度くらい回してみる。おっ、道に沿って行けた!このような経験を学習することによって、ハンドル操作が徐々にうまくなっていく。自転車の運転もそう。体とハンドルのバランスを何回も転びながら調節し、乗れるようになる。会話もそう。ある状況でどんな話をしたら喜ばれる(嫌がられる)という経験をもとに上達する。全て、<strong>ある状況においてある行動をとったとき、その結果から情報を得て学習</strong>するという共通点がある。</p>
<p>では、結果から得られる情報とは何か。それは、<strong>報酬</strong>である。<strong>強化学習では、数値化された報酬信号を最大にするために(つまり、たくさんご褒美がほしいってこと)、何をすべきかを学習する</strong>。上の車の例では、道なりに運転できたら正の報酬を与え、道からずれが大きいほど、負の報酬(=罰)を与えればよい。学習者は報酬がたくさんほしいから、何とか道なりに運転する方法を見つけようと努力するだろう。自転車の運転では、倒れなかったら正の報酬、こけたら負の報酬(罰)を与えればよい(って、現実にこけたら罰を与える教育がいいかは疑問だけど)。学習者は何とか倒れないような行動を見つけようとするだろう。会話ではどうか。相手の反応がよかったら、正の報酬、よくなかったら罰だろう。でもこれは数値化するのは難しい。</p>
<p>まとめ</p>
<p>強化学習は、報酬を最大化するために、ある状況でどんな行動をとればもっとも良いかを学習する。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: SarsaとQ-learning
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/14/2002 10:52:08 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>を実装して、「風が吹く格子世界問題(p.156)」に適用してみた。SarsaとQ-learningはどっちも強化学習の手法、両者はたった1箇所だけアルゴリズムに違いがある。しかし、この問題に対しては、ほとんど差がでなかった。下の本によると、「崖歩き問題(p.160)」でアルゴリズム差がでるらしい(実際に出た!Q-learningだと、崖のぎりぎりの近道を通る。Sarsaは崖から離れた遠回りだけど安全な道を通る。この差がどうして起きるかもアルゴリズムとにらめっこしてなんとかわかった。ページ数は「強化学習」という本のもの。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 棒倒し法
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/16/2002 10:53:33 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>強化学習の例題環境で使う迷路は今まで0,1をファイルに書き込んで自分で作っていたが、大きいのがうまくできず、書き直すのもすごく面倒くさい。というわけで、自動的に迷路を作るアルゴリズムを探したところ、棒倒し法というのがあった。この方法を使えば、大量にランダム迷路が作れるので非常に便利。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: Machine Learning誌論文調査
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/18/2002 10:53:56 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>Machine Learning誌の論文調査を続けた。強化学習関連は40本くらいある。だんだん理解できることが多くなってきたが、証明関係はさっぱり。論文によって式の表現が異なるのも混乱に拍車をかける(頼みの綱はSuttonさんの「強化学習」ただ一冊、それ以外に日本語の教科書がない、幸い、専門用語の英訳も載っていて便利)。</p>
<p>強化学習はいくつか特徴軸があって、問題になっていることとその解決法の特徴も把握できてきたが、詳細はいまいち不明だ。Machine Learning誌はほとんど強化学習理論の論文ばかりで応用に関してはかなり少ない。理論もわかってくると面白いが、応用の方もより興味がある。応用例の一覧なんかつくっておくとよいかもしれない。そこから、何か新しい問題に適用できるかどうかの判断や洞察がつくかも。あと、これとは別にエージェント技術については勉強した方がいいと感じた。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 人工稚能
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/18/2002 10:55:28 AM
CATEGORY: 人工知能
-----
BODY:
<div class="section">
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4320026691/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51ev9ctxOSL._SL160_.jpg" class="hatena-asin-detail-image" alt="グランドチャレンジ―人工知能の大いなる挑戦" title="グランドチャレンジ―人工知能の大いなる挑戦"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4320026691/hatena-hamazou-22/">グランドチャレンジ―人工知能の大いなる挑戦</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%CB%CC%CC%EE%B9%A8%CC%C0" class="keyword">北野宏明</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B6%A6%CE%A9%BD%D0%C8%C7" class="keyword">共立出版</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1993/08</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><a href="http://d.hatena.ne.jp/asin/4320026691" target="_blank">この商品を含むブログ (1件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<blockquote>
<p>「ある先生に云わせると《人工遅能》らしい。ワシが自分の研究を人に紹介するときは《人工恥能》やし、人からみたら《人工痴能》やろな。ほやけど、この研究は、まだ始まったばかりやねん。だから今は《人工稚能》とちゃうかなー。これからもっとやることがあるねん。」</p>
<p>p.113</p>
</blockquote>
<p>面白い。ただ、人工恥能は悲しくなる。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 適格度トレース
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/19/2002 10:56:55 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>迷路問題で普通のSarsaアルゴリズムと適格度トレースという技法を使ったSarsa(λ)アルゴリズムで学習収束速度を比較した。数値をぱっと見たところ後者の方が桁違いに速いことが確認できた。ちょっと改良するだけでこんなに違いが出るなんてすごいと思った(と思っていたけど、やっぱりすごくないかも。確かに学習収束までの「学習回数」は劇的に短くなるが、1回の学習に要する「計算量」が劇的に多くなるので、結果的に適格度トレースを使うと計算時間がより多くかかるという結果になった。全然改良になってない。)。プログラムが下手だからか。何か勘違いしているのか。</p>
<p>(追加)よく読んだら書いてあった。</p>
<blockquote>
<p>適格度トレースを用いた手法は1ステップ手法に比べると計算量が多くなるが、その代わり、学習速度はかなり速くなる。(中略)したがって、オンラインのアプリケーションの場合のように、データ量が少なくて処理を繰り返すことが出来ない場合に適格度トレースを使うことは意味がある。他方、オフラインアプリケーションのように、(高価ではない)シミュレーション等によってデータを容易に生成できる場合には、適格度トレースを使っても見合わない。</p>
<p>強化学習(p.206)</p>
</blockquote>
<p>上の学習速度っていうのは、学習収束「時間」じゃなくて、学習収束までの「回数」のことらしい。そう捉えれば、全ての意味が通る。得られるデータが少なければ、少しの学習回数で収束させなければいけないので、計算量が多いが適格度トレースを使ったほうがよい。データが山ほど生成できれば、学習回数は多くてもよいので、計算量が少ない方を取ったほうがいい。</p>
<p>本を読んでるだけじゃ、あまり注目していなかったところだけど、実際にやってみると、すごく納得できる。</p>
<p>また、結果をグラフで表示したかったが書き方がよくわからない。たしか、gnuplotっていうのが使えると思ったが、Cプログラムとどう連結すればよいのだろう。調べてみる。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 関数近似
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/20/2002 10:57:32 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>今までやってきた強化学習は状態数が離散でそんなに多くない場合だったけど、ロボットや実問題で使うときは、状態が連続、あるいは膨大になってしまい、状態を配列(V(s)やQ(s,a))で管理することはできなくなる。</p>
<p>状態が連続値や膨大になっても強化学習を使えるようにするために、関数近似という手法がある。この部分は本(強化学習)を読んでも図がないためよく分からなかった(数式で書かれてもイメージがわかなかった)のだが、「<a href="http://sysplan.nams.kyushu-u.ac.jp/gen/edu/ContinuousSpace/ContinuousSpace.html" target="_blank">連続な空間における強化学習</a>」のページがとても分かりやすく、直感的な理解ができた。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 迷路問題アプレット
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/22/2002 10:58:39 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>を書いた。迷路問題は強化学習の性能を調べる一つの基本問題になっている。ここではあまり大きい迷路にすると、収束するまでうろうろする時間が長くなって見るに耐えないので、適当に小さくしておいた。コンソールの数字の羅列じゃなくて、こうやってアニメーションで見ると挙動がよくわかる。何かかなり無駄な動きが多いような気がするけれど、どうしてこうなるかはアルゴリズムをよく見てみる。ここで使っているQ学習は学習収束まで時間がかかるという欠点があるが、これで直感的に納得か。</p>
<p>改良点として、インタフェースの改善、パラメータの設定、迷路の大きさの変更を可能にする、グラフで報酬獲得の推移を表示するなどがある。特に、パラメータの設定は、エージェントの挙動に関わりが深いので調べてみる。また、スレッドの扱いで推奨されない機能を使っているらしい。JDKの仕様が変更されて、1年ときに習った方法とはずいぶん違っている。</p>
<p>また、違う強化学習アルゴリズムで実装して、学習収束速度の違いなんかも調べる。その場合は、こんなちっこい迷路じゃなくて、もっと巨大迷路でやった方がいいかもしれない。</p>
<p>【関連】</p>
<ul>
<li><a href="http://d.hatena.ne.jp/aidiary/20050121/1274166470">強化学習で迷路の最短経路を見つける</a>(2005/1/21)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20040918/1251373370">Javaでゲーム作りますが何か?</a>(2004/9/18)</li>
</ul>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: RoboCupへの強化学習の応用
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/24/2002 11:00:22 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p><a href="http://www.robocup.org/" target="_blank">RoboCup</a>というのは、ロボットにサッカーをやらせるやつ。</p>
<p>浅田さんの論文<span class="footnote"><a href="/aidiary/#f1" name="fn1" title="浅田、野田、俵積田、細田:視覚に基づく強化学習によるロボットの行動獲得、日本ロボット学会誌、Vol.13、No.1、1995">*1</a></span>に、RoboCupへ強化学習をどう応用するかが載っていた。今まで迷路のようなグリッドワールドばかりだったから、状態はグリッドのます目だと思い込んでいたが、状態ってもっといろいろに定義できることを知った(というか忘れていた)。</p>
<p>このRoboCupに応用できるなら、<a href="http://robocode.sourceforge.net/" target="_blank">Robocode</a>にも応用できるんじゃないかと思い始めてきた。上の論文を参考に状態空間と行動空間を適切に設定して、予め、シミュレーションを何度も行って最適政策を獲得したロボットを使えば結構強いかも。たぶん、もうやられているだろうけれど。ちょっとやってみると、いい練習になるし、結構面白いかも。</p>
</div>
<div class="footnote">
<p class="footnote"><a href="/aidiary/#fn1" name="f1">*1</a>:浅田、野田、俵積田、細田:視覚に基づく強化学習によるロボットの行動獲得、日本ロボット学会誌、Vol.13、No.1、1995</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 先行者
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/26/2002 11:03:21 AM
CATEGORY: ロボティクス
-----
BODY:
<div class="section">
<p>何か面白いページ見つけた。</p>
<ul>
<li><a href="http://www6.plala.or.jp/private-hp/samuraidamasii/tamasiitop/robotyuugoku/robotyuugoku.htm" target="_blank">ロボット技術の最先端</a></li>
<li><a href="http://www6.plala.or.jp/private-hp/samuraidamasii/kikaku/kahou/kahou7.htm" target="_blank">最先端ロボット技術外伝</a></li>
</ul>
<p>これ本当に中国で作ってんのかな・・・ジョーク・・・だよねえ。ついでに<a href="http://www.hinden5.com/senkousha/" target="_blank">日本製「先行者」開発プロジェクト</a>も。先行者ってはやってんのかな。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 論文の整理
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/27/2002 11:04:33 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>人工知能学会誌の強化学習関連の論文をもう一度読み直して整理し始めた。前は、あまり注意せず読み飛ばしていたようなところで新たな発見がたくさんあった。例えば、<strong>Profit Sharingと適格度トレースは意味的に何か違いがあるのか?</strong>と最近疑問に思っていたのだが、ある論文の中で説明されていた(あまり明らかではないが)。こういう疑問点はどんどんメモしておかないと忘れてしまうので、整理しながらまとめておこうと思う。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: Actor-Critic法
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/28/2002 11:04:52 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>強化学習アルゴリズムのActor-Critic法を実装した。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: Tic-Tac-Toe
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 10/07/2002 11:05:55 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>強化学習の例題として前は迷路をやった。今度は、Tic-Tac-Toe(○×ゲーム)をやってみる。無茶苦茶簡単のようだけど、状態空間は迷路に比べて桁違いに多いように思われる。オセロ、チェス、将棋に比べたらすごく小さいが。一から書くのは分からないところが多いので、『Reinforcement Learning: An Introduction』の<a href="http://www.cs.ualberta.ca/~sutton/book/code/TTT.lisp" target="_blank">Code</a>を参考にしてみる。見てみたら、LISPで書かれていた。もう一つはCと書いてあるけど何か違う(TCLか)。意味をつかんでCかJAVAに翻訳できるといい。ひとまず簡単な例でプログラムとしてどう表現するのか学ばなければならない。論文はプログラムのソースまで公開してくれないので細かいところがよくわからないし。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 認知科学の12のテーマ(Norman)
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 10/07/2002 11:06:45 AM
CATEGORY: 認知科学
-----
BODY:
<div class="section">
<p>信念(Belief)、意識(Consciousness)、発達(Development)、感情(Emotion)、相互作用(Interaction)、言語(Language)、学習(Learning)、記憶(Memory)、知覚(Perception)、行為(Performance)、熟達(Skill)、思考(Thought)。</p>
<p>強化学習に関係があると現段階で思っているのは、発達、相互作用、学習、知覚、行為、熟達のような低いレベルの学習。一方、高次の知能にあたる信念、意識、感情、言語、記憶、思考なんかは強化学習で扱うのは難しいらしい。畝見さんの論文<span class="footnote"><a href="/aidiary/#f1" name="fn1" title="畝見:強化学習, 人工知能学会誌, Vol.9, No.6, pp.830-836, 1994">*1</a></span>にはこう書かれている。</p>
<blockquote>
<p>(強化学習のような)単純な学習メカニズムの積上げだけで、論理や概念を対象とするような高次の学習が実現できるとは考えにくいが、比較的知能が高いとされる多くの動物に共通に観察される強化学習の機能が、人間の知能の基底部にあるとする直観も、さほど的はずれではあるまい。</p>
</blockquote>
<p><strong>今までの人工知能は論理や推論のような大人が持っている高度な知能は実現できた(?)が、人間の赤ん坊や動物などが持っているもっと基本的な知能の方が難しいらしい</strong>。今までの人工知能、ニューラルネット、強化学習などがそれぞれの欠点を補って統合するようなことはありえないか?(言うは易く行なうは難しって言うのは<strong>身にしみて</strong>分かっているけど)それともニューラルネットの単一構造だけで全部表せるのか?今までにない別な方法、または実現不可能って結末もありえるが。</p>
</div>
<div class="footnote">
<p class="footnote"><a href="/aidiary/#fn1" name="f1">*1</a>:畝見:強化学習, 人工知能学会誌, Vol.9, No.6, pp.830-836, 1994</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: テスラーの定理
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 10/09/2002 11:10:54 AM
CATEGORY: 哲学
-----
BODY:
<div class="section">
<blockquote>
<p>もし微分方程式を解く動物がいたら知能をもっていると見なされるだろうが、微分方程式を解くコンピュータは知能的とはいえない。</p>
<p>人工知能 その限界と挑戦(p.38)</p>
</blockquote>
<p>全くその通りだ。しかし、一体何故なんだ。<strong>コンピュータにアルゴリズムを与えているのが人間だからだろうか?</strong>それは違うだろう。<strong>人間に微分方程式を解くアルゴリズムを与えているのも人間なのだし</strong>。これに対する答えの一つがホフスタッターさんのテスラーの定理。</p>
<blockquote>
<p>人工知能とはなんであれ、まだ為されていないところのものである。</p>
<p>ゲーデル、エッシャー、バッハ(p.591)</p>
</blockquote>
<p><strong>実現できたら知能の枠から外す</strong>ってこと。微分方程式も解けるようになったら知能と見なさなくなる。卑怯だね~。チェスができる機械は人工知能草創期は「これができたら知能と言える」とされていたらしいが、できてみると「人間のやり方と全然違う」ってなって知能とは見なされなくなるのと同じだなと思った。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: AIBOと強化学習
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 10/09/2002 11:10:55 AM
CATEGORY: 強化学習
CATEGORY: ロボティクス
-----
BODY:
<div class="section">
<p>『<a href="http://www.cmagazine.jp/" target="_blank">C Magazine</a>』にロボットを制御するという特集があった。読んで見るとAIBOの動作を制御するOPEN-R SDKに関するものだった。その中に、AIBOの設計者のインタビューで、「AIBOは飼い主に慣れるのはどんな風にやっているんですか」みたいな質問があった。<strong>設計者によると強化学習を使っているとのこと</strong>だった。頭をなでると正の報酬だろうか。詳細は企業秘密かな。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: AIとゲーム
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 10/09/2002 08:48:59 PM
CATEGORY: ゲームAI
-----
BODY:
<div class="section">
<p>人工知能の分野でゲームと言うと、チェス、将棋、碁みたいな割と高尚(?)なものばかり扱われているみたいだけど、TVゲームみたいなのにも使われている。</p>
<p>『がんばれ森川君2号』ってのにはニューラルネットワーク。『アストロノーカ』っていう野菜を作るみたいなのには遺伝的アルゴリズム。『シーマン』ってヘンな人面魚と話すやつは音声認識。いろいろある。</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00006LJP3/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51WMJJD08YL._SL160_.jpg" class="hatena-asin-detail-image" alt="がんばれ森川君2号" title="がんばれ森川君2号"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00006LJP3/hatena-hamazou-22/">がんばれ森川君2号</a></p>
<ul>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%BD%A5%CB%A1%BC%A1%A6%A5%B3%A5%F3%A5%D4%A5%E5%A1%BC%A5%BF%A5%A8%A5%F3%A5%BF%A5%C6%A5%A4%A5%F3%A5%E1%A5%F3%A5%C8" class="keyword">ソニー・コンピュータエンタテインメント</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1997/05/23</li>
<li><span class="hatena-asin-detail-label">メディア:</span> Video Game</li>
<li><a href="http://d.hatena.ne.jp/asin/B00006LJP3" target="_blank">この商品を含むブログ (12件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00005OVW9/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51XSMKVPRRL._SL160_.jpg" class="hatena-asin-detail-image" alt="アストロノーカ" title="アストロノーカ"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00005OVW9/hatena-hamazou-22/">アストロノーカ</a></p>
<ul>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%A8%A5%CB%A5%C3%A5%AF%A5%B9" class="keyword">エニックス</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1998/08/27</li>
<li><span class="hatena-asin-detail-label">メディア:</span> Video Game</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 6回</li>
<li><a href="http://d.hatena.ne.jp/asin/B00005OVW9" target="_blank">この商品を含むブログ (27件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00005QHP1/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51XRQ3FPQTL._SL160_.jpg" class="hatena-asin-detail-image" alt="ガゼー博士の実験島 シーマン?禁断のペット?同梱版" title="ガゼー博士の実験島 シーマン?禁断のペット?同梱版"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00005QHP1/hatena-hamazou-22/">ガゼー博士の実験島 シーマン?禁断のペット?同梱版</a></p>
<ul>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%A2%A5%B9%A5%AD%A1%BC" class="keyword">アスキー</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2001/11/15</li>
<li><span class="hatena-asin-detail-label">メディア:</span> Video Game</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 3回</li>
<li><a href="http://d.hatena.ne.jp/asin/B00005QHP1" target="_blank">この商品を含むブログ (10件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>これは予想だが、強化学習を使っているのもかなりあるんじゃないか。環境(プレイヤー含む)に適応して徐々に強くなっていくみたいなの。割と戦略シミュレーションみたいなのをやるが、長くやってると、敵はワンパターンであまりびっくりさせるようなことはほとんどやってこない(それでも、まるで本当の人間がやってるみたいに感じるけれど)。思考ルーチンが弱いってよく批評されているが、強化学習を使えばプレイヤーに適応してもっとよくなるかもしれない(言うは易く行うは難しの典型)。でも、こういうゲームの思考ルーチンって一体どういう風に書かれているんだろう。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: MSDN-AAの説明会
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 10/09/2002 11:11:25 AM
CATEGORY: 日記
-----
BODY:
<div class="section">
<p>を聞きに行った。Visual Studio .NETが無料で使えるなんてとてもいい。前にVisual C++でWin32 SDKをちょっとかじったが複雑すぎて挫折してしまった。相当本腰いれてやらないと習得できそうにない。最初にやった言語がJavaということもあり、C++よりはJavaの方が構文も綺麗で分かりやすくて使いやすいのだが、Windows最盛期ではC++とWin32API、MFCみたいなのが使えないとまずいのだろうか。C#というのはJavaに近いみたいなので勉強してみようかな。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 心と脳のしくみ なぜ人は喜び、そして悲しむのか
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 10/11/2002 11:12:56 AM
CATEGORY: 脳科学
-----
BODY:
<div class="section">
<p><a href="http://www.newtonpress.co.jp/" target="_blank">Newton</a>の特集を読んでみた。感情が物質から引き起こされるなんて不思議だ。そのうち自由に薬でコントロールできるようになるんだろうな(そんなものがなくてもヒトには理性があるが)。キレるしくみとか、アルコールを取ると感情が高まるしくみなんかも載っていて興味深かった。</p>
<p>読売新聞で江崎玲於奈さんが、宇宙と生命が最も興味ある対象と言っていた。自分は<strong>宇宙と生命と脳</strong>が科学のフロンティアだと思ってる。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: tic-tac-toe(三目並べ)を学習
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 10/14/2002 11:15:51 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>するプログラムを書いた。参考は、『Reinforcement Learning: An Introduction』の<a href="http://www.cs.ualberta.ca/~sutton/book/code/TTT.lisp" target="_blank">Code</a>。ただし、一部の構文(主にfor文)が自分の環境では使えなかったので書き直した。100回ずつ勝負して学習させた勝率の推移を見てみると、</p>
<p><pre>
24勝77敗(0.24)
37勝64敗(0.37)
47勝54敗(0.47)
50勝51敗(0.50)
61勝40敗(0.61)
61勝40敗(0.61: 収束)
</pre></p>
<p>ただし、引き分けは敗れたことにする。</p>
<p>このように着実に勝率を伸ばしている。引き分けが敗に入れることを考えれば、61勝は多いだろう。ちなみに三目並べは強い人同士でやれば絶対に引き分けになるが、それでは0勝100敗にしかならない。そこで、相手にはランダムに手を打たせることにした。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 倒立振子制御問題
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 10/15/2002 11:18:26 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>今度は、倒立振子制御問題を調べてみる。手の平に棒を立てて倒れないように調節する方法を強化学習で獲得させるのが目的。大体、<a href="http://www.nero.uni-bonn.de/course/polebalancer/polebalancer.html" target="_blank">pole balancing problem</a>みたいな感じ。</p>
<p>参考文献: A.G.Barto, R.S.Sutton, C.W.Anderson: <a href="http://www.cs.ualberta.ca/~sutton/publications.html" target="_blank">Neuronlike Adaptive Elements That Can Solve Difficult Learning Control Problems</a></p>
<p>参考コード: <a href="http://www.cs.ualberta.ca/~sutton/book/code/pole.c" target="_blank">Pole-Balancing Example</a></p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 想像と創造
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 10/16/2002 03:16:39 PM
CATEGORY: 日記
-----
BODY:
<div class="section">
<blockquote>
<p>ぼくは先日真実とも思われぬ架空なことどもが頭にうかんできたと申しましたが、それは決して架空ではないのです。誰かが想像しうることはすべて他の人々が将来実現できることなのです。</p>
<p>ジュール・ヴェルヌ「父への手紙」</p>
</blockquote>
<p>ジュール・ヴェルヌの代表作『八十日間世界一周』のあとがきにこのような一節があり、心に残った。</p>
<p>つまり、「<strong>人が想像できることは創造できる</strong>」ということだろう。日本語で想像と創造が同じ音なのは意味深いことだと思う。これらの言葉を創造した人は上のようなことを意識していたのではないだろうか。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 擬似乱数
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 10/19/2002 11:19:22 AM
CATEGORY: 複雑系
-----
BODY:
<div class="section">
<p>前から思っていたのだけれど、擬似乱数って不思議に思う。疑問点は、<strong>コンピュータの決定的なアルゴリズムでどうやって乱数(に似たもの)を生成するのか</strong>ということ。決定的な手続きでランダムな数(といっても本当にランダムではないから擬似なのだけど)を生成するというのは不思議だ。今度乱数生成のアルゴリズムを調べてみたい。</p>
<p>人工知能も根本的には乱数みたいな感じがする。<strong>決定的なアルゴリズムで</strong>乱数みたいな知能(知能がでたらめで秩序がないという意味ではなくて、乱数のように予測不可能という意味)を創ろうというのだから。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 次元の呪い(Curse of dimensionality)
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 10/23/2002 11:23:22 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>強化学習の一つの問題に次元の呪いがある。これは、状態数が指数関数的に増大する傾向のことを指す。ほとんどの問題では、状態数が大きすぎて、表形式(配列でQ[S][A]のように価値関数を表す方式)で管理することができなくなる。前にやった迷路はそんなに大きくないので、表形式でできた。</p>
<p>しかし、tic-tac-toeは、○と×があって、置けるところが9個あるから、単純計算で2の9乗くらいある。これでも一般的な問題に比べて全然大きくないが、500個近い配列(しかもその大部分は使わない)を用意しておくのは無駄である。</p>
<p>このようなときには、関数近似という手法を使うのが一般的らしいが、tic-tac-toeで参考にしたSutton,Bartoのプログラムはハッシュ法を使っていて少し違うように思っていたのだがやっとわかった。『強化学習』(p.223)にハッシュ法で次元の呪いを解決する話が載っていた。簡単な例だけど実例があると理解がずいぶん早まる。ニューラルネット、タイルコーディングなどもっと複雑な関数近似法もあるので順次調べていく。タイルコーディングは、倒立振子制御に使われているように見受けられる。概念は同じなのに時代によって名前が違う(それとも似ているだけで実質違うのか)ので混乱しがちになっている。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 感情とは何か
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 10/23/2002 11:23:23 AM
CATEGORY: 認知科学
-----
BODY:
<div class="section">
<p>Lazarusさん<span class="footnote"><a href="/aidiary/#f1" name="fn1" title="Lazarus: Progress on a cognitive-motivational-relational theory of emotion, American Psychologist, 46, 819-834">*1</a></span>は、感情を次のように分類している。</p>
<dl>
<dt>怒り(Anger)</dt>
<dd> 自分を貶める攻撃。 </dd>
<dt>不安(Anxiety)</dt>
<dd>不確実な、実在する脅威への直面。 </dd>
<dt>恐怖(Fright)</dt>
<dd>即時的、具体的、圧倒的な肉体的危機への直面。 </dd>
<dt>罪悪感(Guilt)</dt>
<dd>道徳的規則に対する違反。 </dd>
<dt>恥(Shame)</dt>
<dd>自己の理想に応えられないこと。 </dd>
<dt>悲しみ(Sadness)</dt>
<dd>取り返しのつかない喪失を経験すること。 </dd>
<dt>妬み(Envy)</dt>
<dd>誰か他人の持っているものを欲しくなること。 </dd>
<dt>嫉妬(Jealousy)</dt>
<dd>ある人への愛情の喪失・あるいは脅威に対して、第三者に憤慨すること。 </dd>
<dt>嫌悪(Disgust)</dt>
<dd>我慢できないもの、または考えに近づきすぎること。 </dd>
<dt>幸福(Happiness)</dt>
<dd>目標実現への進歩。 </dd>
<dt>自尊心(Pride)</dt>
<dd>価値のあるものや達成についての信頼を得ることによる、自己同一性の強調。 </dd>
<dt>安心(Relief)</dt>
<dd>目標にあわない悲惨な状態が消失、あるいは、よい方向に変化すること。 </dd>
<dt>願望(Hope)</dt>
<dd>最悪の事態をおそれながらも、よりよいものへ憧れること。 </dd>
<dt>愛(Love)</dt>
<dd>愛情への願いあるいは参加。 </dd>
<dt>同情(Compassion)</dt>
<dd>誰かの苦しみや、助けたいという気持ちによって動かされること。 </dd>
</dl>
<p>もとは、上の論文だが、岡田さんの論文<span class="footnote"><a href="/aidiary/#f2" name="fn2" title="岡田:感情に左右される思考, Computer Today, pp.12-18, 2002">*2</a></span>に日本語訳が載っている。あまりにも面白いので忘れないうちに引用。<a href="http://www.saiensu.co.jp/CT/" target="_blank">Computer Today</a>は、他の雑誌と違って取り上げる内容が毎回面白い。</p>
<p>怒りが自分を貶める攻撃と言う点はちょっとよく分からないがあとは、大体分かる。日本では、感情は「喜怒哀楽」というが、上の表では、楽(ラクスルじゃなくてタノシイの方)がないように思う(喜ぶは幸福に入ると思われる)。他にもこの中でヒトに特有な感情はあるのかなど興味深い点がある。</p>
<p>しかし、ここでの本題は、「感情とは何か」という点。ヒトの進化の過程で感情が淘汰されずに残ったということは、感情には重要な機能があるはずだと考える(まだ進化の過程だからこれからどうなるか分からないが)。では、その機能とは何なのか。その機能の仮説の一つに<strong>ソマティック・マーカー仮説</strong>というのがあるらしい。これは、<strong>ヒトが普段の生活で行う考慮すべき選択肢を感情によって大幅にそして瞬時に減らし、限定された数の選択肢について合理的な判断を行うことを可能にしている</strong>。というもの(詳しくは、Computer Todayの上の記事参照)。</p>
<p>人工知能にはフレーム問題というのがある。フレーム問題とは、ある状況においてどこまで考慮に入れるべきかが判断できないという問題である。つまり、コンピュータは考慮すべき選択肢を判断できないため、その状況で可能な選択肢をしらみ潰しに調べるしかない(実際はヒューリスティクスを使って探索空間を減らすなどいろいろ研究されているみたいだが)。</p>
<p>もし、ソマティック・マーカー仮説が正しいなら、<strong>フレーム問題を解決する機能として感情が使われのかもしれない</strong>。しかし、重要なことは、ヒトは感情という制御できない機能を持っているがために時として合理的な判断ができず、誤りを犯してしまう点。ヒトの機能を追求している人工知能には必要かもしれないけれど、一般的なコンピュータにとっては致命的だ。でも、人工知能にとってみても「制御できない」という感情の性質はいいのか悪いのか。</p>
</div>
<div class="footnote">
<p class="footnote"><a href="/aidiary/#fn1" name="f1">*1</a>:Lazarus: Progress on a cognitive-motivational-relational theory of emotion, American Psychologist, 46, 819-834</p>
<p class="footnote"><a href="/aidiary/#fn2" name="f2">*2</a>:岡田:感情に左右される思考, Computer Today, pp.12-18, 2002</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 倒立振子アプレット
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 10/26/2002 11:26:55 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>を書いた。棒を上に立てたままうまくバランスを保つ方法を<strong>自動的に</strong>獲得できる。最終的には、100000ステップ(シミュレーション内の時間では、1ステップ0.02秒なので、30分くらい)バランスを保てるようになる。もっと学習時間を長くすればもっと長くできるだろう。</p>
<p>強化学習のアルゴリズムの部分は、<a href="http://www.cs.ualberta.ca/~sutton/book/code/pole.c" target="_blank">Pole-Balancing Example</a>をJavaの構文(オブジェクト指向ほとんど使わないで)に直しただけで全く同じ。描画部分のみ自分で書いた。</p>
<p>上のコードは、BOXES SYSTEMというので状態を粗く分割している。これは、名前が違うだけでタイルコーディングと同じと思われる(よく調べたらぜんぜん別物でした)。強化学習には、ASE(Associative Search Element)とACE(Adaptive Critic Element)というのを使っているが、Actor-Criticアルゴリズムと基本は同じに感じる。一部意味不明のまま使っているので今度調べる。</p>
<p>今回、一番面白かったのは、物理のシミュレーションの部分。今までいろいろ物理シミュレーションのアプレット見て、どうやるんだと疑問に思っていたのだが、少し分かった。微分方程式の扱いも少しだけ分かった。</p>
<p>これを実世界でやったらどうなるんだろうか。どんな問題が起こるのか。このシミュレーションは簡単化していて摩擦係数を無視しているが、実世界では摩擦係数もあるし、空気の振動など台車と棒の状態以外にも微妙な影響が入ってくる。他にもセンサの精度が悪くて棒や台車の状態を正確に測定できない。実際に0.02秒で1ステップの学習ができるかなどの問題が考えられる。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: ロボット、サイボーグ、ヒューマノイド、アンドロイド
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 10/27/2002 11:28:44 AM
CATEGORY: ロボティクス
-----
BODY:
<div class="section">
<p>は一体何なのか。全部聞いたことはあるが、違いがよく分からなかったので調べてみた。ロボットとサイボーグはきちんと定義された科学用語。一方、ヒューマノイドとアンドロイドはSF用語である。</p>
<p>ロボットという言葉は、カレル・チャペック(1890-1938)の造った言葉で、戯曲「ロッサムズ・ユニバーサル・ロボット(R・U・R)」で初めて使われた。チェコ語で<strong>奴隷</strong>を意味する言葉が語源。ロボットの定義はさまざまあるみたいだが、イミダスによると、</p>
<blockquote>
<p>感覚や知能を用いて作業ができ、人間や動物に似た外見や機能を持つ機械である。</p>
<p>imidas'01(p.1022)</p>
</blockquote>
<p>という定義であった。完全に人型でなくても、産業ロボットやロボットアームみたいなのも入る。サイボーグとは、cybernetics organismの略称。サイバネティクスは、N.ウィナーが提唱した概念。人工知能の前身であった。イミダスによると、</p>
<blockquote>
<p>通信と制御と統計力学の問題を、機械も生物も含め一括して研究する学問。</p>
<p>imidas'01(p.894)</p>
</blockquote>
<p>と定義されている。確か、ウィナーの著書で『人間機械論』っていうサイバネティクスの本を前に読んだ気がする。サイバネティクスの重要な概念にフィードバック制御理論というのがあって、これはニューラルネット、強化学習にも影響を与えている。で、肝心のサイボーグというのは、広辞苑によると、</p>
<blockquote>
<p>異常な環境への順応などのため、動物、特に人間の生体機能の重要な部分を電子機器などに代行させたもの。</p>
<p>広辞苑 第3版</p>
</blockquote>
<p>と定義されている。Webサイトでいくつか調べてみると、別に電子機器だけじゃなくて、人工臓器、義手、義眼なんかに置き換えている人はみなサイボーグに入るとあった。しかも、コンタクトなんかもそうって書いてあるから驚いた。本当か?</p>
<p>ヒューマノイドとアンドロイドはSF用語であり、きちんと定義されていないらしい。どちらも人間の形をしたロボットという意味。androもhumanも人間の意味。アンドロイドは、人が造ったロボットで、人間と見分けがつかないというニュアンスが強いらしい。一方、ヒューマノイドは、宇宙から来た人間型ロボットというニュアンスがあるらしい。早稲田大学はヒューマノイド研究で有名だが、どうしてヒューマノイドという言葉を使ったんだろう?それに研究をしているなら、きちんと科学用語として定義しているのだろうか?</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: マッチ箱の脳
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 10/28/2002 11:30:33 AM
CATEGORY: ゲームAI
-----
BODY:
<div class="section">
<p>のWeb版があった。まだ全部読んでいないけど、最後のAI対談#2が面白かった。今度、本も買ってみたい。ちなみに、強化学習は、「考えない知能」というところに分かりやすく紹介されていた。考えない知能というのは初めて聞いたが、納得するフレーズだ。総括で<a href="http://people.csail.mit.edu/brooks/index.shtml" target="_blank">R.Brooks</a>について言及しているが、この人の著作を読んでみたいと思った。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 卒論計画
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 11/01/2002 00:34:56 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>今月は、卒論で必要な外国の重要論文を読むことにした(それをしないと孫引きになってしまう)。ひとまず、リストを作って探すことからはじめないといけない。今日から3日間で「関数近似」に関する論文を調べることにする。後は、3日から5日くらいで区切って各分野を順に調べていく。</p>
<p>各分野は、基礎(MDPなど)、動的計画法、TD法、Q学習・Sarsa、Profit Sharing、探査と搾取のトレードオフ、適正度の履歴、関数近似、プラニング、POMDP、テストベッド(迷路、Pole Balancing、Mountain Carなど)、ゲーム(チェス、バックギャモン)、マルチエージェント強化学習、ロボット。</p>
<p>終わるのかな・・・それ以前に卒論になるのか心配。発表はさらに心配。いつも杞憂なんだけれど、不安の感情は抑えられない。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 車の山登り問題(Mountain-Car Task)
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 11/02/2002 00:36:15 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>次の強化学習の例題として上のを調べてみることにした。これには、<a href="http://www.cs.ualberta.ca/~sutton/book/8/node6.html" target="_blank">タイルコーディング</a>(tile coding)という手法が使われている(非常に重要)。Suttonさんの本読んでもいまいち理解できなかったので、プログラムを調べてみることにした。またアプレットにできたら面白いと思う。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 車の山登り問題アプレット
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 11/02/2002 00:36:16 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>一日でできた。アルゴリズム部はJavaに直して、描画部分を付け加えた。青い丸が一応車で山の右側に抜ける方法を獲得する。車は右へ到達すると初期位置に戻る。何回か繰り返すと短時間で登れるようになっていく。</p>
<p>初めてタイルコーディングを使ったがコードを見ても意味が分からなかった(タイルコーディングの意味自体は直感的には理解できたが)。アルゴリズムはもう少し調べないといけない。あと、Javaで曲線を描く方法は点の連続で書いたが汚い。短い線をつなぐように書き直したほうがいい。ソースは汚いのでもう一度後で書き直す。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 理工展
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 11/04/2002 00:37:16 PM
CATEGORY: 日記
-----
BODY:
<div class="section">
<p>の公開授業を聴きに行った。白井先生の「言語科学と人工知能」という話。あまり目新しい話はなかったけど、WABOT-2(ラウンジに飾ってあるオルガンを弾くロボット)のデモビデオが見られたのは良かった。初めて動いているところを見た。会話もして、結構いい曲を弾いていた。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: アクセスログ解析
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 11/06/2002 00:37:56 PM
CATEGORY: 日記
-----
BODY:
<div class="section">
<p>とかしてみた。特にGoogleとかで外部からどんな経路で来ている人がいるか気になったので調べてみた。というか、Googleでこのページがヒットするのかも怪しかったんだけど。</p>
<p>調べてみて非常に驚いたのだが、適当にキーワードを入力すると検索結果の2ページ以内に入っていたので結構うれしかった。で、ログを調べて見ると、何人かは、強化学習のプログラム関係のキーワードを入力して辿り着いたらしい。日本のページでは強化学習のプログラムを載せたページがあまりない(自分も見つからず苦労した)ので、そういうページにできればこの自己満足ページも特色が出せるかもしれないと思った。</p>
<p>他のいくつかのキーワードでもヒットするのだが、ここに辿り着いた人は大した情報がなくてがっかりしたことが容易に想像できた。申し訳ないです。必要な情報を素早く得るための検索ってやっぱり難しいんだなと実感した。</p>
<p>あと、公開しているということに改めて気づいて少し怖気づいた。今まであまり気にせずに好き勝手書いてきたけど、公開している以上責任があるので、気をつけないといけない。特に、今まで引用たくさんしたけど、最初の方は引用元が少し曖昧なところがあったように思う。まずい。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: ロボットの技術動向―特許情報から見た開発動向と今後の方向性―
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 11/09/2002 09:19:55 PM
CATEGORY: ロボティクス
-----
BODY:
<div class="section">
<p>という特許庁の岩谷一臣さんの講演を聴いた。ロボットとは、産業用ロボット、ヒューマノイドロボット、エンターテインメントロボットなどが含まれている。その技術動向をまとめると、</p>
<ul>
<li>日本は、産業用ロボットの出荷台数、特許数ともに世界一であるが、欧米は追い上げてきている。ロボット企業は日欧が上位を独占。 </li>
<li>産業用ロボットの需要は、伸び続け、2010年には約7000-8900億円にも上ると予想されている(1999年は約5000億円)。 </li>
<li>非製造業ロボットとしては、農林水産、畜産業、運輸、倉庫、医療、福祉の分野で需要が高まると予測。 </li>
<li>パーソナルロボットも2010年には今の50倍の需要があると予測されている(ロボットのパーソナル化が成功することが前提なので疑問符つき)。 </li>
<li>ロボット技術は何に使うのか?という批判。シーズからニーズ重視へ。 </li>
<li>日本のロボット研究はヒト型、二足歩行、自律移動のようなヒトと共存するようなタイプを指向。 </li>
<li>一方、欧米は現実主義的で産業用ロボットの高度化を指向。 </li>
<li>日本はロボットへの思い入れが強い。一方で欧米は単なるマシンとの見方が強い。国民性(宗教、文化など)の差が出ている。 </li>
<li>特許の出願状況は、移動型ロボット、把持部(要するに手の部分)、画像処理に関するものが多い。自律・移動型ロボットに必須の人工知能技術、移動型ロボットの制御技術は比較的少ない(しかし、論文としては一番多い)。特許化できるほど技術が成熟していない? </li>
<li>AIBOのような対話型パーソナルロボットの出現で音声認識に関する研究が急増。 </li>
<li>発表されている論文数ではハードに関するものより、ソフトウェア(ロボットの制御プログラミング、人工知能)に関するものが急増している。 </li>
<li>大学では、科学的な課題に関するロボット研究開発が進められているのに対し、企業では機能性、実用性を重視する研究開発が進められている。相互の連携が有効に作用していないとの見方が有力。 </li>
<li>日本のロボット政策は要素技術の開発を目的としたものが多い。一方、欧米では宇宙分野など大規模プロジェクトとして明確な目的を持っていて市場の創造、発展に結びついている。 </li>
<li>自律・移動ロボットは、現在のところニーズがわかりにくく、研究が進めにくい。 </li>
<li>デファクトスタンダードはまだない。 </li>
</ul>
<p>自分が重要だと思ったところをまとめた。上の中で一つ疑問に思ったのは、ロボットが福祉、介護に使われるっていうところ。お年寄りは嫌がらないのかな。何となく拒否反応を起こすような気がするんだが。それに人間のヘルパーも充実してきそうだし、ロボットの需要って本当にあるのだろうか。</p>
<p>他にも学習アルゴリズムの動向の話もあった。主に遺伝的アルゴリズム、強化学習、教師信号(教師あり学習?)が挙げられていた。また、自律移動型ロボットに関する重要な論文の著者としては、知能には身体が必要であると唱えたR.Brooksさん、強化学習のR.S.Suttonさん、遺伝的アルゴリズムのJ.H.Hollandさんなどの名前が挙げられていた(知ってるのはこの3人だけだった)。</p>
<p>自律・移動型ロボットに必要な技術としては、移動型ロボット技術、人工知能技術、移動型ロボットの制御技術、画像処理技術、音声認識技術がとりあげられていた。</p>
<p>また、大学・国立研究機関での研究は、10年~15年後に実用化になる例が多いと説明があった。実際、ASIMOの二足歩行は、1970年代には早稲田で研究されていた!(のですが、HONDAの2足歩行の方がより優れているのは当然です)大学と企業の研究の違い(さらに言えば欧米と日本の研究の違い、欧米は基礎理論・重要アルゴリズム・新概念などを独占している)なんかを考えさせられる。ニーズとシーズの話でも同じようなことを考えた。ちなみに、顧客が求めるものがニーズ(needs)、新しい特別な技術がシーズ(seeds)らしい。</p>
<p>他には、<strong>ロボットの今の状況が昔の人工知能の状況に少し似ている</strong>なと(不吉なことを)考えた。今、ロボットはROBODEXとかでデモしたりテレビでも取り上げられたりして、結構盛んだが、これって1980年代あたりのエキスパートシステムが人工知能の成功例として盛んに宣伝されたときと似てるんじゃない?ロボットが人工知能と同じ道をたどらないきちんとした(楽観論ではない)見通しってついているのだろうか。自分は人工知能の復権と自律ロボットの最盛期は必ず来て、非常に重要になると(大した根拠もなく)信じているけれど、実際どうなんだろうか。確固とした根拠が欲しい(ってこれからそれを見つけるんだけれど)。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: HTML
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 11/09/2002 00:40:14 PM
CATEGORY: 日記
-----
BODY:
<div class="section">
<p>に関する本を買った。</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873111277/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51PDAT1TB9L._SL160_.jpg" class="hatena-asin-detail-image" alt="HTML & XHTML 第5版" title="HTML & XHTML 第5版"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873111277/hatena-hamazou-22/">HTML & XHTML 第5版</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/Chuck%20Musciano" class="keyword">Chuck Musciano</a>,<a href="http://d.hatena.ne.jp/keyword/Bill%20Kennedy" class="keyword">Bill Kennedy</a>,<a href="http://d.hatena.ne.jp/keyword/%B8%B6%CE%B4%CA%B8" class="keyword">原隆文</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%AA%A5%E9%A5%A4%A5%EA%A1%BC%A1%A6%A5%B8%A5%E3%A5%D1%A5%F3" class="keyword">オライリー・ジャパン</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2003/05/26</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 1人 <span class="hatena-asin-detail-label">クリック</span>: 26回</li>
<li><a href="http://d.hatena.ne.jp/asin/4873111277" target="_blank">この商品を含むブログ (13件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>今さらという気もしないではないが、詳しくは知らなかったし、HTMLの良い書き方なんかも知らないので必要だった。</p>
<p>今、Webでかなり不便なのは、数式がうまく書けないことじゃないか?いろいろサイト見て回っても、数式を画像ファイルで埋め込んでいるのしか見たことがない。LaTeXのソースをHTMLに変換する(数式はGIFにして)プログラムはあったが、直接LaTeXみたいに書けないのだろうか。プラグイン(?)みたいなのでブラウザに機能追加して数式タグ(&#60;math&#62;&#60;/math&#62;みたいなの)の中にLaTeXの数式(&#60;math&#62;\frac{1}[2}&#60;/math&#62;とか)を書けたら最高にいいと思う。Googleで「HTML 数式」とかやると、LaTeXの数式を変換して、XMLで数式を書けるようにするというのはあった。でも、それだとHTMLのソースは汚くて読めたもんじゃないと思う。上のようにLaTeXと全く同じで書くには、何か技術的にできない理由があるのだろうか。誰かがやっていそうな気がするけど。</p>
<p>---</p>
<p>はてなはLaTeX風の記法で数式書ける機能がある。こんな感じに</p>
<p><img src="http://d.hatena.ne.jp/cgi-bin/mimetex.cgi?e^{i\pi}~=~-1" class="tex" alt="e^{i¥pi} = -1"></p>
<p>すごい!!</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 人工知能は宝の山
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 11/10/2002 08:50:57 PM
CATEGORY: ゲームAI
-----
BODY:
<div class="section">
<p><a href="http://www.1101.com/morikawa/index_AI.html" target="_blank">森川君</a>に続け!</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 強化学習の実ロボットへの適用例
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 11/11/2002 00:48:01 PM
CATEGORY: 強化学習
CATEGORY: ロボティクス
-----
BODY:
<div class="section">
<ul>
<li><a href="http://www.fe.dis.titech.ac.jp/research/rl/rl-robotics.html" target="_blank">強化学習の実ロボットへの適用例</a></li>
</ul>
<p>非常に面白い映像だった。学習初期ではでたらめなのが、学習後では目的動作を果たしている。人間をはじめとする動物にもあのような徐々に動作を獲得する仕組みが備わっていそうと実感した。あのロボットは何か生きているようにも思えてしまうから。</p>
<p>シミュレーションでも面白いが、実世界で動くロボットだとまた違う感動を覚える。ちなみに、ほふく前進を行うロボットのアプレットが<a href="http://www.fe.dis.titech.ac.jp/~gen/robot/robodemo.html" target="_blank">A Reinforcement Learning in Robotics</a>にある。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 不完全知覚問題
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 11/14/2002 00:51:41 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>今週は不完全知覚についてやった。不完全知覚問題とは、エージェントの知覚が不十分であるため、異なる状態を同じ状態と判断してしまう問題である。例を挙げる。</p>
<p><pre>
■■■■■■ S:スタート状態
■S○  ■ G:ゴール状態
■■■■ ■
■G×☆ ■
■■■■■■
</pre></p>
<p>このような単純な迷路(?)の環境を考える。従来の強化学習では全ての状態を区別して知覚することを仮定していた(前に作った迷路もそう)。しかし、ここではエージェントの知覚できる範囲は周囲8マスと制限する。すなわち環境を不完全にしか知ることができなくしてしまう。こうすると不完全知覚が発生する。</p>
<p>例えば、○の状態にいるエージェントが知覚できる状態は、周囲8マスなので、</p>
<p><pre>
■■■
   
■■■
</pre></p>
<p>である。一方、×の状態にいるエージェントが知覚できる状態も、</p>
<p><pre>
■■■
   
■■■
</pre></p>
<p>となる。○と×という本来は異なる状態なのに、知覚が不十分なため同じ状態と見なしてしまうことになる(全体が知覚できる場合はもちろん区別できる)。これが不完全知覚問題である。</p>
<p>この問題は次のような事態を引き起こす。強化学習の目的は各状態(迷路では今いる位置)において取るべき行動(迷路では上、下、右、左に進む)を決定することである。○の位置で取るべき行動は、ゴールに近づくために「右に進む」である。よって、エージェントは○で右に進むことを学習する。</p>
<p>そのままどんどん学習していって×まで来たとしよう。ここでエージェントは知覚が不十分なため×を○と勘違いしてしまう。そのため、○で学習した「右へ進む」を×でも実行し、☆に戻ってしまう。後は、×と☆を行ったり来たりするだけでゴールにたどりつくことはできない(実際には、探査のためにランダム行動をとるのでGに行き着ける確率は多少ある)。</p>
<p>このような不完全知覚を引き起こすクラスを部分観測マルコフ決定過程(POMDP:Partially Observable Markov Decision Process)という。実用的な問題のほとんどがPOMDPであり、不完全知覚を引き起こす。例えば、ロボット。ロボットはセンサーで環境の状態を認識するが、センサーは環境の全てを知覚することはできないし、ノイズが発生する。そのため、異なる状態を同じ状態として認識してしまい上の迷路のように目的を達成できなくなることが起こるらしい。</p>
<p>不完全知覚の問題は強化学習を応用する上で重要な問題であり、近年(といっても10年くらい前からあるみたいだが)盛んに研究されるようになってきている。</p>
<p>前に作った迷路を不完全知覚にしたとき、どれほどパフォーマンスに差ができるのか今度実験してみたい。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: ime.nu
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 11/18/2002 00:55:46 PM
CATEGORY: 日記
-----
BODY:
<div class="section">
<p>最近、やけにアクセス数が多いと思っていた。カウンタ見ていても一日に100くらい増えている。何か変だと思って、アクセスログを見てみたらほとんどが<a href="http://ime.nu" target="_blank">http://ime.nu</a>という変なURLからだった。</p>
<p>少し調べてみたところ<a href="http://www.2ch.net/" target="_blank">2ちゃんねる</a>がリンク先であることがわかった。このようにime.nuというサイトをはさんでリンクすると、どこのスレッド(2ちゃんねるの掲示板の区分けみたい)からリンクされているか隠すことができるらしい。すごい巧妙だ。</p>
<p>'HTTP_REFERER'というので普通はリンク元を知ることができるが、一つ前のリンク元だけでその前までは分からない。つまり、間にime.nuが入るとime.nuまでは分かるが、その前のリンク元が分からないと言うわけ。</p>
<p>でも何でリンクしてるんだろうか?こんな個人ページをどうやって見つけ出したのか?知りたくなる。2ちゃんねるの特性から考えると多分馬鹿にされてると思われるが。</p>
<p>公開している以上勝手にリンクされても内容を批判されても文句は言えないが、隠されていると思うと少し気味が悪いような気がする。対策があるみたいだが、これはあまり意味がないのではないか。<a href="http://ime.nu/" target="_blank">http://ime.nu/</a>の部分外したやつ直接URL打ち込めばいいんだし。</p>
<p>もしime.nuから来ていてこれを見た人がいたら是非見たいので元を教えてください!って無理か・・・</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 強化学習と報酬
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 11/20/2002 08:47:17 PM
CATEGORY: 認知科学
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>考えたことのメモ。</p>
<p>強化学習の特徴の一つに報酬に基づいているというのがある。でも報酬って一体何なんだろうか。現実世界に当てはめた場合は何に相当するのか。例えば、AIBO(本当の犬でもそうだが)が「おりこうな」行動をして頭をなでられたら報酬であり、その「おりこうな」行動が強化されるだろう。これはわかりやすいがもっと一般的に考えると何にあたるんだ。報酬は環境から与えられるというのも何だかあまりぴんとこない。<strong>気持ちいいとかうれしいとかいう(報酬にあたりそうなもの)のは人(エージェント)の内部から起きているんじゃないか?</strong>外部から与えられても人によって感じ方は違うだろうし。</p>
<p>あと、報酬と教師信号の差もよくわからない。例えば、ロボットが人間の行動をうまく模倣できたら多くの報酬を与えて、あまり似ていなかったらほとんど報酬を与えないと考えたらどうなるんだ?これは教師あり学習になってしまうのではないか。それともきっちり「こう行動しろ!」と指示しているわけではないから教師なし学習か?ここら辺の区別もまだ曖昧である。あまり多くの例を見たわけではないから強化学習の本質がつかめていないかもしれない。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: Humanoid Robots
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 11/20/2002 00:56:52 PM
CATEGORY: ロボティクス
-----
BODY:
<div class="section">
<p>について発表した。</p>
<p>話は変わるが、昨日「伊藤家の食卓」というTV番組を見てたら、左手の薬指を右手で握って、右手で強く握る、緩めるというのを1分ほど繰り返すと、心拍数が低下してどきどきがなくなり、あがらなくなるというのがやっていた。左手の薬指には何かの"つぼ"があると説明されていた。</p>
<p>今日の発表の前に少しやっていたら本当に効いた。いつもよりあがらずにできたように思う。効果絶大で非常に便利である。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 音源定位
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 11/22/2002 00:58:05 PM
CATEGORY: ロボティクス
-----
BODY:
<div class="section">
<p>AIチャレンジ研究会(SIG-Challenge-0216)を聴講しに行った。テーマは「ロボット聴覚・ロボット対話やCASA(音環境理解、聴覚による情景分析)」。音声認識の細かい話はほとんど知らないのであまり分からなかった。ただ、特許庁の人もいっていたが、AIBOが音声認識するようになってから急激に音声認識研究が増えたというのはうなずけた。エンターテインメントで使うにはやっぱり声に反応してほしいだろうし。講演で多かったのは人とロボットのコミュニケーションをうまくするためにロボットに何を組み込めばよいかという話だったと思う。自分としては「コミュニケーションをどううまく行うかより、コミュニケーションを通して何をどう学習できるか」の方に興味があるので、作りこんでその範囲内で限られたことをやるというのはすこし興味が薄れる(その範囲でも問題は山積みらしいが)。</p>
<p>最も面白かったのは、「ロボット対話における自然な新規語彙の獲得」ってのと「視聴覚定位能力を同時に獲得するロボットヘッドの構築」という講演。この2つはコミュニケーション(相互作用)を通しての学習に重点を置いていた。</p>
<p>最初のは、ロボットと対話するうちに知らない語彙が出てきたとき、それを自動獲得する方法。予めロボットに巨大辞書を用意しておいても、固有名詞に対応するには限界がある。例えば、「私の名前はXXXです。」って話かけてもXXXは普通辞書に載っていない。この言葉をロボットの辞書に自動登録して音声合成で発話できるようにするというのが目的。これは可能性を感じる。相互作用からの自然言語の獲得の話に通じるから。固有名詞だけではなく単語も文法も対話から獲得できれば面白いけどまだ実用的じゃないのは当然か。ヒトの脳に文法中枢があるという記事がこの前新聞に載っていたが、そういうのも解明されれば可能性はあるのだろうか。</p>
<p>もう一つのは「音源定位」すなわち、音がしたときにどっちの方向で鳴っているか特定する能力を学習によって獲得させるというもの。前に生物学の授業を取ってたときに「メンフクロウの音源定位」について知った。メンフクロウってのは暗闇の中でもねずみがすこし動いた音からその位置を割り出して飛び掛る能力があるらしい。そして、音源定位機構は生物学的に完全に解明されているということだった。そのとき、これはロボットに使えるなとか、音から位置を割り出すなんて音を出さないものには全く意味がないわけで実用性はないなとか考えていた。しかし、今日講演を聴いていて「音源定位」の重要性を知った。例えば、ロボットに対して「おい」と呼びかけたとき、ロボットがその方向を向くには「音源定位」が必要。ヒトにとっても基本的な能力である。それを予め組み込むのではなくて、学習(Kohonenの自己組織化マップらしいが詳細は分からなかった)によって獲得させるという点が面白かった。聴講者の反応からすると汎用にはかなり難しいみたいだが。</p>
<p>研究会の雰囲気も何となくわかった。この会だけかもしれないけど、結構小規模なんだな。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: ブライテンベルクビークル
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 11/23/2002 00:04:09 PM
CATEGORY: 認知科学
-----
BODY:
<div class="section">
<p>知の創成でブライテンベルクビークルという面白いロボットが紹介されていた。ブライテンベルクは脳研究者で簡単なロボット(車輪とセンサしかないようなもの)を考えて思考実験を行った。その結論は、</p>
<blockquote>
<p>きわめて単純な脳であっても、外部の観察者からは非常に洗練した振る舞いとして映るような出力が可能である。</p>
<p>知の創成(p.186)</p>
</blockquote>
<p>たとえば、ビークル2号は下図のように車輪が両側に光センサが前方についているロボットである。光センサで光が強く入るほどつながった車輪が早く回るようになっている。そして、ビークル2a号はセンサと車輪をストレートに、一方、ビークル2b号はクロスにつなげている。この2体の動作を考えてみると面白い。</p>
<p><center></p>
<p><a href="http://f.hatena.ne.jp/aidiary/20050316120402" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20050316/20050316120402.jpg" alt="f:id:aidiary:20050316120402:image" title="f:id:aidiary:20050316120402:image" class="hatena-fotolife"></a></p>
<p></center></p>
<p>2a号は光源に近い方の車輪が速く回るから光源を避けるようにふるまう。一方、2b号は光源に遠い方の車輪が速く回るから光源に近づくようにふるまう。</p>
<p>結局、何がすごいかと言うと、ビークルの構造は驚くほど簡単なのにそれを外部から見ると思いもよらず不思議な振る舞いをする点。このロボットを外部から見るとビークル2a号は光を怖がる臆病なロボットにビークル2b号は光に突撃していく攻撃的なロボットに見えるはずである。</p>
<p>臆病や攻撃的に見えるのにその仕組み・知識はロボットの中には実装されていない。ロボットは単に「<strong>センサとモータが連係して動き、センサ、モータを通して環境と相互作用している</strong>」にすぎない。それだけでこんな知的な動作をする。</p>
<p>ブライテンベルクビークルは全部で14台ある。このような簡単な枠組みで回遊、接近と障害物回避、臆病、攻撃的、手助け行動、魅力、価値と嗜好、進化のように驚くべき能力が創発する。</p>
<p>人間や動物の行動は驚くほど複雑に見えるけど、もしかしたら内部のメカニズムは思っているより簡単なのかも・・・と思えてくる。</p>
<p>【関連リンク】</p>
<ul>
<li><a href="http://d.hatena.ne.jp/asin/4886790135">模型は心を持ちうるか―人工知能・認知科学・脳生理学の焦点</a></li>
</ul>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: NNとGAとRL
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 11/24/2002 00:59:47 PM
CATEGORY: 機械学習
-----
BODY:
<div class="section">
<p>ニューラルネット(NN)と遺伝的アルゴリズム(GA)と強化学習(RL)は何か関係があるのだろうか。全部同じようなことができる、全部ロボット学習に使われている。どれがどんな場合に優れているとかあるのだろうか。</p>
<p>ニューラルネットは教師あり学習だと思っていたのだけど、Kohonen mapというのは教師なしネットワークらしい。NNとGAの組合せは前にGAを調べたとき出てきた。GAとRLの関係はいまいちはっきりしないが、それも研究されているらしい。NNとRLの関係はというとRLに関数近似としてNNの汎化能力を利用している。</p>
<p>この3つはしっかり勉強しときたい。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 脳と強化学習
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 11/26/2002 01:02:36 PM
CATEGORY: 脳科学
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>強化学習のサーベイを行っているが、人間の脳との関係というのを見逃していた。そこで、脳と強化学習をキーワードで調べてみたところ、いくつか参考になるのが見つかった。</p>
<p>医学の歩みに「強化学習とその周辺」という特集が組まれている。どうやら大脳基底核が強化学習と関係あるらしい(小脳と勘違いしていた。小脳は教師あり学習とされている)。銅谷賢治さんという人が有名。他にもTD学習と神経科学のつながりに関する論文はいくつもあった。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 強化学習は教師あり学習?
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 11/26/2002 01:02:37 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>脳と学習システムの関係として、<strong>小脳は誤差信号をもとにした教師あり学習</strong>に、<strong>大脳基底核は報酬信号をもとにした強化学習</strong>に、<strong>大脳皮質は、信号の統計的性質をもとにした教師無し学習</strong>に対応するらしい。これはどういうことを言っているのかまだわからないため調べてみることにする。</p>
<p>ここでは別のことで、分からなくなった。<strong>教師あり学習と強化学習の違い</strong>は何なのかということ。理屈では分かっているつもりだが、幼児の学習などにあてはめると分からなくなる。映画の「A.I.」に、がスプーンを使ってご飯を食べるのを模倣して主人公のロボットがご飯を食べようとする場面がある。あそこで使われているのは教師あり学習と強化学習どっちなのか?</p>
<p>それに関して次のように書いてあった(映画に言及しているわけではなくて、関係ありそうなことです)。</p>
<blockquote>
<p>価値の原理(注:自分は強化学習のように価値に基づいて学習する方法と捉えている)は、自己組織化の原理に基づいて、教師を自己に内在した学習法を用いるべきであるということを述べている。これに対し、教師あり学習を擁護する議論として、母親が子供に教えるような方法に似ているというものがある。この議論は一見するともっともらしいが、よく考えてみるとおかしい。こういった方法をとるためには、母親からのフィードバックが誤差信号に変換されなければならないからである。ここには、複雑な知覚問題が存在することになる。</p>
<p>知の創成(p.515)</p>
</blockquote>
<p>要するに、<em>母親の模倣をするような学習は教師あり学習なのかどうか</em>を問題にしていると読み取った。スプーンでご飯を食べる例に戻るが、もし教師あり学習だとすると、母親の動きと自分(ロボットのこと)の動きの差を誤差信号としてフィードバックをかけ、母親の動きになるべく近くなるように学習するということだろう。ここで「複雑な知覚問題が存在することになる」というのはよく分からないが、「母親の動きと自分の動きの誤差を知るのは難しい」ってことを言っているのではないかと思う。つまり、「母親がスプーンでものを食べるのを模倣する」というのはいかにも母親を教師とする教師あり学習みたいに見えるがそう考えることは難しいってことを言いたいのじゃないか?こういう場面を見たことはないのだが、実際どうなのだろうか。幼児って母親のやるのをずっと見ているわけじゃないような気がする。母親がスプーンでご飯を食べてみて、「はい、やってみな」って言ってその後、やろうとすると思う。つまり、母親と同時に行動するわけじゃないから誤差を取りようがないのではないか。</p>
<p>で、次にこれを強化学習としてみるとどうなるのか考えた。強化学習は目標指向型の学習である。つまり、ある目標があってそれを達成すれば報酬が与えられてHappyになる。そして、その報酬を得るためにはどう行動すればよいかを試行錯誤を通して探すのが目的。スプーンの例ではスプーンを口元まで持っていけば報酬を得られると考えられる(多分、人間ならご飯が美味しいとか、母親が褒めてくれるとかにあたる)。そして、このスプーンを口に持っていくまでの過程は母親を教師とする教師あり学習ではなくて、強化学習による試行錯誤によって獲得されるということだろう。決して母親の一挙手一投足を見て自分の動作との誤差を取って模倣しているわけではないということ。<em>母親から「教えられる」のはスプーンを口に入れるという「目標」だけであってその過程は「教えられない」んじゃないか</em>。すなわち、<strong>模倣というのは誤差信号をもとにした教師あり学習ではなくて、強化学習ではないのか</strong>ということ。</p>
<p>こういうのは子供がスプーンで食べるのを模倣しているようなシーンで子供の脳を調べてどこが活性化しているかで分からないのだろうか。脳のどこがどの学習システムに対応しているか分かっている(といってもまだ仮説みたいですが)なら、各シーンでどんなアルゴリズムが使われているか分かるのではないか。どこかにこういう結果ないのだろうか。</p>
<p>書き終わってから気が付いたが、ご飯を食べる例はあまりよくなかった。もっと一般的に模倣学習という点で捉えた方がよかった。</p>
<p>上で考えたことは全部想像です。大した根拠はありません。ただ、今分からないこと、考えたことを整理して書いておく備忘録にすぎません。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 迷路問題アプレット
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 11/27/2002 01:05:15 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>を書いた。今度は迷路をもっと大きくしてみた。やってることは前と同じ。迷路が大きいので学習が収束するまで見ていると日が暮れる。そこで、アニメーションを表示しないで学習だけ行えるようにした。収束した後、アニメーションで見てみると最短経路を獲得していることが分かる。</p>
<p>迷路を抜けるもっと高速なアルゴリズムはあるが、これは何がすごいかと言うと、<strong>そういう迷路特有のアルゴリズムを使わずにゴールに報酬を置いておくだけで勝手に最短経路を探してくれるところ</strong>。ゴール(目標)に報酬を置いておいて、その過程を機械自身に学習させるというのは強化学習の大きな特徴である(と思う)。</p>
<p>前のソースコードはかなりまずかった。強化学習の中心はエージェントと環境なのにエージェントのクラスがなかったし、状態は環境側にあるのにエージェントが持っているような書き方をしてしまった。今回はちゃんとエージェントクラスを作り、環境が状態を持っているように書いた。前よりましだと思うが、まだ汎用性に欠けている感じがする。GUI部分はJBuilder7を使った。</p>
<p>計算量が結構多いので、遅いコンピュータを使っていると最初の方でかなり時間がかかると思う。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 報酬と感情
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 11/28/2002 08:51:01 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p><a href="http://d.hatena.ne.jp/aidiary/20021120#1120564037">強化学習と報酬</a>で、「報酬は環境から与えられるというのも何だかあまりぴんとこない。気持ちいいとかうれしいとかいう(報酬にあたりそうなもの)のは人(エージェント)の内部から起きているんじゃないか?外部から与えられても人によって感じ方は違うだろうし。」と書いた。これに関して次のように説明があった。</p>
<blockquote>
<p>強化学習の扱い始めの段階では、報酬(学習の目標を定義するもの)がエージェント内ではなくて、環境内で計算されることに驚くことがある。確かに、<strong>動物にとっての最終的な目標は、それらの体の内部で生じる計算によって認識される</strong>。例えば、食糧、空腹、苦痛、そして快楽のための感覚器である。</p>
<p>強化学習(p.61)</p>
</blockquote>
<p>自分もそう思った。例えば、エージェントが満腹の時に報酬として食糧をもらうのと、空腹の時に同じものをもらうのとでは感じ方(価値)は違うだろう。幸福なときに100万円もらうのと、悲しみのどん底でもらう場合にも違うだろう。しかも悲しみの内容によっても違う。破産した場合の100万円と、家族が死んだ場合の100万円でも違う。しかし!強化学習ではこのような差を考慮しない。<strong>報酬は外部にあって、エージェントが制御できないもの</strong>とする(つまり、エージェントの内部状態によって価値を高めることはできない)。</p>
<blockquote>
<p>このようにする理由は、エージェントの最終目標が、完全には制御しきれない対象の上にあるからである。例えば、行動を任意に変えるのと同じような方法で報酬が受け取られると決めるべきではない。</p>
<p>強化学習(p.62)</p>
</blockquote>
<p>とある。</p>
<p>人(だけに限らないかもしれないが)の場合、報酬の感じ方は感情(まあ、文化、生活背景など様々あるが)と関係しているように思う。感情(ヒトの内部状態)によって、同じ報酬でも感じ方(価値)は違うだろう。感情は完全に制御できず報酬の感じ方を思い通りに制御できないが、ある程度かえることはできる(変えられることに利益はあるか、むしろ人間の欠点かもしれない)。強化学習の簡潔な枠組みにこのようなものを持ち込む必然性はないだろうが、持ち込んだとしたら何か利益はあるだろうか。<strong>感情(エージェントの内部状態)によって取るべき行動(つまり方策)を自動的に変えるなんてことは?</strong></p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: AIという言葉
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 11/28/2002 01:07:10 PM
CATEGORY: 認知科学
-----
BODY:
<div class="section">
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4534013795/hatena-hamazou-22/"><img src="http://d.hatena.ne.jp/images/hatena_aws.gif" class="hatena-asin-detail-image" alt="人工知能の未来は―AIはいま、どこまで人間らしくなったか" title="人工知能の未来は―AIはいま、どこまで人間らしくなったか"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4534013795/hatena-hamazou-22/">人工知能の未来は―AIはいま、どこまで人間らしくなったか</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%B8%A5%E7%A1%BC%A5%B8%A5%B8%A5%E7%A5%F3%A5%BD%A5%F3" class="keyword">ジョージジョンソン</a>,<a href="http://d.hatena.ne.jp/keyword/%DE%BC%B0%EC%C7%EE" class="keyword">渕一博</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%C6%FC%CB%DC%BC%C2%B6%C8%BD%D0%C8%C7%BC%D2" class="keyword">日本実業出版社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1988/07</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><a href="http://d.hatena.ne.jp/asin/4534013795" target="_blank">この商品を含むブログ (1件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>から少し長いけど引用。『ゲーデル、エッシャー、バッハ』の著者ダグラス・ホフスタッターさんの発言。</p>
<blockquote>
<p>「ぼくはこの頃では『AI』という言葉も使わないようにしています。ぼくの研究は認知科学だと言うことが多くなりました。もうAIとは呼びたくないんです。マッカーシーやミンスキーやサイモンやニューウェルの出席したダートマス会議。</p>
<p>あのときに誕生したAIが持っていた語感は失われ、今ではAIは何かもっと商業的なものを意味するようになってしまいました。現在、その産業的な部分によって、AIは汚染されています。実用主義的な製品優先主義の取り組み方に完全に走らされている商業的な人々がもたらすものです。</p>
<p>しかも、多くの人は『簡単な』問題はもう解決されてしまったと信じているのが実情です。みんな思い違いをしているんじゃないでしょうか。</p>
<p>・・・簡単に見える問題はすべて決定されていて、AIの本質は、『大量の知識を収めた巨大なデータベースをどう管理するか』だと思っているんです。」</p>
<p>「もともと『人工知能』という言葉は何かサイエンス・フィクションのようなものだったのです。それが、巨大な電子頭脳とか、考える機械とか、思考の核心に迫る探査といったイメージを作り上げてしまったのです。もっとも、今では『もっとすてきな製品がほしい?利口な端末がほしい?じゃあ少しばかり、AIをあげよう』ですからね。昔みたいな有難みはないんです。以前は意味を持っていました。今はまるで無意味なようです。<strong>AIとは凝ったプログラミングのことになってしまったように見えます</strong>。</p>
<p>だからぼくは別の言葉を使うことが多いんです。『<strong>認知科学</strong>』はもっとおとなしいですから。こっちは人を興奮させない。だからいいんです。哲学的な面に興味を持っている人たちは興奮させるけど、商業的な人たちは引き付けないんです。」</p>
<p>人工知能の未来は(pp.463-464)</p>
</blockquote>
<p>この話はエキスパートシステムがAIの成功として盛んに宣伝されたときのもの。それに対する反発らしい。</p>
<p>『人工知能』という言葉は1956年のダートマス会議でマッカーシーさんが名づけた。この言葉の功罪はよく話題にされている。こんな大げさな名前は付けるべきでなかったという人と、多くの人を惹きつける良い名前だという人がいる。自分は最初後者だった(というか自分も言葉に魅力を感じた)のだが、少しは前者の感じもある。微妙なところ。本当は名前なんてどうでもいいんだけどね。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 不可能と笑われた時は、実は研究がうまく進んでいるときだ
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 11/28/2002 01:08:33 PM
CATEGORY: 日記
-----
BODY:
<div class="section">
<p>読売新聞2002年11月28日号に「ノーベル賞受賞者を囲む」というパネルディスカッションの概要が載っていた。プルシナーさんという人が言及した上の言葉が印象的だった。また、このディスカッションの記事で久しぶりに人工知能という言葉を見つけた。</p>
<p>他に同氏の経験が述べられていたが、それも意味深い。要は「途中でくじけるな」ということか。</p>
<blockquote>
<p>新しい概念に対する周囲の反応は、四つの段階を経て変化していく。最初は「あり得ない」、次は「あり得たとしても意味がない」、その次は「真実だと私も思っていた」。そして最後は「一番初めに主張したのはこの私だ」。</p>
<p>読売新聞(2002-11-28)</p>
</blockquote>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 大脳基底核と強化学習
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 12/02/2002 09:09:42 PM
CATEGORY: 強化学習
CATEGORY: 脳科学
-----
BODY:
<div class="section">
<p>の関係について調べたのでざっとまとめておく。</p>
<p>大脳基底核は昔から行動に関係しているということは分かっていたが、詳しい機能は分かっていなかったらしい(実際、1980年あたりの脳の本を読んでも謎と書いてあった)。しかし、最近の研究で<strong>ドーパミンを報酬とし、その報酬を予測をもとに目的指向的な行動を組み立てる役割が分かってきた</strong><span class="footnote"><a href="/aidiary/#f1" name="fn1" title="銅谷: 強化学習の計算論, 医学の歩み, Vol.202, No.3, pp.175-178, 2002">*1</a></span>。ドーパミンは大脳基底核に強く作用する。ちなみに、ドーパミンというのは快楽物質。動物の場合は生存と繁殖に関わること、例えば、水、餌、交尾行動などでドーパミンが増え、それを報酬とする強化学習と見ることができる。ヒトはそれだけじゃなくドーパミンが出る別の報酬の形態もあるとは思う。ヒトは本能だけで動かないから。</p>
<p>上にあげた大脳基底核の特徴、報酬をもとにする学習、報酬の予測(=価値の評価)、目的指向的というのはぴったり強化学習の特徴と一致する。中でも報酬の予測と言うのは、TD学習をはじめとする強化学習アルゴリズムの中心となる考え方である。</p>
<p>TD学習では報酬の予測値と実際に得られた報酬の差(TD誤差という)をもとに学習する。例えば、いまs(t)という状態にいて、「思いがけず」次の状態s(t+1)で報酬が得られたとする。すると「あっ、s(t+1)で報酬がもらえるんだ。じゃあ、1つ前のs(t)も報酬はもらえないけどいい状態だな(TD誤差が正=期待)」と普通は予想して学習する。そして何度も続けると、TD誤差が0(=報酬をもらえるのは当然になる)になり、学習が収束する。その後、報酬をもらうことを期待しているのを裏切ってs(t+1)で報酬を与えないと普通はがっかりして(TD誤差が負=失望)、「ちぇっ、やっぱりs(t)というのはあまりよくない状態だ」と学習する。このように報酬の予測値と実際に得られる報酬の差(TD誤差)を利用して学習するのがTD学習をはじめとする強化学習の本質(だと思う)。</p>
<p>Schultzという人はサルを使って次のような実験を行った<span class="footnote"><a href="/aidiary/#f2" name="fn2" title="Schulz,W. et al.: A neural substrate of prediction and reward, Science, 275, pp.1593-1599, 1997">*2</a></span>。サルは、ランプが点灯してその下にあるレバーを押すと1滴のジュースがもらえる。学習の最初は何をしたらジュースがもらえるのか予想できないので、ジュースをもらったときだけドーパミンが出てくる。しかし、学習が進むとランプとレバーとジュースの関係を予測し、ランプがついただけでドーパミンが出るようになり(TD誤差が正=期待している)、実際にジュースをもらったときは、ドーパミンが出なくなる(TD誤差が0=ジュースは当然出ると思っている)。そして、ジュースを期待しているのにあげないとドーパミンが減る(TD誤差が負=失望)。</p>
<p>このようにドーパミンは強化学習のTD誤差と対応がついている。すなわち、<strong>ドーパミンが強く作用する大脳基底核は強化学習と同じメカニズム</strong>ではないかという仮説が立てられた。</p>
<p>また、さらに進んで銅谷賢治さんは、<strong>強化学習のパラメータと脳の機能を関係づける仮説</strong>を出している<span class="footnote"><a href="/aidiary/#f3" name="fn3" title="銅谷: 行動学習系のメタパラメタ制御と神経修飾物質, 数理科学, Vol.38, pp.19-24, 2000">*3</a></span>。強化学習には次の4つのパラメータがある。</p>
<dl>
<dt>TD誤差δ</dt>
<dd>報酬の予測値と実際に得られた報酬との差</dd>
<dt>割引率γ</dt>
<dd>どのくらい未来の報酬まで考慮するか</dd>
<dt>逆温度β</dt>
<dd>行動選択において搾取(目先の利益を追求して行動選択)するか探査(ランダムに行動選択)するか</dd>
<dt>学習率α</dt>
<dd>報酬予測を一度にどの程度変更するか</dd>
</dl>
<p>強化学習においてこれらのパラメータは人手で調節しなければならないが(あっ、TD誤差だけは違う)、脳の場合、タスクに合わせて自動的に行っている。つまり、脳にはこれらのパラメータを自動調節する「何か」があるはずだと銅谷さんは考えたらしい。そして、</p>
<dl>
<dt>TD誤差δ ⇔ ドーパミン系</dt>
<dd>(理由)上に書いたサルの実験。</dd>
<dt>割引率γ ⇔ セロトニン系</dt>
<dd>(理由)セロトニン系が低下すると、うつ病や衝撃的な行動といった目先の苦難や誘惑にとらわれ、長期的な展望をもとに行動できなくなる。これは、γが0に近いと目先の利益を考慮して行動を選択し、γが1に近いほど長期的な報酬を考慮する強化学習のアルゴリズムと一致する。</dd>
<dt>逆温度β ⇔ ノルアドレナリン系</dt>
<dd>(理由)青斑核のノルアドレナリン系の活動は緊迫したり、痛み刺激などのストレスを伴った状態で高く、リラックスした状態では低い。これは、βが高い緊急事態では現時点で考えられる最良の行動を取り(=搾取)、βが低い状態では行動にランダムさを持たせる(=探査)という強化学習の行動選択法と一致する。</dd>
<dt>学習率α ⇔ アセチルコリン系</dt>
<dd>(理由)アセチルコリンは、海馬などの記憶に関するゲートを開いたり閉じたりする働きがあることが示唆されている。また、アセチルコリンの低下はアルツハイマー病の記憶障害の原因であることが示されている。これは、学習を調節したり、学習の重み付けを行うαの働き(αが大きいと急速に学習が進み、αが小さいと学習が遅い)と一致する。</dd>
</dl>
<p>という対応を考えたらしい。ちょっとこじつけに見えるところもある(βとか)が、非常に驚いた。こんな見事に対応すると強化学習の脳における重要性がひしひしと感じられる。脳のことは興味があってもほとんど知らないので暇ができたら何か本を読んで概要をつかんでおきたい。最新の脳科学の研究成果を部外者にもわかりやすく説明した本があればいいけれど。</p>
</div>
<div class="footnote">
<p class="footnote"><a href="/aidiary/#fn1" name="f1">*1</a>:銅谷: 強化学習の計算論, 医学の歩み, Vol.202, No.3, pp.175-178, 2002</p>
<p class="footnote"><a href="/aidiary/#fn2" name="f2">*2</a>:Schulz,W. et al.: A neural substrate of prediction and reward, Science, 275, pp.1593-1599, 1997</p>
<p class="footnote"><a href="/aidiary/#fn3" name="f3">*3</a>:銅谷: 行動学習系のメタパラメタ制御と神経修飾物質, 数理科学, Vol.38, pp.19-24, 2000</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 迷路問題 with 不完全知覚
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 12/03/2002 01:10:30 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>前に不完全知覚について言及した(<a href="http://d.hatena.ne.jp/aidiary/20021114">id:aidiary:20021114</a>)。9X9の迷路問題でエージェントの知覚を周囲8マスに制限して試してみたところ全く収束しなかった。前に書いた通り同じところを行ったり来たりしてしまう。ランダムな探査を5%の確率でしているため運良くゴールにつくことはあったが、90000ステップもかかっている。不完全知覚にすると普通のQ学習では全く歯が立たない。</p>
<p>不完全知覚には適格度トレースが有効とか思っていたけど、使っても全然だめだった。何か誤って理解していたかもしれない。</p>
<p>あと、前に作った倒立振子制御問題をQ学習を使う形に書き直したが、こっちも収束しなかった(ニューラルネットの時もそうだが、収束しなかったときどこにバグがあるのか「非常に」わかりにくい)こんな簡単な例題で苦戦してたら、大きな問題は全然できないかもしれないな・・・</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 動物の心
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 12/04/2002 01:13:08 PM
CATEGORY: 認知科学
-----
BODY:
<div class="section">
<p>動物に心はあるのか?自己認識はあるのか?そして知能はあるのか?というのは興味深い問題である。これらは動物行動学などの分野で研究されている。</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4883381846/hatena-hamazou-22/"><img src="http://d.hatena.ne.jp/images/hatena_aws.gif" class="hatena-asin-detail-image" alt="心をもつ機械―人工知能の誕生と進化" title="心をもつ機械―人工知能の誕生と進化"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4883381846/hatena-hamazou-22/">心をもつ機械―人工知能の誕生と進化</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%BF%A5%F3%A1%A6%A5%D5%A5%E9%A5%F3%A5%AF%A5%EA%A5%F3" class="keyword">スタン・フランクリン</a>,<a href="http://d.hatena.ne.jp/keyword/%CE%D3%B0%EC" class="keyword">林一</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%BB%B0%C5%C4%BD%D0%C8%C7%B2%F1" class="keyword">三田出版会</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1999/03</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 3回</li>
<li><a href="http://d.hatena.ne.jp/asin/4883381846" target="_blank">この商品を含むブログを見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>には動物の心について書かれている(他に面白い話題は山ほどあるが)。一般に、動物は自己認識はあるのか?という疑問に対して、次のことができれば自己認識ができると考えられている。</p>
<dl>
<dt>鏡をのぞいたとき、そこに映っているのが自分だとわかる。</dt>
<dd>これは次のように確かめられる。鏡の前でしばらく遊ばせたあと、麻酔をかけて眠らせ、その間に額に赤いマークをつけておく。目覚めて鏡の中をのぞいたとき、もし赤いマークが自分についていることに気づいて触ったりすれば、鏡に映っているのは自分だと認識している。</dd>
</dl>
<dl>
<dt>自己隠匿</dt>
<dd>自分の身体の一部ではなく全体を隠そうと試みること。これは、自分の身体があることを認識している証拠となる。</dd>
</dl>
<dl>
<dt>意図的な欺瞞</dt>
<dd>意図的に欺瞞を行うには、相手が騙されて行動すると思考できなくてはならない。これが自己反省的な心的能力、ひいては自己意識を必要とする。たぶん、相手が騙されるというのを予測するには「自分」だったらどうなるかを予想できなくてはならないということだろう。</dd>
</dl>
<p>1番目の鏡のテストではチンパンジーとオランウータンは成功したが、ゴリラなどの何種類かのサルでは失敗したらしい。わき道にそれるが、ココというチンパンジーは、完全に自己意識を持っていて(いるように見えて:チューリングテストの議論でもあるように確かめるすべは行動を観察するしかない)、自分自身の心について信号を送ることもあるという。ココは身振り言語を使える(とされている)。身振り言語で「プレゼントに何が欲しい」と聞くと「子猫」と答えたり、子猫が死んだとき、「どう感じるか」と聞くと、「悲しい」と答える。これは、確か瀬名秀明さんの『Brain Valey』という小説でも言及されていた。このような能力は一体何なのか?心が本当にあるのか?</p>
<p>この本の著者は<strong>心とか自己認識とか知能とかいうのは「ある/なし」の2値で扱えない</strong>ことを強調している。あるとないのあいだに中間的なレベルがいくつもある。例えば、自己認識に関して言うと、次のようなレベルが考えられると言う。</p>
<blockquote>
<p>身体を適切に隠す </p>
<p>彼らの心的処理を観察する </p>
<p>自分自身を修飾(改善?)しようと試みる </p>
<p>鏡の中の自分を認識する </p>
<p>人称代名詞を使う </p>
<p>自分自身に語りかける </p>
<p>自分自身の心的状態について語る </p>
<p>心的状態を他者に付与する </p>
<p>欺瞞を実行する </p>
<p>心をもつ機械(p.109)</p>
</blockquote>
<p>これらが全てできるのがヒトである。しかし、動物もある段階まではできる。ココは後の6つを行うことができるとされている。つまり、動物とヒトの心、知能の間は連続状態であり、断続されていないと考える。ヒトの知能、心は動物の知能、心の上に成り立っているというのが主張だと読み取った。こういうアーキテクチャはBrooksのサブサンプションアーキテクチャに通じるところがある(と思う)。要するに<strong>ヒトの知能を作りたかったら、動物のより基本的な知能がまずできていなければならない</strong>。</p>
<blockquote>
<p>それほど強い裏付けがない信念だが、理性的な心をもつ動物ともたない動物との間に明確な区別はないと私は見ている。さらに、恣意的に線引きするのでないかぎり(注:動物言語を否定するように「言語」の定義を変えることを指している)、言語をもつ動物ともたない動物の間にさえ、明確な区別はないように見える。</p>
<p>心をもつ機械(p.112)</p>
</blockquote>
<p>動物にこころ、感情、知能があるのか?というのは昔から激論がかわされていた(らしい、「らしい」ばかりですみません)。デカルトの動物機械論というのがあった。人間を除く動物は遺伝子に完全に支配されていて自由意志を持たないと言う考えが、否定(動物に心はない)派の根底にある。</p>
<p>しかし、自分としてはこれは当然受け入れがたい!<em>尻尾を振って駆け寄ってくる家の犬に、心がない、感情がない、知能がないなんて当然考えられない</em>。ただし、「心は機械で実現できるか」というのはまた別問題である。機械で実現できると信じていても、動物や人間の心、感情、知能を蔑むことにはならない。そこを勘違いされると困る。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: TD-Gammon
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 12/05/2002 01:18:09 PM
CATEGORY: 強化学習
CATEGORY: ゲームAI
-----
BODY:
<div class="section">
<p>TD-GammonはIBMのTesauroさんが作ったプログラムである。強化学習のTD(λ)というアルゴリズムを用いて、Backgammonというゲームの戦略を「自動的に」獲得する。このTD-Gammonによって強化学習が注目されるようになったという経緯がある。</p>
<p>今までBackgammonというゲームは全く知らなかったのだが、何とWindowsに「インターネットバックギャモン」というのが入っているではないか。気づかなかった・・・試しにルールを見てやってみた。Backgammonは日本語で西洋すごろくとも言うらしいが、さいころを振って移動させたり、振り出しにもどるなどすごろくっぽいところがある。チェスより歴史は古く、競技人口やプロの数も多いらしい。「すごろくにプロとかあるの?」という感じがするが、相当奥が深いみたい。</p>
<p>で、このBackgammonを強化学習を使って鍛えるわけだが、状態数が10の20乗もあるため、表形式では対応できない(10の20乗の配列なんて用意できない)。そこで、巨大な状態空間に対応するための関数近似として3層パーセプトロンを用いている。3層パーセプトロンは非線形関数近似と呼ばれ、扱うのはかなり難しいらしい(<a href="http://nao.s104.xrea.com/RL-FAQ-j.html" target="_blank">SuttonさんのFAQ</a>参照)。自分は線形関数近似さえ実装の仕方がいまいち分からないのでそれ以前。</p>
<p>それで、学習はどうやるかと言うと、自己対戦させる。つまり、自分自身と何度も何度も対戦させることを繰り返す。[Tesauro 95]によると、1500000回自己対戦ゲームをさせると世界チャンピオンに匹敵する強さが出るらしい。何かすさまじい回数だ。学習に一体何日かけたのか。</p>
<p>このTD-Gammonのすごいところはルール以外の知識与えていない点。従来のゲームプログラミングではプロの知識(ヒューリスティクス)を直接プログラムしたり、プロの棋譜データをもとに教師あり学習をさせていた。TD-Gammonではプロの知識も与えないし、プロの棋譜データも教師信号として与えない。何もないところから試行錯誤だけで、プロ級の能力を獲得している(そのために学習に時間がかかるという欠点がある)。</p>
<p>この強化学習の能力は、非常に重要だと思う。強化学習は応用上期待できることとして、</p>
<ul>
<li>直接プログラミングしなくても目標状態に報酬を置いておくだけで、それに到達する最適な経路を自動的に獲得できる。 </li>
<li>人がコーディングするより、優れた解を発見できる可能性がある。 </li>
</ul>
<p>などが挙げられている<span class="footnote"><a href="/aidiary/#f1" name="fn1" title="木村, 宮崎, 小林: 強化学習システムの設計指針, 計測と制御, Vol.38, No.10, 1999">*1</a></span>。このTD-Gammonは複雑な実問題でそれを実現した先駆者となっている。ここで注意しておきたいのが、「<strong>成功と言ったってたかがゲームじゃないか</strong>」という人がいることである。それは違う(「らしい」としか言えない)。確か、松原仁さんだったと思うけど(どの論文か記事かは忘れた)、<strong>ゲーム(チェス、将棋、碁など)は閉じていて明確な規則のある世界だが、実問題に引けをとらないほど状態数、分岐数が多く、十分複雑であると述べていた</strong>。</p>
<p>【参考文献】</p>
<ul>
<li>Tesauro,G.J.: <a href="http://www.research.ibm.com/massive/pitdl.pdf" target="_blank">Practical issues in temporal difference learning</a>, Machine Learning, Vol.8, pp.257-277, 1992</li>
</ul>
<ul>
<li>Tesauro,G.J.: <a href="http://web.cps.msu.edu/rlr/pub/Tesauro2.html" target="_blank">TD-Gammon, a self-teaching backgammon program, achieves master-level play</a>, Neural Computation, Vol.6, No.2, pp.215-219, 1994</li>
</ul>
<ul>
<li>Tesauro,G.J.: <a href="http://www.research.ibm.com/massive/tdl.html" target="_blank">Temporal difference learning and TD-Gammon</a>, Communications of the ACM, Vol.38, pp.58-68, 1995</li>
</ul>
</div>
<div class="footnote">
<p class="footnote"><a href="/aidiary/#fn1" name="f1">*1</a>:木村, 宮崎, 小林: 強化学習システムの設計指針, 計測と制御, Vol.38, No.10, 1999</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: はっきり言い切る姿勢
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 12/07/2002 01:21:03 PM
CATEGORY: 日記
-----
BODY:
<div class="section">
<p>論文の書き方的な本で家にあった</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4121006240/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/31818M220JL._SL160_.jpg" class="hatena-asin-detail-image" alt="理科系の作文技術 (中公新書 (624))" title="理科系の作文技術 (中公新書 (624))"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4121006240/hatena-hamazou-22/">理科系の作文技術 (中公新書 (624))</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%CC%DA%B2%BC%C0%A7%CD%BA" class="keyword">木下是雄</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%C3%E6%B1%FB%B8%F8%CF%C0%BF%B7%BC%D2" class="keyword">中央公論新社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1981/01</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 新書</li>
<li><span class="hatena-asin-detail-label">購入</span>: 47人 <span class="hatena-asin-detail-label">クリック</span>: 242回</li>
<li><a href="http://d.hatena.ne.jp/asin/4121006240" target="_blank">この商品を含むブログ (283件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>をざっと読んだ。これは有名な本「らしい」。LaTeXの例題でよく使われている。それにしてもこの本いつ買ったのか全然覚えていない。いつの間にか本箱に入ってた。理科系ってことは大学入ってから買ったのかな・・・思い出せない。</p>
<p>その本の6章に「はっきり言い切る姿勢」というのがあって、そこが面白かった。</p>
<blockquote>
<p>日本人は、はっきりしすぎた言い方、断定的な言い方を避けようとする傾向が非常に強い。たぶん、「ほかにも可能性があることを無視して自分の意見を読者におしつけるのは図々しい」という遠慮ぶかい考え方のため<strong>だろう</strong>。</p>
<p>理科系の作文技術(p.90)</p>
</blockquote>
<p>(「だろう」って…あなたも断定を避けてませんか?という突っ込みは置いておいて)、これに対する木下さんの考え。</p>
<blockquote>
<p>論文を書くときに「ほかの可能性もあるのに、それを斟酌せずに自分の考え方を断定的に述べる」ことにはいつも強い抵抗を感じる。英語の論文の場合にはデアルと書くし、日本語の論文でもこのごろはデアルと書くようにつとめているが、それは心の中で押し問答をしたあげくのことだ。ほんとうはデアロウ、ト考エラレルと含みを残した書き方をしたいのである。これは私のなかの日本的教養が抵抗するので、性根において私がまごうかたなく日本人であり、日本的感性を骨まで刻みこまれていることの証拠<strong>であろう</strong>。</p>
<p>理科系の作文技術(p.94)</p>
</blockquote>
<p>上の文の終わりが「デアロウ」であるのは印象深かった。これ読んだとき、なるほどと思わず納得した。自分もそうだから。デアルで書くのは何か抵抗がある。自分がその分野で新参者だと思うとなおさら。「<em>新参者のくせにデアル調なんて100年早いんだよ</em>」って感じがしてしまう。このWebページで「らしい」とか「と思う」を連発しているのもそんな心理から。</p>
<p>でも、これは欧米人には通用しないらしい(ほらまた)。欧米人は断定調で書いても傲慢だと思わないのだろうか。そりゃ「自分の意見は絶対に正しい!」「これは真理だ!」って思える(といってももちろん何らかの根拠はあるのだろうが)なら、いくら断定しても動じないだろうが、それはなかなかできそうにない。文化の違いもあるけど、性格の違いもあるかもしれない(ほらまた)。</p>
<p>ただし、科学の世界で表現をぼかし、断定を避ける害は認識している。以後は気をつけたい。この本には他にも報告書、論文などの理科系の文書を書く上での日本語の使い方について書いてある。理解はできても自分ですぐにできるかは疑問。気をつけていてもかなり難しいと思う。</p>
<p>つけたし。記号の使い方のところで面白いのがあった。日本では[{()}]の順で括弧を使うのは普通デアル(自分だけってことはないよな…)。しかし、外国では{[()]}の順で括弧を使うのが普通であることを知った。以前、論文を読んでいたとき、()の次にで囲んでいたので、おいおい「{}のが普通だろ」ってわざわざ書き直していたのだが・・・の方が先だったんだ。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: メトロポリス
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 12/21/2002 01:23:07 PM
CATEGORY: SF
-----
BODY:
<div class="section">
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00005QIYS/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/5154JSRD57L._SL160_.jpg" class="hatena-asin-detail-image" alt="メトロポリス [DVD]" title="メトロポリス [DVD]"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00005QIYS/hatena-hamazou-22/">メトロポリス [DVD]</a></p>
<ul>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%D0%A5%F3%A5%C0%A5%A4%A5%D3%A5%B8%A5%E5%A5%A2%A5%EB" class="keyword">バンダイビジュアル</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2001/12/07</li>
<li><span class="hatena-asin-detail-label">メディア:</span> DVD</li>
<li><span class="hatena-asin-detail-label">購入</span>: 1人 <span class="hatena-asin-detail-label">クリック</span>: 6回</li>
<li><a href="http://d.hatena.ne.jp/asin/B00005QIYS" target="_blank">この商品を含むブログ (51件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>今日は、休憩した。手塚治虫さんが原作の「メトロポリス」っていう映画見た(1949年に書かれた原作も読んだが全然違う)。また、ロボットが反乱するような話だった。でも映画としてはロボットと仲良く平安なんてのよりは面白いのは当然か。(故障以外で)自律的に反乱を起こすほど賢いロボットができればいいけど、実際はどうだか・・・結局、反乱してるのは、そういう風に創る人間なんだよね。でも実際はどうなるんだろう。自律ということは人間による制御不能性を意味するからそいういうこともありえるのかな。ロボット三原則みたいなのは実装可能なのだろうか。空想(妄想?)は広がる。</p>
<p>そういえば、来年は4月にROBODEX 2003が開催される。今年は<a href="http://d.hatena.ne.jp/aidiary/20020329">id:aidiary:20020329</a>に行ってきた、来年もちょととのぞいてみようと思う。なんでも2003年4月7日は、鉄腕アトムの誕生日らしい(もちろん漫画のなかの)。手塚さんは、2003年にはできると考えていたのかな。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 今年やりたいこと
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 01/01/2003 01:27:56 PM
CATEGORY: 日記
-----
BODY:
<div class="section">
<ul>
<li>.NET勉強したい!Windowsアプリケーション自由に作れるようになりたい! </li>
<li>認知科学勉強したい!一通り全部! </li>
<li>強化学習究めたい! </li>
<li>ニューラルネットと遺伝的アルゴリズムもう一回勉強したい! </li>
<li>ロボット関係も少し勉強したい! </li>
<li>TOEICでも受けてみる! </li>
</ul>
<p>今年の12月31日はたしてどうなっているか。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 人間を幸せにしたモノ、不幸にしたモノ
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 01/04/2003 01:28:54 PM
CATEGORY: 日記
-----
BODY:
<div class="section">
<p>読売新聞 2003年1月4日号のよみうり寸評に面白い記事が載っていた。読売新聞が3年前に「人間を幸せにしたモノ、不幸にしたモノ」と題し、アンケート調査を行った結果についてだった。この記事によると、幸せにしたモノの<strong>1位は抗生物質</strong>、2<strong>位はテレビジョン</strong>、<strong>3位は飛行機</strong>となっている。残念ながら不幸にしたモノは書かれていない。</p>
<p>抗生物質は(実感はないが)うなずける。でも2位がテレビ??3位は飛行機???なぜかコンピュータとかインターネットは入っていない。アンケートの対象者が書いていないが、人によって「幸せ」はずいぶん違うんだなと感じた。自分にとっては何か考えてみたがなかなか浮かばない。幸せにしたものに<em>コンピュータ</em>は入れたい。不幸せにしたモノに核兵器が入るのは当然。他は・・・あまり思い浮かばない、そもそもモノで人間は幸せになるものなのか。でも50年後の調査では、幸せにしたモノに、ぜひ「<em>ロボット</em>」が入っていてほしい。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: サルも笑う
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 01/08/2003 01:30:58 PM
CATEGORY: 認知科学
-----
BODY:
<div class="section">
<p>読売新聞2003年1月6日号に面白い記事が載っていた。どうやらサルも笑うらしい。</p>
<blockquote>
<p>「動物の中で笑うのはヒトだけである」と言ったのは、万物の祖・アリストテレス。だが、これは間違い。野生チンパンジー研究で有名な西田利貞・京大教授によるとチンパンジーも笑う。</p>
</blockquote>
<p>このコラムの内容を要約すると、チンパンジーも人間の子供と同じように遊びながら笑うそうだ。チンパンジーの笑いは、laughのみで人間のように微笑、冷笑、苦笑、哄笑のようなバラエティーはないらしい。</p>
<p>また、人間はなぜ笑うのか?哲学者のベルグソン(1900)やフロイト(1905)が「笑い」の研究をしたと書いてあった。あと笑うと免疫力が高まるという不思議な結果がある。そういえば、がん患者を笑わせると直るってのは聞いたことがある。さらに「笑いの遺伝子」ってのを研究しているヒトがいるらしい。笑い、喜び、感激などの明るい感情は体によい遺伝子を活性化すると考えているらしい(筑波大・村上和雄さん)。</p>
<p>前に新聞かなんかで読んだけど、Ambrose Bierceは悪魔の辞典で笑いを次のように定義した。かなり面白い。</p>
<blockquote>
<p>LAUGHTER [笑い] </p>
<p>n. 内からわきあがる発作のことで、顔立ちがゆがめられるのにともない、意味をなさない騒音がとどろく。伝染性を持ち、思い出したようにぶりかえす、不治の病である。笑いの発作の起こしやすさは、人間と動物を区別する特徴のひとつ――動物は、サンプルの煽動から無縁であるばかりでなく、この病の伝染においてそもそもの決定権をもつあの細菌に対して動じることもない。では笑いを、人間の患者から注射によって動物にうつすことはできるのであろうか。この問題はいまだ解決されていない。メイヤー・ウィッチェル博士は笑いの伝染性を、飛散したつば(sputa)の瞬間的な醗酵のためとしている。この特徴から、博士はこの病気を Convulsio spargens と名づけた。</p>
</blockquote>
<p>【参考文献】</p>
<ul>
<li><a href="http://www005.upp.so-net.ne.jp/kareha/trans/dd_index.htm" target="_blank">悪魔の辞典</a></li>
</ul>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 突発性難聴
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 01/16/2003 11:31:53 PM
CATEGORY: 日記
-----
BODY:
<div class="section">
<p>私事だけど。突然片耳だけ聞こえなくなってしまった。どうやら突発性難聴というらしい。もう5日も治療を続けているけど全くよくならない。片耳だけってのがせめてもの救いだ。ストレスが原因っていうけど…卒論か?このくそ忙しい時期になるなんて本当についてない。</p>
<p>よく脳の本に磁気共鳴画像(MRI:Magnetic Resonance Imaging)で取った脳の画像がはってあるけど自分の脳も取ってもらった。断面図を取ってるのかな?自分の脳をはじめて見たけどとても面白い。目の神経が交差しているのも見て取れた。記念にもらいたかったな。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 複雑系
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 01/16/2003 01:32:57 PM
CATEGORY: 複雑系
-----
BODY:
<div class="section">
<p>入院中にあまりにも暇なので、</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4102177213/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51G6BNERG7L._SL160_.jpg" class="hatena-asin-detail-image" alt="複雑系―科学革命の震源地・サンタフェ研究所の天才たち (新潮文庫)" title="複雑系―科学革命の震源地・サンタフェ研究所の天才たち (新潮文庫)"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4102177213/hatena-hamazou-22/">複雑系―科学革命の震源地・サンタフェ研究所の天才たち (新潮文庫)</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/M%2E%A5%DF%A5%C3%A5%C1%A5%A7%A5%EB%A5%EF%A1%BC%A5%EB%A5%C9%A5%ED%A5%C3%A5%D7" class="keyword">M.ミッチェルワールドロップ</a>,<a href="http://d.hatena.ne.jp/keyword/Mitchell%20M%2E%20Waldrop" class="keyword">Mitchell M. Waldrop</a>,<a href="http://d.hatena.ne.jp/keyword/%C5%C4%C3%E6%BB%B0%C9%A7" class="keyword">田中三彦</a>,<a href="http://d.hatena.ne.jp/keyword/%B1%F3%BB%B3%BD%D4%C0%AC" class="keyword">遠山峻征</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%BF%B7%C4%AC%BC%D2" class="keyword">新潮社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2000/05</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 文庫</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 22回</li>
<li><a href="http://d.hatena.ne.jp/asin/4102177213" target="_blank">この商品を含むブログ (45件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>を読んだ(卒論はどうなってんだ…)。内容はかなり面白い。複雑系はいろいろあって経済学、生物学、物理学、化学、コンピュータ科学、脳科学とかなりいろいろな方面から研究されている。内容は今度書こうと思うけど、一番面白かったのはJ.ホランドさんについて書かれているところ。ホランドさんは遺伝的アルゴリズムを考えた人。彼はサンタフェ研究所っていう複雑系を扱ったところの研究員だったらしい。この本には彼がどういう経緯をたどって遺伝的アルゴリズムを考え付いたかが書かれていた。また、この本読んで知ったのだけど、クラシファイアシステムっていうのもホランドさんが考えたものらしい(GA調べてたとき名前出てきたのは覚えている。強化学習のProfit Sharingとすごく関係あり)。今度ちゃんと調べておきたい。</p>
<p>この本読むと世界にはとんでもない人がたくさんいることがよくわかる。あと研究費をどう取るか(複雑系って人工知能にも重要だと思うけど、実用化はかなり先だから投資する人を探すの難しいみたい)というかなり切実で現実的な問題も詳しく書かれている。「研究者って大変なんだな」と思った。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 情報装置としての人間
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 01/25/2003 01:36:02 PM
CATEGORY: 認知科学
-----
BODY:
<div class="section">
<p>新聞のTV欄見てたら、放送大学(家では5ch)で「情報装置としての人間」というのがやっていたので見てみた。たった45分だったけどかなり面白かった。講師は植田一博さんと佐倉統さん。佐倉さんは何かの本を読んだので名前は知っていた(結構若い人なんで驚いた)。</p>
<p>内容は、人工知能と認知科学の歴史的流れみたいなもの。その流れは、</p>
<dl>
<dt>論理・推論装置としての人間</dt>
<dd>推論とか三段論法とかそういうのが重視されていた。</dd>
</dl>
<dl>
<dt>知識依存アプローチ</dt>
<dd>厳密な推論や論理というものは通常の人間が使っているとは考えられない(4色カード問題の実験から)。人間の推論は過去の記憶とか経験に基づいた知識に依存した推論を行っているというのが中心。で、知識重視がずっと続いて、知識獲得、学習が問題になった。知識はどうやって獲得するのか?こういう話題は従来の機械学習で行われている。</dd>
</dl>
<dl>
<dt>生物アナロジ</dt>
<dd>3番目の考え方は、生物アナロジに基づくもの。別の学習方式。生態情報処理を重視し、ニューラルネットワークや遺伝的アルゴリズムがある。「遺伝的アルゴリズム(進化)は、学習とは違うんじゃない」という疑問には、タイムスパンは異なるが、生物が環境に「適応」するのは学習と見なせるという話だった。たぶん、強化学習もここに入ると思うけど、指摘はなかった。マイナーなのか?</dd>
</dl>
<p>で、植田さんの研究分野として「人工市場」の話があった。確か、人工知能学会誌に特集があったような・・・仮想的なエージェントを複数集めて(つまり、マルチエージェント)、がやがややらせると、現実の市場と同じ現象が再現できるというような話。確か、「複雑系」を読んだとき(<a href="http://d.hatena.ne.jp/aidiary/20030116#1122784377">id:aidiary:20030116#1122784377</a>)にも経済学と複雑系の話が出てきていた。経済のシミュレーションみたいなの。</p>
<p>で、この講義の最重要点は、「<strong>人間の認知モジュールに、生物としての知能を考える</strong>」という流れが最近出てきているってこと。要するに「情報処理アナロジから生物アナロジへ」とまとめていた。佐倉さんも言っていたけど、<em>人間は動物なんだから、人間の知能の研究として動物(人間以外の生物)の知能(環境に適応するとかそういうことだろうか?)を調べる必要がある</em>。言われてみれば当たり前だが、今までほとんどの人が気づかなかったらしい。今まで研究されてきた情報処理アナロジと生物アナロジの共存は可能だと植田さんは言っていた。どうするんだろう。生物アナロジと従来の知識重視のアプローチの融合点はどこにあるのだろうか。結構面白いテーマかも。</p>
<p>放送大学って結構面白い講義がやっている(早稲田にないようなやつ)。この1回前は、どうやら身体性認知科学がやっていたらしい。見れなかったのが悔やまれる。明日から毎日チェックしとこう。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 卒論直し
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 01/25/2003 01:37:12 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>教科書っぽいというのは自分でも少し感じていたけど、没にならなくてよかった。今日は、卒論の修正を少しした。加筆修正として、以下のことをする。</p>
<dl>
<dt>国内、海外での研究拠点ごとの研究動向を表にしてまとめる。</dt>
<dd>強化学習研究の主な拠点。東工大(小林さん、木村さん、宮崎さん、山村さん)、大阪大(浅田さん)、MIT(Brooksさん,Kaelblingさん)、Massachusetts大学(Suttonさん), ATR(銅谷さん)くらいかな?一応Webで論文リスト、研究プロジェクトを見てみる。</dd>
</dl>
<dl>
<dt>今、強化学習研究で最もホットな話題は何か?</dt>
<dd>調査した感じでは、Profit Sharing、POMDP、ロボット、マルチエージェントだがどれか1つに決められない?まだ多様性は失われていない。一応、人工知能学会誌、情報処理学会研究報告、Machine Learningの論文の本数で表を作って確認する。でも、他にも論文はたくさんあるし、これだけで比較するのも少しまずいような気がする。</dd>
</dl>
<dl>
<dt>AI全体の研究に対する強化学習の位置づけを図に示す。</dt>
<dd>前に研究報告書で出した図を修正して貼り付ける。</dd>
</dl>
<dl>
<dt>自分が目指す最終目標(脳を創る?人工知能を創る?)と比較して、強化学習の足りない点を述べる。</dt>
<dd>これが一番難しい。脳を創る。人工知能を創るって結局何を創ればいいのか?どう定義するか?去年、齋藤さんの去年の論文の範囲とはどう違うのか?論文に書くようなことではない抽象的な話になってしまいそうな予感。一応、今までWebで書いたこと、考えたことを全部整理して、素直に書くしかない。</dd>
</dl>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: コドン
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 01/27/2003 01:38:41 PM
CATEGORY: 生物学
-----
BODY:
<div class="section">
<p>今日も見た。今日は情報と生命科学の話。つまり、バイオインフォマティクス。解説は、小長谷さん。小長谷さんは、前に人工知能学会のセミナーに行ったとき、話を聞いたことがあった。顔を知っていると親しみがわく。小長谷さんは、人工知能学会誌で解説もよく書いていて、バイオインフォマティクスの伝道師という印象がある(あれ、人工知能とバイオインフォマティクスの接点って何だっけな)。</p>
<p>解説は、前に本読んだり、輪講したところで、ゲノム計画、たんぱく質の構造解析、SNPs解析、遺伝子ネットワーク、細胞シミュレーションとか。並列計算(PCクラスタ)からアルゴリズム(ホモロジー検索、分子動力学)のハードウェア化へ進むとかそんな話題もあった。並列計算とバイオインフォマティクスの接点はここだったのかと納得。</p>
<p>この履歴に一回も書いていなかった(?)が、バイオインフォマティクスを勉強して最も感動した事実がある。それは、「<strong>地球上の全生物のコドン表(塩基配列からアミノ酸への変換規則)が共通である</strong>」ってこと。これを知ってから生き物(植物も虫も全部、自分の細胞というのはちょっとないが)の見方が大きく変わった。何か同類って感じが強くなった。こんなことも、動物と人間の知能の差は少ししかないって根拠のない考えが起こってきた一因になったように思う。知能と遺伝子の関係、それ以前に知能と脳の関係、遺伝子と脳の関係はまだわかってないとは思うけど、<em>何かコドン表に対応する知能創発の根本原理みたいなものが知的な生物の根幹にありそうな感じはする</em>(根拠なし)。というかそれ以前に知能って何だ?</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 猫でもわかるWindowsプログラミング
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 01/29/2003 01:40:54 PM
CATEGORY: 日記
-----
BODY:
<div class="section">
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4797328487/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/41623RSZYBL._SL160_.jpg" class="hatena-asin-detail-image" alt="猫でもわかるWindowsプログラミング 第2版 (Neko series)" title="猫でもわかるWindowsプログラミング 第2版 (Neko series)"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4797328487/hatena-hamazou-22/">猫でもわかるWindowsプログラミング 第2版 (Neko series)</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%B7%A9%B0%E6%B9%AF%B9%A7" class="keyword">粂井康孝</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%BD%A5%D5%A5%C8%A5%D0%A5%F3%A5%AF%A5%AF%A5%EA%A5%A8%A5%A4%A5%C6%A5%A3%A5%D6" class="keyword">ソフトバンククリエイティブ</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2004/09/29</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 3回</li>
<li><a href="http://d.hatena.ne.jp/asin/4797328487" target="_blank">この商品を含むブログ (27件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>を買った。<a href="http://kumei.ne.jp/c_lang/" target="_blank">猫でもわかるプログラミング</a>というサイト(こっちはさらにすごいが)を本にまとめたもので、Win32 APIを直接使ったWindowsプログラミングを解説している。猫でもわかるってことはわからなかったら、猫以下か・・・でも、これって<strong>猫の「知能」を馬鹿にしているんじゃない?</strong></p>
<p>前は挫折したが、今度はがんばってできるようになりたい!</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: ピアジェの発達心理学
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 02/07/2003 08:40:13 PM
CATEGORY: 認知科学
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>今日は、放送大学で「心的発達と教育・社会化」という認知科学の話がやっていた。発達というのは広辞苑によると、</p>
<blockquote>
<p>個体がその生命活動において、環境に適応してゆく過程、人類の文化遺産の習得によって身体的、精神的に変化する過程、成長と学習との二要因を含む。</p>
</blockquote>
<p>とある。主に乳幼児の成長に関する文脈で使われることが多い感じがする(認知科学における厳密な定義は知らないけど)。</p>
<p>で、「発達」というとピアジェというくらいピアジェは有名な研究者。ピアジェは観察に基づいて子供の発達過程の理論を作ったらしい。話を聞いてメモったことをメモっとく。だけど何歳のときかメモるの忘れてしまった。</p>
<p>【ピアジェの理論による子供の発達過程】</p>
<ul>
<li>反射,シェマの発現
<ul>
<li>生得的反射 </li>
<li>眠りからの覚醒 </li>
<li>注視,追視 </li>
<li>第一次循環(フィードバック)反応</li>
</ul>
</li>
</ul>
<ul>
<li>自分の身体に限られた反復反応
<ul>
<li>身体を動かしてその感覚を楽しむようになる </li>
<li>第二次循環反応</li>
</ul>
</li>
</ul>
<ul>
<li>見たものに手を伸ばす
<ul>
<li>つかむ </li>
<li>一部が隠れたものを探す </li>
<li>第二次シェマの協応</li>
</ul>
</li>
</ul>
<ul>
<li>目的と手段の分離
<ul>
<li>障害物をのける </li>
<li>探索の始まり </li>
<li>第三次循環反応</li>
</ul>
</li>
</ul>
<ul>
<li>試行錯誤による新手段の発見
<ul>
<li>容器と中味の関係 </li>
<li>シェマの内面化</li>
</ul>
</li>
</ul>
<ul>
<li>表象の出現
<ul>
<li>心内実験による突然の解決 </li>
<li>前概念的思考</li>
</ul>
</li>
</ul>
<ul>
<li>イメージ,象徴
<ul>
<li>言語の発達</li>
<li>描画 </li>
<li>直感的思考</li>
</ul>
</li>
</ul>
<ul>
<li>不充分だが概念形成
<ul>
<li>分類課題(一次元) 色だけで分類のように分類基準が一つ </li>
<li>操作的活動</li>
</ul>
</li>
</ul>
<ul>
<li>具体的,論理的思考
<ul>
<li>保存概念 ものの重さは変わらないとか </li>
<li>分類課題(二次元) 色と形で分類のように分類基準が二つ </li>
<li>抽象的思考段階</li>
</ul>
</li>
</ul>
<ul>
<li>抽象的論理
<ul>
<li>負の数 </li>
</ul>
</li>
</ul>
<p>ピアジェの理論では子供の発達は上の順で段階的に起こるものだとしている。でも最新の研究では段階的には起こらない証拠も見つかっていると話していた。たとえば、生まれて2週間の子供でも足し算、引き算の基本的概念を持っている。連続運動が理解できる。ある・なしの概念があることがわかっている。生得的かという議論もあるらしい。</p>
<p>ピアジェの理論で面白いと思ったのは、第三次循環反応の「<strong>試行錯誤による新手法の発見</strong>」ってところ。これ、<strong>強化学習</strong>じゃないかと思った。講師の相場さんも「環境とのかかわり」を重視していた。あと、前半では行動学習が中心の身体性人工知能、行動に基づく知能に近いのに対し、発達過程の後半に行くにつれ、従来の人工知能で行われている内容に近くなっていくのも興味深い。</p>
<p>このような子供の発達をロボットで実現するって研究はMITの人工知能研究所で行われているBrooksさんらの<a href="http://www.ai.mit.edu/projects/humanoid-robotics-group/cog/" target="_blank">Cogプロジェクト</a>ってのと、大阪大学の浅田さんが提唱している<a href="http://www.er.ams.eng.osaka-u.ac.jp/" target="_blank">認知発達ロボティクス</a>(研究内容のリンク参照)っていうのだと思うんだけど、強化学習が使われているか(他のどんなアルゴリズムが使われているか)はよくわからない。自分としては強化学習でできそうだと思っているがどうなのか?今度、論文読んで調べておきたい。あと、もちろんピアジェの発達心理学はもう少し詳しく本読んで調べておきたい。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 完全自律エージェント
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 02/08/2003 02:54:24 PM
CATEGORY: 人工知能
-----
BODY:
<div class="section">
<p>卒論でも自律エージェント、自律ロボットって言葉を使っていたけど、果たして「自律」の定義とは何か。自律エージェント、自律ロボットって何ができたらそう呼べるのかってことが少しあいまいだった。</p>
<p>『知の創成』の第4章に完全自律エージェントが持つべき特徴が書かれている。</p>
<dl>
<dt>適応性(adaptivity)</dt>
<dd>絶え間なく変化する予測不可能な環境の中で、エージェントが長期間にわたって自己を維持できる(p.93)。</dd>
</dl>
<dl>
<dt>自律性(autonomy)</dt>
<dd>外部からの制御が存在しない。人間の介在なしに動作可能。これは他エージェントとの関係による。たとえば、人間も完全に自律していない。子供はある程度親に制御されている。成長するに従って制御から外れていくけど、これを自「立」っていう?</dd>
</dl>
<dl>
<dt>自己充足性(self-sufficiency)</dt>
<dd>長時間にわたってエージェントが自身を維持する能力。たとえば、バッテリーがなくなったら止まっちゃうってのはダメ。自分で充電しに行けなければならない。最近、自分で充電しに行く家庭用ロボットが販売されたってニュースでやっていたような・・・</dd>
</dl>
<dl>
<dt>身体性(embodiment)</dt>
<dd>物理的な身体を持つ。身体を持つってことは環境との相互作用ができるってことにつながる。環境との相互作用から複雑な行動が創発することは示されている<a href="http://d.hatena.ne.jp/aidiary/20021123#1110942249">id:aidiary:20021123#1110942249</a>に書いたけど、Braitenberg Vehiclesって面白い例がある。たぶん、もう少ししたらまた考察する)。</dd>
</dl>
<dl>
<dt>立脚性(situatedness)</dt>
<dd>エージェントが自身のセンサのみを用いて、環境との相互作用の中から環境について情報を獲得できる能力 (p.92)。つまり、人間が知識を与えるってのはダメ。</dd>
</dl>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: Cogプロジェクト
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 02/13/2003 03:03:10 PM
CATEGORY: ロボティクス
CATEGORY: 認知科学
-----
BODY:
<div class="section">
<p>について調べることにした。ここのFAQに次のような面白いものがあった。</p>
<blockquote>
<p>Q: コグってチューリングテストに通るの?</p>
<p>A: 通りません。だけど人間の幼児だって通らないでしょう?</p>
</blockquote>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 報酬の自律生成
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 02/18/2003 08:53:24 PM
CATEGORY: 認知科学
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>強化学習のサーベイを行ったが、その中で一番面白いと思った論文は、</p>
<blockquote>
<p>山口: 強化信号のコミュニケーションに基づくマルチエージェント強化学習、 情報処理学会研究報告 知能と複雑系、 Vol.2000-ICS-121, pp.91-98, 2000</p>
</blockquote>
<p>何が面白いかというと<strong>強化学習における報酬をエージェントの内から生成させるところ</strong>。従来の強化学習では報酬は外部から設計者が与えていた。その主な理由は、</p>
<blockquote>
<p>学習目標や学習基準(報酬のことです)がエージェント内にあって操作可能である場合には、エージェントの得た学習結果を正当化するように、学習目標を変更するおそれがある。そのため、学習目標は、固定かつエージェントの外部にある必要があると考えられてきた。</p>
<p>p.95</p>
</blockquote>
<p>でも、報酬が外部にあるというのは何か不自然だと<a href="http://d.hatena.ne.jp/aidiary/20021128">id:aidiary:20021128</a>に書いた。報酬が外部にあると嫌なことは、今のところ2つあると思う。</p>
<ul>
<li>エージェントの自律性が損なわれる。 </li>
<li>報酬設定の理論がないため、適切な報酬設定を設計者自身も行えない。 </li>
</ul>
<p>1つめは自律エージェント、ロボットを作るという目的においては重大な問題。この論文では心理学における<strong>内発的動機付け</strong>について言及している。</p>
<blockquote>
<p>心理学分野では、外部報酬は人間のやる気を高めると考えられてきた常識に対し,1970年代に人間において外的報酬は学習者の内発的動機付けを低下させる、という新たな知見が提案され、実験的に裏付けられている。ここで、<strong>内発的動機付けとは、人間におけるやる気、意欲などを現し、学習者自身が発見、形成していく自律的な学習目標のことである</strong>。</p>
</blockquote>
<p>つまり、外部報酬だけに従っているエージェント(人間含む)は自律性がないってことだろう。この論文では内発的動機付けをマルチエージェント系でどう定義するかを議論しているが、シングルエージェントではどうすればよいのだろうか。ヒトを含む動物も内発的動機付けができている。その仕組みは何か。本能とか遺伝かも知れないけど興味深い。</p>
<p>ヒトや動物の行動にとって報酬とはどんなものがあるかよくわからないけど、もし本能とか遺伝とかだったとしたら、学習にどのようなバイアスをかければモデル化できるのだろう。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 報酬の学習
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 02/18/2003 08:58:11 PM
CATEGORY: 認知科学
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>強化学習は心理学ではオペラント条件付けと呼ばれ、報酬は強化因子と呼ばれている。</p>
<p>山脇さんの論文<span class="footnote"><a href="/aidiary/#f1" name="fn1" title="山脇, 岡本: 強化学習と精神医学, 医学のあゆみ, Vol.202, No.3, pp.193-196, 2002">*1</a></span>に強化因子、つまり報酬の種類として3つあげられていた。<strong>強化因子とは人を動かす力のあるもの</strong>であり、嗜好品のような一次性強化因子、賞賛のような社会的強化因子、達成感のような自己強化因子などがあるらしい。</p>
<p>これらを報酬と見なすってのは本能・遺伝だけとは思えない。つまり、<strong>何を報酬とするかというのも学習によっているのではないか?</strong>設計者が予め報酬を明示的に与えるってのははっきり言ってつまらない。</p>
<p>上に書いた内発的動機付けをエージェントに実装するにはどうしたらいいのか?せめて、<strong>何を報酬とするか(つまりやりたいタスクの目標)を学習の間に獲得できるようにすればいいんじゃないだろうか</strong>。強化学習のメタ学習みたいな感じ。エージェントがいきなり自分から「これをしたい!(=これに報酬を設定したい!)」って言い出すのは無理だから、何に価値があるかを人間が教えられるように(ってこれも無理なのかな?)。さらに言えば、教えた中から推論によって新しい価値観を自動的に計算し、内発的動機付けができるようになってほしい。</p>
<p>今までの強化学習では一つのタスクを学習させようとしていたから、報酬設定は一つだけでよかった。でも自律エージェントを作るなら様々なタスクができないといけない。学習最中にその目標を獲得できる手段が必要だと思う。</p>
<p>追加だが、強化学習の「報酬は設計者が設定する」ってのは欠点だと、現在読んでいる『知の創成』でも指摘されている。</p>
<blockquote>
<p>価値に基づく学習は、機械学習の分野で用いられているような強化学習のアプローチ(このアプローチでは、環境が何らかの方法によって強化信号を与えることを前提としている)とは異なるということである。従来の強化学習の考えは、立脚性を有するエージェントの考えとは相容れない。というのは、立脚性を有するエージェントは、自身の観点に基づいて環境と相互作用を行い、それを通して経験を積み重ねていくことが求められるからである。そのため、<strong>エージェントの価値システムが、環境から与えられる強化信号を解釈できないのであれば、強化信号は環境からでなく、エージェントの内部で生成されなければならない</strong>。例えば、もし母親が子供に「いいことをしたね」と言えば、その子供は母親が言ったことを知覚し、理解し、そして肯定的な強化信号として解釈しなければならない。</p>
<p>p.486</p>
</blockquote>
</div>
<div class="footnote">
<p class="footnote"><a href="/aidiary/#fn1" name="f1">*1</a>:山脇, 岡本: 強化学習と精神医学, 医学のあゆみ, Vol.202, No.3, pp.193-196, 2002</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: ロボット入門
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 02/22/2003 10:56:51 PM
CATEGORY: ロボティクス
-----
BODY:
<div class="section">
<p>の一般向けの本をいくつか読んだ。</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4166601792/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/31QNAXM5MFL._SL160_.jpg" class="hatena-asin-detail-image" alt="ロボット21世紀 (文春新書)" title="ロボット21世紀 (文春新書)"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4166601792/hatena-hamazou-22/">ロボット21世紀 (文春新書)</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%C0%A5%CC%BE%BD%A8%CC%C0" class="keyword">瀬名秀明</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%CA%B8%E9%BA%BD%D5%BD%A9" class="keyword">文藝春秋</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2001/07</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 新書</li>
<li><a href="http://d.hatena.ne.jp/asin/4166601792" target="_blank">この商品を含むブログ (12件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4569613527/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/518F3QH15RL._SL160_.jpg" class="hatena-asin-detail-image" alt="大人のための徹底!ロボット学―最新テクノロジーから、ロボカップまで" title="大人のための徹底!ロボット学―最新テクノロジーから、ロボカップまで"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4569613527/hatena-hamazou-22/">大人のための徹底!ロボット学―最新テクノロジーから、ロボカップまで</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%CB%CC%CC%EE%B9%A8%CC%C0" class="keyword">北野宏明</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/PHP%B8%A6%B5%E6%BD%EA" class="keyword">PHP研究所</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2001/01</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 1回</li>
<li><a href="http://d.hatena.ne.jp/asin/4569613527" target="_blank">この商品を含むブログ (2件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>瀬名さんは</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4043405014/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51YGXX6KPBL._SL160_.jpg" class="hatena-asin-detail-image" alt="パラサイト・イヴ (角川ホラー文庫)" title="パラサイト・イヴ (角川ホラー文庫)"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4043405014/hatena-hamazou-22/">パラサイト・イヴ (角川ホラー文庫)</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%C0%A5%CC%BE%BD%A8%CC%C0" class="keyword">瀬名秀明</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B3%D1%C0%EE%BD%F1%C5%B9" class="keyword">角川書店</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1996/12</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 文庫</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 11回</li>
<li><a href="http://d.hatena.ne.jp/asin/4043405014" target="_blank">この商品を含むブログ (50件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4043405022/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/61H5G41HSJL._SL160_.jpg" class="hatena-asin-detail-image" alt="BRAIN VALLEY〈上〉 (角川文庫)" title="BRAIN VALLEY〈上〉 (角川文庫)"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4043405022/hatena-hamazou-22/">BRAIN VALLEY〈上〉 (角川文庫)</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%C0%A5%CC%BE%BD%A8%CC%C0" class="keyword">瀬名秀明</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B3%D1%C0%EE%BD%F1%C5%B9" class="keyword">角川書店</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2000/12</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 文庫</li>
<li><span class="hatena-asin-detail-label">購入</span>: 1人 <span class="hatena-asin-detail-label">クリック</span>: 5回</li>
<li><a href="http://d.hatena.ne.jp/asin/4043405022" target="_blank">この商品を含むブログ (32件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4043405030/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/61DACWRVDYL._SL160_.jpg" class="hatena-asin-detail-image" alt="BRAIN VALLEY〈下〉 (角川文庫)" title="BRAIN VALLEY〈下〉 (角川文庫)"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4043405030/hatena-hamazou-22/">BRAIN VALLEY〈下〉 (角川文庫)</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%C0%A5%CC%BE%BD%A8%CC%C0" class="keyword">瀬名秀明</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B3%D1%C0%EE%BD%F1%C5%B9" class="keyword">角川書店</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2000/12</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 文庫</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 2回</li>
<li><a href="http://d.hatena.ne.jp/asin/4043405030" target="_blank">この商品を含むブログ (19件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>とかの小説を書いてきたがロボットにも興味があるらしい。ロボット研究者を取材した結果がまとめられている。北野さんは遺伝的アルゴリズム(GA)のサーベイを行っていたとき初めて知り、ずっとGAの研究者かと思っていた。去年ROBODEXに行った時(<a href="http://d.hatena.ne.jp/aidiary/20020329">id:aidiary:20020329</a>)、北野共生システムプロジェクトというのでヒューマノイドを作っているということも聞いていた。さらにあのRoboCupの提唱者の1人でもあるらしい。人工知能学会でも取り上げられていたがすごい人だ。</p>
<p>上の2つとも似たようなことが書かれているが、主にヒューマノイドとRoboCupが中心。ヒューマノイドを作る意味とかいろいろ考察してあり面白かった。RoboCupというのはロボットにサッカーをやらせるというだけで、あまり注目していなかったのだが、人工知能やロボティクスにとって重要なんだと考えが変わった。</p>
<p>以前の人工知能研究の中心にチェスがあった(チェスは人工知能のハエと称された、生物学の主な研究対象がショウジョウバエであったことに関連づけている)が、ディープブルーが世界チャンピョンを破ったことで今では研究が下火になってきている。そのチェスに変わる新しい題材としてサッカーを選んだらしい(日本の研究者が提案したというのもうれしい)。サッカーはチェスと違って、動的、実時間、不完全情報、記号化困難、分散システム、マルチエージェントなど従来の人工知能が扱ってなかった技術を必要としているため絶好の対象とのこと。</p>
<p>2050年にはヒューマノイドロボットのチームで人間のチャンピョンチームに勝つことを目標としている(ライト兄弟が初飛行してから人類が月に行くまで66年しかかかっていないことなどから50年あればできると考えたらしい)。50年ていうと自分は70歳くらい生きているかわからないけどどうなるか楽しみ。できれば自分も何かしら貢献したい。サッカーができるくらいなら十分実用できると思うしね。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: RoboCup
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 02/26/2003 03:06:17 PM
CATEGORY: ロボティクス
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>についてちょっと調べてみた。人工知能学会誌の2002年11月号にロボカップの小特集が組まれていた。ロボカップというのはロボットにサッカーをやらせるやつだけど、いくつかに分かれていて、シミュレーションリーグ、小型ロボットリーグ、中型ロボットリーグ、四足ロボット(AIBO)リーグ、ヒューマノイドリーグがある。自分はロボットを扱えないのでシミュレーションリーグについてちょっと調べてみた。</p>
<p>秋山さんの論文<span class="footnote"><a href="/aidiary/#f1" name="fn1" title="秋山: サッカーシミュレーションリーグの動向, 人工知能学会誌, Vol.17, No.6, pp.708-713, 2002">*1</a></span>によると、シミュレーションリーグの強豪チームは強化学習を主に使っているらしい。ちょっと長いけど引用。</p>
<blockquote>
<p>TsinghuAeolusは強化学習によってヒューリスティックな知識を獲得し、その知識を用いたA*探索アルゴリズムによって動的に最適なキック列の探索を行っている。これによって、非常にスマートで強力なボールコントロールが実現されている。TsinghuAeolusは、動いているボールの追跡など、そのほかの基本技術にも強化学習を適用しており、個人レベルの技術に関しても参加チームの中では最も高いレベルに達している。強化学習によって基本技術を獲得する手法は3位のBrainstormersも用いている。TsinghuAeolusは、Brainstormersの手法を参考にして発展させている。この2チームの基本技術の強さが知られるとともに、強化学習が基本技術の獲得に有効であることもよく知られるようになってきた。今後もシミュレータが拡張され実機へ応用する場合などに、強化学習は有効なアプローチとなり得るだろう。</p>
<p>p.710</p>
</blockquote>
<p>あらかじめすべての状態を考慮してプログラムしておくことは大変なので学習を使おうってことだと思う。人間がプログラムするよりいい結果が出せるってことの一つの証明になっているかな?(プログラミングのコストを比較しなくちゃわからないけど・・・)。</p>
</div>
<div class="footnote">
<p class="footnote"><a href="/aidiary/#fn1" name="f1">*1</a>:秋山: サッカーシミュレーションリーグの動向, 人工知能学会誌, Vol.17, No.6, pp.708-713, 2002</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: RoboCupシミュレーション
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 02/26/2003 03:08:02 PM
CATEGORY: ロボティクス
-----
BODY:
<div class="section">
<p>というようなわけで、RoboCupのシミュレーションをかじってみることにした(優勝するぞ!って本気でやるのは無理っぽい。プログラムもかなり大規模化しているらしい)。その先がけとして、</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4320120191/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51N2WDWXQ6L._SL160_.jpg" class="hatena-asin-detail-image" alt="RoboCupではじめるエージェントプログラミング" title="RoboCupではじめるエージェントプログラミング"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4320120191/hatena-hamazou-22/">RoboCupではじめるエージェントプログラミング</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%B9%E2%B6%B6%CD%A7%B0%EC" class="keyword">高橋友一</a>,<a href="http://d.hatena.ne.jp/keyword/%B0%CB%C6%A3%C4%AA%B9%C0" class="keyword">伊藤暢浩</a>,<a href="http://d.hatena.ne.jp/keyword/%A5%ED%A5%DC%A5%AB%A5%C3%A5%D7%C6%FC%CB%DC%B0%D1%B0%F7%B2%F1" class="keyword">ロボカップ日本委員会</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B6%A6%CE%A9%BD%D0%C8%C7" class="keyword">共立出版</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2001/07</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 1回</li>
<li><a href="http://d.hatena.ne.jp/asin/4320120191" target="_blank">この商品を含むブログ (3件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>って本を買った。RoboCupシミュレータは、<a href="http://sserver.sourceforge.net/" target="_blank">RoboCup Soccer Simulator</a>で手に入る。シミュレータはサーバ・クライアント方式でUDPでやり取りする。サーバはCで書かれているが、クライアントはどんなプログラミング言語でもよいらしく、この本ではJavaが使われていた。Javaのネットワークプログラミングやったけどあまり覚えていないので勉強になる。あと、やりとりするコマンドはLispのS式を使っている。Lispやっといてよかった(ってあまり関係ないか)。</p>
<p>最初のインストールとかでとっつきにくいところあるなぁ。面白そうなのに残念だ。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: MFC
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 02/27/2003 03:09:03 PM
CATEGORY: 日記
-----
BODY:
<div class="section">
<p>猫でもわかるWindowsプログラミングを読了した。<strong>猫でもわかるって本当かよ・・・</strong>という感じだったが、他の本に比べて分かりやすかった。Windows APIをもろに使うプログラミングの基礎(の基礎か?)は分かった。残りの話題はWebを見ながらやっていく。次はMFC(Microsoft Foundation Class)をやっときたい。どうやらC++を使ってWindows APIをカプセル化しているらしい。オブジェクト指向が使える。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 連想記憶
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 03/01/2003 03:13:18 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>今年も輪講が始まった(2人しかいないので輪になっていないが・・・)。テーマは一応「連想記憶」ってことになった。強化学習を調べていたから忘れていたけど、<a href="http://d.hatena.ne.jp/aidiary/20020626">id:aidiary:20020626</a>に興味があって調べていたことがあった。ニューラルネットも一応やっておきたいのでいい機会になればいい。</p>
<p>ある意味、強化学習も連想の一種と言えると思う。状況に応じて行動を連想しているから。これは、Suttonさんの『強化学習』にも書いてあった。</p>
<blockquote>
<p>効果の法則(追加:状況と応答を結びつける法則。応答がよかったら結びつきが強められ、よくなかったら弱められる)には、我々が試行錯誤学習で意味しようとすることの2つの最も重要な特徴が含まれている。まず、<em>選択的(selectional)</em>であるということであり、これは代替案を試し、その結果を比較してそれらの中から選択することを含んでいるという意味である。次に、<em>連想的(associative)</em>であるということで、選択によって見つけた代替案は特定の状況と関連づけられている。進化における自然選択は選択過程の主な例であるが、これは連想的ではない。教師あり学習は連想的であるが、選択的ではない。これらを結合したものが効果の法則と試行錯誤学習によって本質的なものである。別の言い方をするならば、効果の法則が探索と記憶を組み合わせる基本的な方法の1つであるということである。この場合の探索は、各状況において多くの行動を試行して選択するという形式で、記憶はどのような行動が最も機能したかを状況と関連付けて、思い出すという形式である。このように探索と記憶を組み合わせる方法が強化学習の本質である。</p>
<p>強化学習 (pp.18-19)</p>
</blockquote>
<p>連想記憶を扱った論文は人工知能学会誌ではほとんどなかったんだけど、国立国会図書館の記事検索で調べてみたら、電子情報通信学会の論文がたくさんあった。まだ何もしらないためいきなり論文はきつい。というわけで、</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4785631015/hatena-hamazou-22/"><img src="http://d.hatena.ne.jp/images/hatena_aws.gif" class="hatena-asin-detail-image" alt="脳の情報処理" title="脳の情報処理"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4785631015/hatena-hamazou-22/">脳の情報処理</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%C3%E6%CC%EE%B3%BE" class="keyword">中野馨</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%BE%BC%B9%B8%C6%B2" class="keyword">昭晃堂</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1997/02</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 1回</li>
<li><a href="http://d.hatena.ne.jp/asin/4785631015" target="_blank">この商品を含むブログ (4件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4764902419/hatena-hamazou-22/"><img src="http://d.hatena.ne.jp/images/hatena_aws.gif" class="hatena-asin-detail-image" alt="Cでつくる脳の情報システム" title="Cでつくる脳の情報システム"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4764902419/hatena-hamazou-22/">Cでつくる脳の情報システム</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%C3%E6%CC%EE%B3%BE" class="keyword">中野馨</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B6%E1%C2%E5%B2%CA%B3%D8%BC%D2" class="keyword">近代科学社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1995/11</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 4回</li>
<li><a href="http://d.hatena.ne.jp/asin/4764902419" target="_blank">この商品を含むブログ (3件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>あたりで勉強したい。連想記憶を強化学習に応用すると何かいいことがないかなと思ってたりする。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 内部評価系の自己組織的形成
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 03/01/2003 03:14:40 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p><a href="http://d.hatena.ne.jp/aidiary/20030218">id:aidiary:20030218</a>の続き。強化学習においてエージェント内部で報酬を自律生成させたい。手がかりがなかったのだが、それらしいのを見つけた。</p>
<p>望月: 強化学習エージェントにおける多様な内部評価系の自己組織的形成, 1999</p>
<p>神戸大学の修士論文のようだ。読んでみたい。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 週間 Real Robot
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 03/04/2003 03:15:49 PM
CATEGORY: ロボティクス
-----
BODY:
<div class="section">
<p>という雑誌を買った。今日が創刊号の発売日できりがよかった。毎週、(移動)ロボットの部品がついていて、くみ上げると移動ロボットができる仕組み。最終的にどういうのができるのか調べてみたところ、移動機構、光センサ、ライン追跡装置、超音波センサ、プログラム可、リモコン操作可、音声認識などかなり面白くなりそうな予感がする。早速、創刊号(これだけ480円で後は1000円くらい)を買って組み立てた。まだ土台だけ。</p>
<p>このロボットはもともとはイギリスの<a href="http://www.cirg.reading.ac.uk/home.htm" target="_blank">レディング大学の人工頭脳学科</a>(海外にはそんな学科があるんだ)で作られたらしい。記事の内容にはロボティクスの基礎やロボットの紹介などもあって面白い。でも毎週1000円ってのはきついな。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: ロボット速習システム
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 03/27/2003 03:18:49 PM
CATEGORY: ロボティクス
-----
BODY:
<div class="section">
<p>今日の読売新聞に面白い記事が載っていた。</p>
<blockquote>
<p>富士通は二十七日、ロボットに歩行や起立などの基本動作を一分以内に教え込ませることができるシステムを開発したと発表した。これまでは「起立」を教えるのに、二、三日かかっていたが、ロボットの手足を動かす「神経回路」の調整に成功し、新しいシステムでは二十秒で教えることができる。実際に立ち上がる時間も、これまでの二十秒から七、八秒に短縮されるという。学習には人間の介添えが必要で、学習後もロボットは転倒することもあるが、「複雑な制御が必要なロボットの応用開発が飛躍的に進むことは間違いない」(富士通研究所)という。</p>
</blockquote>
<p>学習するというのが注目を引いた。ミミズやナツメウナギで存在が確認された「神経振動子」をモデル化したCPG(Central Pattern Generator)という新しいニューラルネットを使っているそうだ。っていうか富士通ってロボットも研究してたのか・・・知らなかった。下の記事によるとROBODEX2003でお披露目するという。行きたいけど今年は去年以上に混みそうな気がする。</p>
<p>【関連記事】</p>
<ul>
<li><a href="http://pr.fujitsu.com/jp/news/2003/03/27.html" target="_blank">世界初! 構成を動的に変更可能なニューラルネットを用いたヒューマノイドロボットの動作学習に成功 </a></li>
</ul>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 強化学習の高速化
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 04/02/2003 03:24:34 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>について考えたことのメモ。強化学習の応用にあたっての重要な問題点に<strong>学習速度が非常に遅い</strong>ということがあげられていた。学習が遅い原因として状態・行動対の価値の評価を試行錯誤的に行うからだと認識している。今まで調べてきて学習の高速化に焦点をあてている研究方法を列挙すると大体次のようになる(ただし、試行錯誤回数を減らすのと時間計算量を減らすのがごっちゃになっている。自分にはまだ区別できない)。</p>
<ul>
<li>関数近似:経験を一般化する。 </li>
<li>適正度の履歴:得た報酬を過去の経験列に分配して、価値がいっぺんに更新されるようにする。 </li>
<li>プラニング:一度得た経験を何度も使いまわす。 </li>
<li>k-確実探査法:できるだけ効率的に経験を得て、無駄な試行錯誤を行わないようにする。 </li>
<li>サブタスクの設定:タスクをサブタスクに分割して個々に強化学習。 </li>
<li>TTD(Truncated TD)のようにアルゴリズムの改良(詳細はよくわからなかった)。 </li>
<li>遺伝的アルゴリズムを使う。 </li>
<li>マルチエージェント系にして個々のエージェントが得た経験を共有または通信しあう。 </li>
<li>教示を導入。 </li>
<li>状態空間を粗くする。 </li>
</ul>
<p>ここで疑問。高速化というと並列化すればいいというイメージがあるのだけど、そういう研究は見られなかった(見落としの確率ほぼ100%だが。大昔、ほとんど調べてない部分に海外でやられている可能性が高い)。ただ、プラニングではプラニングの過程だけを取り出して並列化できると示唆されていたのは目にしたことがある。</p>
<p>並列化するとなると<strong>価値の評価部分を並列的に同時に行って最後に統合する</strong>という当たり前な考えが浮かぶ(マルチエージェント系で個々のエージェントを並列実行することに似ているような気もするが)がどうなのだろう。直感的(並列化もよく知らないので妄想の域に入っているが)には速くなりそうなのだが収束しないこともあるのだろうか。強化学習の並列化の研究がどうなっているか調べてみる必要あり。自分でも実験して調べられそうな予感もする。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 扁桃核
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 04/02/2003 03:25:22 PM
CATEGORY: 脳科学
-----
BODY:
<div class="section">
<p>聞きかじりの知識では脳の扁桃核ってところは「<strong>好き嫌い</strong>」を司っているらしい。報酬の自動設定(強化学習の報酬は人間が設定するのが一般的だが、エージェントが自律的に設定するにはどうすればよいかっていう前に考えたこと)と似ているような気がする。大脳基底核が強化学習でモデル化できるという仮説があるが、扁桃核とのつながり、扁桃核のモデル化とかあるのか。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: Creating Advice-Taking Reinforcement Learners
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 04/04/2003 03:28:38 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>強化学習に教示を導入することによって高速化している。ここでの高速化は収束までのエピソード数(状態の知覚、行動、報酬の獲得が1エピソード)の短縮を意味している。</p>
<p><strong>強化学習は知識が全くないところから学習するため学習初期ではランダムな動作しかできず、収束まで膨大なエピソードを必要としている</strong>のが1つの欠点となっている。例えば、<a href="http://javagame.main.jp/ai/maze_learning.html" target="_blank">迷路学習</a>でも学習初期はでたらめな動作しかできずゴールにつくまで非常に時間がかかっている。この欠点を改善するため外部の観察者がエージェントにアドバイスを行い収束を早めようというのが趣旨(なんだけど<em>それ以上の意味がありえる予感</em>)。</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20050806152825" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20050806/20050806152825.gif" alt="f:id:aidiary:20050806152825g:image" title="f:id:aidiary:20050806152825g:image" class="hatena-fotolife"></a></p>
<p>価値関数にニューラルネットを用いた従来のQ学習(図の黒部分)にアドバイスを表すユニット(赤部分)を追加。外部の観察者によるアドバイスがエージェントの振る舞いに影響を与えている。この論文では外部の観察者は人間で命題論理をニューラルネットに変換したものをアドバイスとして与えていた。ニューラルネットにこんな形で追加するのは新鮮なので驚いた。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: アドバイスあり強化学習
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 04/05/2003 03:32:09 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>このアルゴリズムの位置づけは下の図のようになっていると思われる。</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20050806153203" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20050806/20050806153203.gif" alt="f:id:aidiary:20050806153203g:image" title="f:id:aidiary:20050806153203g:image" class="hatena-fotolife"></a></p>
<p>アドバイスあり強化学習のアドバイスはニューラルネットの正解に相当すると思う。ニューラルネットは常に正解を必要とする。一方、アドバイスあり強化学習はニューラルネットに比べてわずかな正解を与えるだけですみ、残りは強化学習の試行錯誤でやってくれる。コンピュータがもっと強力になれば余計な段階だけど今の時点では必要と思われる。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 強化学習の並列化
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 05/18/2003 03:33:57 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>空白期があったけどなんとなく再開。今年は強化学習の並列化というテーマで研究(になってればいいが)しようと思う。去年の強化学習のサーベイにより強化学習は非常に遅い点が問題となっていることがわかった。後でまとめるが「強化学習が遅い」といった場合、一般的に大量のトレーニングエピソードが必要なことを指す。だけど収束に必要な計算時間という点でも十分に遅い。</p>
<p>例えば、前にも書いたTD-Gammonは学習に2週間必要だそうだ(『エージェントアプローチ人工知能』のp.621)。計算時間の短縮は必要だと思う。計算時間の短縮というと自分の所属している研究室の影響から並列化というのがすぐに思い浮かぶ。というわけで今年の目標は<strong>強化学習アルゴリズムを並列実行させ、高速化を目指す</strong>ことにした。何か結果が出せればいいな。ってかある程度結果が出ないと卒業できないんだった。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: テラリウム
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 05/19/2003 03:37:15 PM
CATEGORY: 人工生命
-----
BODY:
<div class="section">
<p>最近、テラリウムというのをやっている。テラリウムはMicrosoft .NET Frameworkテクノロジを使用したマルチユーザーネットワーク対戦型ゲーム。P2Pでパソコン同士をつないで大きな生態系(もどき)を作り、仮想的な虫の生存競争を繰り広げる。参加者は肉食動物、草食動物、草といった生物のアルゴリズムをプログラミングし、生き残ることを目標とする。</p>
<p>自分も虫(肉食、草食)を作って投入してみたが<strong>10分で絶滅した</strong>。簡単な実装では到底歯が立たない。敵から逃げている最中に草や他の動物に引っかかってしまう。もがき苦しんでいるようで逃げろ!逃げるんだ!と応援したくなる(笑)。最適経路探索が現在の課題だな・・・とは言いながら最近やっと軌道にのって上位に食い込むようになってきた、<strong>草だけど</strong><span class="footnote"><a href="/aidiary/#f1" name="fn1" title="補足しておきますが、草は何もしなくても勝手に増えていきます(笑)">*1</a></span>。</p>
<p>参加者が少なくあまり盛り上がってないけど、こういうコンセプトのゲームは非常に面白いと思う。</p>
<p>mori48_acaの勇姿。数分後に絶滅。</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20050806153710" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20050806/20050806153710.jpg" alt="f:id:aidiary:20050806153710j:image" title="f:id:aidiary:20050806153710j:image" class="hatena-fotolife"></a></p>
</div>
<div class="footnote">
<p class="footnote"><a href="/aidiary/#fn1" name="f1">*1</a>:補足しておきますが、草は何もしなくても勝手に増えていきます(笑)</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 動物行動学
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 05/20/2003 03:40:06 PM
CATEGORY: 生物学
-----
BODY:
<div class="section">
<p>動物行動学は強化学習と関係がある。もともと「強化」という概念はこの分野で使われていた言葉のようだ。というわけでいくつか本を読んでみた。ティンバーゲンは読んだが内容をメモっとくの忘れてしまった。バーネットは今読んでいる最中なので面白い話は載せようと思う。ざっと目次を見たが、動物の学習と知能について論じているところが面白そうだ。強化の話も載っている。両方ともすごい古い本だけど内容はどうなんだろう。</p>
<ul>
<li>ティンバーゲン『動物の行動』</li>
<li>バーネット『動物とヒトの行動 本能と知恵』</li>
</ul>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: Neuro-Dynamic Programming
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 05/22/2003 03:41:38 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/1886529108/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51N3GRDQF8L._SL160_.jpg" class="hatena-asin-detail-image" alt="Neuro-Dynamic Programming (Optimization and Neural Computation Series, 3)" title="Neuro-Dynamic Programming (Optimization and Neural Computation Series, 3)"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/1886529108/hatena-hamazou-22/">Neuro-Dynamic Programming (Optimization and Neural Computation Series, 3)</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/Dimitri%20P%2E%20Bertsekas" class="keyword">Dimitri P. Bertsekas</a>,<a href="http://d.hatena.ne.jp/keyword/John%20N%2E%20Tsitsiklis" class="keyword">John N. Tsitsiklis</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/Athena%20Scientific" class="keyword">Athena Scientific</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1996/10</li>
<li><span class="hatena-asin-detail-label">メディア:</span> ハードカバー</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 2回</li>
<li><a href="http://d.hatena.ne.jp/asin/1886529108" target="_blank">この商品を含むブログ (2件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>今日から読み始めた。Neuro-Dynamic Programming(ニューロ動的計画法)とは<a href="http://nao.s104.xrea.com/RL-FAQ-j.html" target="_blank">SuttonさんのFAQ</a>によると強化学習の別名だそうだ。1996年にこの著者らによってニューラルネットと動的計画法を組み合わせて作られたためこう呼ばれた。動的計画法は強化学習の基礎。それに関数近似としてニューラルネットを組み合わせたものがNeuro-Dynamic Programming。</p>
<p>実はこの本、図書館になくて購入を依頼したのは自分だ。強化学習のバイブルだと書いたら購入してくれた。しかし去年は全く理解できず、ほとんど読まなかった。せっかく購入してもらったのに読まないというのはあまりにももったいない。今回は読破したい。とは言え、この間、検索したら貸し出し中だった。誰か強化学習に興味ある人がいたのかな。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: AIBO
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 05/23/2003 03:44:21 PM
CATEGORY: ロボティクス
-----
BODY:
<div class="section">
<p>今日、自分の所属している研究室にAIBOが来た。ROBODEXなどで間近で見たことはあったけど触るのは始めてなので面白かった。ロボットのプログラムとか興味があったので調べてみたい。</p>
<p>今日結構長い時間見てたのだけど、当然のごとく心や感情(とは何かもよくわからないが)があるように見えないし、感情移入もできない。一方、本物の犬や猫には心や感情があるように見えるし、感情移入もできる。この違いは一体何なのか。どこにあるのか。それが気になる。感情移入とかはあくまで主観で人によって違うので別の意見があるのは当たり前だが、ここでは「自分の」考えを整理してみる。</p>
<ul>
<li>見た目がいかにも非生物っぽいからか? </li>
</ul>
<p>もしAIBOの見た目が本物の犬や猫にそっくりだったら自分としては感情移入できそう。動きがぎこちなくても。例えば<strong>本物の犬や猫にそっくりなぬいぐるみは全く動かなくてもある程度感情移入できそう</strong>。見た目は大事だろう。どのメーカも見た目が本物の動物そっくりなロボットをなぜ作らないのか疑問に思う(確か猫のはどっかで見たことあるような気がするが)。そっちのが売れるような気がするなぁ。</p>
<ul>
<li>目の前で再現されている行動は、誰かがプログラムしたものと知っているからか?規則的な反応しかしないからか?</li>
</ul>
<p>これはかなり大きな理由だと思う。だからこそプログラムされた以上の能力、あるいはプログラマが予期しないような行動の「自律的な」獲得を目指す機械学習に惹きつけられる。</p>
<ul>
<li>人工の「心」や「感情」なんてないと思っているからか? </li>
</ul>
<p>あまり認めたくないけど、「心」の奥底ではそう思っているのかもしれない。だから将来AIBOが本物の犬や猫と全く区別できない行動ができたとしても、「<strong>あぁ、あれロボットだから心や感情なんてないよ</strong>」って思ってしまいそう。さらに言えば、人間と全く同じように行動するロボットができても同じように思ってしまいそう。</p>
<p><a href="http://d.hatena.ne.jp/aidiary/20020528">id:aidiary:20020528</a>に強いAIと弱いAIの区別について書いた。強いAIは知的に行為する機械は本物の、意識的な心を持っているという主張する。一方弱いAIは知的であるかのように行為する機械は作れるが意識的な心は持っていないと主張する。この主張の相違は「心」の捉えかたにあると思う。「心」が何かはわからないけど、現在の自分は弱いAIの側だと最近感じる。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: UDがん研究プロジェクト
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 05/26/2003 03:55:49 PM
CATEGORY: 日記
-----
BODY:
<div class="section">
<p>UDがん研究プロジェクトとは新たな抗がん剤となる可能性のある分子を世界中のパソコンの余力を利用して探し出そうというプロジェクト。今日インストールして参加した。現在、世界中でUDに最も貢献しているのはあの2ch。というわけで自分も<a href="http://ud-team2ch.net/" target="_blank">UD@Team2ch</a>に入った。</p>
<p>UDがん研究プロジェクトなんて今まで全く知らなかった(<a href="http://setiathome.ssl.berkeley.edu/" target="_blank">SETI@Home</a>と<a href="http://folding.stanford.edu/" target="_blank">Folding@Home</a>は知ってた。)。ところが、昨日Webサーフィンしていて偶然<a href="http://www.geocities.co.jp/Beautycare/8256/2002.5after.html" target="_blank">2002年5月後半闘病日記</a>ってページにたどり着いた。もうこのページ読んでたらなんとも言えない気分。特に最期の日の日記。コンピュータ1台の計算能力程度じゃ大して意味ないかもしれないけどやらないよりまし。PCの電源いれて計算せず遊ばせておくなんて無駄。少しでも計算結果が役に立てばいい。少しぐらいの電気代がなんだ!</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: AIBO日記1
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 05/29/2003 03:56:42 PM
CATEGORY: ロボティクス
-----
BODY:
<div class="section">
<p>AIBOのプログラミングを<a href="http://openr.aibo.com/openr/jpn/index.php4" target="_blank">OPEN-R SDK</a>というのを使って行った。プログラミング言語はC++。まずサンプルコードを読むことからはじめた。今日は、オブジェクト間の通信、LEDの点灯、耳の動作、首の動作についてコードを読み、実行してみた。思っていたほど難しく、完全に理解しきれなかった。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: AIBO日記2
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 05/30/2003 03:57:06 PM
CATEGORY: ロボティクス
-----
BODY:
<div class="section">
<p>今日は、脚の動きについてのサンプルを読んだ。オブジェクト間通信という形を取っているので慣れないうちはとっつきにくい。実際にやってみる前は、leg.Move(30度)のように指定できるものと思っていたけど、実際はそんなに簡単ではない。命令データを表す構造体にデータをセット(このやり方も何か複雑)して、オブジェクトにその命令データを発行するという手順になっている。もっと簡単に扱えるラッパークラスとかないのかな。自分で作ってみようか・・・</p>
<p>だんだんどんなことがプログラムできるのか分かってきた。楽しくなってきたけど、複雑で頭がくらくらする。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: システムバイオロジー
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 05/31/2003 03:58:14 PM
CATEGORY: 生物学
-----
BODY:
<div class="section">
<p>という授業を聞きにいった。講師はなんと北野宏明さん。北野さんのお名前は遺伝的アルゴリズムのサーベイしていた時に始めて知ったが、実際に会ったのは始めて。人工知能学会誌2002年11月号の学生フォーラム(p.701)に略歴が紹介されている。とにかくすごい人だと思う。</p>
<p>ERATO北野共生プロジェクトの責任者、ソニーコンピュータサイエンス研究所の副所長、音声自動翻訳研究でComputers and Thought Award賞受賞、遺伝的アルゴリズムの研究者で『遺伝的アルゴリズム』シリーズの著者、ソニーでAIBO開発、ロボカップの提唱者、システムバイオロジーの提唱者。ニューズ・ウィーク誌が選んだ「21世紀のリーダ100人」の一人。</p>
<p>今回の講義はその中でもシステムバイオロジーについての話(ロボットか遺伝的アルゴリズムの話の方がよかったなぁ)。講義の内容は分子生物学よりなのではっきり言ってぜんぜん分からなかった・・・。けど北野さんの話を(たとえ分からなくても)聴けたのはよかった。とんでもなく博学で多才な人だと感じた。「サインもらおうかな」とか話し会っている人もいたが、自分も少しそう考えてた。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: MPI(Message Passing Interface)
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/02/2003 03:59:35 PM
CATEGORY: 日記
-----
BODY:
<div class="section">
<p>強化学習を並列化して学習を高速化させるというのを研究のテーマにしようと目論んでいる。並列計算にはMPIというライブラリを使う。というわけでMPIについて『MPI並列プログラミング』という本を読んでいる。</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/456301544X/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51yNkYlpDTL._SL160_.jpg" class="hatena-asin-detail-image" alt="MPI並列プログラミング" title="MPI並列プログラミング"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/456301544X/hatena-hamazou-22/">MPI並列プログラミング</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/P%2E%A5%D1%A5%C1%A5%A7%A5%B3" class="keyword">P.パチェコ</a>,<a href="http://d.hatena.ne.jp/keyword/Peter%20S%2E%20Pacheco" class="keyword">Peter S. Pacheco</a>,<a href="http://d.hatena.ne.jp/keyword/%BD%A9%CD%D5%C7%EE" class="keyword">秋葉博</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%C7%DD%C9%F7%B4%DB" class="keyword">培風館</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2001/07</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 4回</li>
<li><a href="http://d.hatena.ne.jp/asin/456301544X" target="_blank">この商品を含むブログ (7件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>AIBOとか他にやりたいことたくさんあるけど今週はこの本読みきるのに全部使おう。並列プログラミング(アルゴリズム)はぜんぜん知らないので概要をつかんでおかないとまずい。強化学習にどういう風に適用すればよいか(できるのか)見当がつかなくなってしまう。去年もそうだったけど見通したたないっていうのはつらい。一刻も早く抜け出したい。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 強化学習の並列化
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/09/2003 04:33:05 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>最近、面白いと思うネタがあまりない。今日は強化学習に関する論文について整理しておくことにする(書いててもあまり面白くないが)。</p>
<ul>
<li><a href="http://journal.info.unlp.edu.ar/journal/journal6/papers/p4.pdf" target="_blank">A parallel implementation of Q-Learning based on communication with cache</a></li>
</ul>
<p>自分がやろうと考えてた研究(?)に最も近い。強化学習は学習スピードが遅い。そこで並列計算機上で走らせて高速に実行させようというのが目的。分散メモリ型でPVM(Parallel Virtual Machine)を使っている。状態行動価値関数を分割して各プロセッサに割り当て(データ分割手法)、それを並列更新して速くしている。8プロセッサを越えると通信のオーバヘッドが大きくなり速度が落ちてしまっている。分散メモリは通信のコストが問題になるらしい。状態行動価値関数がテーブル形式である点が問題だと思う。今後の進展はあるのだろうか?</p>
<ul>
<li><a href="http://personal.denison.edu/~kretchmar/pubs/SCI2002.pdf" target="_blank">Parallel Reinforcement Learning</a></li>
</ul>
<p>題名を見てまさしくこれだ!と期待したが少し違った。複数のエージェントが同時並列的に学習し、一定期間ごとに学習結果を融合する(行動価値関数を評価回数で重みづけし線形和(?)を取る)ことによって高速化している。Parallelとあるけど並列計算機上で走らせることには言及していない。行動価値関数の融合は後で役に立つかもしれない。</p>
<ul>
<li><a href="http://www7.in.tum.de/~weissg/Docs/weissg-aa98.pdf" target="_blank">A Multiagent Perspective of Parallel and Distributed Machine Learning</a></li>
</ul>
<ul>
<li>Parallel and Distributed Multi-Agent Reinforcement Learning</li>
</ul>
<p>Parallelとあるが並列計算機には言及していない。マルチエージェント系でジョブ配置問題に適用している。speed-up, effectiveness, reasonable timeとかいう言葉があるけどCPU時間のことを言っているのかよくわからない。</p>
<p>強化学習を並列計算機上で実装して高速化!という論文はあまりないように思われる。探し方があまいかもしれないが。ただマルチエージェント系の強化学習を扱っているものは並列計算機上での実装と非常に相性がよいような感じを受ける。ヒントになりそう。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: ニューラルネットの並列化
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/10/2003 04:35:59 PM
CATEGORY: 機械学習
-----
BODY:
<div class="section">
<p>強化学習の並列化を行っている研究(昨日の)はテーブル形式の状態行動空間(Qテーブル)を各プロセッサに分割する方法が取られている。しかし、状態行動空間が巨大な場合はテーブル形式で表すことはできずニューラルネットなどを用いて状態を汎化する方法がとられる(関数近似)。そのようなわけで、ニューラルネットを用いた強化学習の並列化はどうすればよいか気になっていた。</p>
<p>ニューラルネットの並列化はどうやるか?という点がそもそも疑問。ニューラルネットはPDP(Parallel Distributed Processing:並列分散処理)とも呼ばれそれ自身で並列分散計算を行っているが、並列計算機への実装という観点からはどうか?</p>
<p>あるデータ群Aで正しく出力するように学習したニューラルネットAとそれとは別のあるデータ群Bで正しく出力するように学習したニューラルネットBがあるとする。このとき、AとB両方のデータ群を入力したとき正しく出力するニューラルネットCを再学習することなしに得られるのかが疑問だった。もしこれができるならAとBを並列に独立して学習させその結果をあわせてCを作れば学習は速くなるだろう。</p>
<p>調査した結果、次の2つの論文が答えを与えてくれた。</p>
<ul>
<li>超並列計算機上でのニューラルネットワークの並列学習法</li>
<li>並列計算機上の誤差逆伝播学習法の並列学習モデル</li>
</ul>
<p>この論文では、ニューラルネットワークの学習方である誤差逆伝播法を分散メモリ型の並列計算機上に実装する3つの方法を議論している。その中で学習セット並列モデルというのがそれっぽい。</p>
<blockquote>
<p>△w = ・・・ (5) 誤差逆伝播法で重みの修正量を求める式(本質ではないので略)</p>
<p>w(t) =w(t-1) + △w (6) 重みの更新式</p>
<p>[学習セット並列モデル] 式(6) からわかるように、ネットワークの新しい重みが学習前の重みと誤差修正量の線形和であることを利用し、学習セットを分割して並列学習を行う手法を学習セット並列モデルと呼ぶ。バックプロパゲーション学習においては、複数の学習パターンを何度もネットワークに提示して重みを修正していくが、学習パターン数 P を p1,p2,・・・,pn の n 個の部分に分割し、n 個のPE(Processing Element)で式(5)により重みの修正量を並列計算するモデルである。</p>
</blockquote>
<p>要するに個々の学習データで並列に n個のニューラルネットを求め、最後に各ニューラルネットの重みを足し合わせれば、全学習データを学習したニューラルネットが1つできるってことらしい(重みは1を越えたりしないのか?)。今度実験してみようと思う。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 遺伝的アルゴリズム(GA)の並列化
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/11/2003 04:37:19 PM
CATEGORY: 機械学習
-----
BODY:
<div class="section">
<p>は並列分散遺伝的アルゴリズムと呼ばれている。GAも複雑な問題では計算に膨大な時間がかかることが問題点となっている。</p>
<p>日経サイエンス2003年5月号に「発明家に追いついた遺伝的プログラミング(GP:Genetic Programming)」という記事が載っていた。この記事では、電子回路の設計をGA(正確に言えばGP)を用いて行い、人間の発明に匹敵する回路が進化によって生み出される例を挙げている。こういうのは「進化するハードウェア」と呼ばれている。</p>
<p>GAの詳細は省くが通常数万から数十万の個体で構成する集団から始めて数十から数百世代の間に進化させるらしい。ある程度の回路は普通のノートパソコンで1週間ほどで作り出せるが、もっと強力なコンピュータを使わないと手に負えない回路もあるようで、この場合にGAを並列計算するという手法が威力を発揮する。</p>
<p>この記事の著者らは動作周波数が350MHzのPentiumプロセッサを搭載したパソコン1000台つないで、ベオウルフ型クラスタを構築し、7日かけて回路を進化させ有用な回路を作り出したと書いている。GAで最も時間がかかるのは次世代に受け継がれる候補となる固体の適応度評価の部分で1個体を評価するのに約1分かかるためこんなに時間がかかったと説明されていた。1000台で7日もかかるなんてあまり実感がわかないが、相当な計算量が必要らしい。</p>
<p>並列分散遺伝的アルゴリズムの詳細は北野宏明さんの『遺伝的アルゴリズム4』で詳しく説明されている。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 倒立振子制御問題
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/14/2003 04:38:43 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p><a href="http://d.hatena.ne.jp/aidiary/20021026">id:aidiary:20021026</a>はActor-Criticを使っていたけど今回はテーブル型Q学習を使った。グラフィックは面倒なのでなし。Q学習を使ったので探査率epsilonの影響がかなり大きくなった。探査率を大きくしてランダムな行動を取らせる確率を高くすると、とたんに失敗して棒のバランスをうまく取れなくなる。逆に探査率を低くすると、これまた局所解にはまって長時間棒のバランスがとれなくなる。このような探査をどれだけ行うか決める問題を探査と搾取のトレードオフ問題と言う。</p>
<p>探査と搾取のトレードオフはエージェントが一つでは必ず生じる問題だがマルチエージェントならどうか?複数エージェントを並列に動かすことで解決できるんじゃないかと思っている。エージェント1は搾取型で探査を全くしない行動選択を行い、エージェント2は探査をたくさんしてQテーブルを広く探索してやる。この2つを並列に動かせば学習に必要なCPU時間も短縮され、最適解も素早く見つけられそうな予感がする。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: Acrobatアプレット
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/15/2003 04:39:54 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>を書いた。鉄棒の体操選手が脚を高く振り上げるのをシミュレーションしたようなもの。今回は参考ソースがなかったので前に作った倒立振子を参考に苦労して作った。特に運動方程式が複雑でかなり疲れた。</p>
<p>棒の動きを見て、機械学習はすごいと改めて感動した。<strong>あの棒の動きは予めプログラムしたものではない</strong>ってことが驚くべきことだと思う。微妙に棒をくねらせてバーに届くようにするところなど本当に面白い。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 共有メモリ型並列計算機上での強化学習
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/17/2003 04:45:15 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>今日は、共有メモリ型並列計算機で強化学習を実装する前段階としてスレッドを使って逐次計算機上で実装してみた。</p>
<p>構想しているのは下の図のような感じ。共有メモリ上にQテーブルがある。異なるプロセッサ(PE:Processing Elementと表記)上で動いているエージェントが非同期にQテーブルを更新する。各エージェントは「共有された」Qテーブルに基づいて行動決定する。</p>
<p>各エージェントの初期状態を変えることによってQテーブルの状態行動空間全体を効率よく探索できるだろう。しかもエージェントごとに方策(行動決定の方針)を変えることによって何かいい効果が出てくるのではと期待中。また並列計算機上で実装すれば状態行動空間の探索時間が早くなり学習が高速化されるはず。</p>
<p>結果だがスレッドで逐次計算機上なので実行時間の短縮はもちろんできなかった。しかし、エージェントの数を増やすことによって収束までのエピソード数が短くなることが確認できた。同期を取らずにQテーブルを各エージェントがばらばらに更新しても学習はちゃんと収束していたのでよかった。</p>
<p>こんなのやるまでもなく自明かも・・・</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20050806164511" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20050806/20050806164511.gif" alt="f:id:aidiary:20050806164511g:image" title="f:id:aidiary:20050806164511g:image" class="hatena-fotolife"></a></p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 心の座
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/18/2003 04:47:29 PM
CATEGORY: 認知科学
-----
BODY:
<div class="section">
<p>『講座 現代の心理学1 心とは何か』小学館(1981) (全然現代じゃないが)</p>
<p>って本に心に関する疑問点が列挙されていた。そこに「<strong>心は胸のあたりにあるように感じられるのはなぜでしょうか</strong>」というのがあった。この疑問は盲点をつかれた。</p>
<p>今まであまり意識してなかったがちょっと振り返って見ると本当に心は胸のあたりにあると感じる。というか<strong>心の中でも理性、知性は頭にあって、感情は胸のあたりにあるように感じる</strong>。</p>
<p>これは数学やってると頭が痛くなる、悲しいと胸が裂ける感じがする、うれしいとどきどきするなどの経験によっていると思われる。アリストテレスは「心は心臓にある」と言ったそうだがそれも分かる感じがする。</p>
<p>今年の4月は鉄腕アトムの生誕日だったそうで自分も鉄腕アトムの文庫買ってきて読んでみた。その中で、<em>手塚さんがアトムの電子頭脳を頭に入れるのではなく胸に入れるように描いている</em>のが印象深かった。何を言いたかったのだろう。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 共有メモリ型並列計算機上での強化学習
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/18/2003 07:48:41 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p><a href="http://f.hatena.ne.jp/aidiary/20050813194828" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20050813/20050813194828.gif" alt="f:id:aidiary:20050813194828g:image" title="f:id:aidiary:20050813194828g:image" class="hatena-fotolife"></a></p>
<p>学習曲線を描いてみた。タスクは197x197の迷路問題。状態数は約40000、行動数は上、下、右、左の4つ。よってQテーブルは40000x4の二次元配列で表した。縦軸はスタート地点からゴール地点にたどり着くまで何歩かかるかを表している。横軸のエピソード数はスタートから初めてゴールにつくというのを何回繰り返したかを表す(収束するまでにかかるエピソード数が少ないほど学習が高速)。</p>
<p>Qテーブルを同時更新するエージェントの数が多いほど学習の収束が早まっている(1agentと2agentの差がかなりあるけどこれはなぜだ?)。Q学習では収束に必要なエピソード数と実行時間はほぼ比例する(?)だろうから並列計算機上で走らせれば実行時間も減少するはず。</p>
<p>この結果は間違いです(参照:<a href="http://d.hatena.ne.jp/aidiary/20030706#1123930213">id:aidiary:20030706#1123930213</a>)。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 突発性難聴、その後
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/19/2003 11:32:55 PM
CATEGORY: 日記
-----
BODY:
<div class="section">
<p>研究とは何にも関係ない私事だけど<a href="http://d.hatena.ne.jp/aidiary/20030116#1113661913">突発性難聴</a>(2003/1/16)にいきなり片耳が聞こえなくなったって書いた。あれから4ヶ月くらい服薬して治療を続けたけど結局直らなかった。もうそろそろ障害が固定してしまう時期がくる(普通は1ヶ月過ぎると回復しないが、半年後に直った例もあるという)。直る確率は30%ということだが運が悪かった。</p>
<p>医者によるとこの病気に罹っている人は結構多いという。ストレス、睡眠不足が続くと内耳の血管が急激に収縮し、聴覚神経が麻痺したり死んでしまうそうだ。健常者でも突然罹ることがあるらしく、油断してるとこれ見てる「あなた」も罹ってしまうことがあるかも。<strong>もし聞こえが悪くなったらすぐ病院行かないと手遅れになる</strong>そうですので気をつけてください。</p>
<p>最初は片耳だけでかなり違和感があったけど最近は全くない(脳の可塑性のおかげか?)。音は回折するおかげで360度どの方向からくる音も聞こえるが、聞こえない方から話かけられても何を言っているかよく聞き取れず少し不便。音が聞こえなくなったのはあまりショックでなかったが、音楽をヘッドホンで聞いても頭のてっぺんで聞こえる感じがなくなってしまったことはかなりショックだった(あの感じ好きだったのに)。あと長い間聞いてると耳の疲労感が強くなった。</p>
<p>ヘレンケラーは盲目、聾唖の3重苦だったそうだが自分は0.5重苦以下。こんなのどうってことない(とは言いながら愚痴ってる自分がいるが)。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 共有メモリ型並列計算機上での強化学習 学習曲線
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/21/2003 04:50:09 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>どのくらい高速化できるのか調べてみた。結果は次のグラフのようになった。10以上に増やしてもこの問題(197x197の迷路問題)ではこれ以上速くならなかった。</p>
<p>他に、各エージェントの初期位置をランダムに配置するようにして実験してみた。こうすれば状態空間をより効率的に探索できるように思っていたのだがそうはならなかった。おそらく初期位置がゴール近くになってしまった場合、その過程で得られる経験がスタートから始める場合に比べて少なくなってしまうからだと考えられる。スタートから初めてできるだけ多く経験した方がQテーブルの更新は速くなる。よく考えれば当たり前か?</p>
<p>他に各エージェントの方策を変えた場合に変化がおきるかだがこれもあまり芳しくなさそうだった。epsilon-greedy方策の探査率epsilonを変化させて試しただけだがほとんど変化なしっぽい(逆に悪くなってるかも)。他戦略RLの論文もあるからもっと調べる必要あり。</p>
<p>あとはこれを並列計算機で実行して実行時間の短縮を確かめる。<a href="http://www.openmp.org/drupal/" target="_blank">OpenMP</a>っていうのを使うらしい。まあ普通にpthreadとかでもできるようだが。</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20050806164954" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20050806/20050806164954.gif" alt="f:id:aidiary:20050806164954g:image" title="f:id:aidiary:20050806164954g:image" class="hatena-fotolife"></a></p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: N本腕バンディット問題
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/22/2003 04:52:09 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>をプログラムしてみた。<a href="http://d.hatena.ne.jp/aidiary/20020906">id:aidiary:20020906</a>にも実験したことあったけどコード、結果は載せなかったので再度取り上げる。</p>
<p>N本腕バンディット問題を簡単に説明する。目の前にN本レバーがあるとし、各レバーを引くとお金(報酬)がもらえる。レバーによってもらえる量にばらつきがある。このとき、どのような方法を取れば最も多くお金(報酬)がもらえるかという問題。詳しくは<a href="http://d.hatena.ne.jp/aidiary/20020906">id:aidiary:20020906</a>を参照。</p>
<p>ここでは探査率 epsilon を変えたときの変化をグラフにしてみた。epsilon は0から1を取る値で0に近いほど貪欲(最も報酬の多いレバーだけを選び続ける)になる。すなわち、目先の利益にとらわれる方法。逆に1に近いほどランダム(報酬に関わらずレバーを適当選び続ける)になる。0.1だと90%は貪欲に10%はランダムに選ぶようになる。</p>
<p>前にも書いたけど0.1のとき得られる報酬が最大になっている。epsilonをどうすれば報酬が最もよく得られるかという問題を探査(ランダム)と搾取(貪欲)のトレードオフという。</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20050806165203" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20050806/20050806165203.gif" alt="f:id:aidiary:20050806165203g:image" title="f:id:aidiary:20050806165203g:image" class="hatena-fotolife"></a></p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 記号とパターンの統合
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/24/2003 04:54:45 PM
CATEGORY: 機械学習
-----
BODY:
<div class="section">
<p><a href="http://d.hatena.ne.jp/aidiary/20020620">id:aidiary:20020620</a>にニューラルネットと記号処理とかいう題で考えたことの記録があった。ニューラルネットと記号処理を結びつけるような研究は行われているのか?という疑問だったのだが行われていることがわかった。</p>
<p>今、「記号とパターンの統合」という授業を取っているのだが、その授業の松山泰男教授はそれを追求しているらしい。この授業で使っている教科書で記号とパターンの統合について触れられている。プリントなので本の題名がわからないんだけど引用してしまう。</p>
<blockquote>
<p>シンボリズムとの結合</p>
<p>ニューラルネットワークが行う学習は、帰納学習(inductive learning)の仲間であるとされている。ただし、ニューラルネットワークの学習は、準記号的(subsymbolic)であり、通常の人工知能における推論学習は記号的(symbolic)である。単純な考えの下に準記号的情報を記号処理しようとしたり、あるいは逆に記号データを準記号的手法で処理しようとすると、その処理系は極めて能力が不十分になったり、あるいは計算効率が著しく劣化する。ところが「知能の代行」に相当する高度な知的情報処理は、まさに準記号と記号の両者にまたがってそれらを行き来する形になる。両者の結合系に対する探求は、多くの人々の目指すところであるが、まだ成果は少ない。</p>
<p>(中略)</p>
<p>準記号と記号にまたがる柔軟な記号については [麻生 88] において、そして準記号的人工知能と記号的人工知能の結合系についての議論は [Minsky 91] において展開されている。[甘利 89] は、両者にまたがる早くからの展望を与えており、その意味するところが深い。</p>
<p>[麻生 88] 麻生:ニューラルネットワーク情報処理, 産業図書 (1988).</p>
<p>[Minsky 91] Minsky,M.: Logical versus analogical or symbolic versus connectionist or neat versus scruffy, AI Magazine, Vol.12, pp.35-51 (1991).</p>
<p>[甘利 89] 甘利:神経回路モデルとコネクショニズム, 東京大学出版会 (1989).</p>
</blockquote>
<p>資料が随分古い。松山先生がおっしゃってたけど記号とパターンの統合は難しく、現在でもまだ終わっていないそうだ。ニューラルネットの最新動向はほとんど知らないけど現在どうなっているか興味ある。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: AIBO日記3
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/28/2003 04:55:54 PM
CATEGORY: ロボティクス
-----
BODY:
<div class="section">
<p>センサーについて勉強した。ひとまず背中か頭のセンサーを触るとLEDがつくようなのを作ってみようと思う。強化学習を使ってなんかやりたいけどまだまだ無理そう。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: デザインパターン
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 06/29/2003 04:57:22 PM
CATEGORY: 日記
-----
BODY:
<div class="section">
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4797327030/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51KjORDEySL._SL160_.jpg" class="hatena-asin-detail-image" alt="増補改訂版Java言語で学ぶデザインパターン入門" title="増補改訂版Java言語で学ぶデザインパターン入門"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4797327030/hatena-hamazou-22/">増補改訂版Java言語で学ぶデザインパターン入門</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%B7%EB%BE%EB%B9%C0" class="keyword">結城浩</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%BD%A5%D5%A5%C8%A5%D0%A5%F3%A5%AF%A5%AF%A5%EA%A5%A8%A5%A4%A5%C6%A5%A3%A5%D6" class="keyword">ソフトバンククリエイティブ</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2004/06/19</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 19人 <span class="hatena-asin-detail-label">クリック</span>: 171回</li>
<li><a href="http://d.hatena.ne.jp/asin/4797327030" target="_blank">この商品を含むブログ (334件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>を買った。この本はJavaを使って23個のデザインパターンを詳細に解説している。サンプルも実際に実行できるJavaプログラムであり、とてもわかりやすい。また、Javaで使い道がほとんど分からなかった抽象クラスとインターフェースについて丁寧に解説されていたのもよい。</p>
<p>デザインパターンは聞いたことはあったけどどんなものかほとんど知らなかった。前にテラリウムをやっていたとき(<a href="http://d.hatena.ne.jp/aidiary/20030519">id:aidiary:20030519</a>)、メーリングリストでStrategyパターンを使うやらなにやらという話題があって興味を持ち始めた。Strategyパターンというのはどうやらアルゴリズムの実装をごっそり交換できるようにする方法らしい。つまり、Strategyパターンによってテラリウムの虫が状況に応じてアルゴリズムをごっそり交換できるというような話だった。</p>
<p>なるほど便利!というパターンもいくつかあったのだが、多くのパターンはどういう場面で使えるのかいまいちよくわからない。たぶんプログラミングの経験が不足しているからだと思われる。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: Omni OpenMP
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 07/01/2003 07:31:56 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>OpenMPは共有メモリ型並列計算のライブラリ。これについていろいろ調べてたところ、フリーのOpenMPコンパイラであるOmni OpenMPというのを知った。早速、Linuxにインストールしようとしてあれこれやって時間をつぶしたが結局できなかった。また明日やるか・・・UNIXへのソフトのインストールは./configure-&#62;make-&#62;make installですんなりできりゃいいが、できないとがっかりする。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: ボルツマンマシン(Boltzmann Machine)
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 07/01/2003 07:31:57 PM
CATEGORY: 機械学習
-----
BODY:
<div class="section">
<p>今日の予定の2つ目。ボルツマンマシンについて勉強した。ボルツマンマシンはニューラルネットワークの1種。パーセプトロンのような階層型ネットワークではなく、相互結合型のネットワーク。最初、パーセプトロンの拡張だと思っていたせいでなかなか理解できなかった。</p>
<p>授業の課題で「ボルツマンマシンの平衡状態における確率分布がボルツマン分布であることを証明せよ」とかいうのが出たため、手がかりを求めて本をあさっていた。マルコフ過程と詳細釣り合いの条件というのが手がかりっぽい。それらしき証明もあったが理解できない。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 思考と行動
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 07/06/2003 07:32:55 PM
CATEGORY: 日記
-----
BODY:
<div class="section">
<p>思考だけして行動しないシステムより、行動だけして思考しないシステムの方がよほど知的だ(R.Brooks)</p>
<p>目から鱗が落ちた。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 共有メモリ型並列計算機上での強化学習
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 07/06/2003 07:50:13 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p><a href="http://d.hatena.ne.jp/aidiary/20030618#1123930121">id:aidiary:20030618#1123930121</a>で1エージェントの収束に比べて、2エージェントの収束がやけに早いことが疑問だったが原因がわかった。</p>
<p>各エージェントはスレッドで同じ関数を実行していたのだけど、エージェント1のスレッドだけに画面への表示とファイルへの結果の書き込みを受け持たせていた。すると、エージェント1が画面とファイルに表示・書き込みしている間にエージェント2のスレッドがどんどん学習を進めてしまうことになる(大体エージェント1が1回学習して画面に結果を表示している間に、表示処理がいらないエージェント2は10回学習が終わっている)。あの学習曲線はエージェント1の結果を表示したものなので、エージェント1はほとんど学習をせずともエージェント2のせいで早々に収束してしまうというわけだった。</p>
<p>非同期で各スレッドを動かしていたからこういう結果になってしまった。今度は同期を取ってエージェント1のスレッドがファイルに書き込みしている間はエージェント2は待機するようにした方がよい。つまり、エピソードごとに同期をとらせてみようと思う。セマフォというのを使うらしい。</p>
<p>また今まではスレッドが簡単に使えるJavaを使っていたが、これからはCでpthreadを使ってみようと思う。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: マッチ箱の脳(AI) 使える人工知能のお話
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 07/07/2003 07:36:00 PM
CATEGORY: ゲームAI
-----
BODY:
<div class="section">
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4883170802/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/41GXRGCSF4L._SL160_.jpg" class="hatena-asin-detail-image" alt="マッチ箱の脳(AI)―使える人工知能のお話" title="マッチ箱の脳(AI)―使える人工知能のお話"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4883170802/hatena-hamazou-22/">マッチ箱の脳(AI)―使える人工知能のお話</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%BF%B9%C0%EE%B9%AC%BF%CD" class="keyword">森川幸人</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%BF%B7%B5%AA%B8%B5%BC%D2" class="keyword">新紀元社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2000/12</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 2人 <span class="hatena-asin-detail-label">クリック</span>: 14回</li>
<li><a href="http://d.hatena.ne.jp/asin/4883170802" target="_blank">この商品を含むブログ (34件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>この本は森川幸人さんというゲーム業界の人が書いた本で他の人工知能の本とは一味違う。内容としては、遺伝的アルゴリズム、ニューラルネットワーク、ホップフィールドネットワーク、エキスパートシステム、遺伝的プログラミング、強化学習法、Lシステム、ゲーム理論、人工生命、カオスなんかがイラスト入りでわかりやすく紹介されている。ニューラルネット、遺伝的アルゴリズム、強化学習法がマッチ箱とマッチを使って直感的に説明されているところと、テレビゲームにこれらのアルゴリズムをどう応用するかが具体的に書かれている点が特徴的だった。</p>
<p>自分が特に面白かったのがAIのアルゴリズムをどうテレビゲームに応用するかというところ。森川さんは実際にこれらのアルゴリズムをゲームに応用して販売している(『アストロノーカ』には遺伝的アルゴリズム、『がんばれ森川君2号』にはニューラルネット。このソフトは聞いたことあったがやったことない。今度ためしにやってみるか・・・。)</p>
<p>ゲーム業界ではAIという名前のつくものが使われているらしいんだけど、どうやらただの乱数らしい。ちゃんとした(?)AIのアルゴリズムは計算量、メモリが大きすぎてテレビゲームでリアルタイム処理ができないと説明されていた(前に某掲示板でAIがゲーム業界でどう使われているか聞いてみたことがあったが、そのときも同じ理由でほとんど使われてないという解答だった)。森川さんはゲームのバックグラウンドで計算させるなど、苦労して実装したらしい。これからゲーム機はもっと高性能になるだろう(<strong>並列計算機になるとか!</strong>)から、AIのアルゴリズムを使って何か面白いことができそうな予感がする。今のAIは大規模な実問題への適用は難しいけど、エンターテインメントなら大丈夫という話も聞いたことあるし(AIBOの例もある)。<a href="http://d.hatena.ne.jp/aidiary/20021110">id:aidiary:20021110</a>にも書いたけど、これは金づるだろうか?簡単にいくわけないが・・・</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 心と身体の間の閾値
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 07/08/2003 10:39:38 PM
CATEGORY: 人工知能
-----
BODY:
<div class="section">
<p>行動のない思考は無力。心によるシミュレーションは行動に必ずしも反映しない。想っているだけでは何も伝わらないし、何も変わらない。</p>
<ul>
<li>思考だけして行動しないシステムより、行動だけして思考しないシステムの方がよほど知的だ </li>
<li>シミュレーションによる行動の発生は、現実を反映していない </li>
<li>シミュレーションは常に成功してしまう危険を内包している </li>
</ul>
<p>上の3つはR.BrooksがGOFAI(Good Old Fashioned AI:古きよき時代のAI)およびシミュレーションを批判した言葉だけど人生においても有益な助言だと思う。今日、少しだけ悟った。心ではできると思っていても実際に行動に表せない。心と身体の間の閾値はどうすれば減らせるのだろう。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: EMアルゴリズムと独立成分分析
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 07/09/2003 07:39:50 PM
CATEGORY: 機械学習
-----
BODY:
<div class="section">
<p>について勉強した。</p>
<p>EM(Expectation-Maximization)アルゴリズムというのは不完全データからの最尤推定法の一種。なんかどこかで聞いたことあると思ったら前にバイオインフォマティクスで隠れマルコフモデルをやってたときに出てきていた。最尤推定ってやつも同様。ほとんど忘れていたけど、前に苦労しただけあって今回は理解が早かった。EMアルゴリズムの応用例はたくさんあるみたいで、強化学習とEMアルゴリズムを組み合わせた研究もあった。</p>
<p>独立成分分析(Independent Component Analysis: ICA)は聖徳太子が10人が同時に話すのを正確に聞けるとかいうやつ。混ざった1個の信号から元の10個の信号を復元するとかそういうものらしい。最初、聞いたときそんなこと本当にできるのか、部分の和≠全体、全体が分かったって部分をそう簡単に復元できるはずない、そんなことできたら複雑系の研究なんて楽じゃないかとか、そんなこと思った。</p>
<p>案の定、というか題名に独立とついていることからも明らかなように、部分は独立しているという条件が課せられていた。複雑系やマルチエージェントとかは部分が独立しておらず相互作用しているからICAは適用できない(はず、ってか信号じゃないと無理っぽい)。独立という条件がついていても応用は広いらしく、応用例はたくさん見つかった。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 生命40億年全史
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 07/11/2003 10:36:55 PM
CATEGORY: 生物学
-----
BODY:
<div class="section">
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4794211899/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/515N1FKHQ8L._SL160_.jpg" class="hatena-asin-detail-image" alt="生命40億年全史" title="生命40億年全史"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4794211899/hatena-hamazou-22/">生命40億年全史</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%EA%A5%C1%A5%E3%A1%BC%A5%C9%A5%D5%A5%A9%A1%BC%A5%C6%A5%A3" class="keyword">リチャードフォーティ</a>,<a href="http://d.hatena.ne.jp/keyword/Richard%20A%2E%20Fortey" class="keyword">Richard A. Fortey</a>,<a href="http://d.hatena.ne.jp/keyword/%C5%CF%CA%D5%C0%AF%CE%B4" class="keyword">渡辺政隆</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%C1%F0%BB%D7%BC%D2" class="keyword">草思社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2003/03</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 2人 <span class="hatena-asin-detail-label">クリック</span>: 6回</li>
<li><a href="http://d.hatena.ne.jp/asin/4794211899" target="_blank">この商品を含むブログ (31件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>この本は40億年前に宇宙の塵から生命が誕生したところから人類誕生までの歴史が書かれている。前に新聞の書評に出ていて気になったので借りて読んでた。</p>
<p>ヒト(もちろん自分も)が40億年前の最初の生命からずっとつながっているという事実に愕然とした。ヒトの祖先がアフリカのただ一人の女性に由来するイブ仮説ってのは聞いたことあり感動してたが、それ以前にヒトを含めあらゆる生物は40億年前の生命につながっているというのに気がつかされた。ヒトはサルから進化したというが、サルも何かから進化したものだろうし、その何かも他の何かから進化し、その他の何かもさらに他の何かから進化したはず。こうやってずっとずっとずっとたどっていくと40億年前まで遡れるはず。無から突然生物が現れたなんてことは考えられないから。</p>
<p>ってことは、自分もずっとずっとたどっていくと40億年前の最初の生物に行き着くはず。こう考えると、40億年間枝が途切れず、今自分が存在しているのがすごい奇跡に思える。生存して子孫を残す確率を世代数乗したものが今自分が存在している確率だろう。生存して子孫を残す確率は1以下で40億年前から数えた世代数はすさまじい数だろうから、そんな確率は限りなく0に近いはず。</p>
<p>こんなほぼ確率0で存在している生物の枝を刈り取る行為の罪深さを考えさせられた。個体の殺生はもちろんそうだが種の絶滅(自然によるのは仕方ない。ここでは人為的な)はさらに罪深い。もしある生物を殺してそこで枝を刈り取ったとしたら、その生物から伸びる枝上に存在するはずだった全ての生命を奪ったことに等しい。</p>
<p>手塚治虫さんが釈迦の生涯を描いた『ブッダ』という本(漫画ですが)を読んだ。</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4267890021/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51QDB1Q447L._SL160_.jpg" class="hatena-asin-detail-image" alt="ブッダ全12巻漫画文庫" title="ブッダ全12巻漫画文庫"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4267890021/hatena-hamazou-22/">ブッダ全12巻漫画文庫</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%BC%EA%C4%CD%BC%A3%C3%EE" class="keyword">手塚治虫</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%C4%AC%BD%D0%C8%C7%BC%D2" class="keyword">潮出版社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2002/11</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 文庫</li>
<li><span class="hatena-asin-detail-label">購入</span>: 2人 <span class="hatena-asin-detail-label">クリック</span>: 27回</li>
<li><a href="http://d.hatena.ne.jp/asin/4267890021" target="_blank">この商品を含むブログ (75件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>そこに次のようなエピソードがある。ブッダとアヒンサーという名前の盗賊とのやり取り。</p>
<blockquote>
<p>ブッダ:おまえはいままでに何百人も殺したという。だが一度ぐらいなさけをかけてやったことはないか?</p>
<p>アヒンサー:あ…ある。赤ん坊だっ。ひとり見逃してやった!あんまりかわいかったからな。殺さなかったんだ。</p>
<p>ブッダ:もしそうならそれだけでおまえは大きな善をほどこしたのだ。なぜならその子は無事に育ち、子孫をふやすことができるだろう。</p>
<p>アヒンサー:それがどうだってんだ……</p>
<p>ブッダ:かりにあと百年たってその子の子孫が百万人にふえ、こういうだろう。百年前ある人間が命を助けてくれた。そのおかげでこんなに栄えているんだとね。おまえはあがめられ、その一族に永久に語り伝えられる。</p>
<p>アヒンサー:お…おれがあがめられ……じょうだんじゃねえ!!おれは…何百人も殺した殺人鬼だぞッ。</p>
<p>ブッダ:百人殺すのはよくない。だがなひとりを生きながらえさせるのはとうとい。百万人になるからな………</p>
<p>手塚治虫: ブッダ 第11巻 祇園精舎, p.63, 潮ビジュアル文庫</p>
</blockquote>
<p>百年で百万人とはずいぶん子沢山ですね(笑)</p>
<p>ちなみに「アヒンサー」とは生き物に対する不殺生、非暴力、同情という意味がある。こんなの読んだらもうゴキブリもばしばしできないなぁ。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: Change Blindness
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 07/12/2003 07:42:09 PM
CATEGORY: 認知科学
-----
BODY:
<div class="section">
<p>人工知能学会誌の今月号の特集は「知の起源」というテーマで面白い論文が多かった。その中の『認知の創発的性質 ―生成性, 冗長性, 局所相互作用, 開放性―』という論文でChange Blindnessという面白い現象が紹介されていた。</p>
<p>ある画像とその一部だけを変更した画像を1秒程度の間隔で切り替えて表示させ、被験者に2枚の画像のどこが異なるかを指摘させる。二つの画像の違いは並べてみれば極めて明白(画像中央部の大きな物体が出たり消えたりするという感じ)なのに、上のような方法で表示されるとなかなか知覚できなくなる。この現象がChange blindnessと呼ばれているようだ。</p>
<ul>
<li><a href="http://www.usd.edu/psyc301/ChangeBlindness.htm" target="_blank">Change Blindness Demonstration</a></li>
</ul>
<p>で実験できる。自分もやったけど最初は1分ぐらい気が付けなかった。面白いのでやってみるといいかも。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 共有メモリ型並列計算機上での強化学習
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 07/23/2003 07:52:46 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p><a href="http://d.hatena.ne.jp/aidiary/20030706#1123930213">id:aidiary:20030706#1123930213</a>で間違いに気づいて同期を使うことになった。苦労してやっと実装したが、<strong>無茶苦茶遅くなった</strong>。並列計算しようと思ってスレッドを作るたび、実行速度が落ちるのが目に見えて分かる。どうやら同期に使ったmutexや条件変数がまずいらしい。並列計算機で実行すればそれなりに速くなると思ってたけど想像以上に難しいことがわかった。</p>
<p>やっぱり非同期に戻そうと思う。表示、ファイルへの出力を出来る限り行わないで、配列に格納するだけにとどめておく。前の失敗は表示していたせいで起こっていたからこうすればうまくいく「はず」。プログラムは出来た。後は実行して計算速度を調べればいい。今日は並列計算機が使用中みたいでできなかった。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 研究中間発表
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 07/28/2003 07:44:09 PM
CATEGORY: 日記
-----
BODY:
<div class="section">
<p>研究テーマを決めるのは本当に難しいと実感した二日間だった。<strong>能力、実現可能性、期間、社会の要請、研究意義、面白さの間に解決し難いトレードオフが存在している</strong>。あと、だんだん発表になれて、頭が真っ白になって思考停止することはなくなってきた。よかったと思う。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 共有メモリ型並列計算機上での強化学習 複数CPU
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 08/01/2003 07:56:30 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p><a href="http://d.hatena.ne.jp/aidiary/20030723">id:aidiary:20030723</a>の続き。同期を取っていたせいで実行速度が遅いと思っていたので、同期を全く取らないように修正し、収束するまでの時間を測定した。結果、1スレッド 6秒、2スレッド 約50秒、3スレッド 約24秒・・・何なんだこの結果は。本当はスレッドを増やすたびに並列計算によって速くなると思ってたのに。</p>
<p>今使っている並列マシンは8CPU搭載しているのだが、本当にスレッドが複数CPU上で動いているのかと疑問に思ったのでtopコマンドで調べてみた。まずスレッドを1つだけ起動したとき、</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20050813195508" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20050813/20050813195508.gif" alt="f:id:aidiary:20050813195508g:image" title="f:id:aidiary:20050813195508g:image" class="hatena-fotolife"></a></p>
<p>実行ファイルa.outにCPUが99%割り当てられていて、どうやら使っているのはCPU2だとわかる。次、スレッドを2つ起動したとき、</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20050813195529" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20050813/20050813195529.gif" alt="f:id:aidiary:20050813195529g:image" title="f:id:aidiary:20050813195529g:image" class="hatena-fotolife"></a></p>
<p>スレッドを2つ起動しているのでa.outが2つある。だけどCPUを45%しか使っていないみたい。で、どのCPUが使われているのかと上の方を見てみると・・・なんだか全部使われているみたい。しかも少しずつ。スレッド2つだからCPUが2つだけ使われるんじゃないのかって疑問と各スレッドはCPUを45%しか使ってないのはなぜかという疑問が生じた。もしかしたらそんなものなのかと思って、各スレッドでfor文を回すだけのプログラムを作って、スレッドを2つ起動して調べてみた。結果、</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20050813195554" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20050813/20050813195554.gif" alt="f:id:aidiary:20050813195554g:image" title="f:id:aidiary:20050813195554g:image" class="hatena-fotolife"></a></p>
<p>各スレッドは99%使っている。しかも使っているCPUは4と6の2つだけ・・・両方ともスレッドを2つ起動しているのに何が違うんだ。スレッドの実行内容によって変わるのか。念のため強化学習の方でスレッドを3つ起動した場合も調べてみた。結果、</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20050813195610" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20050813/20050813195610.gif" alt="f:id:aidiary:20050813195610g:image" title="f:id:aidiary:20050813195610g:image" class="hatena-fotolife"></a></p>
<p>各スレッドは30%しか使ってないし、使われているCPUもばらばらだ。今日分かったことと疑問点。</p>
<ul>
<li>スレッドを増やすと遅くなるのは同期のせいじゃない(同期を使うとさらに遅くなるのは当然だけど)。 </li>
<li>起動した各スレッドがCPUをフルに使っていないのはなぜか? </li>
<li>スレッド2つ起動時、2つのCPUをフルに使わず、全部のCPUが少しずつ使われているのはなぜか? </li>
</ul>
<p>topコマンドの結果をよく見てみると、スレッド1つのときは100%userに割り当てられているのに対し、スレッド2つのときはuserよりsystemの方への割り当てが大きい。各スレッドがCPUをフルに使えない原因はここらにありそう。プログラムの書き換えで解決できるのだろうか。出来なかったら・・・やばい。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 共有メモリ型並列計算機上での強化学習 学習時間が変だ・・・
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 08/08/2003 07:59:37 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p><a href="http://d.hatena.ne.jp/aidiary/20030801">id:aidiary:20030801</a>の続き。前の結果を見ると、1スレッドと2スレッドの間は10倍遅くなっているが3スレッドにすると速くなっている。何か怪しかったけどさらにスレッドを増やして測定してみた。</p>
<p>学習曲線は</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20050813195837" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20050813/20050813195837.gif" alt="f:id:aidiary:20050813195837g:image" title="f:id:aidiary:20050813195837g:image" class="hatena-fotolife"></a></p>
<p>学習収束までの時間は</p>
<p><table border="1">
<tr>
<td>スレッド数</td>
<td>1</td>
<td>2</td>
<td>4</td>
<td>8</td>
<td>16</td>
<td>32</td>
<td>64</td>
<td>128</td>
</tr>
<tr>
<td>収束エピソード</td>
<td>7800</td>
<td>3930</td>
<td>2000</td>
<td>1000</td>
<td>700</td>
<td>600</td>
<td>150</td>
<td>130</td>
</tr>
<tr>
<td>収束までの時間(s)</td>
<td>5.84</td>
<td>54.19</td>
<td>27.81</td>
<td>17.60</td>
<td>8.19</td>
<td>5.30</td>
<td>2.93</td>
<td>2.05</td>
</tr>
</table> </p>
<p>スレッド1個のときは5.84秒だけど2個並列に動かすと54.19秒と10倍遅くなる。これがなぜだか分からなかったが、キャッシュミスのせいではないかというアドバイスを頂いた。</p>
<p>スレッド1個で1つのCPUだけ使っている場合は共有メモリの内容を書き換えてもキャッシュに保存されるため、キャッシュミスが起きづらく速い。一方、スレッド2個並列に動かして複数のCPUが使われるようになると複数のCPUが共有メモリへの書き込みをするため、CPUのキャッシュと共有メモリの内容が合わずキャッシュミスが頻発することになる。メモリのアクセス時間はキャッシュのアクセス時間より遅いため上のように10倍遅くなってしまう。行動価値テーブル書き換えのため頻繁に共有メモリに書き込んでいたのでこの理由は納得できた。</p>
<p>スレッドをさらに増やすとキャッシュミスによるオーバヘッドより収束エピソードが早いことの方がきいてくるため時間が早まっているのだと考えられる(んだけどどうなんだろうか)。</p>
<p>とりあえず1スレッドのときより学習時間を減らすことが目下の目標だったので達成できた(かもしれない)。でも速くなったといっても2倍くらいだし。それに8CPUしかないのに128スレッドって・・・何か変。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: メイザーの学習と行動
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 08/14/2003 08:01:15 PM
CATEGORY: 認知科学
-----
BODY:
<div class="section">
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4931199682/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/41NSPG5JVJL._SL160_.jpg" class="hatena-asin-detail-image" alt="メイザーの学習と行動" title="メイザーの学習と行動"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4931199682/hatena-hamazou-22/">メイザーの学習と行動</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%B8%A5%A7%A1%BC%A5%E0%A5%BA%A1%A6E%2E%A5%E1%A5%A4%A5%B6%A1%BC" class="keyword">ジェームズ・E.メイザー</a>,<a href="http://d.hatena.ne.jp/keyword/%B0%EB%C7%EE%B9%D4" class="keyword">磯博行</a>,<a href="http://d.hatena.ne.jp/keyword/%BA%E4%BE%E5%B5%AE%C7%B7" class="keyword">坂上貴之</a>,<a href="http://d.hatena.ne.jp/keyword/%C0%EE%B9%E7%BF%AD%B9%AC" class="keyword">川合伸幸</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%C6%F3%C9%D3%BC%D2" class="keyword">二瓶社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1999/09</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 8回</li>
<li><a href="http://d.hatena.ne.jp/asin/4931199682" target="_blank">この商品を含むブログ (8件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>を読む。著者はジェームズ・E.メイザー。動物の学習心理学に関する本で動物の学習について行動の面からアプローチしている(認知主義ではなく行動主義に近いようだ)。</p>
<p>内容は、古典的条件づけ(犬に餌をあげる前にベルを鳴らすというのを繰り返すと、ベルが鳴っただけで犬が唾液をたらすようになるというもの)、オペラント条件づけ(強化学習のこと、ある行動を取ったとき報酬を与えるとその行動が強化され、次から起きやすくなるというもの)、概念形成、動物の認知、模倣の理論、運動技能の学習など。今まで興味があったことが書かれていて面白い。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 報酬の例
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 08/17/2003 08:03:51 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>強化学習においての報酬とは現実の何にあたるのかという問題は少し気になる(例えば、<a href="http://d.hatena.ne.jp/aidiary/20021120">id:aidiary:20021120</a>とか<a href="http://d.hatena.ne.jp/aidiary/20030218">id:aidiary:20030218</a>で少し考えていた)。強化学習を最適化アルゴリズムの一種と考えればそんなことどうでもよい問題(報酬はタスクの達成状態に対し、設計者が与える実数値でしかない)だが、<strong>動物のメカニズムとして強化学習をとらえてた方が</strong>100倍面白い。強化学習を最適化アルゴリズムの一種とだけ考えるととたんに興が冷める(ニューラルネット、遺伝的アルゴリズムも同様)。</p>
<p>そんなわけで、『メイザーの学習と行動』に出てくる報酬の例をメモっておく(主に引用だが)。心理学では強化学習ではなくオペラント条件づけ、報酬ではなく強化子と呼ぶようだ。</p>
<blockquote>
<p>[教室における行動の形成]</p>
<p>ある大きな講義で、学生たちがその教授の行動を反応形成するために協力しあったという話は、どこの大学でもよく聞く話である。</p>
<p>(中略) </p>
<p>心理学の入門コースを担当していたある教授が高い教壇から講義をしていた。この講義の学生たちは、教授が少しでも左に動けば強化するように申し合わせていた。彼らが用いた強化子とは、注意深く聴いて、教授の話をあきらかに理解したように頷いたり、ノートを取ることであった。しかし教授が右へ動くたびに彼らは強化を止めた。つまりノートを取るのを止めて、あくびをしたり退屈そうに教室を見回したのである。左への動きに対するこの系統的な強化子の呈示は、非常にうまくいった。言い伝えられるところによると、講義の半ばにその教授は教壇の上から左側に落ちてしまったそうである。</p>
<p>メイザーの学習と行動, p.118</p>
</blockquote>
<p>よく聞く話なのか・・・というのはおいておく。ここでは、エージェントは教授。状態は教授の位置。行動は左へ移動、右へ移動。報酬(強化子)を生徒の頷き、ノート取り。教授の左へ行くという行動を強化している。</p>
<p>他の例は今度あげるが、報酬の特徴を考えたい。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 報酬の例2
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 08/18/2003 09:57:09 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<blockquote>
<p>Skinnerは、特定のクラスの条件性強化子に対して「般性強化子」という用語を使った。おそらく般性強化子の最もよい例はお金であろう。この強化子が、社会で働いている人の行動を維持していることは明白である。もし雇用者が、もう一切給料を払わないと言えば、仕事を続ける人などいないだろう。次のような意味でお金は(非常に強力な)般性強化子の1つである。なぜならそれは、多くの人々を本来的に強化し得るさまざまな刺激(食物、衣類、所有物、娯楽、楽しい休暇)と交換可能だからである。お金は強力な強化子ではあるが、それは他の条件性強化子と同じように、1次性強化子と常に連合していることに依存しているのである。もしお金が、もはや1次性強化子と交換できなくなれば、人々が緑色の紙きれ(ドル紙幣)を得るために一生懸命働くはずがない。</p>
<p>メイザーの学習と行動</p>
</blockquote>
<p>ここでは1次性強化子と条件性強化子という言葉が出てくるが、1次性強化子は餌や水、性的快楽や快適さなどの本能的な刺激を指している(と他の部分から読みとれる)。一方、条件性強化子(この例では金)は本来何の意味もないものだが、1次性強化子と結びつくことによって意味を持つ刺激のことと書いてあった。</p>
<p>強化学習アルゴリズムで言うと、<strong>1次性強化子は報酬にあたって、条件性強化子は報酬から伝播する価値にあたっている</strong>と考えられる。強化学習アルゴリズムでは報酬につながる状態・行動の価値は高くなるから。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: ワクチンウィルス
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 08/20/2003 09:59:23 AM
CATEGORY: 人工生命
-----
BODY:
<div class="section">
<p>MSブラスト(ラブサン)っていうウィルス(ワーム)が流行っているみたいだけど、それを退治してパソコンを修復してまわるMSブラストDっていうウィルス(ワーム)があるらしい。ワクチンウィルスとでも呼ぶべきか。</p>
<p>前に<a href="http://d.hatena.ne.jp/aidiary/20020228#1112058855">id:aidiary:20020228#1112058855</a>に「自動的にウィルスを退治してまわるウィルス」ってないんだろうかと書いていたけど技術的にはできるようだ。いいことだと単純に思ってたけど、ネットのトラフィックが高まって問題になるらしい。もう少し工夫してウィルスに対する効果的な仕組みとかできないんだろうか。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: PCクラスタ上での強化学習 Qテーブルの結合
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 08/21/2003 10:02:12 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>共有メモリ型の方もまだ問題があるが、分散メモリ型の方を少し考えた。クラスタ上で並列に強化学習を行う場合に最も問題となるのは、別々に学習したQテーブルをうまく結合できるかという点だと思う。</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20050814100045" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20050814/20050814100045.gif" alt="f:id:aidiary:20050814100045g:image" title="f:id:aidiary:20050814100045g:image" class="hatena-fotolife"></a></p>
<p>というわけで実験してみた。結果が次のグラフ。</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20050814100123" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20050814/20050814100123.gif" alt="f:id:aidiary:20050814100123g:image" title="f:id:aidiary:20050814100123g:image" class="hatena-fotolife"></a></p>
<p>PC1とPC2で学習したQテーブルをそれぞれQ1とQ2とする。Q1とQ2で実行した学習曲線がPC1とPC2である。そして、その2つのテーブルを『Parallel Reinforcement Learning』の論文で提案されている結合規則(テーブル更新回数で重みづけするだけだが)で結合してできたQで実行した学習曲線がketugouである。2つのQテーブルを結合することにより学習が早まっていることがわかる。直感的に考えると当たり前な気がするが。</p>
<p>Qテーブルを別々に計算できるのでそれをクラスタの上で並列に走らせれば学習時間は短くなるはず(だといい)。Qテーブルの通信コストと結合コストが大きな問題になると思われる。</p>
<p>---</p>
<p>PC1とPC2の2000エピソードでのステップ数と結合後の0エピソードでのステップ数はほとんど変わっていないため、結合による効果はほとんど出ていないようだ。ただし、PC2の探査率を変えると結合の効果が出てくるようになった(2003/09/16)</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: ロボットと自閉症児
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/06/2003 10:05:35 AM
CATEGORY: ロボティクス
-----
BODY:
<div class="section">
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4480860673/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51MZ8SY48YL._SL160_.jpg" class="hatena-asin-detail-image" alt="人生の教科書[ロボットと生きる]" title="人生の教科書[ロボットと生きる]"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4480860673/hatena-hamazou-22/">人生の教科書[ロボットと生きる]</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%C6%A3%B8%B6%CF%C2%C7%EE" class="keyword">藤原和博</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%C3%DE%CB%E0%BD%F1%CB%BC" class="keyword">筑摩書房</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2003/07/26</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><a href="http://d.hatena.ne.jp/asin/4480860673" target="_blank">この商品を含むブログ (5件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>という本にロボットも自閉症児も同じ「弱さ」を持っているというタイトルで面白い記事(著者は渡辺信一氏)が載っていた。内容をちょっとメモッておく。</p>
<p>自閉症という病気は早期幼児期に発症し、対人関係における孤立、言語発達異常、特定の状態や物への固着などを示すという病気らしい(広辞苑)。また、重度の自閉症児は「<strong>事前に教えられた状況にしか対応できず、想定外の状況ではうまく行動できない</strong>」とあった。</p>
<p>上の「」で囲んだ状況はロボット開発における問題と同じものだというのがこの著者の指摘である。ロボットも事前にプログラムしておいた行動にしか対処できず、想定外の状況ではうまく行動できないからだ。</p>
<p>自閉症児の教育方法とロボットの開発方法は類似しており、状況ごとに行動を教え込むようなものだそうだ。この著者はそのような方法では自閉症児が「予期せぬ出来事に何とかうまく対応する」ことはできるようにならないと考え、ロボット開発の新しいパラダイムを自閉症児教育に持ち込もうとしている。以下、引用。</p>
<blockquote>
<p>私に自閉症児教育の常識を捨て去る決心をさせてくれたのは、1980年代に起こったロボット開発におけるパラダイム・シフトだった。確かにそれ以前は「ロボットを人間に近づけるために、ロボットにさせたいことをひとつひとつプログラムしていく」という、まさに常識的な、障害児に対する訓練パラダイムとまったく同じような手法が、ロボット開発に用いられていた。しかし本当に驚くべきことだが、彼らは80年代に入り、この研究の方向性を180度変えてしまう。「これまでのパラダイムでは、ロボットは人間に近づきえない」ということに気づき始めたのである。そして、具体的な行動をひとつひとつプログラムすることを止め、もっと根本的な法則をロボットにプログラムしようとするようになった。ロボットの「行動」について、ロボット自身に自ら学習させようとし始めたのである。</p>
<p>ロボットと生きる、p.79</p>
</blockquote>
<blockquote>
<p>自閉症の子供自身の「学び」を大切にする。こんな当たり前のことを、私はロボット開発から改めて気づかされたのである。</p>
<p>(中略)</p>
<p>私たちは、1年後、5年後、そして10年後を考えて、自閉症の子供たちを育てていかなければならない。大切なことは、教えたことがすぐ結果として現れることではない。彼ら自身が自ら「学ぶ力」をつけ、予測せぬ出来事に出会ったときにも、何とかうまく対処できるようになることであろう。</p>
<p>(中略)</p>
<p>自閉症児教育とロボット開発は全く同じ目標に向かって努力していることがわかる。「人間らしく」という目標である。自閉症児教育では、子供たちを感情豊かな人間に育てたいと願い、ロボット開発では、自分自身の意志を持ち、自分自身の判断で行動する鉄腕アトムのようなロボットを作りたいと願っている。自閉症児教育とロボット開発との交差点・・・・・・それは「人間らしさ」なのである。</p>
<p>同上、p.80-81</p>
</blockquote>
<p>人間を参考にしてロボットを作るのではなく、<strong>ロボットを参考に人間を理解する</strong>という例の一つだと思う。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 強化学習の応用事例
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/08/2003 10:08:08 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>今年の合宿では強化学習がどんな応用に使われていて、どのようなことが期待できるのかを簡単に発表した。そのまとめ。強化学習の特徴は次のようにまとめられる<span class="footnote"><a href="/aidiary/#f1" name="fn1" title="木村, 宮崎, 小林: 強化学習システムの設計指針, 計測と制御, Vol.38, No.10, 1999">*1</a></span>。</p>
<blockquote>
<p>設計者が「何をすべきか」をエージェントに報酬という形で指示しておけば「どのように実現するか」はエージェントが学習によって自動的に獲得する。 </p>
</blockquote>
<p>オセロの戦略を学習するエージェントを例にとる。設計者は「オセロに勝て」とエージェントに報酬という形で指示する。具体的には、ゲーム終了時に勝っていたら報酬を与え、負けていたら与えなければよい。重要なのは設計者は報酬を設定するだけで「<strong>どのようにすれば勝てるか」は全く指示しない</strong>ところ。エージェントはゲームを何回も繰り返し行い、報酬を得るにはどうすればよいか(ゲームで勝つにはどうすればよいか)を自動的に学習していく。</p>
<p>他にAcrobat問題を例にとる。前に<a href="http://javagame.main.jp/index.html#ai" target="_blank">アプレット</a>を作った。この場合、するべきことは脚を棒より上にあげることである。だから、脚を棒より上にあげた時点で報酬を与えている。しかし、どうやれば脚が棒より上に上げられるかは全く指示していない!行動のプリミティブ(左に力を加える、右に力を加える)は与えているが、それをどういう順番で行えば脚を効率よく上げられるかは学習によって獲得されている。</p>
<p>このような強化学習の能力がどんな問題に応用できるのかは今度まとめる。</p>
</div>
<div class="footnote">
<p class="footnote"><a href="/aidiary/#fn1" name="f1">*1</a>:木村, 宮崎, 小林: 強化学習システムの設計指針, 計測と制御, Vol.38, No.10, 1999</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 強化学習の応用事例 続き
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/14/2003 10:09:58 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>強化学習がどんな応用に使われるか列挙してみる。</p>
<ul>
<li>セルラー通信システムの周波数帯の動的割り当て </li>
<li>在庫管理・生産ラインの最適化 </li>
<li>ジョブショップスケジューリング </li>
<li>エレベータ群制御 </li>
<li>電力網の分散学習制御 </li>
<li>インターネットバナーの最適化 </li>
<li>コンパイラの命令スケジューリング </li>
<li>ルータ制御 </li>
<li>ゲーム(チェッカー、バックギャモン、オセロ)の学習 </li>
<li>検索エージェント </li>
<li>ロボットの歩行動作の獲得 </li>
<li>サッカーエージェントの学習 </li>
</ul>
<p>調べた範囲ではこんなところだった。結局、この発表で言いたかったのは</p>
<ul>
<li>強化学習の応用とは何もロボットだけではない </li>
<li>様々な分野の問題(主に最適制御)に適用できる可能性がある </li>
</ul>
<p>ということにした。強化学習というとエージェント、環境、行動、報酬のように書いて説明されることが多いので、なんとなくエージェントが動物や人間、ロボットのようなものを想像してしまいがちだと思う。しかし強化学習のエージェント、環境、行動、報酬のような枠組みは抽象化された概念でいろんな問題に適用できるんだということを強調した。全く異なる分野のまだ知られていない重要な問題に適用できる余地が残されているかもしれない。</p>
<p>いろいろ応用できることはわかったけど、実際にどれくらい効果があって意義があるのかは個々の分野を詳しく知らないのでよくわからなかった。そもそも学習してうまく行動するという枠組みが応用に適さないという意見も聞いたことがある。学習して得た行動は設計者が把握するのは難しく、エージェントの内部がブラックボックス化してしまうからだという。</p>
<p>最後に強化学習が応用上期待できるとされていることを3つあげる。</p>
<ul>
<li>制御プログラミングの自動化・省力化ができる </li>
<li>ハンドコーディングより優れた解法を発見する可能性がある </li>
<li>自律性と想定外の環境変化への適応が可能である </li>
</ul>
<p>実現できればすばらしいと思う。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: PCクラスタ上での強化学習 探査率の影響
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/16/2003 10:12:53 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>MPIで一番簡単な方式を実装した。</p>
<ul>
<li>127X127の迷路問題 </li>
<li>簡単のためマスター1つ、スレーブ1つで構成 </li>
<li>スレーブからマスターへの行動価値テーブルの送信は2000エピソードごとに行う </li>
<li>マスターは送られてきたテーブルを結合する </li>
<li>テーブルの結合は更新回数で重みづけした価値の平均を取る </li>
<li>学習曲線はマスターのものを描く </li>
</ul>
<p>図で示すと下のようになる。</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20050814101142" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20050814/20050814101142.gif" alt="f:id:aidiary:20050814101142g:image" title="f:id:aidiary:20050814101142g:image" class="hatena-fotolife"></a></p>
<p>マスターは各スレーブが学習した結果を受け取ることによって、行動価値テーブルが高速に更新される(=学習が高速化される)と考えられる。</p>
<p>結果は下図。</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20050814101215" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20050814/20050814101215.gif" alt="f:id:aidiary:20050814101215g:image" title="f:id:aidiary:20050814101215g:image" class="hatena-fotolife"></a></p>
<p>最初、結合しているにも関わらず全く高速化されていないという結果になってしまった。つまり、図のresult_ns(並列化しない)とresult0(並列化してテーブル結合を導入)の学習曲線はほとんど変わらず、並列化の意味が全くなかった。</p>
<p>理由として考えられたのは、マスターとスレーブの探索された状態行動空間がほとんど同じになっているということ。マスターとスレーブがテーブルの同じ場所を更新していたら結合して平均とっても変わらず意味がないから。</p>
<p>マスターとスレーブが異なる状態行動空間を探索するにはどうすればいいか考えると、</p>
<ul>
<li>状態行動空間をマスターとスレーブに分割して割り当てる </li>
<li>スターとスレーブの「探査率」を変える </li>
</ul>
<p>っていう2つの方法が思いついた。1つ目の方法はいわゆるデータ分割って手法だが、ここではより簡単な探査率を変える方を試した。</p>
<p>マスターの探査率は0に固定。スレーブの探査率を0(result0)、0.7(result0.7)、0.9(result0.9)と変えてグラフ表示してみたところ、スレーブの探査率が高いほど学習の収束が早まることがわかった。</p>
<p>(まとめ) スレーブの探査率を高くすると、状態行動空間が広く探索され、結合したときの効果がより大きくなる。逆にスレーブの探査率を低くするとマスターおよび他のスレーブの探索した状態行動空間と重なってしまい結合したときの効果がうすくなる。</p>
<p>(根本的な問題) テーブル形式では結合コストが大きすぎるようだ。結合する(要素数10000の配列をスイープして平均を求める)たびに一瞬動作が止まるのがわかるほど遅い。つまり、PCクラスタ上で実行しても「実行時間」の高速化はほとんどされないと思われる。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: シートン動物記
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/21/2003 10:13:53 AM
CATEGORY: 生物学
-----
BODY:
<div class="section">
<blockquote>
<p>このような動物の来歴話を集めてみると、そこには、おのずからひとつの一般的な考えが提示される。それは前世紀なら、さしずめ教訓とか道徳といわれた種類のものであろう。もちろん人はそれぞれの考えに従って、その好みにあった教訓を見出すであろう。だが私は、人々の中には、これらの物語の中に聖書と同じくらい古い教訓として、我々と動物達は親類なのだという考えを見いだす人がいることを望んでいる。<strong>人間が持っているものは、少なくとも動物たちのどこかに必ずその痕跡を認めうるものであるし、また動物たちがもっているものは、人間も必ずいくぶんかの割合で、それを分けもっているものである</strong>。</p>
<p>したがって<strong>動物とは、欲望と感情をもった生物で、我々人間とはただそのていどが違っているにすぎない</strong>。つまり動物たちも、まちがいなく自分たちの権利を持っているのである。この事実は現在白色人種によって認められはじめているものであるが、最初にこれを宣言したのはモーゼであり、また仏教徒によっては、すでに二千年以上も昔に強調されたことだった。</p>
<p>アーネスト・T・シートン著「シートン動物記」読者への覚え書き</p>
</blockquote>
<p>なんか心に残った。シートン動物記って名前はよく聞くけど、読むまで内容をほとんど知らなかった。そういえば、ファーブル昆虫記ってのも内容ほとんど知らないな。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: テトリスの学習
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/30/2003 10:14:48 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>強化学習を使ったおもちゃとして、今回はテトリスをやってみようと思う。テトリスの場合、迷路より状態行動空間が大きくなるため状態の一般化がかかせない。つまり、状態行動価値の表現をテーブルではなく、線形関数やニューラルネットにする必要がある。</p>
<p>テトリスでは状態をどのように表現するかが非常に難しい。うまく学習させるために適切に状態を表さなければならないことはよく言われている。具体的にどうするかは、今、考え中。行動はブロックの左右移動、回転で、報酬はブロック1行消したら+10、4行消せたら+100、つみ上がったら-200みたいにやっとけばいいと思う。このように設定してしばらくほっとけば、4行消し連発するような賢いエージェントになっていく(といいなあ)。</p>
<p>ちなみにJavaプログラムには<a href="http://www.eclipse.org/" target="_blank">Eclipse</a>というのを使ってみた。評判は聞いていたけどいいと思う。なんかプログラミングが楽しくなる感じがする。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: テトリスの学習 続き
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 10/07/2003 10:16:55 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p><a href="http://d.hatena.ne.jp/aidiary/20030930">id:aidiary:20030930</a>の続き。</p>
<p>テトリスくらい楽だろうと思っていたが、想像以上に難しい(まあいつものことだが)。強化学習を実装して、実行したまま1日放置してみたが、全く変化なしだった。へたくそのまま。2,800,000エピソードまで学習させたのにちっとも上達してない。</p>
<p>アルゴリズムが悪いのか、プログラムにバグがあるのか、状態の表現方法が悪いのか、学習時間が足りないのか全く見当がつかない。</p>
<p>以上のようなわけで、参考になるのがないかとWebで探してみた。</p>
<ul>
<li><a href="http://www.melax.com/tetris/index.html" target="_blank">Reinforcement Learning Tetris Example</a></li>
<li><a href="http://www.math.tau.ac.il/~mansour/rl-course/student_proj/livnat/tetris.html" target="_blank">Reinforcement Learning Playing Tetris</a></li>
</ul>
<p>この2つを調べてみた。テトリスはテトリスなのだがルールが違っている。まず、ブロックの種類が少なく、2X2マスに小さくデフォルメされている。また、10000個のブロックを落としたときに積み重なるブロックの高さで良し悪しを評価している。行を消してなるべく高さを低く抑えようという趣旨らしい。グラフを見ると高さが39くらいで収束している。普通のテトリスのルールでは、高さは20マスなのでこのエージェントはゲームオーバーばかりすることになる。</p>
<p>たかがテトリスだけど難問。こうやって、強化学習の限界がだんだん分かっていくのだろうか。それ以前に今の自分の限界か。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 強化学習の並列化 崖っぷち
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 10/09/2003 10:18:36 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>共有メモリ型の方も、分散メモリ型の方もどっちもまずい。エージェントを増やすことによる収束エピソードの短縮より、オーバヘッドの方がずっと大きい。共有の方は、キャッシュミスの頻発が原因で、分散の方は各PEの負荷が異なることによる同期待ちが原因のようだ。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 脳のからくり
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 10/12/2003 10:19:46 AM
CATEGORY: 脳科学
-----
BODY:
<div class="section">
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4806118745/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51GJK867HNL._SL160_.jpg" class="hatena-asin-detail-image" alt="脳のからくり―わくわくドキドキする脳の話" title="脳のからくり―わくわくドキドキする脳の話"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4806118745/hatena-hamazou-22/">脳のからくり―わくわくドキドキする脳の話</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%C3%DD%C6%E2%B7%B0" class="keyword">竹内薫</a>,<a href="http://d.hatena.ne.jp/keyword/%CC%D0%CC%DA%B7%F2%B0%EC%CF%BA" class="keyword">茂木健一郎</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%C3%E6%B7%D0%BD%D0%C8%C7" class="keyword">中経出版</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2003/09</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><a href="http://d.hatena.ne.jp/asin/4806118745" target="_blank">この商品を含むブログ (6件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>っていう一般向けの脳の本を読んだ。この本の監修者の茂木健一郎さんは最近よく名前を目にする。最近ではブルーバックスの</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4062574128/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51N1WFD8VML._SL160_.jpg" class="hatena-asin-detail-image" alt="脳とコンピュータはどう違うか (ブルーバックス)" title="脳とコンピュータはどう違うか (ブルーバックス)"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4062574128/hatena-hamazou-22/">脳とコンピュータはどう違うか (ブルーバックス)</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%CC%D0%CC%DA%B7%F2%B0%EC%CF%BA" class="keyword">茂木健一郎</a>,<a href="http://d.hatena.ne.jp/keyword/%C5%C4%C3%AB%CA%B8%C9%A7" class="keyword">田谷文彦</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B9%D6%C3%CC%BC%D2" class="keyword">講談社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2003/05/17</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 新書</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 11回</li>
<li><a href="http://d.hatena.ne.jp/asin/4062574128" target="_blank">この商品を含むブログ (29件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>って本読んだことある。「クオリア」というのを主に研究しているようだ。内容はわかりやすく楽しめた。特に著者の竹内さんが提案してる「<strong>ネットワークに意識が宿る</strong>」という仮説は面白い(何か前にもこういう話をどっかで聞いたことあるような・・・)。他に脳関連本の参考文献が充実してるのもよかった。コメントもついていて次読む本を選ぶ際の参考になる。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: BRAIN班の研究紹介
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 10/16/2003 10:20:30 AM
CATEGORY: 日記
-----
BODY:
<div class="section">
<p>新しく研究室に入ってくる3年生に研究紹介をした。なるべく多く発表練習したいから自分がやらせてもらったが、4年生に任せた方がよかったか・・・私はBRAIN班ってのに所属してる(BRAINはちょっと大袈裟だと思うけど)。研究分野は人工知能、強化学習、ニューラルネットワーク、人工生命、ゲーム理論など(だけどできたばかりの班なのでほとんど決まってない)。こういうのはテーマ決めるのに苦労するんだよなー。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 共有メモリ型並列強化学習 持ち直した・・・
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 10/21/2003 10:23:05 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>強化学習を共有メモリ型の並列計算機に実装して、高速化しようとしていた。<a href="http://d.hatena.ne.jp/aidiary/20031009">id:aidiary:20031009</a>に崖っぷちに追いこまれ、速くするのは絶望的な雰囲気だったが、少しだけ持ち直した。</p>
<p>指導教授からLinuxマシン(8CPU)ではなく、Solarisマシン(4CPU)の方がいいというアドバイスを頂いて、Solaris上で動かしてみたところ結果はがらりと変わった。スレッドを増やすことによって学習速度(実行時間)が速くなるのをちゃんと確認できた(表1)。ちなみにLinux上で実行した結果が表2。</p>
<p>表1: Solaris上で実行</p>
<p><table border="1">
<tr>
<td>スレッド数</td>
<td>1</td>
<td>2</td>
<td>4</td>
<td>8</td>
</tr>
<tr>
<td>収束までの時間(秒)</td>
<td>50.3</td>
<td>26.0</td>
<td>14.0</td>
<td>13.4</td>
</tr>
</table></p>
<br>
<p>表2: Linux上で実行(スレッド増やすとめちゃくちゃ遅くなる)</p>
<p><table border="1">
<tr>
<td>スレッド数</td>
<td>1</td>
<td>2</td>
<td>4</td>
<td>8</td>
</tr>
<tr>
<td>収束までの時間(秒)</td>
<td>36</td>
<td>768</td>
<td>906</td>
<td>1069</td>
</tr>
</table></p>
<p>LinuxとSolarisではスレッドスケジューリング時にキャッシュを考慮しないかするかで違いがあるようだ。Linuxでは、今まで使っていたCPUとは異なるCPUにスレッドを割り当ててしまうことがありキャッシュが無駄になってしまう。一方、Solarisでは、今まで使っていたCPUと同じCPUにスレッドを割り当てるためキャッシュが無駄にならない。</p>
<p>キャッシュがうまく使えるか使えないかによってこんなに差がでるなんて知らなかった。プログラミングでハードのこと考えたことほとんどなかったのでいい勉強になった。</p>
<p>ちなみに共有メモリ型並列強化学習ってのは造語。英語のParallel Reinforcement Learningっていうのと、並列分散遺伝的アルゴリズムってのからまねてつけてみた。今回のは並列ではあるが、当然分散ではない。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 最近、面白いと思ったこと
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 11/04/2003 10:24:47 AM
CATEGORY: 日記
CATEGORY: 機械学習
-----
BODY:
<div class="section">
<p>最近、書きたいと思うことのネタが切れてきた。去年に比べて人工知能関係の本(ネタになりそうな本)を読まなくなってきたのが原因。最近、面白かったこと書きたいと思う。</p>
<ul>
<li>JSP/サーブレット </li>
</ul>
<p>Javaは一番よく使う言語だけどサーバーサイドといわれるのはほとんど知らなかった。何冊か本読んでどんなことできるかわかってきた。ただ、普段の生活では使いたいと思う場面がほとんどない。勉強を続けるモチベーションに欠ける。</p>
<ul>
<li>AIBOのプログラミング </li>
</ul>
<p>今まで付属のサンプルを少しずつ読んで動かしたり、少し変えて遊んでたけど、そろそろ自分で書けるような気がしてきた。強化学習を使って歩行動作の獲得!とかしたいけどまだ無理そうなので、簡単なところからやっていきたい。ひとまず尻尾を振らせて、おすわりさせて、お手させて、吠えさせたい。できたらソースとか公開したい。</p>
<ul>
<li>機械学習の応用 </li>
</ul>
<p>最近、すごいと感じたのはスパムメールの識別!ユーザがこれはスパムであれはスパムじゃないという風に教えてあげると、含まれる単語などから徐々に学習して、スパムとスパム以外のメールを区別できるようになるらしい。識別率もかなりのものとか。強化学習とは違って、ベイズ推定(統計的学習理論とかいう分野か?)というのが使われている。学習を用いて解決できそうな問題って他にどんなことがあるのだろう。</p>
<ul>
<li>機械学習、それが人に及ばざる理由 </li>
</ul>
<p>人工知能学会誌のVol.18の特集。まだ全部読んでないけど面白そう。</p>
<ul>
<li>音声合成 </li>
</ul>
<p>最近の音声合成の技術はすごい。恥ずかしながら、いまだに昔のワープロの音声読み上げ(無機質な棒読み)みたいなレベルだと思っていた・・・音声合成の授業で最新の合成機で作られた音声聞いたのだけど、あんまり違和感がないほどきれいな声(人がしゃべってないってのはまだ分かる)で驚いた。また、感情を込めた声や人の声を変換する技術(声の高さを変えずに話速を遅くしたり、速くしたり)もあって面白かった。</p>
<p>もう少ししたら<strong>音声合成向けのチューリングテスト</strong>ができそう。チューリングテストってのは対話している相手が人か機械かを、被験者が判断できなければその機械は知能を持っていると判断しようというテスト。人と機械のどちらが話しているのか分からなくなるのも近そうに感じた。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: changelogメモ
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 11/12/2003 10:26:34 AM
CATEGORY: 日記
-----
BODY:
<div class="section">
<p>思いついたちょっとしたアイデアや考えたこと、読んだ本の内容、プログラミングのテクニック、ソフトウェアのインストール法など忘れそうで記録しておきたいことはいろいろある。今までは、<a href="http://rakusai.org/" target="_blank">紙</a>というフリーソフトを使っていたがもっと面白い方法を見つけた。それがchangelogメモ。</p>
<p>リンク先に詳しい方法が載っているので説明は省くが、要はプログラム開発において開発履歴を保存するためのchangelogをアイデア整理、技術TIPS、日記にも使おうというもの。</p>
<p>早速今日から付け始めた。ちなみにWindows環境では<a href="http://kawacho.don.am/win/meadow/" target="_blank">Meadow</a>(changelogモードは最初からついてる)や<a href="http://www.jsdlab.co.jp/~kamei/" target="_blank">xyzzy</a>(changelogモードの<a href="http://www5e.biglobe.ne.jp/~fukafuka/xyzzy/script/scripts.html" target="_blank">バイナリ</a>)で使えるようになる。</p>
<p>分類として、idea(ちょっとした思いつき)、download(ダウンロード履歴)、news(面白い記事)、book(読んだ本)、study(研究について)、maxim(格言)、c c++ win java html tex(プログラム言語各種TIPS)、install(インストール法)、bookmark(ブックマーク)、diary(日記)、windows(Windows関係)、paper(読んだ論文)、software(ソフトウェア各種)などにしてみた。</p>
<p>2、3年継続して続ければ(自分にとって)かなり役に立つライブラリになる予感。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: changelogメモ 続き
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 11/15/2003 10:27:34 AM
CATEGORY: 日記
-----
BODY:
<div class="section">
<p><a href="http://d.hatena.ne.jp/aidiary/20031112">id:aidiary:20031112</a>から始めたが、このWebに書いてきたことも(自分にとっては)大切な記録なので全部changelogメモに移植した。WEB上では、適当に書いてたので内容ごとに分類してないが、changelogメモでは書いた内容によって分類した。例えば、強化学習ならrl:、人工知能関係ならai:、読んだ本ならbook:などなど。</p>
<p>こうしておくと、後で検索するときに非常に便利。例えば、人工知能について書いてきたこと全部表示したければ、grepを使って、ai:を検索すればよい。タイトルがずらずら全部でてくる。中味を見たければ、タイトルを選ぶだけで読める。</p>
<p>このchangelogメモをHTMLに変換するスクリプトも公開されている。もとがテキストファイルなので変換・加工は容易にできるようだ。これからHTMLを直打ちすることは少なくなりそう。</p>
<p>---</p>
<p>今はブログのカテゴリがあるから楽だ</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: ゲーム脳の恐怖
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 11/17/2003 10:28:39 AM
CATEGORY: 脳科学
-----
BODY:
<div class="section">
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4140880368/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51RHE9D6TVL._SL160_.jpg" class="hatena-asin-detail-image" alt="ゲーム脳の恐怖 (生活人新書)" title="ゲーム脳の恐怖 (生活人新書)"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4140880368/hatena-hamazou-22/">ゲーム脳の恐怖 (生活人新書)</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%BF%B9%BE%BC%CD%BA" class="keyword">森昭雄</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%C6%FC%CB%DC%CA%FC%C1%F7%BD%D0%C8%C7%B6%A8%B2%F1" class="keyword">日本放送出版協会</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2002/07/10</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 新書</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 33回</li>
<li><a href="http://d.hatena.ne.jp/asin/4140880368" target="_blank">この商品を含むブログ (67件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>って本を読んだ。小さいころからゲームやりすぎる(一日一時間でも多すぎるらしい)とゲーム脳になってきれやすくなるとのこと。本当だったら怖いけど、まだ科学的な議論は進んでないらしい。</p>
<p>ソフトウェア開発者も前頭葉の機能低下が生じているとか書いてあった。プログラムを書いていても本当に頭を使っているのはわずかな時間でそのほかは惰性で動いているかららしい。そういえば、一日中パソコンの前にいると頭がホワーン(?)としてぼーっとなるけど・・・もしかして脳に悪いのかも。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 脳のはたらきのすべてがわかる本
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 12/05/2003 10:30:26 AM
CATEGORY: 脳科学
-----
BODY:
<div class="section">
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4047914061/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51R88ESRASL._SL160_.jpg" class="hatena-asin-detail-image" alt="脳のはたらきのすべてがわかる本" title="脳のはたらきのすべてがわかる本"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4047914061/hatena-hamazou-22/">脳のはたらきのすべてがわかる本</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%B8%A5%E7%A5%F3%A1%A6J%2E%A5%EC%A5%A4%A5%C6%A5%A3" class="keyword">ジョン・J.レイティ</a>,<a href="http://d.hatena.ne.jp/keyword/John%20J%2E%20Ratey" class="keyword">John J. Ratey</a>,<a href="http://d.hatena.ne.jp/keyword/%CB%D9%C0%E9%B7%C3%BB%D2" class="keyword">堀千恵子</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B3%D1%C0%EE%BD%F1%C5%B9" class="keyword">角川書店</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2002/03</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 1人 <span class="hatena-asin-detail-label">クリック</span>: 6回</li>
<li><a href="http://d.hatena.ne.jp/asin/4047914061" target="_blank">この商品を含むブログ (5件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>を読んだ。英語のタイトルは "A User's Guide to the Brain"。期待していたとおり脳の機能(発達、知覚、意識、運動、記憶、情動、言語、社会脳)がわかりやすく書いてあった。しかも最近出た本なのでわりと新しい研究成果について書かれているところもいい。</p>
<p>著者は医学系の人なので脳障害を負った人の観察を通して脳の機能説明を行っていることが多い。例えば、ボールは見えないのにボールの動きがわかる患者さんが出てくる。どうしてそんな不思議なことがおきるのか脳の仕組みをもとに解説している。</p>
<p>また、この本は自閉症、失読症、統合失調症のような脳の障害を負った人への差別などが描かれている。体の障害を負った人に比べて、精神障害を負った人は差別されやすいというのは自分も今までの経験からなんとなく感じていた(例えば、精神科が嫌われるとかそういうの)。著者はそのような差別を批判している。どんな精神障害も脳の「生物学的」な面に起因しているのであって、腰痛で自分を恥じることがないのと同じように、精神病も自分を恥じる必要はないと主張している。</p>
<p>ただ、著者は医者なのでそのような障害を持った人の脳は「病的」で「異常」だとしている(だから治療する必要がある)。だけど、患者の脳以上に「病的」で「異常」なのはそのような人を受け入れない社会の方だということを痛感した。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 22世紀から回顧する21世紀全史
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 12/12/2003 10:32:14 AM
CATEGORY: 日記
-----
BODY:
<div class="section">
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4048981455/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/41WKB2C4JAL._SL160_.jpg" class="hatena-asin-detail-image" alt="22世紀から回顧する21世紀全史" title="22世紀から回顧する21世紀全史"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4048981455/hatena-hamazou-22/">22世紀から回顧する21世紀全史</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%B8%A5%A7%A5%F3%A5%C8%A5%EA%A1%BC%A5%EA%A1%BC" class="keyword">ジェントリーリー</a>,<a href="http://d.hatena.ne.jp/keyword/%A5%DE%A5%A4%A5%AF%A5%EB%A5%DB%A5%EF%A5%A4%A5%C8" class="keyword">マイクルホワイト</a>,<a href="http://d.hatena.ne.jp/keyword/Gentry%20Lee" class="keyword">Gentry Lee</a>,<a href="http://d.hatena.ne.jp/keyword/Michael%20White" class="keyword">Michael White</a>,<a href="http://d.hatena.ne.jp/keyword/%B9%E2%B6%B6%C3%CE%BB%D2" class="keyword">高橋知子</a>,<a href="http://d.hatena.ne.jp/keyword/%C2%D0%C7%CF%CC%AF" class="keyword">対馬妙</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%C6%A5%A3%A5%B9%A5%C8%A5%CF%A5%A6%A5%B9%A5%D1%A5%D6%A5%EA%A5%C3%A5%B7%A5%E3%A1%BC%A5%BA" class="keyword">アーティストハウスパブリッシャーズ</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2003/10</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 1人 <span class="hatena-asin-detail-label">クリック</span>: 4回</li>
<li><a href="http://d.hatena.ne.jp/asin/4048981455" target="_blank">この商品を含むブログ (10件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>を読んだ。このタイトル見た瞬間にあれ今22世紀だっけと勘違いさせてくれるほど強烈な印象を受けた。著者は2112年(ドラえもんができた年だそうです)の歴史学者、過ぎ去った21世紀の歴史をまとめている。この本、前書きも2112年のつもりで書いてて面白い。ただ、訳者のあとがきと終わりの出版年月日は2003年だけど・・・</p>
<p>内容は、バイオ革命、印パ核戦争、世界経済の破綻、日本の没落と中国の台頭、バーチャル世界、宇宙旅行など。自分がまるで2112年に生きているように感じさせるほどリアルに細かく描かれているし、物語風味になっているので読みやすい。</p>
<p>自分としてはこの予想は暗すぎると感じた。特に日本の没落って・・・なんかやだ。そうはさせるか!という意志がわいてくる。つーか、外国人に「貴国は没落しますよ」って言われると腹立つ。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 人工知能におけるゲームの役割
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 12/16/2003 09:02:15 PM
CATEGORY: ゲームAI
-----
BODY:
<div class="section">
<p>情報処理という雑誌で</p>
<p>知能ロボットの技術 人工知能からのアプローチ</p>
<p>という特集が組まれていた。その中で</p>
<p>人工知能におけるゲームの役割<span class="footnote"><a href="/aidiary/#f1" name="fn1" title="M. Campbell: 人工知能におけるゲームの役割, 情報処理, Vol.44, No.11, 2003">*1</a></span></p>
<p>という論文が一番面白かった。特に<strong>人工知能で扱うゲームの内容がチェスや碁から対話的なゲームに進む</strong>という予想のところ。自分も同意。以下、引用。</p>
<blockquote>
<p>チェスや碁などの、伝統的な戦略ゲームの研究が進む一方、人工知能を用いたゲームの研究の将来は、対話的なゲーム(interactive game)の方向に進むと見られる。</p>
<p>対話的ゲームをよりリアルに、また面白くするために知的な登場人物や複雑な仮想世界を作ることは大きな利点がある。対話的なコンピュータゲームのそれぞれのジャンル(アクション、ロールプレーイング、アドベンチャー、戦略、スポーツ)にはそれぞれ特有のチャレンジがある。人工知能の研究が貢献できる場面としては、それらしい戦術を持つ敵、味方、他のキャラクタなどがある。当面、人工知能研究者にとって、さまざまな研究テーマを提供する場となろう。</p>
</blockquote>
<p>日本の論文でこういうこと書いてあるのは森川さんの論文<span class="footnote"><a href="/aidiary/#f2" name="fn2" title="森川: [http://www.ai-gakkai.or.jp/jsai/whatsai/PDF/article-iapp-7.pdf:title=テレビゲームへの人工知能技術の利用], 人工知能学会誌, Vol.14, No.2, 1999">*2</a></span>くらいでほとんど見たことなかった。ゲームというとチェス、碁、将棋ばっかだったように思う。たぶん、ビデオゲームみたいなのは職人芸的でアカデミックな場に合わないからだろう。最近、<a href="http://www.dmic.org/game/home.shtml?style=academic" target="_blank">ゲーム学会</a>ってのができたみたいで今後の展開を期待してる。</p>
<p>一方、海外ではこういうのがたくさん研究されているようで、Campbellさんの論文の参考文献たどるといろいろな論文が発見できた。Lairdさんの論文<span class="footnote"><a href="/aidiary/#f3" name="fn3" title="J. E. Laird, M. V. Lent: [http://ai.eecs.umich.edu/people/laird/papers/AAAI-00.pdf:title=Human-level AI&#39;s Killer Application: Interactive Computer Games], AAAI National Conference on Artificial Intelligence, 2000">*3</a></span>を読んでみたがかなり過激なことが書いてある。内容は後日紹介したい。</p>
</div>
<div class="footnote">
<p class="footnote"><a href="/aidiary/#fn1" name="f1">*1</a>:M. Campbell: 人工知能におけるゲームの役割, 情報処理, Vol.44, No.11, 2003</p>
<p class="footnote"><a href="/aidiary/#fn2" name="f2">*2</a>:森川: <a href="http://www.ai-gakkai.or.jp/jsai/whatsai/PDF/article-iapp-7.pdf" target="_blank">テレビゲームへの人工知能技術の利用</a>, 人工知能学会誌, Vol.14, No.2, 1999</p>
<p class="footnote"><a href="/aidiary/#fn3" name="f3">*3</a>:J. E. Laird, M. V. Lent: <a href="http://ai.eecs.umich.edu/people/laird/papers/AAAI-00.pdf" target="_blank">Human-level AI&#39;s Killer Application: Interactive Computer Games</a>, AAAI National Conference on Artificial Intelligence, 2000</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 脳に学んだ情報処理手法の開発に向けて
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 12/20/2003 10:33:09 AM
CATEGORY: 脳科学
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>っていうシンポジウムを聞きに行った。セッション2の強化学習のところが一番よくわかって面白かった。他は・・・あんまり理解できなかった。なんかミクロ(神経細胞レベル)とマクロ(脳の器官モデル)、脳科学・神経科学と人工ニューラルネットの発表が入り乱れていて少し混乱した。</p>
<p>浅田さんの「階層型強化学習機構によるロボットの行動生成」って話が興味深かった。前に強化学習のサーベイをやったのだけど、実は重大なのが抜けているのが判明した。それが階層型強化学習って分野。強化学習は学習に非常に時間がかかるそうで単一学習器で普通にやってたら収束しないらしい。そこで、複数の学習器を階層構造にして、上の階層では大まかに下の階層では細かいところという風に学習するらしい。川人さんの研究でも使われているようで、複雑な行動を学習する上で必須の重要分野なんだなと感じた。</p>
<p>他に面白かったのは、「可塑的ネットワーク型オートマトンと進化的ルール生成 &#8212;自己複製機能の創出&#8212;」って発表。脳と何の関係があるのかよくわからなかったけど興味がわいた。</p>
<p>前にライフゲーム作った。こういうのはセルに分かれているのでセルオートマトンと言われている。一方、この発表で出てきたのはグラフオートマトンというもの。状態遷移則の他にグラフ書き換え則があり、ネットワークの「構造」を変化させることができる。そして、この書き換え則を19ルールつなぎ合わせると、グラフの複製ができることをデモで示していた。細胞分裂みたいで感動した。フォン・ノイマンやラングトンのセルオートマトン上での自己複製に比べてより簡単なルールで実現できることを主張していたようだ。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: コンピュータゲームはAIのキラーアプリ
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 12/21/2003 09:38:24 PM
CATEGORY: ゲームAI
-----
BODY:
<div class="section">
<p><a href="http://d.hatena.ne.jp/aidiary/20031216">id:aidiary:20031216</a>の続き。</p>
<p>Lairdさんの論文<span class="footnote"><a href="/aidiary/#f1" name="fn1" title="J. E. Laird, M. V. Lent: [http://ai.eecs.umich.edu/people/laird/papers/AAAI-00.pdf:title=Human-level AI&#39;s Killer Application: Interactive Computer Games], AAAI National Conference on Artificial Intelligence, 2000">*1</a></span>を読んだ。</p>
<p>この論文は「<strong>人間レベルのAIを研究する上で対話的コンピューターゲームは最適な環境だ</strong>」ってことを主張している。また、「ますます増大するコンピュータゲームのリアリズムは、現実世界のロボティクス、自前のシミュレーション環境両方に代わる魅力的なものになる」とも述べている。</p>
<p>なんでコンピュータゲームなんだろう?その理由をまとめると次のようになる。</p>
<ul>
<li>製品になる。つまり、AI研究は役に立たないという批判をかわすことができる。 </li>
<li>コンピュータゲーム開発者は人間レベルのAIの必要性が分かり始めてきた。 </li>
<li>コンピュータゲーム産業の技術競争は激化している。AIはゲームを進歩させ、ヒット作を出すための鍵になる。 </li>
<li>コンピュータゲームは巨大産業であり、資金が豊富である。 </li>
<li>コンピュータゲームのハードウェアはより安く、より高速になってきており、AIのアルゴリズムを実行できるほど強力になってきている。 </li>
<li>現在のゲームに使われているAIは、非常に限られたものである。</li>
</ul>
<p>この後、コンピュータゲームの各ジャンル、アクション、ロールプレイング、アドベンチャー、戦略、シミュレーション、チームスポーツ、個人スポーツなどにどうやってAIを生かせるかが書かれてた。</p>
<p>この論文はあくまで米国ゲーム産業の状況で、日本の状況を言ってるのではない。日本ではAIを売り物にしたゲームいくつかあるけど、あんまり売れてないみたいだし…高度なAI入れたからってゲームが面白くなってたくさん売れるとは限らないとも思う。でも、こういう試みはなんか新しそうで楽しそう。</p>
<p>この論文読んでて知ったのだけど、「人工知能」という名前を提案した、かのマッカーシーさんもLemmingsというゲームを例にあげて、対話的コンピュータゲームはAI研究のトピックとして考えられるべきだと述べているらしい<span class="footnote"><a href="/aidiary/#f2" name="fn2" title="J. McCarthy: [http://www-formal.stanford.edu/jmc/lemmings.html:title=Partial Formalization and the Lemmings Game], 1998">*2</a></span>。</p>
<p>こういうテーマは、客観的評価が難しいから論文にはなんない(もとい、なりにくい)と思うけど、別スレッド立てて追究してみると楽しそう。</p>
</div>
<div class="footnote">
<p class="footnote"><a href="/aidiary/#fn1" name="f1">*1</a>:J. E. Laird, M. V. Lent: <a href="http://ai.eecs.umich.edu/people/laird/papers/AAAI-00.pdf" target="_blank">Human-level AI&#39;s Killer Application: Interactive Computer Games</a>, AAAI National Conference on Artificial Intelligence, 2000</p>
<p class="footnote"><a href="/aidiary/#fn2" name="f2">*2</a>:J. McCarthy: <a href="http://www-formal.stanford.edu/jmc/lemmings.html" target="_blank">Partial Formalization and the Lemmings Game</a>, 1998</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 心の社会(Society of Mind)
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 12/22/2003 10:38:04 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4782800541/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/41TlYVq1HJL._SL160_.jpg" class="hatena-asin-detail-image" alt="心の社会" title="心の社会"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4782800541/hatena-hamazou-22/">心の社会</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/Marvin%20Minsky" class="keyword">Marvin Minsky</a>,<a href="http://d.hatena.ne.jp/keyword/%A5%DE%A1%BC%A5%F4%A5%A3%A5%F3%A1%A6%A5%DF%A5%F3%A5%B9%A5%AD%A1%BC" class="keyword">マーヴィン・ミンスキー</a>,<a href="http://d.hatena.ne.jp/keyword/%B0%C2%C0%BE%CD%B4%B0%EC%CF%BA" class="keyword">安西祐一郎</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%BB%BA%B6%C8%BF%DE%BD%F1" class="keyword">産業図書</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1990/07</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 4人 <span class="hatena-asin-detail-label">クリック</span>: 32回</li>
<li><a href="http://d.hatena.ne.jp/asin/4782800541" target="_blank">この商品を含むブログ (41件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>心の社会とは、ミンスキー氏が提案した概念。エージェントが多数集まり、互いに相互作用することによって心が生じるって考え方。この考え方を強化学習に取り入れた論文<span class="footnote"><a href="/aidiary/#f1" name="fn1" title="Humphrys,M.: W-learning: A simple RL-based Society of Mind, the 3rd European Conference on Artificial Life, 1995">*1</a></span>を読んだ。</p>
<p>この論文は、「複数の競合する目標があるとき」にどのような行動を選択したらよいかを自動的に学習するアルゴリズムW-learningについて書かれている。一般的な強化学習が単一目標を単一エージェントが追求するのに対し、このアルゴリズムは複数目標を複数エージェントが追求する。下図のような感じ。</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20050814103713" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20050814/20050814103713.gif" alt="f:id:aidiary:20050814103713g:image" title="f:id:aidiary:20050814103713g:image" class="hatena-fotolife"></a></p>
<p><strong>1つの個体の中に別々の目標を持つ複数のエージェントが含まれている</strong>ってイメージ。別々な目標を持つってのはQ値と報酬関数を各エージェントが個別に持ってることからわかる。各エージェントは「利己的」であり、自分にとって最適な行動をとろうとする。しかし、個体としては1つの行動しか取れないため、どれか1つを選ばないといけない。これは、「あれもしたい」「これもしたい」と思っていても、結局どれかを選択しなければならない「葛藤」の状況に似ている。この「葛藤」をコントロールするのが重み。重みが大きい行動ほど選択されやすくなる。W-learningは報酬をもとに重みを調節するって機能がついている。</p>
<p>パックマンを例に考えてみる。パックマンでは「A1:敵から逃げるエージェント」と「A2:えさを食べるエージェント」が考えられる。A1は敵に触れなければ報酬が入り、A2はえさを食べれば報酬が入る。A1とA2の出力する行動が一致してれば問題ない。しかし、敵が近づいてきたときに競合がおきる。A1は敵から逃げようとするが、A2は敵を無視してえさを食べ続けようとする。この状況では、A1を優先しないと敵に触れて負の報酬を得てしまうので、A1の重みを強めるように学習が進む(はず)。</p>
<p>心の社会って考え方は好きなので、この方法は面白いと思う。<a href="http://www.compapp.dcu.ie/~humphrys/" target="_blank">著者のページ</a>に行けばこれ関係の論文がたくさんあったので読んでみたい。シミュレーションもそんなに難しくないのでやってみたい。エージェントの集合体「心」がどういう行動とるのか楽しみ。</p>
</div>
<div class="footnote">
<p class="footnote"><a href="/aidiary/#fn1" name="f1">*1</a>:Humphrys,M.: W-learning: A simple RL-based Society of Mind, the 3rd European Conference on Artificial Life, 1995</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: Human Agent Interaction(HAI)
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 12/28/2003 10:41:36 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>ヒューマンインターフェースの授業を通してたまたま見つけた論文<span class="footnote"><a href="/aidiary/#f1" name="fn1" title="山田誠二, 角所考: 適応としてのHAI, 人工知能学会誌, Vol.17, No.6, pp.658-664, 2002">*1</a></span>を読んだ。HAIというのは「人間とエージェントの相互作用、コミュニケーションを通して人間とエージェントが互いに適応していく」という考え方。ここでミソだと思うのは「人間とエージェントの相互作用」の部分。</p>
<p>従来の機械学習の研究の多くは、エージェントができる限り人間の介入を排除し、自律的に環境に適応することを目指していたとこの論文で述べられている。図1のイメージ。この方法の利点は、エージェントが自律性を持てること、欠点は学習に時間がかかること。この論文では特定の学習アルゴリズムについて述べてはいないが、一般的な強化学習の考え方だと思う。</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20050814103928" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20050814/20050814103928.gif" alt="f:id:aidiary:20050814103928g:image" title="f:id:aidiary:20050814103928g:image" class="hatena-fotolife"></a></p>
<p><a href="http://f.hatena.ne.jp/aidiary/20050814103944" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20050814/20050814103944.gif" alt="f:id:aidiary:20050814103944g:image" title="f:id:aidiary:20050814103944g:image" class="hatena-fotolife"></a></p>
<p>図1に「人間とエージェント」との相互作用を入れようというのがHAIの考え方のようだ(人間を環境に含めても同じか?)。図2のイメージ。これの工学的な利点は、「学習の高速化」ってことになっている。のだけど、人間とエージェント間に相互作用性を入れることによって、エンターテインメントの要素を取り入れられるという利点もありそうだ<span class="footnote"><a href="/aidiary/#f2" name="fn2" title="山田誠二, 山口智浩: 人間とペットロボットの相互適応―AIBOをしつける―, 情処研報 知能と複雑系, No.130, 2002">*2</a></span>。<a href="http://d.hatena.ne.jp/aidiary/20030404">id:aidiary:20030404</a>に書いた「学習の高速化以上の意味」というのはこのことだと思う。自分としては、勝手に学習して思いもよらない行動を取るエージェントの方が感動ものだが、人間が介入できた方が面白いというのもうなづける。</p>
<p>では、強化学習でHAIの考え方を取り入れた研究にはどんなのがあるか?<a href="http://d.hatena.ne.jp/aidiary/20030404">id:aidiary:20030404</a>書いたAdvice-Taking RLってのはそうだと思うが他には?前は完全自律性万歳!という考えだったが、すこし変わってきたのを感じる。</p>
</div>
<div class="footnote">
<p class="footnote"><a href="/aidiary/#fn1" name="f1">*1</a>:山田誠二, 角所考: 適応としてのHAI, 人工知能学会誌, Vol.17, No.6, pp.658-664, 2002</p>
<p class="footnote"><a href="/aidiary/#fn2" name="f2">*2</a>:山田誠二, 山口智浩: 人間とペットロボットの相互適応―AIBOをしつける―, 情処研報 知能と複雑系, No.130, 2002</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 強化学習における人間とエージェントのコミュニケーション
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 12/31/2003 10:43:18 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>強化学習しているエージェントに人間が介入できるような仕組みがないか探してみた。つまり、<a href="http://d.hatena.ne.jp/aidiary/20031228">id:aidiary:20031228</a>に述べたように強化学習にHAIの仕組みを入れたようなもの。今のところ、Advice-Taking RL、反応形成(shaping)、<a href="http://www.ntt.dis.titech.ac.jp/home/katagami/HAI.htm" target="_blank">対話的進化ロボティクス</a>あたりがそれっぽいと思う。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 反応形成(Shaping)
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 12/31/2003 10:45:42 AM
CATEGORY: 強化学習
CATEGORY: 認知科学
-----
BODY:
<div class="section">
<p>に関する面白いムービーを見つけた(QuickTimeが必要)。</p>
<ul>
<li><a href="http://www.naruto-u.ac.jp/~rcse/s_mov_shaping.html" target="_blank">ベルをつつく行動のシェイピング </a></li>
<li><a href="http://www.naruto-u.ac.jp/~rcse/s_mov_disc.html" target="_blank">絵の弁別訓練</a> </li>
</ul>
<p>すごくおりこうな鳩だ。実際の動物で強化学習しているの始めてみたので感動した。ここでは、このムービーでやられている反応形成についてメモっとく。</p>
<p>反応形成は、いきなり難しい行動を教える代わりに、最終目標行動までの過程を何段階かにわけて、各段階ごとに強化学習を繰り返すという手法らしい。犬の訓練や<a href="http://www.dolphinspacific.com/training/column11.html" target="_blank">いるかの訓練</a>でよく使われているようだ。</p>
<p>強化学習アルゴリズムでも反応形成が応用されている。デフォルトの強化学習のように何の知識もない状況からいきなり難しい行動をとらせようとしても、試行錯誤ではなかなか目標に到達できず、初期学習に膨大な時間がかかる。これは、自分も実感できるところで、最初の1エピソード(初めて目標について報酬を得るまで)に多くの時間がかかっている。この問題を解決するため、最終目標までを何段階かに分けて徐々に学習できるようにしたのが反応形成という手法。サブゴールへの分割という研究もあるのだが、反応形成とやりたいことは同じ(?)だと思われる。</p>
<p>この反応形成をムービーにあるように人間とのインタラクションによってできないかというのが興味のある点。つまり、あらかじめ報酬を決めておかない(つまりタスクを決めておかない)でエージェントとのインタラクションの中でタスク(報酬)を人間が与えるというイメージ。人間の好みの行動をエージェントに形成させられたら面白いと思う。こういう研究が上の分野(Advice-Taking RL、反応形成、対話的進化ロボティクス)でどうやられているのか。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 今年やったこと
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 12/31/2003 10:46:39 AM
CATEGORY: 日記
-----
BODY:
<div class="section">
<p><a href="http://d.hatena.ne.jp/aidiary/20030101">id:aidiary:20030101</a>の続き。</p>
<ul>
<li>.NET勉強したい!Windowsアプリケーション自由に作れるようになりたい! </li>
</ul>
<p>Terrarium通してC#勉強した(文法だけ)。また、Visual Studio .NETがMSDN AAによって無料で使えたので、これを機会にVisual C#使って遊んでた。</p>
<ul>
<li>認知科学勉強したい!一通り全部! </li>
</ul>
<p>「知の創成」「メイザーの学習と行動」「心の社会」を読んだぐらいか。図書館に認知科学のシリーズ本あったから卒業までに読んどきたい。</p>
<ul>
<li>強化学習究めたい! </li>
</ul>
<p>去年見落としてた階層型強化学習や反応形成の概念を知った。でも知識(もあるか微妙だが)に対して実践と結果がまったく伴ってない。</p>
<ul>
<li>ニューラルネットと遺伝的アルゴリズムもう一回勉強したい! </li>
</ul>
<p>ニューラルネットは前期に授業を取った。ホップフィールドネット、ボルツマンマシンとか教科書に載っているようなこと勉強したけど最新の研究はよくわからないまま。遺伝的アルゴリズムは全然やらなかった。</p>
<ul>
<li>ロボット関係も少し勉強したい! </li>
</ul>
<p>研究室にAIBOが入ったのでいじってた。OPEN-Rを使ったAIBOのプログラミングを体験できた。想像以上に複雑で難しい。ロボット制御の理論とかは全然やらなかった。</p>
<ul>
<li>TOEICでも受けてみる! </li>
</ul>
<p>受けてみた。リスニングに比べてリーディング(多分、文法のところ)が低かった。2年間、英語の論文をけっこう読んできたおかげで、英語読むことに抵抗がなくなった。なんかうれしい。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 今年やりたいこと
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 01/01/2004 11:52:18 AM
CATEGORY: 日記
-----
BODY:
<div class="section">
<ul>
<li>とにかく修論。 </li>
<li>認知科学。特に心理学とかの上位層部分。 </li>
<li>ヒューマンインターフェース。興味わいてきた。 </li>
<li>データベースとUML。使い方あんまり知らないから。 </li>
<li>就活。 </li>
</ul>
<p>今年はすごく大変そう。12月31日はたしてどうなっているか。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 適応インタフェース 機械学習とヒューマンインタフェースの接点
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 01/09/2004 08:21:13 PM
CATEGORY: 機械学習
-----
BODY:
<div class="section">
<p>ヒューマンインタフェース(Human Interface : HI)関係のレポート書くので題材探してた。最近のHI研究は、ポストGUIとして、拡張現実、ユビキタス、ウェアラブルみたいな実世界指向が流行ってることがつかめた。つまり、<strong>画面の中の情報世界から実世界を対象にした研究に移っている</strong>ようだ。ここら辺は人工知能が実世界を対象にしたロボットに移っている動向と似ている。</p>
<p>しかし、そういうの以上に興味深かったのが<strong>適応インタフェース</strong>、<strong>適応的インタラクション</strong>、<strong>ユーザモデリング</strong>、<strong>パーソナライゼーション</strong>とかいう分野。機械学習の応用分野みたいで興味持った。</p>
<p>学習・適応機能を持ったインタフェース(というかソフトウェア)をちょっと探してみても結構あるのに気づく。</p>
<ul>
<li>仮名漢字変換は最近変換した漢字が上にくる </li>
<li>スタートメニューはよく使われるアプリケーションがポップアップする(Windows) </li>
<li>頻繁に使われるアプリケーションがスタートメニューに登録される(Windows) </li>
<li>Windows Media Player 9は聴く曲に応じてお気に入り(夜に聴くとか週末に聴くとか)が自動分類される </li>
<li>Amazon.comは、ユーザの購入(検索)履歴に応じて本を紹介する </li>
<li>ある種のスパム対策ソフトは、ユーザの教示によってスパムかどうかを自動判定する </li>
</ul>
<p>他にありそうだけど意識してないとなかなか気づけない。こういう<strong>使い続けていくうちに「個性」が現れるソフト</strong>ってのは愛着がわくし、使いやすいものだと思う。上のような機能がわずらわしいって思う人はあまりいないんじゃないか。<strong>使いやすいヒューマンインタフェースは学習・適応機能が必要</strong>、そう思った。</p>
<p>GA使った筋電義手(<a href="http://d.hatena.ne.jp/aidiary/20020409">id:aidiary:20020409</a>)の「<strong>人が機械に合わせるんじゃなくて、機械が人に合わせる</strong>」っていう格言、あれが深く心に残ってる。まさに適応インタフェースの本質。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 強化学習における人とエージェントの相互作用
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 01/14/2004 11:54:37 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p><a href="http://d.hatena.ne.jp/aidiary/20031231#1123983798">id:aidiary:20031231#1123983798</a>の続き。</p>
<p>人とエージェントの相互作用(HAI:Human Agent Interaction)を取り入れた強化学習に関する研究を調べた。</p>
<p>相互作用といってもいろいろある。多いのは、エージェントの学習過程で人間が正しい行動を指示するタイプ。指示の仕方や指示の取り入れ方にいろいろ種類があり、学習の高速化が主目的になっている。後で書く。</p>
<p>今日は、人間が行動を指示するんではなく、報酬を与えるタイプの強化学習を扱った論文<span class="footnote"><a href="/aidiary/#f1" name="fn1" title="Isbell,C.L., Shelton,C.R., Kearns,M., Singh,S. and Stone,P.: A Social Reinforcement Learning Agent, Proceedings of the Fifth International Conference on Autonomous Agents, 2001">*1</a></span>を読んだ。この種の研究は少ない(と感じている)し、結構いい考えだと密かに思っていたがよく探せばやっぱりある。</p>
<p>一般的に、報酬は学習の前に人が設定し、かつ学習過程を通して変化しない(静的)のが普通。だけど、この論文ではエージェントの学習中に「人」が報酬を与え、しかも学習過程を通して変化する。</p>
<p>扱っているのは、<a href="http://www.moo.mud.org/" target="_blank">LambdaMOO</a>というチャット環境で動く<a href="http://www.cc.gatech.edu/fac/Charles.Isbell/projects/cobot/" target="_blank">Cobot</a>というエージェント。Cobotは、LambdaMOOという環境の中で他のユーザとコミュニケーションを行える。インターネットからいろんな話題を選んできて話したり(出力したり?)、他のユーザを紹介したり、コメントを出すといった行動を取るらしい。人工無能みたいなものか?LambdaMOO中の「人」ユーザは、Cobotとやりとりし、行動がよかったら報酬、悪かったら罰を与えてCobotを訓練できる。訓練を続けると、Cobotはそのユーザに適応し、適切な行動を出せるようになる。</p>
<p>簡単そうに感じるが、強化学習で扱うのは難しいらしい。難しい理由は今度書く。</p>
</div>
<div class="footnote">
<p class="footnote"><a href="/aidiary/#fn1" name="f1">*1</a>:Isbell,C.L., Shelton,C.R., Kearns,M., Singh,S. and Stone,P.: A Social Reinforcement Learning Agent, Proceedings of the Fifth International Conference on Autonomous Agents, 2001</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 報酬をエージェントの学習過程で与えるのが難しい理由
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 01/16/2004 11:56:23 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p><a href="http://d.hatena.ne.jp/aidiary/20040114">id:aidiary:20040114</a>の続き。Isbellの論文を元にまとめておく。</p>
<ul>
<li>適切な状態空間の選択 </li>
</ul>
<p>これは、Cobotの例に限らず強化学習一般に言えると思う。適切に状態を設定しないと学習が収束しないこともある。</p>
<ul>
<li>複数の報酬源と矛盾の可能性 </li>
</ul>
<p>Cobotのようにいろんな人と相互作用して学習させようとすると報酬源(ユーザ)がたくさんになる。その結果、与えられる報酬に一貫性がなくなり矛盾する可能性がある。例えば、ユーザAは行動Aに報酬を与えるが、ユーザBは罰を与えるかもしれない。これは難しい問題だが別に変なことじゃないと思う。動物や人でも矛盾する指示をされれば混乱するだろうから。子供にこんな教育したら変になるはず。</p>
<ul>
<li>実験を再現できない </li>
</ul>
<p>たくさんのユーザと接して学習していくので、同じ実験をやりたいと思っても再現できない。これは疑問。Cobotの中にログを取っておけばあとでシミュレーションできるんじゃないか?ログが大量すぎて現実的じゃないのかな。</p>
<ul>
<li>訓練データがまばら </li>
</ul>
<p>これがこの論文を読んではっと気づいた最大の問題点。強化学習の欠点は、学習が遅いことである。ここで、学習が遅いというのは「学習が収束するまでに大量の経験が必要になる」ことを意味する。経験というのは環境との相互作用から得られる。普通の強化学習はエージェントが(人を除いた)環境と相互作用していればよいので人はとにかく待ってればよかった。</p>
<p>しかし、<strong>人と相互作用して経験を与えなければならないとすると人にとってえらく迷惑な話</strong>になりそう。エージェントの学習が収束するまで何万回も相互作用したげないといけないから。普通の人間にはこんなことやってられない。</p>
<p>Cobotではそこら辺どうなっているのか?CobotはLambdaMOOの環境で約5ヶ月間、254人のユーザと3171回の報酬(または罰)を受け取ることで何らかの適切な行動(ここら辺が少し曖昧)ができるようになったらしい。つまり、経験数3171。ユーザが254人いたからいいけど、1人だと訓練してる間に飽きてしまう。現にほとんどのユーザが1回しかCobotとやり取りしていないと述べられている。逆に何度もやり取りする熱心なユーザもいるようだが。</p>
<p>この問題点は、学習の高速化の重要性を非常によく表している。ユーザが飽きない範囲の訓練(と時間)である程度行動に変化が現れてくれなければならない。エージェントやロボットに学習を取り入れた場合、<strong>ユーザの飽きの問題は深刻になる</strong>と感じる。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: ヴァレンティーナ―コンピュータ・ネットワークの女王
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 01/21/2004 00:42:28 AM
CATEGORY: SF
-----
BODY:
<div class="section">
<p>ってSFを読んだ。</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/410223201X/hatena-hamazou-22/"><img src="http://d.hatena.ne.jp/images/hatena_aws.gif" class="hatena-asin-detail-image" alt="ヴァレンティーナ―コンピュータ・ネットワークの女王 (新潮文庫)" title="ヴァレンティーナ―コンピュータ・ネットワークの女王 (新潮文庫)"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/410223201X/hatena-hamazou-22/">ヴァレンティーナ―コンピュータ・ネットワークの女王 (新潮文庫)</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/J%2E%A5%C7%A5%A3%A5%EC%A1%BC%A5%CB%A5%A4" class="keyword">J.ディレーニイ</a>,<a href="http://d.hatena.ne.jp/keyword/M%2E%A5%B9%A5%C6%A5%A3%A1%BC%A5%B0%A5%E9%A1%BC" class="keyword">M.スティーグラー</a>,<a href="http://d.hatena.ne.jp/keyword/%BE%AE%C0%EE%CE%B4" class="keyword">小川隆</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%BF%B7%C4%AC%BC%D2" class="keyword">新潮社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1986/07</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 文庫</li>
<li><a href="http://d.hatena.ne.jp/asin/410223201X" target="_blank">この商品を含むブログ (5件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>ヴァレンティーナは、考え、感じ、話すことができる「コンピュータプログラム」という設定。ロボットじゃなくて、実体を持たないプログラムってとこがこの話のみそ。ヴァレンティーナはワームで、ネットワーク中を渡り歩く。ファイルから世界の知識を学習し、OSから計算時間を盗み、プロセス停止命令に抵抗する。</p>
<p>この話の面白い点の1つめは、「プログラムの立場から見た」コンピュータの中の様子、ロボット、人の世界を詳しく描写しているところ。プログラムにとって人はどう見えるか?プログラムにとってスラッシングやページングはどう感じられるか?プログラムにとって並列計算機はどう感じられるか?など。SF作家の想像力はすごい。</p>
<p>面白い点の2つめは、人工知能の大きな問題点である記号接地問題を扱ってるところ。ヴァレンティーナはプログラムなので世界の知識はあっても実感がない。世界について理解ができない部分がたくさんある。</p>
<blockquote>
<p>ヴァレンティーナ、きみは人生に何を望んでいるんだい?</p>
<p>物事を理解したいわ。あなたたちの世界の物事を理解したいの、きっと不思議で美しいところでしょうからね。</p>
<p>なるほど。きみが理解していないことって、ひとつ例をあげてくれないか?</p>
<p>色よ。それと虹。</p>
<p>きみが理解していることには何がある?</p>
<p>(涙)や(キス)を理解しているつもりよ。</p>
<p>pp.299-300</p>
</blockquote>
<p>身体を持たないプログラムに知能を持たせることができるのかってのは昔よく議論されてたらしい。"記号"しか扱えないプログラムに世界を理解できるのか?記号と世界の対応はつけられるのか?など。今の人工知能研究が身体性を重視し、ロボットを用いた世界との相互作用を扱う方向に向いているのもそこら辺が関係している。</p>
<p>そんな"記号"しか理解できなかったヴァレンティーナが1回だけ現実世界に出てくる場面がある(どう出てくるかは・・・読めばわかる)。世界をどう感じたのか?</p>
<blockquote>
<p>この世界はとても鈍く、とてもぶかっこうで、とてもうるさく、とてもきたなく、とても非モジュール式だった。それに、とても・・・・・・謎めいていて、暴走したシミュレーションに思えた。</p>
</blockquote>
<p>ヴァレンティーナは、この世界で(微笑む)ではなく微笑む、(凝視)ではなく見つめる、(キス)ではなくキスを理解する。</p>
<p>(理解する)とはどういうことか理解できなくなるような話だった・・・</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: R.A.Brooks氏が早稲田に!
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 01/22/2004 11:57:59 AM
CATEGORY: ロボティクス
-----
BODY:
<div class="section">
<p>「RTは安心を創造するか」というシンポジウムが早稲田で2月7日に開かれる。なんと、あの<a href="http://people.csail.mit.edu/brooks/index.shtml" target="_blank">R.A.Brooks</a>氏の講演があるではないか!絶対、行きだ。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 研究発表会
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 01/23/2004 00:01:05 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>だった。並列化による強化学習の高速化というテーマで発表した。今、強化学習をテーマにしてるけど何でだっけかな。過去の研究履歴見ると<a href="http://d.hatena.ne.jp/aidiary/20020801">id:aidiary:20020801</a>にいきなり「強化学習」って言葉が出てくる。数ある学習アルゴリズムの中で強化学習を選んだ理由は何だ。馴初めが思い出せない。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: アイデアのつくり方
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 01/23/2004 00:01:06 PM
CATEGORY: 日記
-----
BODY:
<div class="section">
<p><a href="http://d.hatena.ne.jp/aidiary/20020701">id:aidiary:20020701</a>にアイデアについての2つの原理ってのを書いた。これの元ネタがわかった。</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4484881047/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/518JGHMGRAL._SL160_.jpg" class="hatena-asin-detail-image" alt="アイデアのつくり方" title="アイデアのつくり方"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4484881047/hatena-hamazou-22/">アイデアのつくり方</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%B8%A5%A7%A1%BC%A5%E0%A5%B9%20W%2E%A5%E4%A5%F3%A5%B0" class="keyword">ジェームス W.ヤング</a>,<a href="http://d.hatena.ne.jp/keyword/%BA%A3%B0%E6%CC%D0%CD%BA" class="keyword">今井茂雄</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%BA%E5%B5%DE%A5%B3%A5%DF%A5%E5%A5%CB%A5%B1%A1%BC%A5%B7%A5%E7%A5%F3%A5%BA" class="keyword">阪急コミュニケーションズ</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1988/04/08</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 38人 <span class="hatena-asin-detail-label">クリック</span>: 310回</li>
<li><a href="http://d.hatena.ne.jp/asin/4484881047" target="_blank">この商品を含むブログ (308件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>この本。図書館あさってたらたまたま見つけた。p.32に書いてある。この著者が言うアイデアを出すための段階とは、</p>
<blockquote>
<ul>
<li>第一 資料集め&#8212;諸君の当面の課題のための資料と一般的知識の貯蔵をたえず豊富にすることから生まれる資料と。</li>
<li>第二 諸君の心の中でこれらの資料に手を加えること。</li>
<li>第三 孵化段階。そこでは諸君は意識の外で何かが自分で組み合わせの仕事をやるのにまかせる。</li>
<li>第四 アイデアの実際上の誕生。<ユーレカ!分かった!みつけた!>という段階。そして</li>
<li>第五 現実の有用性に合致させるために最終的にアイデアを具体化し、展開させる段階。</li>
</ul>
<p>アイデアのつくり方、p.54-55</p>
</blockquote>
<p>日本語が変な気するけどママ。あと、野口さんの</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4062099918/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51KHTT6WP8L._SL160_.jpg" class="hatena-asin-detail-image" alt="「超」発想法" title="「超」発想法"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4062099918/hatena-hamazou-22/">「超」発想法</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%CC%EE%B8%FD%CD%AA%B5%AA%CD%BA" class="keyword">野口悠紀雄</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B9%D6%C3%CC%BC%D2" class="keyword">講談社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2000/03</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 1回</li>
<li><a href="http://d.hatena.ne.jp/asin/4062099918" target="_blank">この商品を含むブログ (18件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>って本にもアイデアの出し方が書いてある。</p>
<blockquote>
<ul>
<li>第一原則 発想は、既存のアイデアの組み換えで生じる。模倣なくして創造なし。</li>
<li>第二原則 アイデアの組み換えは、頭の中で行われる。</li>
<li>第三原則 データを頭に詰め込む作業(勉強)がまず必要。</li>
<li>第四原則 環境は発想を左右する。</li>
<li>第五原則 強いモチベーションが必要。</li>
</ul>
<p>「超」発想法、pp.28-38</p>
</blockquote>
<p>今のテーマ行き詰ってるからな。この発想法で新しい修論のテーマも楽々決まる(といいんだけど・・・)。テーマ選ぶのって本当に難しい。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 強化学習におけるヒューリスティクス
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 01/31/2004 00:02:04 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>強化学習は結局最適解の探索問題にすぎないように思われる(こういうとつまんない感じがするけど)。各状態でどの行動を取ればよいか探索して見つけるのが強化学習の目的だから。</p>
<p>「探索」というと人工知能の基礎分野の1つだが、前にそこ勉強してたときヒューリスティクスってのを知った。ヒューリスティクスとは、問題固有の経験的な知識で探索を効率化するために使われてた。</p>
<p>同じ探索問題なのだから、<strong>強化学習にヒューリスティクスが導入できないのか</strong>というのが疑問点。おそらく教示はヒューリスティクスに含まれるのではないか。教示は領域固有の知識で学習(結局、探索)の効率をあげるためのものだから。</p>
<p>例えば、迷路問題を考えてみる。棒倒し法で作るような単純な迷路でかつゴールが右下にある場合、ヒューリスティクスの1つとして「右下へ行け」ってのが考えられる。あらかじめエージェントにこのような知識を与えて右下へ行く確率を増やしておけば何も知らないエージェントよりゴールへ早くたどり着けるはず(特に学習の初期段階)。ただヒューリスティクスがじゃまになって最適解が得られなくなる場合が考えられるので、学習が進むにつれ徐々に排除していけばいいと思う。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: RTは安心を創造するか
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 02/07/2004 00:04:25 PM
CATEGORY: ロボティクス
-----
BODY:
<div class="section">
<p>早稲田大学で開催された「RTは安心を創造するか」というシンポジウムに行って来た。</p>
<p>最初の講演は、MIT人工知能研究所のR.A.Brooks氏。サブサンプションアーキテクチャーや身体性認知科学の提唱者で人工知能、ロボティクス研究では超有名人(だと思う)。ロボット使用法の現状、高齢化社会に向けてのロボット需要、センサー、マニピュレーター、ビジョンにおける問題点、短中長期的目標などの話だった。</p>
<ul>
<li>IT(1978) = RT(2001)。IT(情報技術)の1978年の段階とRT(ロボット技術)の2001年の段階はほぼ等しい。つまり、一般に普及していない段階であり、これから普及が始まる。</li>
<li>6才の子供の手の器用さと2才の子供の物体認識能力を実現できれば、多くの応用が可能になる。 </li>
</ul>
<p>ってところが印象に残った。あと、最後の質問で「アメリカのロボットはギアがむき出しなど日本に比べていかにも機械っぽいですがその点についてどう考えてますか」みたいな質問が出た。それに「ロボットに必要なのは機能だと考えている。<strong>日本の今のロボットは主に企業のブランドイメージを高めるために使われている</strong>。だから、デザインを重視しているのではないか」と応えていた。実用重視のアメリカ人的な解答で思わず納得してしまった。</p>
<p>次の講演は、P.Dario氏。バイオメディカルロボティクスっていう医療福祉現場で使われるロボットを研究しているらしい。心に残ったのは「ロボットに介護してもらいたいか?」って部分。被検者を集めて実験をしたらしい。使う前は10%の人しかYESと答えなかったが、実際に使った後は43%の人がYESになったと話していた。このことから、ロボットの普及には、</p>
<ul>
<li>研究者がシーズを作りだすことも必要だが、実用にはユーザとともに開発する姿勢が必要である。 </li>
<li>ユーザにロボティクスとは何か、どんなことができるのかを説明することが重要である。</li>
</ul>
<p>と述べていた。<a href="http://d.hatena.ne.jp/aidiary/20021109">id:aidiary:20021109</a>に「<em>ロボット介護なんてお年寄は嫌がらないのか</em>」と書いたのだがどうやらそうではないらしい。ヘルパーに食事の世話などで迷惑をかけたくない、自分の力、ペースでやりたい、下の処理などまかせたくない、気を使いたくない、プライベートを見られたくない、なんて理由で「人による介護」の方を嫌がる人も少からずいるようだ。ロボットの需要は結構高いのかも。</p>
<p>次の講演は、産総研の谷江和雄氏。冒頭で「30年間ロボットの研究をし、論文を300本近く書いてきたが、社会に役立っているという実感がない。ロボットをどのように利用するかは絶えず考えている。」って話してたのが印象に残った。</p>
<p>2つ面白いと思った。1つめは、産総研で開発している<a href="http://www.aist.go.jp/aist_j/topics/to20020315/to20020315.html" target="_blank">パロ</a>っていうアザラシ型のロボット。かわいさではAIBOの比じゃない。AIBOみたいにメカニカルな外観よりこういったふさふさしているぬいぐるみタイプの方が個人的にはいい。ぬいぐるみの高度化、知能化はかなりいい線だと思う(映画 A.I に出てきた熊のぬいぐるみ最高)。小さいとき猫のぬいぐるみを「手で」動かして遊んでて、これが動いたらなと願ってたことがあった(昔は喘息で動物が飼えなかったから)。ベンチャー立てて販売する予定だそうだが子供向けにかなり売れると思う。値段にもよるが。</p>
<p>2つめは、ユビキタス技術、特にICタグをロボットの実用化に有効に使っていくという部分。ロボットに知識を入れるのは限界がある(人工知能の大問題)。そこで、物側に知識を入れておこうという発想の転換。ICタグを物に埋めこんでロボットは無線でその情報を読み取れるようにしておくという手法。この環境の知能化というのは、Semantic Webなんかもその一種だろう。<strong>プログラムで知的な処理をするには限界がある。だったらデータの側を「賢く」しておこう</strong>って考え方。面白い。</p>
<p>次の講演は、東大の笠木伸英氏。ロボティクスにおけるエネルギーの面からの話。あんまり興味なかったんだけど、聴いているうちに極めて重大な問題だと気がついた。</p>
<p>氏の話しによると、このままIT、ユビキタス、ロボットが使われるようになるとエネルギー使用量が増大し、環境を悪化させる可能性があるという。統計によると近年、情報部門のエネルギー使用量が増大しているそうだ。情報部門が何を指しているか話してなかったが、たぶんコンピュータだろう。サーバーなんてずっと電源ONだし、コンピュータ使う人が増えれば電力たくさん使うはず。省エネとはかけ離れている。</p>
<p>また、人口増加や発展途上国の問題を考えるとさらに深刻になる。人口増加は抑制できず、発展途上国の人びとが先進国なみの生活を亨受する権利は当然奪えない。できることは「エネルギー使用量を抑える技術」「環境を悪化させないクリーンなエネルギーを作りだす技術」を開発することだと話し、そのための研究を紹介していた。</p>
<p>最後の講演は、東京福祉局の幸田昭一氏。都の福祉担当としてロボティクスに何を求めるかを話していた。</p>
<p>ロボットの応用例として、障害者を対象とした研究は多々あるように感じている。障害者ってそんなにたくさんいるのか?市場の規模としてはどれくらいなのかって疑問があった。</p>
<p>幸田氏の話しでは、東京都の人口1200万人のうち、身体障害者は38万人で3%だという。これを多いとみるか少いとみるかは人によりけりだが、企業は少いと見ているようだ。市場の規模が小さすぎるため障害者向けの製品開発に企業が動かないらしい。少数の「切実なニーズ」があることを理解してほしいと訴えていた。また、Dario氏と同様、ロボティクス研究ではユーザのニーズをよく聞いてほしいと話していた。</p>
<p>全体的に「ロボットを何に使うのか?」が重要な問題点であると感じた。ここらへんは技術うんぬんの話しじゃないので、広く一般からアイデアを募集するなどした方がいいと思った。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: R.Pfeifer氏が早稲田に!
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 02/11/2004 00:06:56 PM
CATEGORY: 脳科学
CATEGORY: ロボティクス
-----
BODY:
<div class="section">
<p>「神経の発生と可塑性&#8212;行動発現の基盤を探る&#8212;」というシンポジウムが早稲田で開かれる。なんと、あの『知の創成』の著者R.Pfeifer氏や跳ね起きるロボット作った國吉氏の講演があるではないか!特に知の創成は<a href="http://d.hatena.ne.jp/aidiary/20021113">id:aidiary:20021113</a>あたりに読んで内容に感銘を受けた。絶対、行きだ。</p>
<p>「<strong>セッションはすべて英語で行われます。</strong>」</p>
<p>・・・・・・行ってもわかんないかも。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 人の経験とエージェントの経験の融合
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 02/20/2004 00:09:19 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>強化学習は知識なし学習(そうじゃないという人もいるが)。学習過程で人の手助けは借りず、環境との相互作用のみから試行錯誤をとおして学習していく。しかし、その代償として学習速度を犠牲にしなければならない。学習が遅いことは大きな問題点としてあげられている。</p>
<p>それなら<strong>人の手助けを与えて学習を効率的に行なえるようにしよう</strong>という考えは当然のごとく起きる。<a href="http://d.hatena.ne.jp/aidiary/20030405">id:aidiary:20030405</a>にも書いたが教師あり学習と強化学習の中間部分にあたる領域。強化学習に教師あり学習の要素を取り入れた研究はいろいろ行なわれている。</p>
<p>今日は、倒立振子制御問題を例にして「<em>人による教示</em>」の効果を調べてみた。つまり、最初は台車を人が制御してエージェントにお手本を見せてやる。エージェントは人の経験(状態、行動、次状態、報酬)を観察して、それを自分の経験として取り込み学習する。その後、人が「はい、後は自分でやってみな」ってエージェントにやらせてみると、エージェントは結構うまくできるようになっているってのを想定している。下図みたいな感じ。</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20050815120825" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20050815/20050815120825.jpg" alt="f:id:aidiary:20050815120825j:image" title="f:id:aidiary:20050815120825j:image" class="hatena-fotolife"></a></p>
<p>普通の強化学習と同様エージェントは環境と相互作用し、状態、行動、報酬を得て学習する。人も環境と相互作用し、状態、行動、報酬を得て学習する(棒を長時間立てるのって「こつ」つかむまで結構難しかった)。<strong>人の経験はエージェントの経験にもなる</strong>。最初は人の方が圧倒的にうまいので「生まれたばかりの」エージェントにはよいお手本になる。最終的にエージェントは人よりずっとうまくなるので、エージェントが人に教示するっていう風になってしまうけれど・・・倒立振子をうまく立てられたって掃除時間くらいしか役に立たない、<strong>エージェントにはいずれもっとすごいことを教えてほしい</strong>。</p>
<p>プログラムと結果は明日書く。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 倒立振子制御問題+人による教示
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 02/21/2004 00:11:34 PM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>のアプレットを作ってみた。強化学習で人とエージェントの相互作用を入れると面白い予感。「教える」と「学ぶ」ってのは今回やったようなイメージが自然な気がする。そのうち、できなかったテトリスも教示を使ってうまくやらせてみたいな。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: コンピュータの名著・古典100冊
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 02/27/2004 00:18:49 PM
CATEGORY: 日記
-----
BODY:
<div class="section">
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844318284/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51F9AQ1VP2L._SL160_.jpg" class="hatena-asin-detail-image" alt="コンピュータの名著・古典100冊" title="コンピュータの名著・古典100冊"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844318284/hatena-hamazou-22/">コンピュータの名著・古典100冊</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%C0%D0%C5%C4%C0%B2%B5%D7" class="keyword">石田晴久</a>,<a href="http://d.hatena.ne.jp/keyword/%C0%C4%BB%B3%B4%B4%CD%BA" class="keyword">青山幹雄</a>,<a href="http://d.hatena.ne.jp/keyword/%B0%C2%C3%A3%BD%DF" class="keyword">安達淳</a>,<a href="http://d.hatena.ne.jp/keyword/%B1%F6%C5%C4%BF%C2%C6%F3" class="keyword">塩田紳二</a>,<a href="http://d.hatena.ne.jp/keyword/%BB%B3%C5%C4%BF%AD%B0%EC%CF%BA" class="keyword">山田伸一郎</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%A4%A5%F3%A5%D7%A5%EC%A5%B9" class="keyword">インプレス</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2003/10/29</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 2人 <span class="hatena-asin-detail-label">クリック</span>: 12回</li>
<li><a href="http://d.hatena.ne.jp/asin/4844318284" target="_blank">この商品を含むブログ (41件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>って本見つけたので買ってみた。・・・なるほどね、推薦図書はこの中から撰んでたのか。書評を書いている西和彦さんは<strong>コンピュータやインターネットを学ぶならこの100冊全部読むといい</strong>って言ってる。西さんが言うような月10冊のペースは「明らかに」無理(計算してみた)だけど、月1冊のペースで順に読んでみたいな。この中で読んだことがあったのは結構あった。</p>
<p>---</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4756142818/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51FNWXD9EGL._SL160_.jpg" class="hatena-asin-detail-image" alt="フリーソフトウェアと自由な社会 ―Richard M. Stallmanエッセイ集" title="フリーソフトウェアと自由な社会 ―Richard M. Stallmanエッセイ集"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4756142818/hatena-hamazou-22/">フリーソフトウェアと自由な社会 ―Richard M. Stallmanエッセイ集</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%EA%A5%C1%A5%E3%A1%BC%A5%C9%A1%A6M%A1%A6%A5%B9%A5%C8%A1%BC%A5%EB%A5%DE%A5%F3" class="keyword">リチャード・M・ストールマン</a>,<a href="http://d.hatena.ne.jp/keyword/Richard%20M%2E%20Stallman" class="keyword">Richard M. Stallman</a>,<a href="http://d.hatena.ne.jp/keyword/%C4%B9%C8%F8%B9%E2%B9%B0" class="keyword">長尾高弘</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%A2%A5%B9%A5%AD%A1%BC" class="keyword">アスキー</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2003/05/06</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 2人 <span class="hatena-asin-detail-label">クリック</span>: 11回</li>
<li><a href="http://d.hatena.ne.jp/asin/4756142818" target="_blank">この商品を含むブログ (31件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>さっき読み終わった。</p>
<p>---</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4796880011/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51WZM2W6ZBL._SL160_.jpg" class="hatena-asin-detail-image" alt="それがぼくには楽しかったから (小プロ・ブックス)" title="それがぼくには楽しかったから (小プロ・ブックス)"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4796880011/hatena-hamazou-22/">それがぼくには楽しかったから (小プロ・ブックス)</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%EA%A1%BC%A5%CA%A5%B9%A5%C8%A1%BC%A5%D0%A5%EB%A5%BA" class="keyword">リーナストーバルズ</a>,<a href="http://d.hatena.ne.jp/keyword/%A5%C7%A5%D3%A5%C3%A5%C9%A5%C0%A5%A4%A5%E4%A5%E2%A5%F3%A5%C9" class="keyword">デビッドダイヤモンド</a>,<a href="http://d.hatena.ne.jp/keyword/%C9%F7%B8%AB%BD%E1" class="keyword">風見潤</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%BE%AE%B3%D8%B4%DB%A5%D7%A5%ED%A5%C0%A5%AF%A5%B7%A5%E7%A5%F3" class="keyword">小学館プロダクション</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2001/05/10</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 8人 <span class="hatena-asin-detail-label">クリック</span>: 101回</li>
<li><a href="http://d.hatena.ne.jp/asin/4796880011" target="_blank">この商品を含むブログ (124件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>学部4年生くらい、GNU/Linux(あぶない忘れるところだった)本格的にさわり始めたとき読んだ。</p>
<p>---</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/487593100X/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51WWcGKFyeL._SL160_.jpg" class="hatena-asin-detail-image" alt="ハッカーズ" title="ハッカーズ"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/487593100X/hatena-hamazou-22/">ハッカーズ</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%C6%A5%A3%A1%BC%A5%D6%A5%F3%A1%A6%A5%EC%A5%D3%A1%BC" class="keyword">スティーブン・レビー</a>,<a href="http://d.hatena.ne.jp/keyword/%BE%BE%C5%C4%BF%AE%BB%D2" class="keyword">松田信子</a>,<a href="http://d.hatena.ne.jp/keyword/%B8%C5%B6%B6%CB%A7%B7%C3" class="keyword">古橋芳恵</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B9%A9%B3%D8%BC%D2" class="keyword">工学社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1987/02</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 6人 <span class="hatena-asin-detail-label">クリック</span>: 151回</li>
<li><a href="http://d.hatena.ne.jp/asin/487593100X" target="_blank">この商品を含むブログ (43件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>学部1年のとき読んだ。MIT AIラボのハッカーたちは今でも<strong>あこがれ</strong>。Stallmanさんもそこ出身みたい。もちろんここで言うハッカーは犯罪者の意味じゃない。犯罪者はクラッカーって言う。</p>
<p>---</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4794204302/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51YaQfD7pPL._SL160_.jpg" class="hatena-asin-detail-image" alt="カッコウはコンピュータに卵を産む〈上〉" title="カッコウはコンピュータに卵を産む〈上〉"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4794204302/hatena-hamazou-22/">カッコウはコンピュータに卵を産む〈上〉</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%AF%A5%EA%A5%D5%A5%A9%A1%BC%A5%C9%A1%A6%A5%B9%A5%C8%A1%BC%A5%EB" class="keyword">クリフォード・ストール</a>,<a href="http://d.hatena.ne.jp/keyword/%C3%D3%B1%FB%E6%D6" class="keyword">池央耿</a>,<a href="http://d.hatena.ne.jp/keyword/Clifford%20Stoll" class="keyword">Clifford Stoll</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%C1%F0%BB%D7%BC%D2" class="keyword">草思社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1991/09</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 16人 <span class="hatena-asin-detail-label">クリック</span>: 168回</li>
<li><a href="http://d.hatena.ne.jp/asin/4794204302" target="_blank">この商品を含むブログ (59件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>Stollさんの三部作、『インターネットはからっぽの洞窟』、『<a href="http://d.hatena.ne.jp/aidiary/20020730#1114956872">コンピュータが子供たちをダメにする</a>』(2002/07/30)もおもしろかった。</p>
<p>---</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4826900252/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51FFJKK1JTL._SL160_.jpg" class="hatena-asin-detail-image" alt="ゲーデル,エッシャー,バッハ―あるいは不思議の環" title="ゲーデル,エッシャー,バッハ―あるいは不思議の環"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4826900252/hatena-hamazou-22/">ゲーデル,エッシャー,バッハ―あるいは不思議の環</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A4%CF%A4%E4%A4%B7%A4%CF%A4%B8%A4%E1" class="keyword">はやしはじめ</a>,<a href="http://d.hatena.ne.jp/keyword/%CC%F8%C0%A5%BE%B0%B5%AA" class="keyword">柳瀬尚紀</a>,<a href="http://d.hatena.ne.jp/keyword/%A5%C0%A5%B0%A5%E9%A5%B9%A1%A6R%A1%A6%A5%DB%A5%D5%A5%B9%A5%BF%A5%C3%A5%BF%A1%BC" class="keyword">ダグラス・R・ホフスタッター</a>,<a href="http://d.hatena.ne.jp/keyword/%CC%EE%BA%EA%BE%BC%B9%B0" class="keyword">野崎昭弘</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%C7%F2%CD%C8%BC%D2" class="keyword">白揚社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1985/05</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 2人 <span class="hatena-asin-detail-label">クリック</span>: 46回</li>
<li><a href="http://d.hatena.ne.jp/asin/4826900252" target="_blank">この商品を含むブログ (104件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>意味深すぎて、完全に理解できなかった。<a href="http://d.hatena.ne.jp/aidiary/20020910#1111392240">コンピュータはしろといわれたことしかできない</a>(2002/09/10)</p>
<p>---</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4782800541/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/41TlYVq1HJL._SL160_.jpg" class="hatena-asin-detail-image" alt="心の社会" title="心の社会"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4782800541/hatena-hamazou-22/">心の社会</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/Marvin%20Minsky" class="keyword">Marvin Minsky</a>,<a href="http://d.hatena.ne.jp/keyword/%A5%DE%A1%BC%A5%F4%A5%A3%A5%F3%A1%A6%A5%DF%A5%F3%A5%B9%A5%AD%A1%BC" class="keyword">マーヴィン・ミンスキー</a>,<a href="http://d.hatena.ne.jp/keyword/%B0%C2%C0%BE%CD%B4%B0%EC%CF%BA" class="keyword">安西祐一郎</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%BB%BA%B6%C8%BF%DE%BD%F1" class="keyword">産業図書</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1990/07</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 4人 <span class="hatena-asin-detail-label">クリック</span>: 32回</li>
<li><a href="http://d.hatena.ne.jp/asin/4782800541" target="_blank">この商品を含むブログ (41件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>2か月くらい前に購入した、高かったけど・・・書評を書いている石田晴久さんによると「この262節の中には<strong>修士論文や博士論文のタネがごろごろしている</strong>ような感じがする」とのこと。本当かな?<a href="http://d.hatena.ne.jp/aidiary/20031222#1123983484">心の社会(Society of Mind)</a>(2003/12/22)。</p>
<p>---</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/478280069X/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51lGmLiVTrL._SL160_.jpg" class="hatena-asin-detail-image" alt="コンピュータには何ができないか―哲学的人工知能批判" title="コンピュータには何ができないか―哲学的人工知能批判"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/478280069X/hatena-hamazou-22/">コンピュータには何ができないか―哲学的人工知能批判</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%D2%A5%E5%A1%BC%A5%D0%A1%BC%A5%C8%A1%A6L%2E%A5%C9%A5%EC%A5%A4%A5%D5%A5%A1%A5%B9" class="keyword">ヒューバート・L.ドレイファス</a>,<a href="http://d.hatena.ne.jp/keyword/Hubert%20L%2E%20Dreyfus" class="keyword">Hubert L. Dreyfus</a>,<a href="http://d.hatena.ne.jp/keyword/%B9%F5%BA%EA%C0%AF%C3%CB" class="keyword">黒崎政男</a>,<a href="http://d.hatena.ne.jp/keyword/%C2%BC%BC%E3%BD%A4" class="keyword">村若修</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%BB%BA%B6%C8%BF%DE%BD%F1" class="keyword">産業図書</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1992/04</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 4回</li>
<li><a href="http://d.hatena.ne.jp/asin/478280069X" target="_blank">この商品を含むブログ (11件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>人工知能は錬金術って言っている本。<a href="http://d.hatena.ne.jp/aidiary/20020610#1113218588">錬金術と人工知能</a>(2002/06/10)。<strong>人工知能の哲学</strong>に興味を持ったきっかけとなった。</p>
<p>---</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4794209924/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/5144A5R99AL._SL160_.jpg" class="hatena-asin-detail-image" alt="思考する機械コンピュータ (サイエンス・マスターズ)" title="思考する機械コンピュータ (サイエンス・マスターズ)"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4794209924/hatena-hamazou-22/">思考する機械コンピュータ (サイエンス・マスターズ)</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%C0%A5%CB%A5%A8%A5%EB%A5%D2%A5%EA%A5%B9" class="keyword">ダニエルヒリス</a>,<a href="http://d.hatena.ne.jp/keyword/W%2EDaniel%20Hillis" class="keyword">W.Daniel Hillis</a>,<a href="http://d.hatena.ne.jp/keyword/%C1%D2%B9%FC%BE%B4" class="keyword">倉骨彰</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%C1%F0%BB%D7%BC%D2" class="keyword">草思社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2000/10</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 3人 <span class="hatena-asin-detail-label">クリック</span>: 27回</li>
<li><a href="http://d.hatena.ne.jp/asin/4794209924" target="_blank">この商品を含むブログ (27件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>人工知能調べてたとき読んだけど、内容はあんまり覚えてないな。名著だったんだ。</p>
<p>---</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4756101585/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/21C-lkS2sFL._SL160_.jpg" class="hatena-asin-detail-image" alt="やさしいコンピュータ科学 (Ascii books)" title="やさしいコンピュータ科学 (Ascii books)"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4756101585/hatena-hamazou-22/">やさしいコンピュータ科学 (Ascii books)</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%A2%A5%E9%A5%F3%A1%A6W%2E%A5%D3%A5%A2%A5%DE%A5%F3" class="keyword">アラン・W.ビアマン</a>,<a href="http://d.hatena.ne.jp/keyword/Alan%20W%2E%20Biermann" class="keyword">Alan W. Biermann</a>,<a href="http://d.hatena.ne.jp/keyword/%CF%C2%C5%C4%B1%D1%B0%EC" class="keyword">和田英一</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/ASCII" class="keyword">ASCII</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1993/06</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 1人 <span class="hatena-asin-detail-label">クリック</span>: 34回</li>
<li><a href="http://d.hatena.ne.jp/asin/4756101585" target="_blank">この商品を含むブログ (27件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>ずっと昔、学部1年のときか?</p>
<p>---</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4000053906/hatena-hamazou-22/"><img src="http://d.hatena.ne.jp/images/hatena_aws.gif" class="hatena-asin-detail-image" alt="サイバネティックス 第2版―動物と機械における制御と通信" title="サイバネティックス 第2版―動物と機械における制御と通信"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4000053906/hatena-hamazou-22/">サイバネティックス 第2版―動物と機械における制御と通信</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%CE%A1%BC%A5%D0%A1%BC%A5%C8%A1%A6%A5%A6%A5%A3%A1%BC%A5%CA%A1%BC" class="keyword">ノーバート・ウィーナー</a>,<a href="http://d.hatena.ne.jp/keyword/%C3%D3%B8%B6%BB%DF%D8%F9%C9%D7" class="keyword">池原止戈夫</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B4%E4%C7%C8%BD%F1%C5%B9" class="keyword">岩波書店</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1962/10</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 20回</li>
<li><a href="http://d.hatena.ne.jp/asin/4000053906" target="_blank">この商品を含むブログ (21件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>学部3年生のときか? 難しくて途中であきらめたような。</p>
<p>---</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/478285126X/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/41KYGK8QC2L._SL160_.jpg" class="hatena-asin-detail-image" alt="コンピュータと認知を理解する―人工知能の限界と新しい設計理念" title="コンピュータと認知を理解する―人工知能の限界と新しい設計理念"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/478285126X/hatena-hamazou-22/">コンピュータと認知を理解する―人工知能の限界と新しい設計理念</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%C6%A5%EA%A1%BC%A5%A6%A5%A3%A5%CE%A5%B0%A5%E9%A1%BC%A5%C9" class="keyword">テリーウィノグラード</a>,<a href="http://d.hatena.ne.jp/keyword/%A5%D5%A5%A7%A5%EB%A5%CA%A5%F3%A5%C9%A5%D5%A5%ED%A1%BC%A5%EC%A5%B9" class="keyword">フェルナンドフローレス</a>,<a href="http://d.hatena.ne.jp/keyword/%CA%BF%B2%EC%BE%F9" class="keyword">平賀譲</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%BB%BA%B6%C8%BF%DE%BD%F1" class="keyword">産業図書</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1989/07</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 5人 <span class="hatena-asin-detail-label">クリック</span>: 6回</li>
<li><a href="http://d.hatena.ne.jp/asin/478285126X" target="_blank">この商品を含むブログ (8件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>大学の図書館で破棄されてたのでもらって読んだ。名著なのに破棄するなんて・・・そんなに汚れてないし。</p>
<p>---</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4000103563/hatena-hamazou-22/"><img src="http://d.hatena.ne.jp/images/hatena_aws.gif" class="hatena-asin-detail-image" alt="認識と学習 (岩波講座 ソフトウェア科学)" title="認識と学習 (岩波講座 ソフトウェア科学)"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4000103563/hatena-hamazou-22/">認識と学習 (岩波講座 ソフトウェア科学)</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%B0%C2%C0%BE%CD%B4%B0%EC%CF%BA" class="keyword">安西祐一郎</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B4%E4%C7%C8%BD%F1%C5%B9" class="keyword">岩波書店</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1989/02</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li> <span class="hatena-asin-detail-label">クリック</span>: 1回</li>
<li><a href="http://d.hatena.ne.jp/asin/4000103563" target="_blank">この商品を含むブログ (6件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>この本には誤差逆伝搬法のソースコードがついてた。<a href="http://d.hatena.ne.jp/aidiary/20020626#1114954943">3層パーセプトロン</a>(2002/06/26)。</p>
<p>---</p>
<p></p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4320028783/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51AFYGD6G1L._SL160_.jpg" class="hatena-asin-detail-image" alt="エージェントアプローチ 人工知能" title="エージェントアプローチ 人工知能"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4320028783/hatena-hamazou-22/">エージェントアプローチ 人工知能</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%C1%A5%E5%A5%EF%A1%BC%A5%C8%A5%E9%A5%C3%A5%BB%A5%EB" class="keyword">スチュワートラッセル</a>,<a href="http://d.hatena.ne.jp/keyword/%A5%D4%A1%BC%A5%BF%A1%BC%A5%CE%A1%BC%A5%F4%A5%A3%A5%B0" class="keyword">ピーターノーヴィグ</a>,<a href="http://d.hatena.ne.jp/keyword/Stuart%20Russell" class="keyword">Stuart Russell</a>,<a href="http://d.hatena.ne.jp/keyword/Peter%20Norvig" class="keyword">Peter Norvig</a>,<a href="http://d.hatena.ne.jp/keyword/%B8%C5%C0%EE%B9%AF%B0%EC" class="keyword">古川康一</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B6%A6%CE%A9%BD%D0%C8%C7" class="keyword">共立出版</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1997/12</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 1人 <span class="hatena-asin-detail-label">クリック</span>: 15回</li>
<li><a href="http://d.hatena.ne.jp/asin/4320028783" target="_blank">この商品を含むブログ (20件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p> </p>
<p>この本は学部3年の人工知能論で推薦されてたので読んだ。人工知能の最良の教科書だと思う。購入したいが15000円はちょっと高い。<a href="http://d.hatena.ne.jp/aidiary/20020415#1112149475">エージェントアプローチ人工知能</a>(2002/04/15)。</p>
<p>---</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/482228056X/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51R2GE42Z7L._SL160_.jpg" class="hatena-asin-detail-image" alt="コンピュータの構成と設計―ハードウエアとソフトウエアのインタフェース〈上〉" title="コンピュータの構成と設計―ハードウエアとソフトウエアのインタフェース〈上〉"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/482228056X/hatena-hamazou-22/">コンピュータの構成と設計―ハードウエアとソフトウエアのインタフェース〈上〉</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%B8%A5%E7%A5%F3%A1%A6L%2E%A5%D8%A5%CD%A5%B7%A1%BC" class="keyword">ジョン・L.ヘネシー</a>,<a href="http://d.hatena.ne.jp/keyword/%A5%C7%A5%A4%A5%D3%A5%C3%A5%C9%A1%A6A%2E%A5%D1%A5%BF%A1%BC%A5%BD%A5%F3" class="keyword">デイビッド・A.パターソン</a>,<a href="http://d.hatena.ne.jp/keyword/John%20L%2E%20Hennessy" class="keyword">John L. Hennessy</a>,<a href="http://d.hatena.ne.jp/keyword/David%20A%2E%20Patterson" class="keyword">David A. Patterson</a>,<a href="http://d.hatena.ne.jp/keyword/%C0%AE%C5%C4%B8%F7%BE%B4" class="keyword">成田光彰</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%C6%FC%B7%D0BP%BC%D2" class="keyword">日経BP社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1999/05</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 4人 <span class="hatena-asin-detail-label">クリック</span>: 31回</li>
<li><a href="http://d.hatena.ne.jp/asin/482228056X" target="_blank">この商品を含むブログ (42件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4822280578/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51VH1EMJB7L._SL160_.jpg" class="hatena-asin-detail-image" alt="コンピュータの構成と設計―ハードウエアとソフトウエアのインタフェース〈下〉" title="コンピュータの構成と設計―ハードウエアとソフトウエアのインタフェース〈下〉"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4822280578/hatena-hamazou-22/">コンピュータの構成と設計―ハードウエアとソフトウエアのインタフェース〈下〉</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%B8%A5%E7%A5%F3%A1%A6L%2E%A5%D8%A5%CD%A5%B7%A1%BC" class="keyword">ジョン・L.ヘネシー</a>,<a href="http://d.hatena.ne.jp/keyword/%A5%C7%A5%A4%A5%D3%A5%C3%A5%C9%A1%A6A%2E%A5%D1%A5%BF%A1%BC%A5%BD%A5%F3" class="keyword">デイビッド・A.パターソン</a>,<a href="http://d.hatena.ne.jp/keyword/John%20L%2E%20Hennessy" class="keyword">John L. Hennessy</a>,<a href="http://d.hatena.ne.jp/keyword/David%20A%2E%20Patterson" class="keyword">David A. Patterson</a>,<a href="http://d.hatena.ne.jp/keyword/%C0%AE%C5%C4%B8%F7%BE%B4" class="keyword">成田光彰</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%C6%FC%B7%D0BP%BC%D2" class="keyword">日経BP社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1999/05</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 2人 <span class="hatena-asin-detail-label">クリック</span>: 8回</li>
<li><a href="http://d.hatena.ne.jp/asin/4822280578" target="_blank">この商品を含むブログ (28件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>学部3年のとき上巻だけ読んだ。</p>
<p>---</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/41W69WGATNL._SL160_.jpg" class="hatena-asin-detail-image" alt="プログラミング言語C 第2版 ANSI規格準拠" title="プログラミング言語C 第2版 ANSI規格準拠"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/hatena-hamazou-22/">プログラミング言語C 第2版 ANSI規格準拠</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/B%2EW%2E%A5%AB%A1%BC%A5%CB%A5%CF%A5%F3" class="keyword">B.W.カーニハン</a>,<a href="http://d.hatena.ne.jp/keyword/D%2EM%2E%A5%EA%A5%C3%A5%C1%A1%BC" class="keyword">D.M.リッチー</a>,<a href="http://d.hatena.ne.jp/keyword/%C0%D0%C5%C4%C0%B2%B5%D7" class="keyword">石田晴久</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B6%A6%CE%A9%BD%D0%C8%C7" class="keyword">共立出版</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1989/06/15</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 15人 <span class="hatena-asin-detail-label">クリック</span>: 162回</li>
<li><a href="http://d.hatena.ne.jp/asin/4320026926" target="_blank">この商品を含むブログ (180件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>何回も読んだ。</p>
<p>---</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873110963/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51EK7E5K5FL._SL160_.jpg" class="hatena-asin-detail-image" alt="プログラミングPerl〈VOLUME1〉" title="プログラミングPerl〈VOLUME1〉"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873110963/hatena-hamazou-22/">プログラミングPerl〈VOLUME1〉</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%E9%A5%EA%A1%BC%A5%A6%A5%A9%A1%BC%A5%EB" class="keyword">ラリーウォール</a>,<a href="http://d.hatena.ne.jp/keyword/%A5%B8%A5%E7%A5%F3%A5%AA%A1%BC%A5%EF%A5%F3%A5%C8" class="keyword">ジョンオーワント</a>,<a href="http://d.hatena.ne.jp/keyword/%A5%C8%A5%E0%A5%AF%A5%EA%A5%B9%A5%C1%A5%E3%A5%F3%A5%BB%A5%F3" class="keyword">トムクリスチャンセン</a>,<a href="http://d.hatena.ne.jp/keyword/Larry%20Wall" class="keyword">Larry Wall</a>,<a href="http://d.hatena.ne.jp/keyword/Jon%20Orwant" class="keyword">Jon Orwant</a>,<a href="http://d.hatena.ne.jp/keyword/Tom%20Christiansen" class="keyword">Tom Christiansen</a>,<a href="http://d.hatena.ne.jp/keyword/%B6%E1%C6%A3%B2%C5%C0%E3" class="keyword">近藤嘉雪</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%AA%A5%E9%A5%A4%A5%EA%A1%BC%A1%A6%A5%B8%A5%E3%A5%D1%A5%F3" class="keyword">オライリー・ジャパン</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2002/09</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 5人 <span class="hatena-asin-detail-label">クリック</span>: 76回</li>
<li><a href="http://d.hatena.ne.jp/asin/4873110963" target="_blank">この商品を含むブログ (124件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>最近、GNU/Linuxをメインに使うようになってついでに(?)Perl勉強し直しはじめた。今はこれラクダ本を読んでる。スクリプト言語はマスターしておくと「かなり」使えそうだ。それ以上にPerlの設計理念がすばらしい、今一番マスターしたい言語。</p>
<p>---</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4756136001/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/5176ENm7v-L._SL160_.jpg" class="hatena-asin-detail-image" alt="プログラミングWindows第5版〈上〉Win32 APIを扱う開発者のための決定版! (Microsoft Programming Series)" title="プログラミングWindows第5版〈上〉Win32 APIを扱う開発者のための決定版! (Microsoft Programming Series)"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4756136001/hatena-hamazou-22/">プログラミングWindows第5版〈上〉Win32 APIを扱う開発者のための決定版! (Microsoft Programming Series)</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%C1%A5%E3%A1%BC%A5%EB%A5%BA%A5%DA%A5%BE%A5%EB%A5%C9" class="keyword">チャールズペゾルド</a>,<a href="http://d.hatena.ne.jp/keyword/Charles%20Petzold" class="keyword">Charles Petzold</a>,<a href="http://d.hatena.ne.jp/keyword/%C4%B9%C8%F8%B9%E2%B9%B0" class="keyword">長尾高弘</a>,<a href="http://d.hatena.ne.jp/keyword/%A5%ED%A5%F3%A5%B0%A5%C6%A1%BC%A5%EB" class="keyword">ロングテール</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%A2%A5%B9%A5%AD%A1%BC" class="keyword">アスキー</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2000/10</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 2人 <span class="hatena-asin-detail-label">クリック</span>: 26回</li>
<li><a href="http://d.hatena.ne.jp/asin/4756136001" target="_blank">この商品を含むブログ (21件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>WindowsAPI勉強してたとき上巻だけ読んだ。</p>
<p>---</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4797327030/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51KjORDEySL._SL160_.jpg" class="hatena-asin-detail-image" alt="増補改訂版Java言語で学ぶデザインパターン入門" title="増補改訂版Java言語で学ぶデザインパターン入門"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4797327030/hatena-hamazou-22/">増補改訂版Java言語で学ぶデザインパターン入門</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%B7%EB%BE%EB%B9%C0" class="keyword">結城浩</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%BD%A5%D5%A5%C8%A5%D0%A5%F3%A5%AF%A5%AF%A5%EA%A5%A8%A5%A4%A5%C6%A5%A3%A5%D6" class="keyword">ソフトバンククリエイティブ</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2004/06/19</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 19人 <span class="hatena-asin-detail-label">クリック</span>: 171回</li>
<li><a href="http://d.hatena.ne.jp/asin/4797327030" target="_blank">この商品を含むブログ (334件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>結城さんの本はわかりやすくていい。Javaのプログラミングレッスンもすごいよかったし。さすが教科書に撰ばれるだけのことはある。<a href="http://d.hatena.ne.jp/aidiary/20030629#1123315042">デザインパターン</a>(2003/06/29)。読んだだけで身についているかは疑問だけど。ん、やっぱり身についてないかも。</p>
<p>---</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4874084141/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/51ZXNYW1EDL._SL160_.jpg" class="hatena-asin-detail-image" alt="C言語による最新アルゴリズム事典 (ソフトウェアテクノロジー)" title="C言語による最新アルゴリズム事典 (ソフトウェアテクノロジー)"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4874084141/hatena-hamazou-22/">C言語による最新アルゴリズム事典 (ソフトウェアテクノロジー)</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%B1%FC%C2%BC%C0%B2%C9%A7" class="keyword">奥村晴彦</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B5%BB%BD%D1%C9%BE%CF%C0%BC%D2" class="keyword">技術評論社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 1991/03</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 11人 <span class="hatena-asin-detail-label">クリック</span>: 86回</li>
<li><a href="http://d.hatena.ne.jp/asin/4874084141" target="_blank">この商品を含むブログ (78件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>レポート書くときたいへんお世話になりました。お金に余裕があるとき購入しておきたいな。</p>
<p>---</p>
<p>全部で19冊か100冊にはまだほど遠い。ひとまず次読みたい侯補として</p>
<p>インターネットの起源、暗号化、詐術、誰のためのデザイン?、コンピュータの数学、自然言語処理、COMMON LISP、正規表現、スーパーエンジニアへの道、OSの基礎と応用、Webの創成、コンピューターネットワーク、コンピュータグラフィックス。</p>
<p>あたりが狙い目だな。就職したら読む時間少なくなっちゃうだろうから今のうちに。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: あしたのロボット
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 03/02/2004 10:42:16 PM
CATEGORY: SF
-----
BODY:
<div class="section">
<p>っていう瀬名秀明さんの小説を読んだ。</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4163213104/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/510DAATMRCL._SL160_.jpg" class="hatena-asin-detail-image" alt="あしたのロボット" title="あしたのロボット"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4163213104/hatena-hamazou-22/">あしたのロボット</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%C0%A5%CC%BE%BD%A8%CC%C0" class="keyword">瀬名秀明</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%CA%B8%E9%BA%BD%D5%BD%A9" class="keyword">文藝春秋</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2002/10</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><a href="http://d.hatena.ne.jp/asin/4163213104" target="_blank">この商品を含むブログ (29件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p><a href="http://d.hatena.ne.jp/aidiary/20030222">id:aidiary:20030222</a>にロボット21世紀って本を読んだが、その調査をもとにして小説を書いたらしい。人工知能やロボットを扱った短編5本が入っている。</p>
<p>この中で特によかったのが、「亜希への扉 こころの光陰」って短編。</p>
<p>以下完全ねたバレ。亜希って女の子が捨ててあるロボットを拾う。亜希はロボットをロビイと名付け、本当の(=人間の)友だちのように接していた。一方、ロボットの方も学習・成長するようにプログラムされていて(今のロボットよりずっと)人間らしくふるまえた。そんな亜希だが数年するうちに気づいてしまう。ロビイがただのプログラムだってことに。</p>
<blockquote>
<p>昔はあんなに楽しかったのに。ロビイがわたしのことわかってくれていると思ってた。人間みたいな心じゃなくても、ちゃんとロボットの心を持っていて、わたしが話していることがわかると思ってた。いまはもう同じ言葉しか返してくれない。同じ反応しか寄越してくれない。</p>
<p>(中略)</p>
<p>でもロビイを飽きることなんてできない! 友だちだったのに・・・!</p>
<p>p.310</p>
</blockquote>
<p>もうひとり、名前もない脇役の男性だけど、彼も同じような問題で悩む。以下のセリフには衝撃を受けた。</p>
<blockquote>
<p>AIBOもハルも買いました。ずっとひとり暮らしが続いていて、夜も遅かったですからね。帰ってきたらロボットが玄関で待っていて、ぼくの顔を見て喜んでくれる・・・。そんな光景を勝手に期待していたんです。だから失望が大きかった。あなたなら知っているでしょう。赤いボールが好きになるというけれど、見せながら頭のタッチセンサを何度か叩いてやれば、途端に見向きもしなくなる。見え透いていたんですよ、何もかも。それならいっそ、ぼくが見切る前に死んでほしいと思いました。こちらが飽きる前に動かなくなってほしい。どうせなら、ちゃんとこちらを泣かせるくらいの死に様を見せてほしい。だからぼくは死のプログラムを書いたんです。徐々に身体が弱って、記憶が衰えて、衰弱死するような、そんなプログラムをね。</p>
<p>(中略)</p>
<p>一度死んだら、また再起動しようという気になれないんですよ。<strong>これからのロボットには、死のプログラムが必須になります</strong>。賭けてもいい。死はぼくらを、永遠の友情という地獄から解放してくれるんです。</p>
<p>pp.315-316</p>
</blockquote>
<p>こういうの読むと、人とロボットのコミュニケーション技術(感情表現技術とか)ってのは、<strong>巧妙なトリックで人ををだます技術</strong>なのではないかとか考えちゃう。だまされ続ける人は幸せ、真実を知った人は失望する。パーソナルロボットとか癒しロボットとか買う大人はもの珍しさが優先でそんなことマジメに考えないと思うけど、亜希みたいな小学生くらいの子供だと感情移入してそういうことも十分ありそうだと思った。</p>
<p>ちなみに主人公の「亜希」は「飽き」とかける洒落かな。</p>
<p><a href="http://hotwired.goo.ne.jp/news/news/20010226205.html" target="_blank">ロボット犬は本物の犬に代われるか(上) </a></p>
<p><a href="http://hotwired.goo.ne.jp/news/news/culture/story/20010227206.html" target="_blank">ロボット犬は本物の犬に代われるか(下) </a></p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: Pongアプレット
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 03/03/2004 10:38:37 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>Pongっていうボールを跳ね返すゲームを強化学習するアプレットを書いた。これやっている途中に強化学習の問題点をが浮上してきた。</p>
<p>その問題点とは、<strong>何を状態、行動、報酬にすべきかを決めるのが難しいこと</strong>。この問題は強化学習に限らず、他のアルゴリズムでも似たような問題がある。例えば、遺伝的アルゴリズムで染色体へ符号化する明確な方針がないってのと同じ問題だと思う。</p>
<p>Pongを作るにあたって、最初、ボールの速度ベクトル角度ではなく、ボールの位置を状態にしてたのだがこれはうまくいかなかった。なんで位置だとだめで速度ベクトルの角度だとうまくいくのかがよく分からない。直感ではどっちもできそうな気がするけど・・・</p>
<p>論文を読んでてもいきなり「状態、行動、報酬をこう決めます」って出てくるだけで、どうしてそうしたのかがよくわからない。「<em>そうすればうまくいくから</em>」ってだけかもしれないけど。状態、行動、報酬を決めるために背後では「<strong>人間が</strong>」厖大な試行錯誤してるのかな。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 情報処理学会全国大会
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 03/09/2004 10:40:24 AM
CATEGORY: ロボティクス
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>に行ってみた。情報処理学会は学部4年生のとき会員だったけどもう脱会してしまった(人工知能学会は今でも入っているけど)。非会員でも(学生なら)無料で入れるなんて太っ腹だ。論文がダウンロードできないのはけちくさいけど。</p>
<p>2つ聴いた。1つ目はATR 萩田さんの「ネットワークロボットの将来展望」って講演。ネットワークロボットと聞いて情報検索で使うスパイダーのことかなって思ってたんだけど違った。単にネットワークにつながっているロボットって意味だった。ネットワークにつなげるなんて当たり前じゃない?と思うけど当たり前じゃないらしい。総務省でもそれ専用の研究会が開かれているとのお話だった(<a href="http://www.soumu.go.jp/joho_tsusin/policyreports/chousa/netrobot/index.html" target="_blank">ネットワーク・ロボット技術に関する調査研究会</a>、これか?)。ロボットをネットワークにつなげると様々な応用ができて産業規模もぐーんと伸びるとのこと。</p>
<p>あと、パートナーロボットの種類として、ヒューマノイド、ペットロボットの中間として「ぬいぐるみ(人形)」をあげてたのが印象に残った。ペットロボットとどう違うのって質問があったけど、ぬいぐるみはペットロボットとはやっぱ違う(なんかふさふさってイメージが強い)。ぬいぐるみ(人形)にネットワークを取り入れ、知能化して何かに使おうって話してたかな。子供のころ誰もが親しんでいるため受け入れやすいとのこと。何に使うか(使いたいか)が問題だけど・・・例として健康管理、日記システム、ライフログを挙げていたかな。未来のぬいぐるみは中に無線LANが入っているのかも。</p>
<p>2つ目は強化学習セッション。全国大会初めて聴きに行ったんだけど思っていたよりずっと小規模だった。部屋15人くらいしか入れないじゃん。発表内容は動的環境への対応、状態空間の自律的分割、マルチエージェント強化学習あたりだった。全部アルゴリズムの改良に関する話。ほとんどの発表で Profit Sharingを使っていた。海外の論文ではマイナーな気がするけど、日本ではよく使われている。前にやったサーベイでも日本と海外の違いがもっともよく現れているとこだった。東工大の先生方が研究していて(宮崎さんの合理性定理とか)、不完全知覚にも強いからなどの理由がありそう。Q学習ばっか使ってたけど、Profit Sharingも今度プログラム書いて試してみたい。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: エンターテイメントコンピューティング
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 03/10/2004 10:44:00 AM
CATEGORY: ゲームAI
-----
BODY:
<div class="section">
<p>に行ってみた。今日はエンターテイメントコンピューティングってセッションを聴きに行った。</p>
<p>基調講演は中津良平さんによる「エンターテイメント研究の方向」ってお話。人工知能学会誌2004年1月号に「エンターテイメントにおけるAI」って特集があった。その中の「エンタテイメントとAI」っていう中津さんの論文を予め読んでいったがそれと内容は一緒だった。</p>
<p>エンターテイメントってのは工学の応用領域としては有望だが遊びということで正面きって研究しにくかったという背景があったらしい。だが、なぜか近年になって注目を浴び始め日本でも海外でも研究が盛んになってきたようだ。2002年に国際会議(<a href="http://www.icec.id.tue.nl/" target="_blank">IECE: International Conference on Entertainment Computing</a>)もできている。</p>
<p>エンターテイメントっていうとテレビゲームみたいなのが真っ先に思い浮かぶけど、研究対象は、スポーツ、アート、演劇、ボードゲーム、エンターテインメントロボットなど広範囲にわたっているようだ。エンターテイメントコンピューティングってのは、こういう従来のエンターテイメントとIT技術を結びつけ、新しい形のエンターテイメントを発掘するという研究分野。従来の工学が物質的豊かさを目指していたのに対し、工学とエンターテイメントを融合させることによって精神的豊かさを目指したいと話していた。また、エンターテイメントってのは日本の情報産業の最先端(アニメやゲームなどのコンテンツ、ペットロボットなどを指していると思われる)でもあるので「日本発」の新産業にしたいとも話していた(かな?)</p>
<p>中津さん自身も<a href="http://nirvana.keihanna.ne.jp/" target="_blank">ニルバーナテクノロジー</a>というベンチャーを起こしてロボットの販売を行っているそうだ。ロボットに実用的な仕事(福祉や介護など)をさせるのはまだまだ難しい。なので、あまりあせらずエンターテイメントなどの分野で広く大衆に認知させてから徐々に普及していった方がいいと話していた。「介護ができますよ」って宣伝しても現実とのギャップが大きく「何だこの程度か」ってことで大衆を失望させ、ロボットブームが終焉してしまうことを危惧していた。前に<a href="http://d.hatena.ne.jp/aidiary/20020329#1112062084">Robodexに行ったとき</a>広瀬さんが「大衆に過度の期待を抱かせるのはまずい」って話していたがそれと同じ危惧を持っているようだ。人工知能の二の舞は避けなければ!</p>
<p>他にパネリストの方の講演もあった。e-Learningにエンターテイメントの要素を取り入れる。異文化理解をインタラクティブアートで実現する。ウェアラブルコンピューティングにファッション性を取り入れるなどの話だった。中で一番面白かったのがテレイグジスタンスを取り入れたぬいぐるみ。テレイグジスタンスってのは遠くにいるロボットを遠隔操作し、あたかも自分の分身のように操る技術のこと。医療なんかで利用されている。それをエンターテイメントに取り入れた研究例を紹介していた。熊のぬいぐるみを2個用意し、片一方を動かすともう一方も同じように動くっていうもの。他にコンピュータ内の熊をマウスで動かすとそれにあわせてロボットの熊も同じように動くっていうのもあった。実世界とバーチャル世界がつながると何か新鮮(本当にそう感じた!)で面白い。</p>
<p>なんか早稲田でも<a href="http://www.waseda.ac.jp/koho/news03/0209.html" target="_blank">インタラクティブ・エンターテイメント研究所</a>ってのができたらしい。先を越されたってくやしがってた。講義も新設されるようなのでできたら聴いてみたいな。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: Soar
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 03/13/2004 10:47:04 AM
CATEGORY: 人工知能
-----
BODY:
<div class="section">
<p><a href="http://d.hatena.ne.jp/aidiary/20031221#1111927104">コンピュータゲームはAIのキラーアプリ</a>(2003/12/21)でJohn Laird氏のHuman-level AI's Killer Application: Interactive Computer Gamesという人工知能とコンピュータゲームに関する論文を読んだ。そのLaird氏だがなんとSoarアーキテクチャ研究の第一人者でもあることがわかった。</p>
<p>Soarアーキテクチャは、人工知能の創設者の一人故Allen Newell氏を中心に「<strong>一般知能に対するアーキテクチャ</strong>」として提案された。人工知能と認知科学を不可分のものとして扱い、学習機能を備えた汎用問題解決器とされている。</p>
<p>Soarを初めて知ったのは前に人工知能のサーベイをしていたとき。<a href="http://www.csl.sony.co.jp/jsai/cdrom/articles/index.html#v9n4" target="_blank">人工知能学会誌1994年7月号</a>にSoarプロジェクトの特集が組まれている。そのときは、へぇという感じであまり興味がわかなかった。けど!一般知能に対するアーキテクチャ・・・何か知っておかないといけない気がする。</p>
<p>というわけで、<a href="http://www.eecs.umich.edu/~soar/main.html" target="_blank">Soarプロジェクト</a>のWebサイトからThe Soar 8 Tutorialってのダウンロードして読んでみた。チュートリアルということでゲームを例にとって説明している。読みやすく面白い。</p>
<p>Soarの主な機構はプロダクションシステム(if-thenルール)のようだ。典型的な記号処理システムって感じがする。しかし、状態・行動を扱い、問題空間を探索するってところは強化学習によく似ている。Soar自体はかなり古いみたいだが、今読んでいるチュートリアルが2003年に書かれた(Laird氏が著者)ものだし、まだ研究が続いているようだ。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: はじめての学会発表
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 03/15/2004 10:51:37 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p>に行ってきた。「強化学習並列化による学習の高速化」というテーマで初の学会発表だった。今回の研究会のテーマは「社会システムにおける知能」とのことだったが、「一般」で発表させてもらった。校内で発表するのとは違いかなり緊張した。</p>
<p>コメント、Q&Aのまとめ。</p>
<ul>
<li>強化学習で並列化するという研究はなされていない。Profit Sharingなどほかのアルゴリズムでもためしてみたらどうか。</li>
</ul>
<p>ありがたいコメント。今回やったのはQ-learningとQ(λ)の並列化のみ。Profit SharingやActor-Criticなどの異なるアルゴリズムでもやってみた方がいい。強化学習のすべてのアルゴリズムの基本は価値関数の更新なのでたぶんできると思う。</p>
<ul>
<li>Q:収束はどう判定したか?</li>
</ul>
<p>実際にプログラムを動かしてステップ数をファイルに書き出し、ファイルの中身を見て収束している点を探した。収束が判定しやすいように探査率εを0にした。</p>
<ul>
<li>それは最適解なのか?</li>
</ul>
<p>Q-learningは最適解が保証されることが数学的に証明されている。</p>
<p>今、思うとこの答えはまずかった。探査率εを0にしたらQ-learningの収束条件を満たしていない!最適解という保証はないじゃん・・・。それに収束をどう判定するかって問題はかなり前にディスカッションで出てきていた。もっと考えておくべきだった。この質問してくれた先生も強化学習関係の発表をしていた。やっぱ収束性の判定って気になるところなのかな。</p>
<ul>
<li>車の山登り問題の結果は迷路問題に比べて速度が低下している。この手法はタスク依存なのではないか?</li>
</ul>
<p>車の山登り問題に用いたアルゴリズムはQ(λ)。迷路問題で使ったアルゴリズムはQ-learning。Q(λ)はQ-learningより計算量が大きいため速度が低下してしまったのだと考えている。車の山登り問題にもQ-learningを使えば速度低下は起きないはず。</p>
<p>最初、車の山登り問題の方が速度低下しているのは行動価値関数に線形関数を使いパラメータ更新しているからか?と思っていた。しかし、よーくプログラムを見てみると車の山登り問題に使っていたのはQ(λ)(あれ、SARSA(λ)だったりして・・・)という迷路問題とは別のアルゴリズムだった!遅くなった理由はパラメータ更新のせいか、Q(λ)のせいか、要確認。</p>
<ul>
<li>山登り問題のパラメータ数はいくつか?</li>
</ul>
<p>3000くらい。</p>
<p>今、プログラム確認したら3000だった。ほっ。</p>
<p>「<strong>~という理由で強化学習は速くしても無意味だ</strong>」ってふうに研究の方向性を否定されなくてよかった。</p>
<p>その他の研究発表では社会システムのモデル化、マルチエージェントが主なものだった。これらの話はけっこう楽しめた。社会の仕組みをマルチエージェントでモデル化するという研究分野のようだ。人工社会、人工市場って分野の話らしい。そういえば、<a href="http://d.hatena.ne.jp/aidiary/20030116#1122784377">前に読んだ</a>『複雑系』って本にも新しい経済学ってことで紹介されていたな。囚人のジレンマとかゲーム理論とか少し勉強していたのである程度内容も理解できた。発表者の一人の和泉潔さんが『人工市場』っていう解説書を書いたそうなので読んでみようかな。「まえがき」読んだだけだがけっこう面白そう。</p>
<p>とてもいい経験だったけど、移動、宿泊にかかった8万円に相当するほどためになったかと言われるとどうだろ。<strong>8万円あったら本30冊買えるもん</strong>なぁ・・・予め発表される分野を勉強していけば、発表内容もよく理解できてさらに有益になったかもな。あと、最終日までいて発表聞いてたんだけど、だんだん人が少なくなってきて最後の日は半分くらいしか残ってなくて気になった。なんか不公平だな・・・</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 今後の予定
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 03/16/2004 10:55:24 AM
CATEGORY: 強化学習
-----
BODY:
<div class="section">
<p><a href="http://d.hatena.ne.jp/aidiary/20040315#1146534697">はじめての学会発表</a>(2004/3/15)の続き。</p>
<ul>
<li>非同期更新の考察。非同期ってよくないのかな・・・ちゃんと収束するかとかも調べる。</li>
<li>収束性の保証。収束保証の数学的証明は読んでもよくわからない。数学的に保証はできなくてもより多くのタスク、大規模かつ実用的な問題に適用して実験的に確かめるとかすればある程度ましになるかも。</li>
<li>強化学習を適用できる(シミュレーション上の)実用的なタスクを探す(自分で作る?)。<strong>速くするアルゴリズム考えても速く計算したい問題がないと意味がない</strong>。強化学習アルゴリズムを高速化するアルゴリズムの改良って研究はなされているけどなんで速くしたいんだろう?もし速く計算したい(しなければいけない)タスクがなかったら・・・<a href="http://d.hatena.ne.jp/aidiary/20020715#1114956598">研究のための研究</a>(2002/7/15)に陥ってしまいそう。</li>
<li>他の強化学習アルゴリズム(TD、Actor-Critic、Profit Sharing)に適用する。</li>
<li>ニューラルネット、遺伝的アルゴリズム、プロダクションシステムなど並列計算機への実装がなされている研究分野とその実装法もっとよく調べてみる。</li>
<li>分散メモリ型もう一回考えてみる。提案していた論文はタスクの規模が小さすぎるから失敗したのか?規模がもっともっと大きければうまくいくのかも。</li>
<li>正確なデータをとっておく。論文に載せたデータが不正確ってわけではないけど。平均とるにしても試行回数をもっと増やしたほうがいい。10回くらいで決めると運悪く結果が偏ってしまう場合があるし。100回くらい自動でやるには、シェルスクリプト勉強しないとな(Perlでもいいけど)。</li>
<li>車の山登り問題が遅いのはパラメータ更新、Q(λ)のどちらのせいか調べる。</li>
</ul>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: インテリジェント・ダイナミクス2004―脳・身体性・ロボット・知性の創発―
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 04/09/2004 07:00:57 PM
CATEGORY: ロボティクス
-----
BODY:
<div class="section">
<p>っていうソニー主催のシンポジウムに行ってきた。参加者はすごく多く会場満員だった。インテリジェント・ダイナミクス(知性力学)っていうのは造語。従来の記号処理人工知能の限界を超え、構成論的脳科学、身体性認知科学、認知発達ロボティクスなどを統合した新しい学問分野にしたいと話していた。強化学習がキー技術の1つとして強調されてた。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 可能な生命(life-as-it-could-be)
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 08/05/2004 09:54:50 PM
CATEGORY: 人工生命
-----
BODY:
<div class="section">
<p>人工生命(Artificial Life: AL)の定義は創始者のC. Langton<span class="footnote"><a href="/aidiary/#f1" name="fn1" title="C. G. Langton: Artificial Life, Artificial Life, pp.1-47, 1989">*1</a></span>によると</p>
<blockquote>
<p>人工生命とは、自然界の生物システムに特徴的であるような振舞いを示す人工システムに関する研究である。計算機やその他のメディアにおいて生命的な振舞いを合成・総合することを試みることによって、生物の分析・解析を専ら行っていた従来の典型的な生物学を補完する。人工生命は、「我々の知っている生命(life-as-we-know-it)」を「可能な生命(life-as-it-could-be)」という大きな絵の中に位置づけることによって理論生物学に貢献する。</p>
</blockquote>
<p>となっている。生命をどう定義するかってのが大問題で、実際に「我々の知っている生命」を研究している生物学者の間においてさえも一致した見解が得られていないらしい(成長・生殖・遺伝ってのがよく言われているかな?だけど<a href="http://d.hatena.ne.jp/aidiary/20020308#1111928168">生命の定義</a>(2002/03/08)にもまとめたように生命はさまざまな見方が可能なようだ) </p>
<p>そこで、Langtonは、地球上に生じた特別な例に限定せず、生命系の本質・論理形式を抽出しようと考えた。生命はソフトであってハードは関係ないと考えた。ハードがタンパク質で出来ていようがシリコンで出来ていようが生命の本質は変わらないってことを主張した。Langtonはコンピュータ上にも生命を作り出せると考えた。これらの地球上には(まだ)存在しないような生命形態を「<strong>可能な生命</strong>」と呼んでいる。</p>
<p>で何が言いたいかというと・・・疲れたので明日。</p>
</div>
<div class="footnote">
<p class="footnote"><a href="/aidiary/#fn1" name="f1">*1</a>:C. G. Langton: Artificial Life, Artificial Life, pp.1-47, 1989</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 可能な知能(intelligence-as-it-could-be)
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 08/06/2004 09:58:33 PM
CATEGORY: 人工生命
-----
BODY:
<div class="section">
<p><a href="http://d.hatena.ne.jp/aidiary/20040805#1111928090">可能な生命(life-as-it-could-be)</a>(2004/08/05)の続き。</p>
<p>人工生命の定義の「生命」の部分を「知能」に置き換えたらどうなるのか試してみよう。</p>
<blockquote>
<p>人工知能とは、自然界の人間に特徴的であるような振舞いを示す人工システムに関する研究である。計算機やその他のメディアにおいて知的な振舞いを合成・総合することを試みることによって、人間の分析・解析を専ら行っていた従来の典型的な心理学(認知科学)を補完する。人工知能は、「我々の知っている知能(intelligence-as-we-know-it)」を「可能な知能(intelligence-as-it-could-be)」という大きな絵の中に位置づけることによって心理学(認知科学)に貢献する。 </p>
</blockquote>
<p>面白いと思ったのは「<strong>我々の知っている知能</strong>」「<strong>可能な知能</strong>」という言葉が出てきたところ。「我々の知っている知能」は人間の知能(推論、自然言語、認識、学習など)だろう。じゃ、人間の知能以外の「可能な知能」というのはどういうものが考えられるか? 従来の人工知能(記号処理型)も人の知能とは根本的に異なるけれど「可能な知能」の一つの形態として認められるだろう。人の知能にこだわると記号処理型は失敗に見えるけど人にこだわらなければ人にない特徴を持った人とは異質の知能とも見られるんじゃないか? </p>
<p>現在は人間並みのAIを作るには身体性が必要であると考えられ、ロボットを用いたAIの研究に移行している。しかし!ヴァーチャル空間だけに存在できるソフトのみの「人間とは異質の知能」もまだまだ捨てがたいんじゃないか?何か面白いことのできる余地がまだ残ってないか?人間の知能にこだわらなければひょっとして・・・</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: Javaでゲーム作りますが何か?
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/18/2004 08:42:50 PM
CATEGORY: Javagame
-----
BODY:
<div class="section">
<p><span style="font-weight:bold;color:#FF0000;"><a href="http://javagame.skr.jp/" target="_blank">http://javagame.skr.jp/</a>からの移行が完了しました。リンク切れなどありましたらコメントください。</span></p>
<p>Javaを使ったゲームプログラミングについて書いてます。プログラムはJAR形式で公開しているので<span style="color:#FF0000;">ダブルクリックで実行</span>してください。<span style="color:#FF0000;">ソースファイルはJARファイルの中</span>に入っているので解凍してご覧下さい。基本的に全部ソースファイル入ってます。著作権を主張することはないので自由に使ってください。</p>
<p>リンク切れやリンク先がおかしいなどありましたらコメントもらえると助かります。もうかなり長い間Javaは使っていないため内容に関する質問に私からはお答えできないと思います。もっと人が多いサイトで聞いた方がよいかもしれません。</p>
<p>(注1)<span style="color:#FF0000;">ファイルをダウンロードするときは、ファイル名の後の<a href="http://f.hatena.ne.jp/aidiary/20090901213430" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20090901/20090901213430.gif" alt="f:id:aidiary:20090901213430g:image" title="f:id:aidiary:20090901213430g:image" class="hatena-fotolife"></a>マークをクリックしてください</span>。はてなの仕様のようでファイル名をクリックしてダウンロードしようとするとファイル名が変になります。</p>
<p>(注2)ブログはその他雑多な記事も多いため記事は連続しておらず<span style="color:#FF0000;">記事上方にあるナビゲーションはほとんど役に立ちません</span>。このページを起点としてリンク先へ、読んだら戻るといった使い方が楽だと思います。</p>
<p>(注3)リンク先がない項目は<del datetime="2010-06-06T00:04:31+09:00">面倒くさくなって</del>解説を書いておらず、ソースファイルの提供のみとなっています。ご了承ください。</p>
<h4>基礎</h4>
<ul>
<li><a href="http://d.hatena.ne.jp/aidiary/20040918/1251374554">アプリケーションの構成</a> - Javaゲームアプリケーションの書き方(2004/9/18)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20060224/1251376545">自己実行型JARファイル</a> - ダブルクリックで実行できるJavaアプリケーションの作り方(2006/2/24)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20040918/1251376865">図形を描く</a> - 簡単な図形を描く方法(2004/9/18)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20040919/1251377847">ボールを動かす</a> - アニメーションの実装方法(2004/9/19)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20040920/1251378690">ボールが跳ね返る処理</a> - ブロック崩しなどで使う(2004/9/20)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20040922/1251378898">ボールをたくさん作る</a> - オブジェクト指向の基礎(2004/9/22)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20041003/1251379247">WAVEの再生</a> - WAVEファイルの再生法(2004/10/3)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20041009/1251460483">イメージを表示する</a> - イメージのロードと描画(2004/10/9)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20060225/1251461010">ImageIconを使ったイメージのロード</a> - MediaTrackerが必要ない方法(2006/2/25)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20041016/1251461651">マウスクリック</a> - マウスクリックで点を描画(2004/10/16)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050115/1251462005">キーボードの使い方</a> - キーボードでボールを移動(2005/1/15)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20060507/1251462851">アクティブレンダリング</a> - repaint()を使わない再描画、ダブルバッファリング(2006/5/7)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20070429/1251463673">正確なFPS</a> - FPSを画面に表示する(2007/4/29)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20060917/1251464777">アプリケーションをアプレットに変換</a> - けっこう簡単に変換できる(2006/9/17)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20061203/1251465083">半透明描画</a> - 後ろが透けて見える半透明効果(2006/12/3)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20070204/1251465574">テキストファイル入出力</a> - テキストファイルの読み書き(2007/2/4)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20070408/1251466316">フォントファイルからフォントを読み込む</a> - 外部フォントをロード(2007/4/8)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20070502/1251466876">フルスクリーンモード</a> - フルスクリーンモードを使う、BufferStrategyの利用(2007/5/2)</li>
</ul>
<h4>部品</h4>
<ul>
<li><a href="http://d.hatena.ne.jp/aidiary/20060129/1251467848">ファイアボール</a> - クリックとドラッグでマウスの位置にファイアボールを発射(2006/1/29)</li>
<li>テレポート - Tキーでマウスの位置にテレポート(2006/2/4)<a href="http://d.hatena.ne.jp/aidiary/files/teleport.jar">teleport.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/teleport.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050402/1251514618">ブレゼンハムアルゴリズム</a> - 直線を描画する方法、直線経路探索でも使う(2005/4/2)</li>
<li>メタボール - 何か気持ちいいメタボール。Javaでピクセル操作は少し重いかな(2006/4/30)<a href="http://d.hatena.ne.jp/aidiary/files/metaball.jar">metaball.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/metaball.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>大砲発射 - マウスクリックで弾を発射します。弾は放物線を描いて飛んできます。CTRLを押しながらだと正確にマウスポインタの位置を撃ち抜きます(2006/6/3)<a href="http://d.hatena.ne.jp/aidiary/files/cannon.jar">cannon.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/cannon.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>矢 - マウスクリックで矢を発射。CTRLを押しながらだとマウスポインタを正確に射抜きます。矢の長さが一定になるように少し工夫してます(2006/6/11)<a href="http://d.hatena.ne.jp/aidiary/files/arrow.jar">arrow.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/arrow.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li><a href="http://d.hatena.ne.jp/aidiary/20061229/1251515298">スポットライト効果</a> - ドラクエ1の洞窟とか(2006/12/29)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20070204/1251516076">円運動</a> - くるくる回転(2007/2/4)</li>
<li>サンダー - マウスボタンの長押しでパワーをためて話すと稲妻が落ちます。もっとかっこいい稲妻にしたいですね(2006/2/4)<a href="http://d.hatena.ne.jp/aidiary/files/thunder.jar">thunder.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/thunder.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li><a href="http://d.hatena.ne.jp/aidiary/20060818/1251516376">稲妻</a> - リアルサンダー(2006/8/18)</li>
<li>爆発エフェクト - TimerTaskを使った爆発エフェクト。クリックとドラッグで爆発(2006/1/29)<a href="http://d.hatena.ne.jp/aidiary/files/explosion.jar">explosion.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/explosion.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>くだけちるエフェクト - スライムはくだけちった。アニメーションの速度を遅くすると楽しいかも(2005/12/3)<a href="http://d.hatena.ne.jp/aidiary/files/megante.jar">megante.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/megante.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li><a href="http://d.hatena.ne.jp/aidiary/20070504/1251516892">フェードアウト効果</a> - だんだん見えなくなる画面効果(2007/5/4)</li>
</ul>
<h4>ブロック崩し</h4>
<ul>
<li><a href="http://d.hatena.ne.jp/aidiary/20070601/1251545490">ラケットを動かす</a> - マウスを使ってラケットを動かす(2007/6/1)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20070610/1251596892">跳ね回るボール</a> - ボールが跳ね回る(2007/6/10)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20070708/1251597028">ラケットでボールを打ち返す</a> - ラケットとボールの当たり判定(2007/7/8)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20070715/1251597710">ブロックを壊す</a> - ボールとブロックの当たり判定(2007/7/15)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20070722/1251597873">反射方向の調整</a> - ラケットに当たる位置によって反射方向を変える(2007/7/22)</li>
</ul>
<h4>インベーダー</h4>
<ul>
<li><a href="http://d.hatena.ne.jp/aidiary/20050212/1251599115">プレイヤーの移動</a>(2005/2/12)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050218/1251807223">弾の発射</a>(2005/2/18)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050220/1251807344">連続発射</a>(2005/2/20)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050309/1251807519">エイリアン襲来</a>(2005/3/9)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050312/1251807814">衝突判定</a>(2005/3/12)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050321/1251808070">エイリアンの攻撃</a>(2005/3/21)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050507/1251808247">ぴこぴこ音</a> - AudioClipを使って効果音を鳴らします(2005/5/7)</li>
<li>爆発エフェクトの追加 - <a href="http://taillove.jp/mia/" target="_blank">発色弾</a>で作成した爆発エフェクトを追加(2005/8/14)<a href="http://d.hatena.ne.jp/aidiary/files/invader08.jar">invader08.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/invader08.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>BGMで臨場感を出す - BGMを追加します。<a href="http://www.tam-music.com/" target="_blank">TAM Music Factory</a>さんからお借りしました。けっこう雰囲気のあるBGMです。(2005/9/3)<a href="http://d.hatena.ne.jp/aidiary/files/invader09.jar">invader09.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/invader09.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
</ul>
<h4>テトリス</h4>
<ul>
<li><a href="http://d.hatena.ne.jp/aidiary/20060319/1252109667">フィールドの作成</a> - テトリスのフィールドを作成(2006/3/19)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20060325/1252109903">ブロックの作成</a> - 四角いブロックの導入(2006/3/25)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20060422/1252930459">ブロックの移動と回転</a> - 矢印キーで移動。スペースキーで回転。NキーでI型ブロックへ変更(2006/4/22)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20060423/1252930848">壁との衝突判定</a> - ブロックが壁をすりぬけない(2006/4/23)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20060528/1252930973">ブロックの落下</a> - ゲームループでブロック落下(2006/5/28)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20060423/1252931429">ブロックの積み上げ</a> - ブロックを積めるようにする(2006/4/23)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20060620/1252932241">横にそろったブロックの消去</a> - 一列そろったらブロック消去(2006/6/20)</li>
<li>全ブロック導入 - 7種類のブロッククラスを追加(2006/6/25)<a href="http://d.hatena.ne.jp/aidiary/files/tetris08.jar">tetris08.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/tetris08.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>カラフルブロック - 各ブロックに色をつける(2006/7/8)<a href="http://d.hatena.ne.jp/aidiary/files/tetris09.jar">tetris09.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/tetris09.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>スコア表示 - スコア機能を追加(2006/7/16)<a href="http://d.hatena.ne.jp/aidiary/files/tetris10.jar">tetris10.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/tetris10.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>ゲームオーバー - ブロックが積み上がったらゲームオーバー(2006/8/5)<a href="http://d.hatena.ne.jp/aidiary/files/tetris11.jar">tetris11.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/tetris11.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>次のブロック - 次のブロックを表示(2006/12/9)<a href="http://d.hatena.ne.jp/aidiary/files/tetris12.jar">tetris12.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/tetris12.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>テトリス - 最低限の機能だけ実装。矢印で移動、スペースで回転(2005/8/20)<a href="http://d.hatena.ne.jp/aidiary/files/tetris.jar">tetris.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/tetris.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
</ul>
<h4>マリオ風アクション</h4>
<ul>
<li><a href="http://d.hatena.ne.jp/aidiary/20050606/1255784737">左右移動</a> - 左右へ移動する(2005/6/6)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050613/1255785116">ジャンプ</a> - 上キーでジャンプする(2005/6/13)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050616/1255785698">ブロックとの衝突</a> - ブロックにぶつかる(2005/6/16)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050624/1255786339">マップスクロール</a> - 大きなマップ対応(2005/6/24)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050624/1255786733">イメージを使う</a> - キャラアニメーションも追加(2005/6/24)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050624/1255786968">マップを読み込む</a> - やっとステージが作れる(2005/6/24)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050627/1255787284">コインの実装</a> - スプライトの当たり判定。ちゃり~ん(2005/6/27)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050627/1258892582">栗ボー登場</a> - ふめば倒せる敵キャラ導入(2005/6/27)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050703/1267882718">アイテムでパワーアップ</a> - 加速アイテム導入(2005/7/3)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050703/1267883199">キー入力改良</a> - キーを長押ししても1回だけジャンプ(2005/7/3)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050703/1267883200">二段ジャンプ</a> - 二段ジャンプできるアイテム導入(2005/7/3)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050708/1267883716">コインブロック</a> - 黄色い?ブロック(2005/7/8)</li>
<li>アイテムブロック - アイテムが出てくるブロック(2005/07/8)<a href="http://d.hatena.ne.jp/aidiary/files/mariolike13.jar">mariolike13.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/mariolike13.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
</ul>
<h4>RPG</h4>
<ul>
<li><a href="http://d.hatena.ne.jp/aidiary/20040921/1267885383">RPGを作ろう</a> - はじめに(2004/9/21)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20040921/1267885632">勇者登場</a> - キャラクターの描画(2004/9/21)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20040921/1267885898">お城を建てる</a> - 簡単なマップ描画(2004/9/21)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20040921/1267886090">勇者は第一歩を踏み出した</a> - キーボードでキャラクター移動(2004/9/21)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20040923/1267886388">勇者は壁にぶつかった</a> - マップとの当たり判定(2004/9/23)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20040924/1267886803">勇者は足踏みした</a> - キャラクターアニメーション(2004/9/24)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20040925/1269688437">勇者はがにまたが直った</a> - 移動方向に応じてイメージを変える(2004/9/25)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20051010/1269688667">オブジェクト化</a> - 今までのところをまとめると(2005/10/10)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20051010/1269688907">スクロール処理1</a> - タイルベーススクロール(2005/10/10)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20051015/1269689233">ゲームループとキー操作の改良</a> - ゲームループの導入(2005/10/15)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20051022/1269689396">スクロール処理2</a> - ドラクエ風のスクロール処理(2005/10/22)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20051029/1269689563">マップの読み込み</a> - マップをファイルから読み込む(2005/10/29)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20051022/1269689919">王様登場</a> - キャラクターの追加(2005/10/22)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20051029/1269690190">画像をまとめる</a> - 画像を1つのファイルにまとめる(2005/10/29)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20051103/1270344001">キャラクターイベント</a> - キャラクターの追加が簡単に(2005/11/3)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20051103/1270344460">メッセージウィンドウの表示</a> - ウィンドウだけ表示(2005/11/3)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20051103/1270344991">メッセージの表示</a> - ページ送りもできます(2005/11/3)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20051103/1270345230">流れるメッセージ</a> - ドラクエ風メッセージ処理(2005/11/3)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20051119/1270345414">宝箱</a> - 宝箱の実装。中身は取れません(2005/11/19)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20051213/1270902194">とびらを開ける</a> - とびらの実装(2005/12/3)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20060305/1270902449">マップ間移動</a> - マップの切り替え(2006/3/5)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20060505/1270902766">BGMを鳴らす</a> - 音が鳴ると雰囲気変わる(2006/5/5)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20061105/1270902940">効果音を鳴らす</a> - 効果音は重要です(2006/11/5)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20061112/1272880611">デバッグ情報表示</a> - 画面にデバッグ情報を表示します(2006/11/12)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20061119/1272880856">ここまでの整理</a> - 区切りがいいので細かい修正(2006/11/19)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20061126/1272881054">マップエディタ</a> - マップ&イベントエディタの作成(2006/11/26)</li>
<li>バイナリマップ - マップエディタで作成したバイナリ形式マップを読み込みます(2006/12/10)<a href="http://d.hatena.ne.jp/aidiary/files/rpg25.jar">rpg25.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/rpg25.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050205/1272881434">ドラクエクローン</a> - みんなには内緒だよ(2005/2/5)</li>
</ul>
<h4>マップエディタ</h4>
<ul>
<li>ひながた - ドラッグでチップを塗りつぶす(2005/12/17)<a href="http://d.hatena.ne.jp/aidiary/files/map_editor01.jar">map_editor01.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/map_editor01.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>パレットの追加 - マップチップパレットの追加(2005/12/17)<a href="http://d.hatena.ne.jp/aidiary/files/map_editor02.jar">map_editor02.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/map_editor02.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>マップチップの選択と描画 - パレットからマップチップを選択して描画(2005/12/17)<a href="http://d.hatena.ne.jp/aidiary/files/map_editor03.jar">map_editor03.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/map_editor03.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>マップの新規作成 - 新規作成メニューを追加。スクロールバーも装備(2005/12/23)<a href="http://d.hatena.ne.jp/aidiary/files/map_editor04.jar">map_editor04.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/map_editor04.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>マップを保存 - マップを1マス1バイトのバイナリ形式で保存(2005/12/25)<a href="http://d.hatena.ne.jp/aidiary/files/map_editor05.jar">map_editor05.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/map_editor05.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>マップを開く - 保存したマップを開く(2005/12/25)<a href="http://d.hatena.ne.jp/aidiary/files/map_editor06.jar">map_editor06.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/map_editor06.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
</ul>
<h4>オセロ</h4>
<ul>
<li><a href="http://d.hatena.ne.jp/aidiary/20041217/1273399999">オセロ盤を作る</a>(2004/12/17)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20041217/1273400143">マウスで石を打つ</a>(2004/12/17)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20041217/1273400313">石が打てる場所か判定する</a>(2004/12/17)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20041218/1273400495">はさんだ石をひっくり返す</a>(2004/12/18)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20041218/1274147695">勝敗を判定する</a>(2004/12/18)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20041226/1274148758">AIの実装/ミニマックス法</a>(2004/12/26)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050105/1274149687">盤面評価/石の数</a>(2005/1/5)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050116/1274149840">パスを実装する</a>(2005/1/16)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050121/1274149979">盤面評価/石の場所</a>(2005/1/21)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050205/1274150331">AIの実装/α-β法</a>(2005/2/5)</li>
</ul>
<h4>ミニゲーム</h4>
<ul>
<li>Nibble - 制限時間内に蛙を食べまくれ(2004/12/15)<a href="http://d.hatena.ne.jp/aidiary/files/nibble.jar">nibble.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/nibble.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
</ul>
<h4>人工知能</h4>
<ul>
<li><a href="http://d.hatena.ne.jp/aidiary/20041225/1274163262">ライフゲーム</a> - 人生ゲームじゃないです(2004/12/25)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050327/1274163527">単純な追跡アルゴリズム</a> - 単純に近づくだけ(2005/3/27)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050409/1274163763">LOS追跡</a> - ブレゼンハムアルゴリズムをもとに最短経路で追跡(2005/4/9)</li>
<li>パターン移動 - 移動経路を設定する(2005/4/10)<a href="http://d.hatena.ne.jp/aidiary/files/pattern_movement.jar">pattern_movement.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/pattern_movement.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>ブレッドクラム経路探索 - パンくずをたどって追跡する(2005/4/16)<a href="http://d.hatena.ne.jp/aidiary/files/bread_crumb.jar">bread_crumb.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/bread_crumb.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>ウォールトレーシング - 左手法を使ってダンジョンを巡回する(2005/4/16)<a href="http://d.hatena.ne.jp/aidiary/files/wall_tracing.jar">wall_tracing.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/wall_tracing.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>A* (A-star) 経路探索 - 障害物があっても大丈夫(2005/4/23)<a href="http://d.hatena.ne.jp/aidiary/files/a_star.jar">a_star.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/a_star.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>A* (A-star) 経路探索(地形コストつき) - バリアはコストが高いので迂回する(2005/4/23)<a href="http://d.hatena.ne.jp/aidiary/files/a_star2.jar">a_star2.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/a_star2.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>A* (A-star) 経路探索(迷路) - 最短経路で迷路をぬける(2005/4/23)<a href="http://d.hatena.ne.jp/aidiary/files/a_star3.jar">a_star3.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/a_star3.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>有限状態機械(蟻の例) - 蟻は内部状態に応じて行動を変化させる(2005/4/24)<a href="http://d.hatena.ne.jp/aidiary/files/ant_fsm.jar">ant_fsm.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/ant_fsm.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050505/1274165051">ニューラルネットによるパターン認識</a> - 3層パーセプトロン・誤差逆伝播法を使ったパターン認識(2005/5/5)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050514/1116079566">ニューラルネットによる逃避行動の学習</a> - ニューラルネットを使って逃げ方を覚える(2005/5/14)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050121/1274166470">強化学習で迷路の最短経路を見つける</a> - 強化学習で迷路は基本タスク(2005/1/21)</li>
<li>強化学習で倒立振子を制御する - 掃除の時間にやるやつ(2005/1/21)<a href="http://d.hatena.ne.jp/aidiary/files/pole_balancing.jar">pole_balancing.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/pole_balancing.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>強化学習でアクロバットを制御する - 足を振り上げる鉄棒選手(2005/2/17)<a href="http://d.hatena.ne.jp/aidiary/files/acrobat.jar">acrobat.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/acrobat.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>強化学習で車の山登りタスクを解く - 山を登る方法を学習する(2005/5/1)<a href="http://d.hatena.ne.jp/aidiary/files/mountain_car.jar">mountain_car.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/mountain_car.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>倒立振子制御の教示学習 - 強化学習に教示を導入。教示モードでは左右キーで台車を操作できます。エージェントにお手本を見せましょう。Modeボタンを押してエージェントの自律モードに切り替えると前よりずっとうまくできるようになってます。赤ちゃんエージェントにお手本を見せよう。(2005/9/11)<a href="http://d.hatena.ne.jp/aidiary/files/pole_balance_teaching.jar">pole_balance_teaching.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/pole_balance_teaching.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>強化学習でPongを学習する - 学習を通じてPongがうまくできるようになる(2005/12/10)<a href="http://d.hatena.ne.jp/aidiary/files/pong_learning.jar">pong_learning.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/pong_learning.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
</ul>
<h4>人工無脳</h4>
<ul>
<li><a href="http://d.hatena.ne.jp/aidiary/20070120/1169252199">人工無脳まとめ</a> - 人工無脳のまとめ(2007/1/20)</li>
<li>人工無脳の雛形 - ユーザ入力文を処理して反応を返す(2007/1/20)<a href="http://d.hatena.ne.jp/aidiary/files/chatbot01.jar">chatbot01.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/chatbot01.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li><a href="http://d.hatena.ne.jp/aidiary/20070330/1275136218">辞書からランダムに返答</a> - 辞書の会話文をランダムに選んで返す(2007/3/30)</li>
</ul>
<h4>ネットワーク</h4>
<ul>
<li><a href="http://d.hatena.ne.jp/aidiary/20050807/1275136781">CGIへスコア情報を送信する</a> - JavaとCGIを連携する(2005/8/7)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050815/1275137081">サーバー上のファイルにスコアを保存する</a> - スコアを登録する(2005/8/15)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20050904/1275137370">ハイスコアランキングの作り方</a> - 登録されたスコアからハイスコアランキングを作る(2005/9/4)</li>
</ul>
<h4>Java Sound</h4>
<ul>
<li><a href="http://d.hatena.ne.jp/aidiary/20061103/1275137569">基本的な方法</a> - Javaで音を鳴らす基本的な方法(2006/11/3)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20061105/1275137770">ClipでWAVE再生</a> - Clipを使ってWAVEファイルを再生(2006/11/5)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20061105/1275137970">シーケンサとシンセサイザ</a> - MIDIファイルの再生(2006/11/5)</li>
<li><a href="http://d.hatena.ne.jp/aidiary/20051210/1270961287">サウンドエンジン</a> - Java Sound APIを使ったMidiとWaveの再生(2005/12/10)</li>
</ul>
<h4>Java3D</h4>
<p>(注)<a href="http://java.sun.com/javase/technologies/desktop/java3d/" target="_blank">Java3D</a>がインストールされている必要があります。起動が遅い場合があります。</p>
<ul>
<li>Java3Dの雛形 - Java3Dアプリケーションの基本形(2006/7/28)<a href="http://d.hatena.ne.jp/aidiary/files/sample3d.jar">sample3d.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/sample3d.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>座標軸 - X軸、Y軸、Z軸の描画(2006/7/28)<a href="http://d.hatena.ne.jp/aidiary/files/axis.jar">axis.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/axis.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>床 - XZ平面に広がる床(2006/7/28)<a href="http://d.hatena.ne.jp/aidiary/files/floor.jar">floor.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/floor.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>回転キューブ - 回転するカラーキューブ(2005/12/30)<a href="http://d.hatena.ne.jp/aidiary/files/rotating_cube.jar">rotating_cube.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/rotating_cube.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>点を打つ - 点を描画(2006/1/1)<a href="http://d.hatena.ne.jp/aidiary/files/point.jar">point.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/point.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>神々のトライフォース - 某ゲームのあれ(2006/1/1)<a href="http://d.hatena.ne.jp/aidiary/files/triforce.jar">triforce.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/triforce.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>水晶球 - 赤い絨毯と水晶球(2006/1/4)<a href="http://d.hatena.ne.jp/aidiary/files/crystal_ball.jar">crystal_ball.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/crystal_ball.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>Sphere in the Box - 箱の中で跳ね回るボール(2006/1/28)<a href="http://d.hatena.ne.jp/aidiary/files/sphere_in_the_box.jar">sphere_in_the_box.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/sphere_in_the_box.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
<li>ボールの自由落下 - 自由落下してバウンドするボール(2006/2/4)<a href="http://d.hatena.ne.jp/aidiary/files/falling_ball.jar">falling_ball.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/falling_ball.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></li>
</ul>
<h4>関連書籍</h4>
<ul>
<li><a href="http://www.amazon.co.jp/gp/product/0596007302/ref=sr_11_1/503-6206187-5559910?ie=UTF8" target="_blank">Killer Game Programming In Java</a> - 現在出版されているJavaゲームプログラミングの本では<span style="color:#FF0000;">最強</span>です。PDFの草稿、ソースコードは全部、<a href="http://fivedots.coe.psu.ac.th/~ad/jg/" target="_blank">http://fivedots.coe.psu.ac.th/~ad/jg/</a>で公開されてます。今はこれで勉強してます。</li>
</ul>
<ul>
<li><a href="http://www.amazon.co.jp/gp/product/1592730051/ref=sr_11_1/250-8247390-5505864?ie=UTF8" target="_blank">Developing Games in Java</a> - Java Gamesでも推薦されているBrackeenさんの本です。Javaでゲームを作るための必須技術が解説されています。マリオ風アクションゲームの作成は必見です。Javaゲームの基礎的な内容だけではなく、マルチプレーヤー、Java3D、衝突検出、最短経路探索、人工知能など応用技術も幅広く解説されています。海外の本は充実度がものすごいです。ソースコードとフレームワークは<a href="http://www.brackeen.com/javagamebook/" target="_blank">http://www.brackeen.com/javagamebook/</a>で公開されてます。</li>
</ul>
<ul>
<li><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4797318422/qid=1104918445/ref=sr_8_xs_ap_i1_xgl/249-2893681-2689943" target="_blank">Javaゲームプログラミング アルゴリズムとフレームワーク</a> - 表紙はあれですが内容は濃いです。入門編と実践編に分かれています。入門編はJavaでゲームを作るためのフレームワークが解説されています。実践編は落ちモノパズル、シューティング、戦略シミュレーション、ネット対戦ゲームが解説されています。実践編、特に戦略シミュレーションの作り方が面白かったです。</li>
</ul>
<ul>
<li><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4881355619/qid=1104918998/sr=1-11/ref=sr_1_2_11/249-2893681-2689943" target="_blank">Javaゲームプログラミング―ゲームで引き出すオブジェクト指向言語のパワー</a> - Java学習の初期に読んだ本です。8年も前の本でJavaのバージョンも1.0ベースなのでいまでも通用するのかは少し疑問です。まあAPIは変わってもゲームのアルゴリズムを理解するようにすれば参考になるかもしれません。後半のゲーム集は魅力的です。</li>
</ul>
<ul>
<li><a href="http://www.amazon.co.jp/gp/product/4774116696/sr=8-4/qid=1155691480/ref=sr_1_4/503-6206187-5559910?ie=UTF8&s=gateway" target="_blank">やさしくわかるJava3D</a> - Java3D本の中では一番いいかも。ただこの本以外である程度Java3Dの基礎を勉強してないとつらいような気がします。3Dジャンプアクションの作り方が面白いです。</li>
</ul>
<ul>
<li><a href="http://www.amazon.co.jp/gp/product/4797820551/sr=8-1/qid=1155691480/ref=sr_1_1/503-6206187-5559910?ie=UTF8&s=gateway" target="_blank">Java3Dグラフィックス―Web上で動く3DCG 基礎から立体アニメーションまで</a> - こっちは上の本と違ってゲームプログラミングでないけどJava3Dの基礎がきっちり学べます。上の本と合わせて読むといいかも。Java3Dフレームワークは<a href="http://www.bunkyo.ac.jp/~hiro/saiga3d/index.html" target="_blank">彩画3D</a>で公開されてます。</li>
</ul>
<h4>リンク集</h4>
<ul>
<li><a href="http://www.harukitchen.com/rpg_programming/" target="_blank">Javaで RPGを作ろう!</a> - JavaでRPGを作る方法が解説されています。スクロール処理の実装方法が参考になりました。</li>
</ul>
<ul>
<li><a href="http://www.groovy-number.com/" target="_blank">安永ノリカズの公開ゲーム制作</a> - 魔法使いの街を舞台にした生活シミュレーションゲームをアプレット形式で公開しています。人工生命手法を用いた社会構造テストプログラムがとても興味深いです。またJavaの入門者を対象に愛のJava256本ノックという面白い試みもしています。</li>
</ul>
<ul>
<li><a href="http://hp.vector.co.jp/authors/VA012735/" target="_blank">WAKU WAKU JAVA</a> - 画像効果を利用したすばらしいアプレットが多数あります。<a href="http://d.hatena.ne.jp/aidiary/20060818/1251516376">稲妻</a>(2006/8/18)はここのソースコードを参考にさせてもらいました。他のもソース公開してくれないかな・・・</li>
</ul>
<ul>
<li><a href="http://www.katch.ne.jp/~mh524-1997/" target="_blank">Javaゲームはじめました。</a> - Javaでさまざまなゲームを作られてます。シミュレーションゲームの作り方講座が楽しい。今度作るとき参考にさせてほしいと思います。向こうからもリンク貼っていただいたようです。ありがとうございます。</li>
</ul>
<ul>
<li><a href="http://perfect-logic.net/SampleAction/" target="_blank">Javaで Action Game作ってみました!!</a> - Javaで魔界村っぽいアクションゲームを作られてます。ここのサンプルと違って最後まで遊べます。Javaでここまでできるとわかって感動しました。</li>
</ul>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
COMMENT:
AUTHOR: aidiary
EMAIL:
IP:
URL: http://d.hatena.ne.jp/aidiary/
DATE: 03/27/2010 09:54:49 PM
何かあればここにコメントください。
-----
COMMENT:
AUTHOR: jo
EMAIL:
IP:
URL:
DATE: 05/26/2010 00:32:48 AM
すごい面白いですね。このサイト。まさかJavaであんなドラクエまるっきりそのままのものができるとは思いませんでした。
-----
--------
AUTHOR: aidiary
TITLE: アプリケーションの構成
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/18/2004 09:02:34 PM
CATEGORY: Javagame
-----
BODY:
<div class="section">
<p>ここではHello Worldを表示する最も簡単なJavaアプリケーションを書いてみます。私の書くJavaアプリケーションはフレームとメインパネルの二部構成を取っています。今後書くアプリケーションはすべて同じ枠組みですのでここで詳しく解説します。</p>
<p><a href="http://d.hatena.ne.jp/aidiary/files/hello_world.jar">hello_world.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/hello_world.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></p>
<h4>フレームとパネル</h4>
<p><span style="color:#FF0000;">私の書くゲームアプリケーションはフレーム(JFrameを拡張したクラス)とパネル(JPanelを拡張したクラス)から成り立っています</span>。フレームはアプリケーション本体です。アプリケーションの開始点であるmain()を持ちます。パネルはゲームのメイン画面です。オセロゲームだったら盤面、RPGだったらフィールドを描画する場所となります。</p>
<p>HelloWorld.javaです。</p>
<pre class="syntax-highlight">
<span class="synPreProc">import</span> java.awt.*;
<span class="synPreProc">import</span> javax.swing.*;
<span class="synType">public</span> <span class="synType">class</span> HelloWorld <span class="synType">extends</span> JFrame {
<span class="synType">public</span> HelloWorld() {
<span class="synComment">// タイトルを設定</span>
setTitle(<span class="synConstant">&#34;Hello Worldを表示する&#34;</span>);
<span class="synComment">// メインパネルを作成してフレームに追加</span>
MainPanel panel = <span class="synStatement">new</span> MainPanel();
Container contentPane = getContentPane();
contentPane.add(panel);
<span class="synComment">// パネルサイズに合わせてフレームサイズを自動設定</span>
pack();
}
<span class="synType">public</span> <span class="synType">static</span> <span class="synType">void</span> main(String[] args) {
HelloWorld frame = <span class="synStatement">new</span> HelloWorld();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(<span class="synConstant">true</span>);
}
}
</pre>
<p>MainPanel.javaです。</p>
<pre class="syntax-highlight">
<span class="synPreProc">import</span> java.awt.Dimension;
<span class="synPreProc">import</span> java.awt.Graphics;
<span class="synPreProc">import</span> javax.swing.JPanel;
<span class="synType">public</span> <span class="synType">class</span> MainPanel <span class="synType">extends</span> JPanel {
<span class="synComment">// パネルサイズ</span>
<span class="synType">private</span> <span class="synType">static</span> <span class="synType">final</span> <span class="synType">int</span> WIDTH = <span class="synConstant">240</span>;
<span class="synType">private</span> <span class="synType">static</span> <span class="synType">final</span> <span class="synType">int</span> HEIGHT = <span class="synConstant">240</span>;
<span class="synType">public</span> MainPanel() {
<span class="synComment">// パネルの推奨サイズを設定、pack()するときに必要</span>
setPreferredSize(<span class="synStatement">new</span> Dimension(WIDTH, HEIGHT));
<span class="synComment">// 変数などの初期化</span>
}
<span class="synType">public</span> <span class="synType">void</span> paintComponent(Graphics g) {
<span class="synType">super</span>.paintComponent(g);
<span class="synComment">// 盤面を描いたり、フィールドを描いたりする</span>
}
}
</pre>
<p>フレームクラス(HelloWorld)自体はたいしたことをしていません。タイトルを設定し、フレームのcontentPaneというところにパネル(MainPanelオブジェクト)をadd()で貼り付けているだけです。画面への描画などの処理はパネルがすべて担当しており、<span style="color:#FF0000;">フレームはパネルを乗せる単なる土台にすぎません</span>(下図参照)。</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20090827214622" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20090827/20090827214622.gif" alt="f:id:aidiary:20090827214622g:image" title="f:id:aidiary:20090827214622g:image" class="hatena-fotolife"></a></p>
<h4>メインメソッド</h4>
<p><span style="color:#FF0000;">アプリケーションはmain()から開始されます</span>。</p>
<pre class="syntax-highlight">
<span class="synType">public</span> <span class="synType">static</span> <span class="synType">void</span> main(String[] args) {
HelloWorld frame = <span class="synStatement">new</span> HelloWorld();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(<span class="synConstant">true</span>);
}
</pre>
<p>main()の1行目ではHelloWorldフレームのオブジェクトを作っています。HelloWorldクラス内のmain()で HelloWorldオブジェクトを作るのは変だと思われるかもしれませんが、main()がstaticメソッドであるため正しい書き方です。この書き方は分かりにくいという指摘もありますが、簡潔なため採用しました。</p>
<p>2行目はフレームの終了処理を指定しています。これを書かないとプログラムが終了できなくなります。こう書くもんだと思ってください。3行目は画面にフレームを表示します。フレームはsetVisible(true)しないと画面に表示されません。</p>
<h4>描画処理</h4>
<p><span style="color:#FF0000;">描画処理はパネル(MainPanel)のpaintComponent()に書きます</span>。paintComponent()はGraphicsオブジェクトgを引数として受け取ります。このgを通して文字、図形、イメージを描画することができます。今回はdrawString()を使って画面上にHello Worldを描画しています。</p>
<pre class="syntax-highlight">
<span class="synType">public</span> <span class="synType">void</span> paintComponent(Graphics g) {
<span class="synType">super</span>.paintComponent(g);
<span class="synComment">// (20,50)の位置にHello Worldを描画する</span>
g.drawString(str, <span class="synConstant">20</span>, <span class="synConstant">50</span>);
}
</pre>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 図形を描く
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/18/2004 09:41:05 PM
CATEGORY: Javagame
-----
BODY:
<div class="section">
<p>paintComponent()の引数であるGraphicsオブジェクトgを使うと直線、図形、文字、イメージをパネルに描けます。今回は、gを使ってさまざまな図形を描いてみます。</p>
<p><a href="http://d.hatena.ne.jp/aidiary/files/draw_figure.jar">draw_figure.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/draw_figure.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></p>
<h4>座標系</h4>
<p>Javaの座標系は数学で使う座標系と異なり、左上が(0,0)になります。<span style="color:#FF0000;">x座標は右に行くほど大きくなり、y座標は下に行くほど大きくなります</span>(下図参照)。また、座標はピクセル単位であるため整数値しか取れません。数学が得意な人は慣れるまで大変かも・・・。</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20090827214807" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20090827/20090827214807.gif" alt="f:id:aidiary:20090827214807g:image" title="f:id:aidiary:20090827214807g:image" class="hatena-fotolife"></a></p>
<h4>色の指定</h4>
<p>色は赤(R)、緑(G)、青(B)の3つの成分の組み合わせで表されます。それぞれの成分は8ビット(0~255の整数値)です。たとえば、赤は (255,0,0)、緑は(0,255,0)、青は(0,0,255)、白は(255,255,255)、黒は(0,0,0)、黄色は赤と緑を混ぜ合わせればよいので(255,255,0)です。</p>
<p>ここで、なぜ白が(255,255,255)、黒が(0,0,0)なんだと疑問に思う方いませんか?白は色がないんだから(0,0,0)で絵の具を全部混ぜると黒になるから黒は(255,255,255)じゃないかって。私も最初疑問に思ってました。だけど、<span style="color:#FF0000;">この色が絵の具じゃなくてライト</span>だと考えればすんなり納得できました。太陽の光は白ですが、プリズムを通すと虹が見えるように白い光はすべての色を含んでいます。つまり、白はすべての色を含む(255,255,255)なのです。また、光がまったくないと真っ暗闇です。だから黒は色をまったく含まない(0,0,0)なのです。</p>
<p><span style="color:#FF0000;">Javaで色を指定するにはColorクラスを使います</span>。たとえば、赤を表すColorオブジェクトを作りたければ、new Color(255,0,0)で作れます。紫を表すColorオブジェクトを作りたければ、new Color(255,0,255)で作れます。こうして作ったColorオブジェクトをsetColor()に渡してあげれば図形の色を指定できます。</p>
<pre class="syntax-highlight">
<span class="synComment">// 赤に変更</span>
g.setColor(<span class="synStatement">new</span> Color(<span class="synConstant">255</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>));
</pre>
<p>いちいち(R,G,B)を指定するのが面倒なので標準の色は名前で指定できるようになっています。</p>
<pre class="syntax-highlight">
<span class="synComment">// 赤に変更</span>
g.setColor(Color.RED);
</pre>
<p>この指定方法ではnewは使いません。Javaが内部でnewしてくれているからです。プログラムでは赤(Color.RED)と青(Color.BLUE)を使っています。他にどんな色があるか知りたいですか?そんな場合は、ColorクラスのAPI(Application Programming Interface)を調べてみましょう。</p>
<h4>図形を描く</h4>
<p>Graphicsオブジェクトgを使うとさまざまな図形が描けます(プログラムでは線と四角形と円しか描いてませんが・・・)。drawLine ()は線を描くメソッドです。プログラムでは(10,10)から(100,10)まで線を引いています。drawRect()は四角形の枠を描くメソッドです。プログラムでは(10,20)を左上の座標とする幅40、高さ40の四角形を描いています。<span style="color:#FF0000;">後ろの2つの引数は幅と高さであって、右下の座標でないので注意しましょう</span>。fillRect ()は塗りつぶした四角形を描くメソッドです。drawOval()は円を描くメソッドです。プログラムでは(10,70)を左上の座標とする幅40、高さ40の四角形のぴったりと納まる大きさの円を描いています。fillOval()は塗りつぶした円を描くメソッドです。</p>
<p>線、四角形、円以外にも角丸四角形を描くdrawRoundRect()、ポリゴンを描くdrawPolygon()、弧を描くdrawArc() などのメソッドもあります。詳しくはGraphicsクラスのAPIを見てみましょう。私は線、四角形、円以外はほとんど使ったことないです。</p>
<p>長々と図形を描く方法を解説してきましたが、ゲームでこれらのメソッドを使うことはほとんどありません。地味ですから。実際はイメージを多用します。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: ボールを動かす
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/19/2004 09:57:27 PM
CATEGORY: Javagame
-----
BODY:
<div class="section">
<p>ボールが動くアニメーションを作ります。Javaでアニメーションを作る方法はいくつかありますが、ここでは最も一般的なスレッドを用いて実装します。動きがつくとゲームっぽくなってきます。</p>
<p><a href="http://d.hatena.ne.jp/aidiary/files/move_ball.jar">move_ball.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/move_ball.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></p>
<h4>アニメーションの仕組み</h4>
<p>テレビとかでやってるアニメってどうやって作るか知ってます?ある絵を描いて、また位置を少しずらして絵を描いてという作業を何回も何回も繰り返しているんだそうです。たくさんの少しずつずらした絵を何枚も何枚も描いて順に画面に表示させると<span style="color:#FF0000;">動いているように見える</span>んですね。30分のアニメでもかなりの枚数を描くようです。</p>
<p>私は小さいときにこれを聞いてまさか!と思いました。以前は、描いた絵をカメラの前で動かしてるんだと思ってました(笑)。少しずつずらして描くなんてものすごく大変で不可能だと思ったわけです。ただぱらぱら漫画のことふっと思い出して妙に納得したのを覚えています。ぱらぱら漫画ってのはノートのすみに方に少しずつ違う絵を描いていってぱらぱらめくると動いてるように見えるって遊びで昔流行っていました(今はどうかな?)。<span style="color:#FF0000;">アニメーションは少しずつ違う絵を何枚も描いて順に表示してできているんだ</span>ということを実感したわけです。</p>
<p>アニメの一枚一枚の絵を<span style="color:#FF0000;">フレーム</span>(こま)と呼びます(JFrameのFrameとは違います)。昔の漫画(ドラえもんとか)にはセル画といってアニメの1フレームを描いた絵がおまけでついていました。このフレームを順に画面に表示するわけです。</p>
<p>プログラムでアニメーションを作るときも仕組みは同じです。すこしずつ絵をずらして描いたフレームを用意し、順に表示しています。コードでは、</p>
<pre class="syntax-highlight">
<span class="synStatement">while</span> (<span class="synConstant">true</span>) {
<span class="synComment">// ボールを速度分だけ移動させる</span>
x += vx;
y += vy;
<span class="synComment">// ボールを再描画</span>
repaint();
}
</pre>
<p>の部分です。ボールの位置(x,y)を少しずらして(vx,vy分だけ)1フレームを描き、またボールの位置をずらして1フレームを描くというのを whileループで繰り返しています。フレームを描くのがアニメーターさんじゃなくてコンピュータってこと以外、テレビのアニメと同じでしょ?ちなみにフレームを実際に描画する処理はpaintComponent()に書きます。上のコードはrepaint()でpaintComponent()を呼び出しています。</p>
<h4>スレッド</h4>
<p>スレッドとは処理の流れのことです。プログラムを実行するとメインスレッドが開始され、順次動作が進みます。コードではMainPanel()コンストラクタの実行はメインスレッドが担当します。そしてMainPanel()の中で新しいスレッドを作成して<span style="color:#FF0000;">run()を実行する別の処理の流れを作り出しています</span>。</p>
<pre class="syntax-highlight">
<span class="synComment">// スレッドを起動</span>
thread = <span class="synStatement">new</span> Thread(<span class="synType">this</span>);
thread.start();
</pre>
<p>new Thread()でスレッドオブジェクトを作成してstart()でスレッドを開始します。この新しいスレッドがrun()を実行するという仕掛けです。<span style="color:#FF0000;">run()は直接呼び出せないので注意!start()を呼び出すとrun()が実行されます</span>。run()はRunnableを実装しているクラスに実装します。Thread()に与えている引数thisはこのクラス(MainPanel)が Runnableを実装していることを表しています。run()の中は先ほど解説したアニメーション処理を実行しています。つまり、アニメーション処理はメインスレッドではなく、新しく作られたスレッドが担当しています。</p>
<p>run()ではThread.sleep()で休止しています。これはなぜ必要なのでしょうか?</p>
<pre class="syntax-highlight">
<span class="synComment">// 20ミリ秒だけ休止</span>
<span class="synStatement">try</span> {
Thread.sleep(<span class="synConstant">20</span>);
} <span class="synStatement">catch</span> (InterruptedException e) {
e.printStackTrace();
}
</pre>
<p>ためしに上の部分をはずして実行してみましょう。ボールが見えますか?あまりにも早く動いて一瞬で見えなくなってしまうはずです。コンピュータの速度はものすごく速いので休止を入れないととんでもなく速いアニメーションになってしまうのです。<span style="color:#FF0000;">Thread.sleep()はアニメーションの速度を調節するために必要です</span>(CPUを独占せず他のスレッドに制御を渡すという役目もあります)。</p>
<h4>ボールの描画</h4>
<p>ボールを描いている部分はpaintComponent()内の</p>
<p> </p>
<pre class="syntax-highlight">
<span class="synComment">// 青いボールを描く</span>
g.setColor(Color.BLUE);
g.fillOval(x - SIZE / <span class="synConstant">2</span>, y - SIZE / <span class="synConstant">2</span>, SIZE, SIZE);
</pre>
<p>です。(x,y)は円の中心の座標、SIZEは円の直径の大きさであることに注意しましょう。図解すると下のようになります。</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20090827215311" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20090827/20090827215311.gif" alt="f:id:aidiary:20090827215311g:image" title="f:id:aidiary:20090827215311g:image" class="hatena-fotolife"></a></p>
<p>fillOval()は左上の座標と幅、高さを引数に取るため上のコードになっています。次回からは(x,y)を円の左上の座標として円を描きます。</p>
<h4>ボールの移動</h4>
<p>最後にボールの移動処理について解説します。ボールが移動する仕組みを図示すると下のようになります。</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20090827215312" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20090827/20090827215312.gif" alt="f:id:aidiary:20090827215312g:image" title="f:id:aidiary:20090827215312g:image" class="hatena-fotolife"></a></p>
<p>ここで重要なのは、<span style="color:#FF0000;">x方向とy方向の移動を別々に考える</span>ということです(物理のテストでいい点とるためにも重要です)。上のプログラムではx方向の移動(x += vx)とy方向の移動(y += vy)を別々に考えています。別々の移動を合わせることによって、つまりx方向とy方向の移動を合わせることによって斜めの移動を実現することができます。</p>
<p>移動速度は(vx,vy)を変えることで変更できます。速度というのは単位時間でどれくらい移動するかを表した量です。数字(の絶対値)が大きいほど速く移動します。数字を大きくしたりマイナスにしたりといろいろ変えて実験してみましょう。</p>
<p>実行するとわかりますが、このボール、端へ行くと見えなくなっちゃいます。次回はボールがウィンドウ枠のところで跳ね返る処理を実装してみます。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: ボールが跳ね返る処理
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/20/2004 10:11:30 PM
CATEGORY: Javagame
-----
BODY:
<div class="section">
<p>ボールがウィンドウの端に当たったら跳ね返るようにしてみます。</p>
<p><a href="http://d.hatena.ne.jp/aidiary/files/bound_ball.jar">bound_ball.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/bound_ball.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></p>
<h4>ボールの描画</h4>
<p><a href="http://d.hatena.ne.jp/aidiary/20040919/1251377847">ボールを動かす</a>ではボールの位置座標を円の中心にとっていましたが、今回は円を囲む矩形の左上の座標に変更しています。実際、Javaの円の描画は円を囲む矩形の左上の座標を基準としているためこちらの方が都合がいいです。ボールの描画部分が少し異なっているので比較してみてください。</p>
<pre class="syntax-highlight">
<span class="synComment">// 前回、(x,y)は円の中心の座標</span>
g.fillOval(x - SIZE / <span class="synConstant">2</span>, y - SIZE / <span class="synConstant">2</span>, SIZE, SIZE);
<span class="synComment">// 今回、(x,y)は円の左上の座標</span>
g.fillOval(x, y, SIZE, SIZE);
</pre>
<p>円の左上の座標を(x,y)とした方が簡単ですね。</p>
<h4>跳ね返り処理</h4>
<p>跳ね返り処理のポイントは</p>
<p> </p>
<pre class="syntax-highlight">
<span class="synComment">// 左または右に当たったらx方向速度の符号を反転させる</span>
<span class="synStatement">if</span> (x &#60; <span class="synConstant">0</span> || x &#62; WIDTH - SIZE) {
vx = -vx;
}
<span class="synComment">// 上または下に当たったらy方向速度の符号を反転させる</span>
<span class="synStatement">if</span> (y &#60; <span class="synConstant">0</span> || y &#62; HEIGHT - SIZE) {
vy = -vy;
}
</pre>
<p>の部分です。ボールが上下左右に当たったとき<span style="color:#FF0000;">速度の符号を反転させています</span>。vxはx方向の移動速度でした。vxが負のとき左へ移動し、正のとき右へ移動します。符号を反転させると今まで左へ移動していたら右へ、今まで右へ移動していたら左へというように逆方向に移動を始めるわけです。</p>
<p>vyも同様です。vyはy方向の移動速度でした。vyが負のとき上へ移動し、正のとき下へ移動します。符号を反転させると今まで上へ移動していたら下へ、今まで下へ移動していたら上へというように逆方向に移動を始めるわけです。ボールを動かすも書きましたが、ここでもx方向とy方向はまったく別々に考えることができます。</p>
<p>ボールの跳ね返り処理は<span style="color:#FF0000;">ピンポンゲーム</span>や<span style="color:#FF0000;">ブロック崩し</span>に応用できますね。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: RPGを作ろう
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/21/2004 11:23:03 PM
CATEGORY: Javagame
-----
BODY:
<div class="section">
<p>RPG編ではドラクエ1の旅立ちの場面(下図)の実装を目指します。</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20100306231938" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20100306/20100306231938.gif" alt="f:id:aidiary:20100306231938g:image" title="f:id:aidiary:20100306231938g:image" class="hatena-fotolife"></a></p>
<p>ドラクエ1なんて若い人は知らないでしょうね(って自分もそんなに年とってないけど)。私もリアルタイムでプレイした世代ではないんですが(私の最初にやったドラクエは4でした)、プレイしたことはあります。4と比べてかなり操作性が悪くいらいらした覚えがあります。</p>
<p>画面も今のゲームと比べるとずいぶんしょぼいですね。画面を見ると分かりますがキャラクターは全員カメラ目線で歩き方もがに股でした(笑)。コマンドも「はなす」の後、東西南北を指定していました。階段を下りるのも「かいだん」コマンドが必要でした。</p>
<p>と一方的に悪いとこばかり書いてますがそのような処理でさえ、自分で実装するとなると結構難しいのです(そして楽しいのです)。RPG編ではドラクエ1の完成目指して少しずつ実装を解説していきます。ただし、ドラクエ1の本当の実装がどうなっているかわからないので完全に一致してはいないと思います。</p>
<p>さて勇者は無事旅立つことができるのでしょうか?</p>
<p>ドラクエがどのような経緯でできたか知りたい方は<a href="http://www.amazon.co.jp/gp/product/4870250039/sr=8-2/qid=1155615816/ref=sr_1_2/503-6206187-5559910?ie=UTF8&s=gateway" target="_blank">ドラゴンクエストへの道</a>をお勧めします。もう絶版なので中古で買ってください。初めて作った人はすごいです。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 勇者登場
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/21/2004 11:27:12 PM
CATEGORY: Javagame
-----
BODY:
<div class="section">
<p>まずは一番簡単なところから始めましょう。勇者を画面に描いてみます。勇者ですが、</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20100306231941" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20100306/20100306231941.gif" alt="f:id:aidiary:20100306231941g:image" title="f:id:aidiary:20100306231941g:image" class="hatena-fotolife"></a></p>
<p>を使います。いきなり、はじめにの画像と違いますがまあいいでしょう。素材はすべて<a href="http://hp.vector.co.jp/authors/VA020046/" target="_blank">J-JSoft</a>さんのサイトからMACKさんの素材をお借りしています。</p>
<p><a href="http://d.hatena.ne.jp/aidiary/files/rpg01.jar">rpg01.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/rpg01.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></p>
<h4>イメージの仕様</h4>
<p>画像は32×32ピクセルのGIF形式です。今後使うマップチップ(扉とか壁とか宝箱とか)もすべて<span style="color:#FF0000;">32×32ピクセルのGIF形式</span>に統一しています。</p>
<p>GIFを主に使いますがJPGでもPNGでもかまいません。Javaではまったく同じように扱えます。ただし、プログラム中で透過処理(キャラクタ絵の背景を透明にする処理)を実装していません。そのため、透過処理をほどこせるイメージ形式、GIFかPNGを使ったほうがいいでしょう。透過処理をほどこしたイメージの作成方法は機会があったら解説します。</p>
<p>JavaではデフォルトでBMPを使うことはできませんので注意してください。Windows XPでは<span style="color:#FF0000;">ペイントを使ってBMPのイメージをGIF、JPG、PNGで保存することができます</span>。BMPの画像は変換しましょう。</p>
<p>イメージを描画する手法については基礎編の<a href="http://d.hatena.ne.jp/aidiary/20041009/1251460483">イメージを表示する</a>を見てください。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: お城を建てる
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/21/2004 11:31:38 PM
CATEGORY: Javagame
-----
BODY:
<div class="section">
<p>前回、勇者はすみっこでいじけてたのでお城を建ててあげましょう。というわけで今回はマップの作り方です。ここで書くコードは拡張性をまったく考慮してません。本当はマップ専用のクラスを作って処理を分離するところですがそれはもっと後の回で取り上げます。</p>
<p><a href="http://d.hatena.ne.jp/aidiary/files/rpg02.jar">rpg02.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/rpg02.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></p>
<h4>マップの構造</h4>
<p>今回作るマップは床には<a href="http://f.hatena.ne.jp/aidiary/20100306231940" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20100306/20100306231940.gif" alt="f:id:aidiary:20100306231940g:image" title="f:id:aidiary:20100306231940g:image" class="hatena-fotolife"></a>、壁には<a href="http://f.hatena.ne.jp/aidiary/20100306231946" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20100306/20100306231946.gif" alt="f:id:aidiary:20100306231946g:image" title="f:id:aidiary:20100306231946g:image" class="hatena-fotolife"></a>を使いましょう。</p>
<p>コード中でマップを定義しているのは、mapという15×15の二次元配列です。配列の1つの要素がマップの1マスにあたるので15マス×15マスのマップです。</p>
<pre class="syntax-highlight">
<span class="synComment">// マップ 0:床 1:壁</span>
<span class="synType">private</span> <span class="synType">int</span>[][] map = {
{<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>},
{<span class="synConstant">1</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">1</span>},
{<span class="synConstant">1</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">1</span>},
{<span class="synConstant">1</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">1</span>},
{<span class="synConstant">1</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">1</span>},
{<span class="synConstant">1</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">1</span>},
{<span class="synConstant">1</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">1</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">1</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">1</span>},
{<span class="synConstant">1</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">1</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">1</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">1</span>},
{<span class="synConstant">1</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">1</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">1</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">1</span>},
{<span class="synConstant">1</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">0</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">1</span>},
{<span class="synConstant">1</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">1</span>},
{<span class="synConstant">1</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">1</span>},
{<span class="synConstant">1</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">1</span>},
{<span class="synConstant">1</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">0</span>,<span class="synConstant">1</span>},
{<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>,<span class="synConstant">1</span>} };
</pre>
<p>目を凝らしてよーく見てください。0は床で1は壁です。なんとなくマップに見えるでしょ?今回は床と壁ですので0と1しか使いませんが、水とか木のマップチップも使いたければ2とか3とか使っても大丈夫です。ただ、配列を0とか1とか手で打ち込んで書くのはむちゃくちゃ面倒です。後でお絵かきするようにマップが作れるマップエディタも作ってみます。</p>
<p>このように0と1のマップをイメージで表示するための処理は下のようになります。</p>
<pre class="syntax-highlight">
<span class="synType">private</span> <span class="synType">void</span> drawMap(Graphics g) {
<span class="synStatement">for</span> (<span class="synType">int</span> i = <span class="synConstant">0</span>; i &#60; ROW; i++) {
<span class="synStatement">for</span> (<span class="synType">int</span> j = <span class="synConstant">0</span>; j &#60; COL; j++) {
<span class="synComment">// mapの値に応じて画像を描く</span>
<span class="synStatement">switch</span> (map[i][j]) {
<span class="synStatement">case</span> <span class="synConstant">0</span> : <span class="synComment">// 床</span>
g.drawImage(floorImage, j * CS, i * CS, <span class="synType">this</span>);
<span class="synStatement">break</span>;
<span class="synStatement">case</span> <span class="synConstant">1</span> : <span class="synComment">// 壁</span>
g.drawImage(wallImage, j * CS, i * CS, <span class="synType">this</span>);
<span class="synStatement">break</span>;
}
}
}
}
</pre>
<p>ROWは行数15、COLは列数15、CSはマップチップのサイズ32です(下の図を見てください)。「15×15のマップ」と書いた場合は前が行数で後が列数とします。</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20100306231944" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20100306/20100306231944.gif" alt="f:id:aidiary:20100306231944g:image" title="f:id:aidiary:20100306231944g:image" class="hatena-fotolife"></a></p>
<p>マップ配列はmap[行][列]です。マップ内の値(0か1)に応じてマップチップを画面に描いています。ここで注意しなければならないのはマップの行・列と画面座標の対応関係です。i行j列のマップチップの左上の座標は(j*CS, i*CS)となります(上図参照)。イメージを描画するときは画面上の座標を使う必要があるので</p>
<pre class="syntax-highlight">
g.drawImage(floorImage, j * CS, i * CS, <span class="synType">this</span>);
</pre>
<p>となります。jが先です。</p>
<p>どうです、なかなか立派なお城ができたでしょう?出口はありませんが(笑)</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 勇者は第一歩を踏み出した
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/21/2004 11:34:50 PM
CATEGORY: Javagame
-----
BODY:
<div class="section">
<p>マップに勇者を乗せて移動できるようにしましょう。勇者が第一歩を踏み出すときがきました。</p>
<p><a href="http://d.hatena.ne.jp/aidiary/files/rpg03.jar">rpg03.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/rpg03.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></p>
<h4>勇者をキーボードで動かす</h4>
<p>まず勇者がマップ上のどの位置にいるかを表す変数(x,y)を用意します。そして、勇者の位置を(1,1)に初期化しています。これは、マップの1行1列に勇者がいることを表しています。</p>
<pre class="syntax-highlight">
<span class="synComment">// 勇者の位置を初期化</span>
x = <span class="synConstant">1</span>;
y = <span class="synConstant">1</span>;
</pre>
<p>勇者の移動はキーボードで行います。<a href="http://d.hatena.ne.jp/aidiary/20050115/1251462005">キーボードの使い方</a>を見てください。コードでは、keyPressed()に移動処理を書いています。</p>
<pre class="syntax-highlight">
<span class="synType">public</span> <span class="synType">void</span> keyPressed(KeyEvent e) {
<span class="synComment">// 押されたキーを調べる</span>
<span class="synType">int</span> keyCode = e.getKeyCode();
<span class="synStatement">switch</span> (keyCode) {
<span class="synStatement">case</span> KeyEvent.VK_LEFT :
<span class="synComment">// 左キーだったら勇者を1歩左へ</span>
x--;
<span class="synStatement">break</span>;
<span class="synStatement">case</span> KeyEvent.VK_RIGHT :
<span class="synComment">// 右キーだったら勇者を1歩右へ</span>
x++;
<span class="synStatement">break</span>;
<span class="synStatement">case</span> KeyEvent.VK_UP :
<span class="synComment">// 上キーだったら勇者を1歩上へ</span>
y--;
<span class="synStatement">break</span>;
<span class="synStatement">case</span> KeyEvent.VK_DOWN :
<span class="synComment">// 下キーだったら勇者を1歩下へ</span>
y++;
<span class="synStatement">break</span>;
}
<span class="synComment">// 勇者の位置を動かしたので再描画</span>
repaint();
}
</pre>
<p>勇者が上下左右へ移動したとき、(x,y)を変化させます。(x,y)をどう変化させるかは下図を参考にしてください。8方向の変化量を描いてありますが、実際は4方向へ制限しています。</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20100306231945" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20100306/20100306231945.gif" alt="f:id:aidiary:20100306231945g:image" title="f:id:aidiary:20100306231945g:image" class="hatena-fotolife"></a></p>
<p>keyPressed()の中に勇者の位置を変更するコードを直接書きましたが、実はこの書き方は好ましくないようです。後で別の実装法を取り上げます。</p>
<p>keyPressed()の最後にあるrepaint()は非常に重要です。勇者の位置を変化させた後は必ず再描画してください。再描画しないと勇者は動きません(移動先の座標に描画されません)。私自身、repaint()を書き忘れてどうして動かないかかなり悩んだことがありました。</p>
<p>これで勇者を動かせるようになりました。ただ、ドラクエの移動とかなり違いますよね。ドラクエの移動はマップスクロールをしているからです。スクロール処理についてはスクロール処理1で取り上げます。あと、壁の上には乗らないでくださいね(笑)壁にぶつかる処理は次回取り上げます。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: ボールをたくさん作る
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/22/2004 10:14:58 PM
CATEGORY: Javagame
-----
BODY:
<div class="section">
<p>跳ね返るボールを複数作ってみます。今回は<span style="color:#FF0000;">ボールを表すクラスを別途作りました</span>。このクラス(オブジェクトの雛形)を用いればいくつでもボールが作れます。オブジェクト指向が非常に強力な仕組みであることを理解してください。オブジェクト指向については特に解説はしません。クラス、オブジェクト等の言葉がわからないときは先にJavaの入門書を読んでみてください。</p>
<p><a href="http://d.hatena.ne.jp/aidiary/files/many_balls.jar">many_balls.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/many_balls.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></p>
<h4>オブジェクト指向</h4>
<p>今回はオブジェクト指向を使います。ボールに関する情報はすべてBallクラスに集中させてMainPanelとは独立させましょう。Ballに関する情報は何でしょう?ボールの大きさ、位置、速度などが考えられます。また、ボールに関する操作としてボールの移動、ボールの描画、跳ね返り処理などが考えられます。このように<span style="color:#FF0000;">データとそれに対する操作をクラスとしてパックできるのがオブジェクト指向の利点です</span>。</p>
<p>Ballのコンストラクタを見てください。コンストラクタではボールの位置(x,y)、ボールの速度(vx,vy)を受け取っています。</p>
<p> </p>
<pre class="syntax-highlight">
<span class="synComment">// コンストラクタ(新しいボールオブジェクトを作る工場)</span>
<span class="synType">public</span> Ball(<span class="synType">int</span> x, <span class="synType">int</span> y, <span class="synType">int</span> vx, <span class="synType">int</span> vy) {
}
</pre>
<h4>オブジェクトの配列</h4>
<p>ボールの作成で注意しなければならないのは、</p>
<p> </p>
<pre class="syntax-highlight">
<span class="synComment">// ボールを格納する配列</span>
<span class="synType">private</span> Ball[] ball;
<span class="synComment">// ボールを格納する配列を作成</span>
ball = <span class="synStatement">new</span> Ball[NUM_BALL];
<span class="synComment">// ボールを作成</span>
ball[<span class="synConstant">0</span>] = <span class="synStatement">new</span> Ball(<span class="synConstant">0</span>, <span class="synConstant">0</span>, <span class="synConstant">1</span>, <span class="synConstant">2</span>);
ball[<span class="synConstant">1</span>] = <span class="synStatement">new</span> Ball(<span class="synConstant">10</span>, <span class="synConstant">10</span>, <span class="synConstant">3</span>, -<span class="synConstant">2</span>);
ball[<span class="synConstant">2</span>] = <span class="synStatement">new</span> Ball(<span class="synConstant">50</span>, <span class="synConstant">0</span>, -<span class="synConstant">2</span>, <span class="synConstant">3</span>);
ball[<span class="synConstant">3</span>] = <span class="synStatement">new</span> Ball(<span class="synConstant">0</span>, <span class="synConstant">0</span>, <span class="synConstant">12</span>, <span class="synConstant">8</span>);
</pre>
<p>この部分でしょうか。ここで、<span style="color:#FF0000;">ballはBall型オブジェクトを格納する配列</span>という点に注意してください。<span style="color:#FF0000;">配列を作っただけではオブジェクトは作られません</span>。配列の各要素にオブジェクトをnewで作って代入するのを忘れないようにしましょう。私がJava入門者のときは配列だけ作ってオブジェクトの代入を忘れたということがたびたびありました。描画はオブジェクトにまかせる</p>
<p>あと描画のところも見てください。</p>
<p> </p>
<pre class="syntax-highlight">
<span class="synComment">// 各ボールを描画</span>
<span class="synStatement">for</span> (<span class="synType">int</span> i = <span class="synConstant">0</span>; i &#60; NUM_BALL; i++) {
ball[i].draw(g);
}
</pre>
<p>各ボールの描画はBallクラスのdraw()にgを渡して丸投げしています。paintComponent()でfillOval()を使って図形を直接描画することはしません。これもよく使うテクニックで<span style="color:#FF0000;">委譲</span>といいます。Ballオブジェクトに描画を委譲する(おまかせする)という意味ですね。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 勇者は壁にぶつかった
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/23/2004 11:39:48 PM
CATEGORY: Javagame
-----
BODY:
<div class="section">
<p>勇者が壁にぶつかるようにしてみます。あっ、別に挫折するわけじゃないですよ(笑)</p>
<p><a href="http://d.hatena.ne.jp/aidiary/files/rpg04.jar">rpg04.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/rpg04.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></p>
<h4>壁にぶつかる処理</h4>
<p>壁にぶつかる=壁のあるマスには移動できないようにするということです。なので、前回勇者の移動処理を書いていたkeyPressed()から見てみます。</p>
<pre class="syntax-highlight">
<span class="synType">public</span> <span class="synType">void</span> keyPressed(KeyEvent e) {
<span class="synComment">// 押されたキーを調べる</span>
<span class="synType">int</span> keyCode = e.getKeyCode();
<span class="synStatement">switch</span> (keyCode) {
<span class="synStatement">case</span> KeyEvent.VK_LEFT :
<span class="synComment">// 左キーだったら勇者を1歩左へ</span>
x--;
<span class="synStatement">break</span>;
<span class="synStatement">case</span> KeyEvent.VK_RIGHT :
<span class="synComment">// 右キーだったら勇者を1歩右へ</span>
x++;
<span class="synStatement">break</span>;
<span class="synStatement">case</span> KeyEvent.VK_UP :
<span class="synComment">// 上キーだったら勇者を1歩上へ</span>
y--;
<span class="synStatement">break</span>;
<span class="synStatement">case</span> KeyEvent.VK_DOWN :
<span class="synComment">// 下キーだったら勇者を1歩下へ</span>
y++;
<span class="synStatement">break</span>;
}
<span class="synComment">// 勇者の位置を動かしたので再描画</span>
repaint();
}
</pre>
<p>前回は各caseの中で直接勇者の座標(x,y)を変化させていましたが、今回はmove()というメソッドを使うことにします。move()は引数としてLEFT、RIGHT、UP、DOWN(定数として宣言してある)を取り、その方向に移動できる場合のみ移動するメソッドです。</p>
<pre class="syntax-highlight">
<span class="synType">private</span> <span class="synType">void</span> move(<span class="synType">int</span> dir) {
<span class="synComment">// dirの方向でぶつからなければ移動する</span>
<span class="synStatement">switch</span> (dir) {
<span class="synStatement">case</span> LEFT:
<span class="synStatement">if</span> (!isHit(x-<span class="synConstant">1</span>, y)) x--;
<span class="synStatement">break</span>;
<span class="synStatement">case</span> RIGHT:
<span class="synStatement">if</span> (!isHit(x+<span class="synConstant">1</span>, y)) x++;
<span class="synStatement">break</span>;
<span class="synStatement">case</span> UP:
<span class="synStatement">if</span> (!isHit(x, y-<span class="synConstant">1</span>)) y--;
<span class="synStatement">break</span>;
<span class="synStatement">case</span> DOWN:
<span class="synStatement">if</span> (!isHit(x, y+<span class="synConstant">1</span>)) y++;
<span class="synStatement">break</span>;
}
}
</pre>
<p>move()の中では勇者の座標(x,y)を変更する前に移動先の座標にぶつかるもの(壁)があるかないかをisHit()で調べています。 isHit()は引数の座標にぶつかるものがあったらtrue、なかったらfalseを返すメソッドです。移動先にぶつかるものがない場合のみ勇者を移動させています。ぶつかった場合はif文の中身が実行されないので移動しない点に注意してください。</p>
<pre class="syntax-highlight">
<span class="synType">private</span> <span class="synType">boolean</span> isHit(<span class="synType">int</span> x, <span class="synType">int</span> y) {
<span class="synComment">// (x,y)に壁があったらぶつかる</span>
<span class="synStatement">if</span> (map[y][x] == <span class="synConstant">1</span>) {
<span class="synStatement">return</span> <span class="synConstant">true</span>;
}
<span class="synComment">// なければぶつからない</span>
<span class="synStatement">return</span> <span class="synConstant">false</span>;
}
</pre>
<p>壁はmap[][]の中で1で表現してたことを思い出してください。壁以外にぶつかるもの(勇者以外のキャラクターや岩山など)を追加した場合でもこのメソッド内でチェックすれば大丈夫です。</p>
<p>これで勇者はこの城に閉じ込められました。餓死しないうちに出口を作ってやらねば(笑)</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 勇者は足踏みした
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/24/2004 11:46:43 PM
CATEGORY: Javagame
-----
BODY:
<div class="section">
<p>前回の勇者は移動はできますが足踏みしてませんね。足踏みってのは言うまでもないと思いますが</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20100306231942" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20100306/20100306231942.gif" alt="f:id:aidiary:20100306231942g:image" title="f:id:aidiary:20100306231942g:image" class="hatena-fotolife"></a></p>
<p>のことです。</p>
<p><a href="http://d.hatena.ne.jp/aidiary/files/rpg05.jar">rpg05.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/rpg05.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></p>
<h4>アニメーション</h4>
<p><a href="http://d.hatena.ne.jp/aidiary/20040919/1251377847">ボールを動かす</a>にも書きましたが、アニメーションはいくつかの画像を順番に切り替えることで作れます。今回使う画像は下の2つです。</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20100306231943" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20100306/20100306231943.gif" alt="f:id:aidiary:20100306231943g:image" title="f:id:aidiary:20100306231943g:image" class="hatena-fotolife"></a></p>
<p>よーく見てください。手足の位置が少しずれています。この2つの画像を順番に切り替えれば足踏みしているように見えるわけです。</p>
<h4>アニメーション用スレッド</h4>
<p>アニメーションを実現する手段としてスレッドを使います。今回は今までと違ってアニメーション用スレッドクラスを新しく作りました。前は Runnableインタフェースを実装していましたが、今回はThreadクラスを拡張しています。run()の中に実行させたい処理を書くのはどっちでも同じです。</p>
<pre class="syntax-highlight">
<span class="synComment">// アニメーションクラス</span>
<span class="synType">private</span> <span class="synType">class</span> AnimationThread <span class="synType">extends</span> Thread {
<span class="synType">public</span> <span class="synType">void</span> run() {
<span class="synStatement">while</span> (<span class="synConstant">true</span>) {
<span class="synComment">// countを切り替える</span>
<span class="synStatement">if</span> (count == <span class="synConstant">0</span>) {
count = <span class="synConstant">1</span>;
} <span class="synStatement">else</span> <span class="synStatement">if</span> (count == <span class="synConstant">1</span>) {
count = <span class="synConstant">0</span>;
}
repaint();
<span class="synComment">// 300ミリ秒休止=300ミリ秒おきに勇者の絵を切り替える</span>
<span class="synStatement">try</span> {
Thread.sleep(<span class="synConstant">300</span>);
} <span class="synStatement">catch</span> (InterruptedException e) {
e.printStackTrace();
}
}
}
}
</pre>
<p>内部クラスというのはクラスの中に作ったクラスのことです。今回はMainPanelクラスの中にAnimationThreadクラスを作っているのでAnimationThreadは内部クラスになっています。内部クラスにするとMainPanelのインスタンス変数にアクセスできるという利点があります。例ではcountにアクセスしています。</p>
<p>run()では300ミリ秒ごとにcountの値を0、1、0、1、0、1、0、1・・・というように切り替えています。countの値が0のときは左の画像、countの値が1のときは右の画像を表示するようにするためです。</p>
<h4>画像の表示</h4>
<p>countの値に応じて表示する画像を切り替えます。イメージの表示にdrawImage()を使うのは今までどおりですが、今回は引数が違っています。今回使ったdrawImage()は、</p>
<pre class="syntax-highlight">
g.drawImage(Image img, <span class="synType">int</span> dx1, <span class="synType">int</span> dy1, <span class="synType">int</span> dx2, <span class="synType">int</span> dy2,
<span class="synType">int</span> sx1, <span class="synType">int</span> sy1, <span class="synType">int</span> sx2, <span class="synType">int</span> sy2, ImageObserver observer)
</pre>
<p>です。このメソッドはソース画像(img)の(sx1,sy1)-(sx2,sy2)の部分をgの(dx1,dy1)-(dx2,dy2)に描画できます。実際に画像を表示するコードは、</p>
<pre class="syntax-highlight">
<span class="synComment">// countの値に応じて表示する画像を切り替える</span>
g.drawImage(heroImage, x*CS, y*CS, x*CS+CS, y*CS+CS,
count*CS, <span class="synConstant">0</span>, CS+count*CS, CS, <span class="synType">this</span>);
</pre>
<p>の部分です。このコードの意味を図示すると下のようになります。ソース画像(heroImage)の座標をcountによって変えているのが分かるでしょうか?</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20100306231939" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20100306/20100306231939.gif" alt="f:id:aidiary:20100306231939g:image" title="f:id:aidiary:20100306231939g:image" class="hatena-fotolife"></a></p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 勇者はがにまたが直った
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 09/25/2004 08:13:57 PM
CATEGORY: Javagame
-----
BODY:
<div class="section">
<p>前回までの勇者はどの方向に移動してもこっちを向いていました。ドラクエ1と同じです。これだとあまりかっこよくないので移動する方向をちゃんと向くようにしてみます。</p>
<p><a href="http://d.hatena.ne.jp/aidiary/files/rpg06.jar">rpg06.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/rpg06.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></p>
<h4>四方向の画像を用意する</h4>
<p>用意した画像は下のです。前回と同じく足踏みさせるので各方向の画像を2枚ずつ用意しました。countが0のとき左の画像を表示し、countが 1のとき右の画像を表示するのは前回と同じです。今回は、それに加えて勇者の向いている方向に応じて4種類の画像を切り替えます。</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20100327200909" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20100327/20100327200909.gif" alt="f:id:aidiary:20100327200909g:image" title="f:id:aidiary:20100327200909g:image" class="hatena-fotolife"></a></p>
<h4>どの方向を向いているか</h4>
<p>向いている方向によって画像を切り替えたいので、まずは、勇者の向いている方向を表す変数directionを用意します。directionは DOWN(下向き)で初期化しています。</p>
<pre class="syntax-highlight">
<span class="synComment">// 勇者の向いている方向(LEFT,RIGHT,UP,DOWNのどれか)</span>
<span class="synType">private</span> <span class="synType">int</span> direction;
direction = DOWN;
</pre>
<p>次に、移動したときに向いている方向が変わるようにするので、move()を改造します。</p>
<pre class="syntax-highlight">
<span class="synType">private</span> <span class="synType">void</span> move(<span class="synType">int</span> dir) {
<span class="synComment">// dirの方向でぶつからなければ移動する</span>
<span class="synStatement">switch</span> (dir) {
<span class="synStatement">case</span> LEFT :
<span class="synStatement">if</span> (!isHit(x - <span class="synConstant">1</span>, y)) x--;
direction = LEFT;
<span class="synStatement">break</span>;
<span class="synStatement">case</span> RIGHT :
<span class="synStatement">if</span> (!isHit(x + <span class="synConstant">1</span>, y)) x++;
direction = RIGHT;
<span class="synStatement">break</span>;
<span class="synStatement">case</span> UP :
<span class="synStatement">if</span> (!isHit(x, y - <span class="synConstant">1</span>)) y--;
direction = UP;
<span class="synStatement">break</span>;
<span class="synStatement">case</span> DOWN :
<span class="synStatement">if</span> (!isHit(x, y + <span class="synConstant">1</span>)) y++;
direction = DOWN;
<span class="synStatement">break</span>;
}
}
</pre>
<p>移動した方向にあわせてdirectionを変更しています。ここで、実際に移動できなかった場合でも向いている方向を変えている点に注意してください。ドラクエでは壁があって進めなくても勇者の向きだけは変わっていました。</p>
<h4>画像の表示</h4>
<p>画像の表示は前回のようにcountで左右の画像変えると同時にdirectionで4枚の画像を切り替えます。</p>
<pre class="syntax-highlight">
<span class="synType">private</span> <span class="synType">void</span> drawChara(Graphics g) {
<span class="synComment">// countとdirectionの値に応じて表示する画像を切り替える</span>
g.drawImage(heroImage, x * CS, y * CS, x * CS + CS, y * CS + CS,
count * CS, direction * CS, CS + count * CS, direction * CS + CS, <span class="synType">this</span>);
}
</pre>
<p>directionの取る値はLEFT(0)、RIGHT(1)、UP(2)、DOWN(3)で各方向を向いている勇者のイメージが並ぶ順番と同じです。つまり、directionがLEFT(0)のときは上から0番目の左を向いている勇者の画像を表示します。directionがRIGHT(1) のときは上から1番目の右を向いている勇者の画像を表示します。以下同様です。図示すると下のようになります。</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20100327200908" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20100327/20100327200908.gif" alt="f:id:aidiary:20100327200908g:image" title="f:id:aidiary:20100327200908g:image" class="hatena-fotolife"></a></p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: WAVEの再生
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 10/03/2004 10:20:47 PM
CATEGORY: Javagame
-----
BODY:
<div class="section">
<p>音を鳴らしてみます。ただ鳴らすだけではつまらないのでボールが跳ねるプログラムを改造し、ボールが壁に当たったら「ポン」と鳴るようにしてみます。ちなみに効果音はwav形式のファイルを使います。</p>
<p>効果音は<a href="http://osabisi.sakura.ne.jp/m2/">ザ・マッチメイカァズ</a>さんからお借りしました。</p>
<p><a href="http://d.hatena.ne.jp/aidiary/files/sound.jar">sound.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/sound.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></p>
<h4>サウンド</h4>
<p>ポイントは</p>
<p> </p>
<pre class="syntax-highlight">
<span class="synComment">// サウンド</span>
<span class="synType">private</span> AudioClip pong;
<span class="synComment">// サウンドをロード</span>
pong = Applet.newAudioClip(getClass().getResource(<span class="synConstant">&#34;pong.wav&#34;</span>));
</pre>
<p>です。pong.wavというファイルをクラスファイルと同じ場所に用意しておいてください。サウンドファイルのロードはnewAudioClip ()を使います。こう使うものだと覚えてください。サウンドをロードしたら後は好きなところでplay()を呼び出して鳴らすだけです。</p>
<p> </p>
<pre class="syntax-highlight">
<span class="synComment">// 効果音を鳴らす</span>
pong.play();
</pre>
<p>実はサウンドをロードする関数として<span style="color:#FF0000;">AppletクラスのgetAudioClip()</span>というのもあります。こっちのメソッドの方があちこちでよく使われているようです。しかし、このメソッドはアプレット内でしか使えないという欠点があります。今回はアプリケーションを作っているためnewAudioClip()メソッドを使いました。このメソッドはAppletクラスのstaticメソッドであるため<span style="color:#FF0000;">アプレット、アプリケーションのどちらでも使えます</span>。</p>
<h4>SoundBall</h4>
<p>前回移動するボールを表すBallクラスを作りました。今回はBallクラスを拡張してSoundBallクラス(跳ね返るとき音がなるボール)を作ってみます。すでにあるクラスの機能を下地にして新しいクラスを作ることを<span style="color:#FF0000;">継承</span>と言います。オブジェクト指向の重要な考え方です。</p>
<p> </p>
<pre class="syntax-highlight">
<span class="synType">public</span> <span class="synType">class</span> SoundBall <span class="synType">extends</span> Ball {
<span class="synComment">// サウンド</span>
<span class="synType">private</span> AudioClip pong;
<span class="synType">public</span> SoundBall(<span class="synType">int</span> x, <span class="synType">int</span> y, <span class="synType">int</span> vx, <span class="synType">int</span> vy)
<span class="synType">super</span>(x, y, vx, vy);
<span class="synComment">// サウンドをロード</span>
pong = Applet.newAudioClip(getClass().getResource(<span class="synConstant">&#34;pong.wav&#34;</span>));
}
<span class="synComment">// move()をオーバーライド</span>
<span class="synType">public</span> <span class="synType">void</span> move() {
<span class="synComment">// ボールを速度分だけ移動させる</span>
x += vx;
y += vy;
<span class="synComment">// 左または右に当たったらx方向速度の符号を反転させる</span>
<span class="synStatement">if</span> (x &#60; <span class="synConstant">0</span> || x &#62; MainPanel.WIDTH - SIZE) {
<span class="synComment">// 壁に当たったら音を鳴らす</span>
pong.play();
vx = -vx;
}
<span class="synComment">// 上または下に当たったらy方向速度の符号を反転させる</span>
<span class="synStatement">if</span> (y &#60; <span class="synConstant">0</span> || y &#62; MainPanel.HEIGHT - SIZE) {
<span class="synComment">// 壁に当たったら音を鳴らす</span>
pong.play();
vy = -vy;
}
}
}
</pre>
<p>Ballクラスを継承しているためボールの位置を表すx,yや速度を表すvx,vyはすでに持っています。super()を使うとスーパークラス(Ball)のコンストラクタを呼び出せ、Ballクラスのインスタンス変数を初期化できます。SoundBallではBallの持ってない機能(音を鳴らす機能)だけコンストラクタに追加しています。</p>
<p>move()はBallクラスにもありましたが、音を鳴らす機能を追加したいので再定義しています。継承されたクラスでメソッドを上書きすることを<span style="color:#FF0000;">オーバーライド</span>と呼びます。ここでは、壁に当たったとき効果音を再生する処理を追加しています。</p>
<p>実際にボールを作っているのが下のコードです。</p>
<p> </p>
<pre class="syntax-highlight">
<span class="synComment">// 音が鳴るボール</span>
<span class="synType">private</span> SoundBall ball;
<span class="synComment">// ボールを作成</span>
ball = <span class="synStatement">new</span> SoundBall(<span class="synConstant">0</span>, <span class="synConstant">0</span>, <span class="synConstant">5</span>, <span class="synConstant">4</span>);
</pre>
<p>SoundBall()を呼び出して音が鳴るボールを作っています。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: イメージを表示する
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 10/09/2004 08:54:43 PM
CATEGORY: Javagame
-----
BODY:
<div class="section">
<p>イメージを表示してみます。ゲーム作成ではイメージを頻繁に使うためとっても重要です。</p>
<p><a href="http://d.hatena.ne.jp/aidiary/files/draw_image.jar">draw_image.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/draw_image.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></p>
<h4>イメージの表示</h4>
<p>JavaがサポートしているのはGIF、JPG、PNGです。BMPも表示できるにはできますが実装は少し面倒です。ここではGIFを使いますが、JPG、PNGの場合でもまったく同じ方法で表示できます。イメージをファイルから読み込んでいる部分は</p>
<pre class="syntax-highlight">
<span class="synComment">// イメージを読み込む</span>
image = Toolkit.getDefaultToolkit().getImage(
getClass().getResource(<span class="synConstant">&#34;image.gif&#34;</span>));
</pre>
<p>です。どこかで見た覚えないですか?そう、効果音ファイルを読み込んだときにも似たようなのが出てきました。</p>
<p> </p>
<pre class="syntax-highlight">
<span class="synComment">// サウンドをロード</span>
ping = Applet.newAudioClip(getClass().getResource(<span class="synConstant">&#34;ping.wav&#34;</span>));
</pre>
<p>比べてみましょう。イメージの場合は、Toolkit.getDefaultToolkit().getImage()を使います。サウンドの場合は、Applet.newAudioClip()を使います。ファイルの指定方法はどちらも同じくgetClass().getResource()を使っています。これはこういうもんだと覚えておくと便利です。</p>
<p> </p>
<pre class="syntax-highlight">
<span class="synComment">// MediaTrackerに登録</span>
MediaTracker tracker = <span class="synStatement">new</span> MediaTracker(<span class="synType">this</span>);
tracker.addImage(image, <span class="synConstant">0</span>);
<span class="synComment">// イメージ読み込み完了まで待機</span>
<span class="synStatement">try</span> {
tracker.waitForID(<span class="synConstant">0</span>);
} <span class="synStatement">catch</span> (InterruptedException e) {
e.printStackTrace();
}
</pre>
<p>イメージを読み込むときはMediaTrackerを使うべきです。MediaTrackerを使うと画像がロードされたかを調べ、ロードが完了するまでプログラムの実行を待機させることができます。画像のロードはちょっとした時間がかかるため読み込みが完了するまでプログラムを待機させておいた方が安全です。MediaTrackerを使わないと画像がロードされていないのに表示しようとするなどエラーの元になります。</p>
<p>ちなみに使ったイメージは家の犬です。可愛いでしょ?</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20090828205335" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20090828/20090828205335.jpg" alt="f:id:aidiary:20090828205335j:image" title="f:id:aidiary:20090828205335j:image" class="hatena-fotolife"></a></p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: マウスクリック
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 10/16/2004 09:14:11 PM
CATEGORY: Javagame
-----
BODY:
<div class="section">
<p>マウスで画面をクリックすると点が描かれるプログラムを作ります。マウスはキーボードと並んで基本的な入力インタフェースなので簡単なプログラムを書いて慣れておくといいです。</p>
<p><a href="http://d.hatena.ne.jp/aidiary/files/mouse_click.jar">mouse_click.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/mouse_click.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></p>
<h4>クリックイベント</h4>
<p>マウスのクリックイベントを検出するにはまずMouseListenerインタフェースをimplementsし登録します。</p>
<pre class="syntax-highlight">
<span class="synType"> class</span> MainPanel <span class="synType">extends</span> JPanel <span class="synType">implements</span> MouseListener {
<span class="synType">public</span> MainPanel() {
・・・
<span class="synComment">// MouseListenerを登録</span>
addMouseListener(<span class="synType">this</span>);
}
}
</pre>
<p>addMouseListener()の引数thisはこのクラス(MainPanel)がMouseListenerをimplementsしていることを表しています。マウス処理専用のクラスを作ることも可能です。</p>
<p>次に下の5つのマウスイベントハンドラを定義します。</p>
<pre class="syntax-highlight">
<span class="synComment">// マウスをクリックしたとき呼ばれる</span>
<span class="synType">public</span> <span class="synType">void</span> mouseClicked(MouseEvent e) {}
<span class="synComment">// マウスがウィンドウ内に入ったとき呼ばれる</span>
<span class="synType">public</span> <span class="synType">void</span> mouseEntered(MouseEvent e) {}
<span class="synComment">// マウスがウィンドウ外に出たとき呼ばれる</span>
<span class="synType">public</span> <span class="synType">void</span> mouseExited(MouseEvent e) {}
<span class="synComment">// マウスボタンが押されたとき呼ばれる</span>
<span class="synType">public</span> <span class="synType">void</span> mousePressed(MouseEvent e) {}
<span class="synComment">// マウスボタンが離されたとき呼ばれる</span>
<span class="synType">public</span> <span class="synType">void</span> mouseReleased(MouseEvent e) {}
</pre>
<p>今回はボタンが押されたとき点が描かれるようにしたいのでmouseClicked()の処理だけ書きます。ちなみにマウスをクリックしたときはmousePressed()とmouseReleased()も呼ばれますが中に何も書かなければ何もおきません。</p>
<pre class="syntax-highlight">
<span class="synType">public</span> <span class="synType">void</span> mouseClicked(MouseEvent e) {
<span class="synComment">// クリックした座標を得る</span>
<span class="synType">int</span> x = e.getX();
<span class="synType">int</span> y = e.getY();
<span class="synComment">// pointListに登録</span>
pointList.add(<span class="synStatement">new</span> Point(x, y));
repaint();
}
</pre>
<p>マウスをクリックした場合、mouseClicked()の引数MouseEvent eを使うことでいろんな情報が引き出せます。たとえば、<span style="color:#FF0000;">getX()、getY()でマウスクリックされた位置を得られます</span>。プログラムでは得られた位置からPointオブジェクトを作り、ArrayListに追加しています。</p>
<p>注意すべきなのはmouseClicked()の中で直接描画していないことです。mouseClicked()ではどの位置に点があるかをArrayListに記録するだけです。記録された点の描画はpaintComponent()で行います。<span style="color:#FF0000;">描画処理はpaintComponent()に集中させるほうが好ましいです</span>。</p>
<p>paintComponent()では追加された点の位置を元に点を描いています。</p>
<pre class="syntax-highlight">
<span class="synComment">// pointListに入っている点の場所に点を描く</span>
<span class="synStatement">for</span> (<span class="synType">int</span> i=<span class="synConstant">0</span>; i&#60;pointList.size(); i++) {
Point p = (Point)pointList.get(i);
g.fillOval(p.x-SIZE/<span class="synConstant">2</span>, p.y-SIZE/<span class="synConstant">2</span>, SIZE, SIZE);
}
</pre>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: オセロ盤を作る
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 12/17/2004 07:13:19 PM
CATEGORY: Javagame
-----
BODY:
<div class="section">
<p>まず手始めにオセロ盤を描くところまで作ります。</p>
<p><a href="http://d.hatena.ne.jp/aidiary/files/othello01.jar">othello01.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/othello01.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></p>
<h4>オセロ盤の構造</h4>
<p>盤面の構成は下の図のようになってます。</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20100509191150" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20100509/20100509191150.gif" alt="f:id:aidiary:20100509191150g:image" title="f:id:aidiary:20100509191150g:image" class="hatena-fotolife"></a></p>
<p>オセロ盤は2次元のint型並列で表現します。</p>
<pre class="syntax-highlight">
<span class="synComment">// 盤面</span>
<span class="synType">private</span> <span class="synType">int</span>[][] board = <span class="synStatement">new</span> <span class="synType">int</span>[MASU][MASU];
</pre>
<p>盤面に入る数字は何もないとき0、黒い石があるとき1、白い石があるとき-1としています(今の段階では石はないので0だけです。プログラム中で0 とか1とかいう数字を使うのは好ましくないので定数で定義しています。</p>
<pre class="syntax-highlight">
<span class="synComment">// 空白</span>
<span class="synType">private</span> <span class="synType">static</span> <span class="synType">final</span> <span class="synType">int</span> BLANK = <span class="synConstant">0</span>;
</pre>
<p>盤面を初期化しているのがinitBoard()です。</p>
<pre class="syntax-highlight">
<span class="synType">private</span> <span class="synType">void</span> initBoard() {
<span class="synStatement">for</span> (<span class="synType">int</span> y = <span class="synConstant">0</span>; y &#60; MASU; y++) {
<span class="synStatement">for</span> (<span class="synType">int</span> x = <span class="synConstant">0</span>; x &#60; MASU; x++) {
board[y][x] = BLANK;
}
}
}
</pre>
<p>まだ石は打ってないので全部BLANKで初期化しています。盤面を描画するのはdrawBoard()です。</p>
<pre class="syntax-highlight">
<span class="synType">private</span> <span class="synType">void</span> drawBoard(Graphics g) {
<span class="synComment">// マスを塗りつぶす</span>
g.setColor(<span class="synStatement">new</span> Color(<span class="synConstant">0</span>, <span class="synConstant">128</span>, <span class="synConstant">128</span>));
g.fillRect(<span class="synConstant">0</span>, <span class="synConstant">0</span>, WIDTH, HEIGHT);
<span class="synStatement">for</span> (<span class="synType">int</span> y = <span class="synConstant">0</span>; y &#60; MASU; y++) {
<span class="synStatement">for</span> (<span class="synType">int</span> x = <span class="synConstant">0</span>; x &#60; MASU; x++) {
<span class="synComment">// マス枠を描画する</span>
g.setColor(Color.BLACK);
g.drawRect(x * GS, y * GS, GS, GS);
}
}
}
</pre>
<p>盤面全体を緑色で塗りつぶしています。オセロ盤というと緑色がすぐ浮かぶんですがどうなんでしょうね?その後のforループではマスの枠を黒色で描いています。マスの枠を描く処理はけっこうよく使うような気がします。覚えておくと便利です。</p>
<h4>追記</h4>
<p>効率よくマス枠を描く処理をSAWさんに指摘してもらいました(2005/5/8)。</p>
<pre class="syntax-highlight">
g.setColor(Color.black);
<span class="synComment">// 縦線を引く</span>
<span class="synStatement">for</span>(<span class="synType">int</span> i = <span class="synConstant">1</span>; i &#60; MASU; i++) {
g.drawLine(i*GS, <span class="synConstant">0</span>, i*GS, HEIGHT);
}
<span class="synComment">// 横線を引く</span>
<span class="synStatement">for</span>(<span class="synType">int</span> i = <span class="synConstant">1</span>; i &#60; MASU; i++) {
g.drawLine(<span class="synConstant">0</span>, i*GS, WIDTH, i*GS);
}
<span class="synComment">// 外枠を引く</span>
g.drawRect(<span class="synConstant">0</span>, <span class="synConstant">0</span>, WIDTH, HEIGHT);
</pre>
<p>よく見ると私の方法はかなり無駄があるなぁ。forループの中でsetColor()やる必要ないじゃん・・・forの外で1回やっとけばよかった。シリーズ物は間違いが後の回まで続くのでやっかいです・・・</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: マウスで石を打つ
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 12/17/2004 07:15:43 PM
CATEGORY: Javagame
-----
BODY:
<div class="section">
<p>盤面に白石と黒石を交互に打てるようにします。打ったときにはカチッっと気持ちい音が鳴るようにもしています。</p>
<p><a href="http://d.hatena.ne.jp/aidiary/files/othello02.jar">othello02.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/othello02.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></p>
<h4>マウスで石を打つ</h4>
<p>盤面をマウスでクリックしたとき石が打たれるようにするためにmouseClicked()を実装します。</p>
<pre class="syntax-highlight">
<span class="synType">public</span> <span class="synType">void</span> mouseClicked(MouseEvent e) {
<span class="synComment">// どこのマスかを調べる</span>
<span class="synType">int</span> x = e.getX() / GS;
<span class="synType">int</span> y = e.getY() / GS;
<span class="synComment">// その場所に石を打つ</span>
putDownStone(x, y);
<span class="synComment">// 音を鳴らす</span>
kachi.play();
<span class="synComment">// 盤面が変化したので再描画する</span>
repaint();
}
</pre>
<p>マウスのある座標を1マスの大きさで割るとマスの位置(0~7)が得られます。たとえば、マウスでクリックした場所が(50,48)だとします。 GS(=32)で割ると(1,1)、つまり(1,1)のマスになります。整数の割り算はあまりを切り捨てる点に注意してください。ちなみにこの処理はマップエディタを作るときにも使えます。実際に(x,y)のマスに石を打っているのはputDownStone()です。</p>
<pre class="syntax-highlight">
<span class="synType">private</span> <span class="synType">void</span> putDownStone(<span class="synType">int</span> x, <span class="synType">int</span> y) {
<span class="synType">int</span> stone;
<span class="synComment">// どっちの手番か調べて石の色を決める</span>
<span class="synStatement">if</span> (flagForWhite) {
stone = WHITE_STONE;
} <span class="synStatement">else</span> {
stone = BLACK_STONE;
}
<span class="synComment">// 石を打つ</span>
board[y][x] = stone;
<span class="synComment">// 手番を変える</span>
flagForWhite = !flagForWhite;
}
</pre>
<p>どっちの手番か調べてからboard[][]に値を設定しています。flagForWhiteは白番のときtrueで黒番のときfalseとなります。手番を変える処理はflagForWhiteがtrueだったらfalse、falseだったらtrueにすればよいので上のように簡潔に書けます。</p>
<h4>初期配置</h4>
<p>オセロの初期配置は</p>
<pre class="syntax-highlight">
<span class="synType">private</span> <span class="synType">void</span> initBoard() {
・・・
board[<span class="synConstant">3</span>][<span class="synConstant">3</span>] = board[<span class="synConstant">4</span>][<span class="synConstant">4</span>] = WHITE_STONE;
board[<span class="synConstant">3</span>][<span class="synConstant">4</span>] = board[<span class="synConstant">4</span>][<span class="synConstant">3</span>] = BLACK_STONE;
flagForWhite = <span class="synConstant">false</span>;
}
</pre>
<p>の部分です。オセロやるときは真ん中に白黒を交互に適当に打ってたんですが、上から白黒・黒白の順に打つのが正しいようです。 flagForWhiteはfalse、つまり黒番から始めます。</p>
<h4>石の描画</h4>
<p>石を描いているのはdrawStone()です。</p>
<pre class="syntax-highlight">
<span class="synType">private</span> <span class="synType">void</span> drawStone(Graphics g) {
<span class="synStatement">for</span> (<span class="synType">int</span> y = <span class="synConstant">0</span>; y &#60; MASU; y++) {
<span class="synStatement">for</span> (<span class="synType">int</span> x = <span class="synConstant">0</span>; x &#60; MASU; x++) {
<span class="synStatement">if</span> (board[y][x] == BLANK) {
<span class="synStatement">continue</span>;
} <span class="synStatement">else</span> <span class="synStatement">if</span> (board[y][x] == BLACK_STONE) {
g.setColor(Color.BLACK);
} <span class="synStatement">else</span> {
g.setColor(Color.WHITE);
}
g.fillOval(x * GS + <span class="synConstant">3</span>, y * GS + <span class="synConstant">3</span>, GS - <span class="synConstant">6</span>, GS - <span class="synConstant">6</span>);
}
}
}
</pre>
<p>board[][]を見て打たれている石を判断し、色をセットしてから円(石)を書いてます。円の大きさはマスより少し小さくしています。実行してみるとわかりますが現段階では盤面上のどこにでも石が打ててしまいます。次回はこの点を改良していきます。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 石が打てる場所か判定する
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 12/17/2004 07:18:33 PM
CATEGORY: Javagame
-----
BODY:
<div class="section">
<p>オセロで石が打てる場所は相手の石をひっくり返せるところだけです。今回は石が打てる場所を判定する処理を実装します。</p>
<p><a href="http://d.hatena.ne.jp/aidiary/files/othello03.jar">othello03.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/othello03.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></p>
<h4>石が打てるか判定する</h4>
<p>石を打つmouseClicked()に注目してください。</p>
<pre class="syntax-highlight">
<span class="synType">public</span> <span class="synType">void</span> mouseClicked(MouseEvent e) {
・・・
<span class="synComment">// (x, y)に石が打てる場合だけ打つ</span>
<span class="synStatement">if</span> (canPutDown(x, y)) {
<span class="synComment">// その場所に石を打つ</span>
putDownStone(x, y);
・・・
}
・・・
}
</pre>
<p>canPutDown(x,y)で(x,y)の位置に石が打てるか調べる処理が入っています。ここでtrueが返されたときだけputDownStone(x,y)で実際に石を打っています。canPutDown()は複雑なメソッドなので順番に説明します。</p>
<pre class="syntax-highlight">
<span class="synType">private</span> <span class="synType">boolean</span> canPutDown(<span class="synType">int</span> x, <span class="synType">int</span> y) {
<span class="synComment">// (x,y)が盤面の外だったら打てない</span>
<span class="synStatement">if</span> (x &#62;= MASU || y &#62;= MASU)
<span class="synStatement">return</span> <span class="synConstant">false</span>;
<span class="synComment">// (x,y)にすでに石が打たれてたら打てない</span>
<span class="synStatement">if</span> (board[y][x] != BLANK)
<span class="synStatement">return</span> <span class="synConstant">false</span>;
<span class="synComment">// 8方向のうち一箇所でもひっくり返せればこの場所に打てる</span>
<span class="synComment">// ひっくり返せるかどうかはもう1つのcanPutDownで調べる</span>
<span class="synStatement">if</span> (canPutDown(x, y, <span class="synConstant">1</span>, <span class="synConstant">0</span>))
<span class="synStatement">return</span> <span class="synConstant">true</span>; <span class="synComment">// 右</span>
<span class="synStatement">if</span> (canPutDown(x, y, <span class="synConstant">0</span>, <span class="synConstant">1</span>))
<span class="synStatement">return</span> <span class="synConstant">true</span>; <span class="synComment">// 下</span>
<span class="synStatement">if</span> (canPutDown(x, y, -<span class="synConstant">1</span>, <span class="synConstant">0</span>))
<span class="synStatement">return</span> <span class="synConstant">true</span>; <span class="synComment">// 左</span>
<span class="synStatement">if</span> (canPutDown(x, y, <span class="synConstant">0</span>, -<span class="synConstant">1</span>))
<span class="synStatement">return</span> <span class="synConstant">true</span>; <span class="synComment">// 上</span>
<span class="synStatement">if</span> (canPutDown(x, y, <span class="synConstant">1</span>, <span class="synConstant">1</span>))
<span class="synStatement">return</span> <span class="synConstant">true</span>; <span class="synComment">// 右下</span>
<span class="synStatement">if</span> (canPutDown(x, y, -<span class="synConstant">1</span>, -<span class="synConstant">1</span>))
<span class="synStatement">return</span> <span class="synConstant">true</span>; <span class="synComment">// 左上</span>
<span class="synStatement">if</span> (canPutDown(x, y, <span class="synConstant">1</span>, -<span class="synConstant">1</span>))
<span class="synStatement">return</span> <span class="synConstant">true</span>; <span class="synComment">// 右上</span>
<span class="synStatement">if</span> (canPutDown(x, y, -<span class="synConstant">1</span>, <span class="synConstant">1</span>))
<span class="synStatement">return</span> <span class="synConstant">true</span>; <span class="synComment">// 左下</span>
<span class="synComment">// どの方向もだめな場合はここには打てない</span>
<span class="synStatement">return</span> <span class="synConstant">false</span>;
}
</pre>
<p>(x,y)が盤面の外、またはすでに石がある場合打てないのは当たり前です。問題は次です。8方向すべてに対して打てるかどうか canPutDown()で順に調べています。オセロでは相手の石をひっくり返せる場所にしか石を打てないというルールがあります。8方向のどれか1つでひっくり返せればtrueが返されて石が打てます。</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20100509191705" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20100509/20100509191705.gif" alt="f:id:aidiary:20100509191705g:image" title="f:id:aidiary:20100509191705g:image" class="hatena-fotolife"></a></p>
<p>canPutDown()ってのは2つあります。</p>
<pre class="syntax-highlight">
<span class="synType">private</span> <span class="synType">boolean</span> canPutDown(<span class="synType">int</span> x, <span class="synType">int</span> y)
<span class="synType">private</span> <span class="synType">boolean</span> canPutDown(<span class="synType">int</span> x, <span class="synType">int</span> y, <span class="synType">int</span> vecX, <span class="synType">int</span> vecY)
</pre>
<p>上は(x,y)に石が打てるか調べるメソッドです。もう1つのは各方向で石が打てるか調べるメソッドです。このように引数は違う同じ名前のメソッドを定義することをオーバーロードと呼びます。(vecX, vecY)は1か-1を取ります。これはドラクエで勇者を移動させる方向を扱ったときと同じ方法です。たとえば、canPutDown(x,y,1,1) は(x+1,y+1)となり右下方向を調べます。もう1つのcanPutDown()は少し複雑です。</p>
<pre class="syntax-highlight">
<span class="synType">private</span> <span class="synType">boolean</span> canPutDown(<span class="synType">int</span> x, <span class="synType">int</span> y, <span class="synType">int</span> vecX, <span class="synType">int</span> vecY) {
<span class="synType">int</span> putStone;
<span class="synComment">// 打つ石はどれか</span>
<span class="synStatement">if</span> (flagForWhite) {
putStone = WHITE_STONE;
} <span class="synStatement">else</span> {
putStone = BLACK_STONE;
}
<span class="synComment">// 隣の場所へ。どの隣かは(vecX, vecY)が決める。</span>
x += vecX;
y += vecY;
<span class="synComment">// 盤面外だったら打てない</span>
<span class="synStatement">if</span> (x &#60; <span class="synConstant">0</span> || x &#62;= MASU || y &#60; <span class="synConstant">0</span> || y &#62;= MASU)
<span class="synStatement">return</span> <span class="synConstant">false</span>;
<span class="synComment">// 隣が自分の石の場合は打てない</span>
<span class="synStatement">if</span> (board[y][x] == putStone)
<span class="synStatement">return</span> <span class="synConstant">false</span>;
<span class="synComment">// 隣が空白の場合は打てない</span>
<span class="synStatement">if</span> (board[y][x] == BLANK)
<span class="synStatement">return</span> <span class="synConstant">false</span>;
<span class="synComment">// さらに隣を調べていく</span>
x += vecX;
y += vecY;
<span class="synComment">// となりに石がある間ループがまわる</span>
<span class="synStatement">while</span> (x &#62;= <span class="synConstant">0</span> &#38;&#38; x &#60; MASU &#38;&#38; y &#62;= <span class="synConstant">0</span> &#38;&#38; y &#60; MASU) {
<span class="synComment">// 空白が見つかったら打てない(11つもはさめないから)</span>
<span class="synStatement">if</span> (board[y][x] == BLANK)
<span class="synStatement">return</span> <span class="synConstant">false</span>;
<span class="synComment">// 自分の石があればはさめるので打てる</span>
<span class="synStatement">if</span> (board[y][x] == putStone)
<span class="synStatement">return</span> <span class="synConstant">true</span>;
x += vecX;
y += vecY;
}
<span class="synComment">// 相手の石しかない場合はいずれ盤面の外にでてしまうのでこのfalse</span>
<span class="synStatement">return</span> <span class="synConstant">false</span>;
}
</pre>
<p>まず白か黒のどちらの石を打った場合かを調べてputStoneに入れておきます。次に(vecX,vecY)の方向にある隣のマスを調べます。そこが盤面外だったらはさめないのでfalseを返します。隣が自分の石だった場合もはさめないのでfalseを返します。空白の場合もはさめないので falseを返します。はさめる可能性があるのは相手の石がある場合のみです。その場合はさらに(vecX,vecY)の方向に進んで調べます。そこが空白の場合ははさめないのでfalseを返します。もし自分の石があれば間にある相手の石をはさめるのでtrueを返します。これを盤面外に出るまでwhileループで調べていきます。もし盤面外に出てしまったらはさめないのでfalseを返します。このような処理を8方向全部にわたって調べています。次回ははさんだ相手の石をひっくり返せるようにします。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: はさんだ石をひっくり返す
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 12/18/2004 07:21:35 PM
CATEGORY: Javagame
-----
BODY:
<div class="section">
<p>はさんだ石がひっくり返るようにしてみます。</p>
<p><a href="http://d.hatena.ne.jp/aidiary/files/othello04.jar">othello04.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/othello04.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></p>
<h4>石をひっくり返す</h4>
<p>石をひっくり返す処理はmouseClicked()で呼び出しているreverse()です。</p>
<pre class="syntax-highlight">
<span class="synType">public</span> <span class="synType">void</span> mouseClicked(MouseEvent e) {
<span class="synComment">// どこのマスかを調べる</span>
<span class="synType">int</span> x = e.getX() / GS;
<span class="synType">int</span> y = e.getY() / GS;
<span class="synComment">// (x, y)に石がおける場合だけ打つ</span>
<span class="synStatement">if</span> (canPutDown(x, y)) {
<span class="synComment">// その場所に石を打つ</span>
putDownStone(x, y);
<span class="synComment">// ひっくり返す</span>
reverse(x, y);
<span class="synComment">// 手番を変える</span>
flagForWhite = !flagForWhite;
}
<span class="synComment">// 盤面が変化したので再描画する</span>
repaint();
}
</pre>
<p>石を打ったあとにひっくり返しています。あと余談ですが手番を変える処理はputDownStone()の中に入れていたのですが外に出しました。 putDownStone()の中で手番が変わってしまうとreverse()を呼び出したときに相手の手番になってしまうからです。reverse(x,y)は(x,y)に打ったときひっくり返せる石をすべてひっくり返すメソッドです。</p>
<pre class="syntax-highlight">
<span class="synType">private</span> <span class="synType">void</span> reverse(<span class="synType">int</span> x, <span class="synType">int</span> y) {
<span class="synComment">// ひっくり返せる石がある方向はすべてひっくり返す</span>
<span class="synStatement">if</span> (canPutDown(x, y, <span class="synConstant">1</span>, <span class="synConstant">0</span>)) reverse(x, y, <span class="synConstant">1</span>, <span class="synConstant">0</span>);
<span class="synStatement">if</span> (canPutDown(x, y, <span class="synConstant">0</span>, <span class="synConstant">1</span>)) reverse(x, y, <span class="synConstant">0</span>, <span class="synConstant">1</span>);
<span class="synStatement">if</span> (canPutDown(x, y, -<span class="synConstant">1</span>, <span class="synConstant">0</span>)) reverse(x, y, -<span class="synConstant">1</span>, <span class="synConstant">0</span>);
<span class="synStatement">if</span> (canPutDown(x, y, <span class="synConstant">0</span>, -<span class="synConstant">1</span>)) reverse(x, y, <span class="synConstant">0</span>, -<span class="synConstant">1</span>);
<span class="synStatement">if</span> (canPutDown(x, y, <span class="synConstant">1</span>, <span class="synConstant">1</span>)) reverse(x, y, <span class="synConstant">1</span>, <span class="synConstant">1</span>);
<span class="synStatement">if</span> (canPutDown(x, y, -<span class="synConstant">1</span>, -<span class="synConstant">1</span>)) reverse(x, y, -<span class="synConstant">1</span>, -<span class="synConstant">1</span>);
<span class="synStatement">if</span> (canPutDown(x, y, <span class="synConstant">1</span>, -<span class="synConstant">1</span>)) reverse(x, y, <span class="synConstant">1</span>, -<span class="synConstant">1</span>);
<span class="synStatement">if</span> (canPutDown(x, y, -<span class="synConstant">1</span>, <span class="synConstant">1</span>)) reverse(x, y, -<span class="synConstant">1</span>, <span class="synConstant">1</span>);
}
</pre>
<p>前回の石が打てるかどうか調べるcanPutDown()と同じ方法を取っています。各8方向に対して順にひっくり返す処理reverse()を呼び出しています。ここでもreverse()をオーバーロードしています。</p>
<pre class="syntax-highlight">
<span class="synType">private</span> <span class="synType">void</span> reverse(<span class="synType">int</span> x, <span class="synType">int</span> y, <span class="synType">int</span> vecX, <span class="synType">int</span> vecY) {
<span class="synType">int</span> putStone;
<span class="synStatement">if</span> (flagForWhite) {
putStone = WHITE_STONE;
} <span class="synStatement">else</span> {
putStone = BLACK_STONE;
}
<span class="synComment">// 相手の石がある間ひっくり返し続ける</span>
<span class="synComment">// (x,y)に打てるのは確認済みなので相手の石は必ずある</span>
x += vecX;
y += vecY;
<span class="synStatement">while</span> (board[y][x] != putStone) {
<span class="synComment">// ひっくり返す</span>
board[y][x] = putStone;
<span class="synComment">// カチッ</span>
kachi.play();
<span class="synComment">// 盤面が更新されたので再描画</span>
update(getGraphics());
<span class="synComment">// 小休止を入れる(入れないと複数の石が一斉にひっくり返されてしまう)</span>
sleep();
x += vecX;
y += vecY;
}
}
</pre>
<p>自分の手番を調べて自分の石が出てくる間相手の石をひっくり返していきます。ひっくり返す=自分の石を打つことです。canPutDown()で相手の石があることが必ず保証されているので最低1つはひっくり返せるはずです。</p>
<h4>小休止を入れる</h4>
<p>reverse()で小休止を入れるsleep()を呼び出しているのに気づきました?sleep()は500ミリ秒だけ休止するメソッドです。</p>
<pre class="syntax-highlight">
<span class="synComment">// 小休止の時間</span>
<span class="synType">private</span> <span class="synType">static</span> <span class="synType">final</span> <span class="synType">int</span> SLEEP_TIME = <span class="synConstant">500</span>;
<span class="synType">private</span> <span class="synType">void</span> sleep() {
<span class="synStatement">try</span> {
Thread.sleep(SLEEP_TIME);
} <span class="synStatement">catch</span> (InterruptedException e) {
e.printStackTrace();
}
}
</pre>
<p>休止を入れないと2枚以上ひっくり返せる場合に一斉にひっくり返ってしまいます。1枚ずつカチッ、カチッってひっくり返ってほしかったため休止を入れました。相手の石が1つずつじわじわと死んでいくのを見るのは楽しいですよね?せっかちな人ははずしてください(笑)あともう1つputDownStone()でも休止を入れています。</p>
<pre class="syntax-highlight">
<span class="synType">private</span> <span class="synType">void</span> putDownStone(<span class="synType">int</span> x, <span class="synType">int</span> y) {
<span class="synType">int</span> stone;
<span class="synComment">// どっちの手番か調べて石の色を決める</span>
<span class="synStatement">if</span> (flagForWhite) {
stone = WHITE_STONE;
} <span class="synStatement">else</span> {
stone = BLACK_STONE;
}
<span class="synComment">// 石を打つ</span>
board[y][x] = stone;
<span class="synComment">// カチッ</span>
kachi.play();
<span class="synComment">// 盤面が更新されたので再描画</span>
update(getGraphics());
<span class="synComment">// 小休止を入れる(入れないとすぐにひっくり返しが始まってしまう)</span>
sleep();
}
</pre>
<p>ここも同じ理由です。sleep()を入れないと打ったとたんにひっくり返されてしまいます。</p>
<h4>すぐに描画する</h4>
<p>reverse()とputDownStone()の中で再描画に</p>
<pre class="syntax-highlight">
<span class="synComment">// 盤面が更新されたので再描画</span>
update(getGraphics());
</pre>
<p>を使っていたのに気づきました?普通は再描画にrepaint()を使うんですがrepaint()ではうまくいきません。repaint()は呼び出してもすぐに再描画されるわけではないからです。1枚ひっくり返したらすぐにそのタイミングで再描画してほしかったのでこれでは都合が悪いです。すぐに再描画したいときは上のように書きましょう。次は黒白の石の数を表示するパネルを追加して勝敗判定が行われるようにしてみます。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: 勝敗を判定する
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 12/18/2004 10:54:55 AM
CATEGORY: Javagame
-----
BODY:
<div class="section">
<p>勝敗判定機能をつけます。また黒と白の石の数が上部に表示されるようにします。</p>
<p><a href="http://d.hatena.ne.jp/aidiary/files/othello05.jar">othello05.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/othello05.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></p>
<h4>石の数を数える</h4>
<p>勝敗を判定するにはまず黒と白の石の数を数える必要があります。countStone()で数えています。</p>
<pre class="syntax-highlight">
<span class="synType">private</span> Counter countStone() {
Counter counter = <span class="synStatement">new</span> Counter();
<span class="synStatement">for</span> (<span class="synType">int</span> y = <span class="synConstant">0</span>; y &#60; MASU; y++) {
<span class="synStatement">for</span> (<span class="synType">int</span> x = <span class="synConstant">0</span>; x &#60; MASU; x++) {
<span class="synStatement">if</span> (board[y][x] == BLACK_STONE)
counter.blackCount++;
<span class="synStatement">if</span> (board[y][x] == WHITE_STONE)
counter.whiteCount++;
}
}
<span class="synStatement">return</span> counter;
}
</pre>
<p>盤面を走査していって黒石が打たれていたら黒石の数(counter.blackCount)を1増やし、白石が打たれていたら白石の数(counter.whiteCount)を1増やしています。このメソッドでは黒石と白石の数の両方の値を返したいです。しかし、メソッドの戻り値は1 つであるため2つのint型の値を返すことはできません。こんな場合は2つの値(ここでは黒石と白石の数)をクラスで包み込んで値を設定し、オブジェクトを1つだけ返す手法がよく使われます。黒石と白石の数をを持つクラスがCounterクラスです。</p>
<pre class="syntax-highlight">
<span class="synType">private</span> <span class="synType">class</span> Counter {
<span class="synType">public</span> <span class="synType">int</span> blackCount;
<span class="synType">public</span> <span class="synType">int</span> whiteCount;
<span class="synType">public</span> Counter() {
blackCount = <span class="synConstant">0</span>;
whiteCount = <span class="synConstant">0</span>;
}
}
</pre>
<p>簡単なクラスなので内部クラス(クラスの中のクラス)としました。countStone()の戻り値はcounterオブジェクト1つだけです。1 つのオブジェクトでblackCountとwhiteCountの2つの値が返せます。</p>
<h4>情報パネル</h4>
<p>黒白の石の数を表示する領域を作りました。InfoPanelとして実装し、フレームの上の方に配置しました。</p>
<pre class="syntax-highlight">
<span class="synType">public</span> Othello() {
・・・
Container contentPane = getContentPane();
<span class="synComment">// 情報パネルを作成する</span>
InfoPanel infoPanel = <span class="synStatement">new</span> InfoPanel();
contentPane.add(infoPanel, BorderLayout.NORTH);
<span class="synComment">// メインパネルを作成してフレームに追加</span>
MainPanel mainPanel = <span class="synStatement">new</span> MainPanel(infoPanel);
contentPane.add(mainPanel, BorderLayout.CENTER);
・・・
}
</pre>
<p>MainPanelにInfoPanelを渡している点に注意してください。MainPanelで石の数を数えてInfoPanelへ表示するので MainPanelからInfoPanelへの参照がないと情報パネルを操作できません。MainPanelの中のpaintComponent()でラベルを変更しています。</p>
<pre class="syntax-highlight">
<span class="synComment">// 盤面の石の数を数える</span>
Counter counter = countStone();
<span class="synComment">// ラベルに表示</span>
infoPanel.setBlackLabel(counter.blackCount);
infoPanel.setWhiteLabel(counter.whiteCount);
</pre>
<p>盤面の石の数を数えてラベルを変更しているだけです。</p>
<h4>勝敗判定</h4>
<p>オセロの勝敗は64個の石がすべて打たれたときに決まります。最初に4個の石があるため打たれる石の数は60個です。そこで打たれた石の数を数える変数を用意します。</p>
<pre class="syntax-highlight">
<span class="synComment">// 終了時の石の数(オセロは8x8-4=60手で終了する)</span>
<span class="synType">private</span> <span class="synType">static</span> <span class="synType">final</span> <span class="synType">int</span> END_NUMBER = <span class="synConstant">60</span>;
<span class="synComment">// 打たれた石の数</span>
<span class="synType">private</span> <span class="synType">int</span> putNumber;
</pre>
<p>putNumberが60個になったら終了します。勝敗判定を行うメソッドはmouseClicked()にあるendGame()です。石が打たれた後、毎回勝敗を判定しています。</p>
<pre class="syntax-highlight">
<span class="synType">private</span> <span class="synType">void</span> endGame() {
<span class="synComment">// 打たれた石の数が60個(全部埋まった状態)以外は何もしない</span>
<span class="synStatement">if</span> (putNumber == END_NUMBER) {
<span class="synComment">// 黒白両方の石を数える</span>
Counter counter;
counter = countStone();
<span class="synComment">// 黒が過半数(64/2=32)を取っていたら勝ち</span>
<span class="synComment">// 過半数以下なら負け</span>
<span class="synComment">// 同じ数なら引き分け</span>
<span class="synStatement">if</span> (counter.blackCount &#62; <span class="synConstant">32</span>) {
gameState = YOU_WIN;
} <span class="synStatement">else</span> <span class="synStatement">if</span> (counter.blackCount &#60; <span class="synConstant">32</span>) {
gameState = YOU_LOSE;
} <span class="synStatement">else</span> {
gameState = DRAW;
}
}
}
</pre>
<p>endGame()では打たれた石の数が60個以外のときは何もしません。60個のときは黒と白の石の数を数えます。黒が過半数取っていれば勝ちです。過半数取れなったら負けです。同じ数だった場合は引き分けです。プレイヤーは常に黒だと想定しています。今はどっちも自分で動かしてますが(笑)スタート・ゲームオーバー画面、スタート画面とゲームオーバー画面も簡単ですがつけて見ました。gameStateで状態を管理し、状態に応じて処理を変えるのが常套手段です。</p>
<pre class="syntax-highlight">
<span class="synComment">// ゲーム状態</span>
<span class="synType">private</span> <span class="synType">static</span> <span class="synType">final</span> <span class="synType">int</span> START = <span class="synConstant">0</span>;
<span class="synType">private</span> <span class="synType">static</span> <span class="synType">final</span> <span class="synType">int</span> PLAY = <span class="synConstant">1</span>;
<span class="synType">private</span> <span class="synType">static</span> <span class="synType">final</span> <span class="synType">int</span> YOU_WIN = <span class="synConstant">2</span>;
<span class="synType">private</span> <span class="synType">static</span> <span class="synType">final</span> <span class="synType">int</span> YOU_LOSE = <span class="synConstant">3</span>;
<span class="synType">private</span> <span class="synType">static</span> <span class="synType">final</span> <span class="synType">int</span> DRAW = <span class="synConstant">4</span>;
<span class="synComment">// ゲーム状態</span>
<span class="synType">private</span> <span class="synType">int</span> gameState;
</pre>
<p>paintComponent()ではgameStateに応じて描くものを変えています。</p>
<pre class="syntax-highlight">
<span class="synType">public</span> <span class="synType">void</span> paintComponent(Graphics g) {
<span class="synType">super</span>.paintComponent(g);
<span class="synComment">// 盤面を描く</span>
drawBoard(g);
<span class="synStatement">switch</span> (gameState) {
<span class="synStatement">case</span> START :
drawTextCentering(g, <span class="synConstant">&#34;OTHELLO&#34;</span>);
<span class="synStatement">break</span>;
<span class="synStatement">case</span> PLAY :
<span class="synComment">// 石を描く</span>
drawStone(g);
<span class="synComment">// 盤面の石の数を数える</span>
Counter counter = countStone();
<span class="synComment">// ラベルに表示</span>
infoPanel.setBlackLabel(counter.blackCount);
infoPanel.setWhiteLabel(counter.whiteCount);
<span class="synStatement">break</span>;
<span class="synStatement">case</span> YOU_WIN :
drawTextCentering(g, <span class="synConstant">&#34;YOU WIN&#34;</span>);
<span class="synStatement">break</span>;
<span class="synStatement">case</span> YOU_LOSE :
drawTextCentering(g, <span class="synConstant">&#34;YOU LOSE&#34;</span>);
<span class="synStatement">break</span>;
<span class="synStatement">case</span> DRAW :
drawTextCentering(g, <span class="synConstant">&#34;DRAW&#34;</span>);
<span class="synStatement">break</span>;
}
}
</pre>
<p>マウスをクリックしたときの動作も画面に応じて変えています。</p>
<pre class="syntax-highlight">
<span class="synType">public</span> <span class="synType">void</span> mouseClicked(MouseEvent e) {
<span class="synStatement">switch</span> (gameState) {
<span class="synStatement">case</span> START :
<span class="synComment">// START画面でクリックされたらゲーム開始</span>
gameState = PLAY;
<span class="synStatement">break</span>;
<span class="synStatement">case</span> PLAY :
<span class="synComment">// どこのマスかを調べる</span>
<span class="synType">int</span> x = e.getX() / GS;
<span class="synType">int</span> y = e.getY() / GS;
<span class="synComment">// (x, y)に石がおける場合だけ打つ</span>
<span class="synStatement">if</span> (canPutDown(x, y)) {
<span class="synComment">// その場所に石を打つ</span>
putDownStone(x, y);
<span class="synComment">// ひっくり返す</span>
reverse(x, y);
<span class="synComment">// 手番を変える</span>
flagForWhite = !flagForWhite;
}
<span class="synComment">// 終了したか調べる</span>
endGame();
<span class="synStatement">break</span>;
<span class="synStatement">case</span> YOU_WIN :
<span class="synStatement">case</span> YOU_LOSE :
<span class="synStatement">case</span> DRAW :
<span class="synComment">// ゲーム終了時にクリックされたらスターとへ戻る</span>
gameState = START;
<span class="synComment">// 盤面初期化</span>
initBoard();
<span class="synStatement">break</span>;
}
<span class="synComment">// 再描画する</span>
repaint();
}
</pre>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: ライフゲーム
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 12/25/2004 03:14:22 PM
CATEGORY: Javagame
-----
BODY:
<div class="section">
<p>人工知能というより人工生命の分野ですが最初はライフゲームを作ってみます。ライフは人生という意味もありますが<span style="color:#FF0000;">ライフゲームは人生ゲームとはまったく関係ありません</span>。とある理由でJARではなく自己解凍exeにしました。解凍したらclickme.batをダブルクリックすれば実行できます。本当はjarにしたかったんですがjarの中からサブフォルダのリソースにアクセスする方法がわからなかったのです・・・</p>
<p><a href="http://d.hatena.ne.jp/aidiary/files/lifegame.exe">lifegame.exe</a> <a href="http://d.hatena.ne.jp/aidiary/files/lifegame.exe?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></p>
<h4>操作法</h4>
<p><a href="http://f.hatena.ne.jp/aidiary/20100518151046" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20100518/20100518151046.gif" alt="f:id:aidiary:20100518151046g:image" title="f:id:aidiary:20100518151046g:image" class="hatena-fotolife"></a></p>
<p>まず、キャンバス(黒い部分)をマウスでクリックすると、黄色い■が出てきます。もう一度押すと■が消えます。キーボードで描くこともできます。キャンバスを一回クリックしてフォーカスを移します。キーボードで上下左右へ移動できスペースで■を描けます。細かい図形はキーボードを使うのが楽です。キャンバスに適当に描いたら、Startを押してください。徐々に図形が変化していきます。Stopを押すと止まります。またStepを押すと1ステップずつ経過をみることができます。Clearを押すとキャンバスをきれいにします。Randを押すと適当に■をばらまきます。これだけでもライフの複雑な動きが楽しめますが、ライフゲームの研究を通してすでに明らかにされている面白いパターンがたくさんあります。コンボボックスの▼を押せば登録済みライフの一覧が表示されます。この中から好きなのを選んでみてください。キャンバスに選んだライフが表示されます。そのライフの簡単な解説が下のテキストボックスに表示されるようにしてあります。面白いライフができたらファイルにセーブすることもできます。まず始めにコンボボックスの空白を選んでライフの名前を入力します。その後キャンバスに自分で作ったライフを描きます。解説を追加することもできます。SAVEボタンを押せばlifeディレクトリにそのライフが保存されます。</p>
<p>(注)キャンバスに描いてからライフの名前を入力しようとするとキャンバスがクリアされてしまいます。保存機能は暫定的なものなので改良の余地はたくさんあります。</p>
<h4>ライフゲームとは</h4>
<p>ライフゲームは1970年ごろにイギリスの数学者コンウェイが考案したゲームです。ゲームといってもユーザにできることはライフの初期配置を決めることだけで、あとは画面上の変化を楽しむものです。万華鏡みたいなものですね。ライフゲームはとても単純な規則から成り立っています。そのような単純な規則からさまざまな図形が生み出されます。その振舞いは非常に複雑でまるで生命のように感じられます。このように単純な規則から複雑な振舞いが生じることは人工生命分野では創発と呼ばれます。ライフゲームは人工生命分野の古典的プログラムと言えます。ライフゲームで興味深い点は、ライフゲームの世界に生命を持った物体が存在する可能性があることです。えっ?コンピュータの中に生物がいるはずないって?世の中にはそう考えない人もいるんです。私たちが知っているタンパク質でできた生物がすべてではない。生命の本質は自己再製(複製)にあってタンパク質でできていようがソフトウェアでできていようが関係ないって・・・ライフゲームの仮想世界で生物の自己再製を研究した人の中にはパソコンの原理を発明したフォン・ノイマンや人工生命の研究を始めたラングトンがいます。彼らは自己複製ループを実際に作り、生物と同じ現象を再現することに成功しています。詳細を知りたい方は参考文献を参照してください。</p>
<p>(注)フォン・ノイマンやラングトンが対象とした世界は見た目はライフゲームに似ていますが、ライフゲームよりはもっと複雑なセル・オートマトンという環境です。</p>
<br>
<h4>ライフゲームの規則</h4>
<p>ライフゲームの1つのマスはセルと呼ばれます。セルとはドラゴンボールに出てくる・・・じゃなくて細胞のことですね。セルには「生」と「死」の2つの状態があります。「生」の状態は黄色の■です。「死」の状態は黒です。各セルは周囲8つのセルと接しています。セルの次の世代の状態は周囲の8つのセルの状態によって決まります。その規則はとても単純です。</p>
<ul>
<li>生きているセルの周囲に2つまたは3つの生きているセルがあればそのセルは次の世代も生きている</li>
<li>死んでいるセルの周囲に3つの生きているセルがあればそのセルは次の世代で生き返る(子供が生まれる)</li>
<li>それ以外の場合には次の世代で死ぬ</li>
<li>この規則を全セルに適用する</li>
</ul>
<p>周囲に適度なセル(2つか3つ)があれば快適なので生き残れるがそれ以上いるとストレスで、少なすぎるとさびしくて死んでしまうってことですね。3 ついると子供が生まれるって想像すると何か変ですがそういう決まりです(笑)。数にいくつか例を示します。</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20100518151047" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20100518/20100518151047.gif" alt="f:id:aidiary:20100518151047g:image" title="f:id:aidiary:20100518151047g:image" class="hatena-fotolife"></a></p>
<h4>参考文献</h4>
<ul>
<li><a href="http://www.ibiblio.org/lifepatterns/" target="_blank">Conway’s Game of Life</a> - ライフゲームの素晴らしいアプレットがあります。私のものより広い範囲を見られます。</li>
</ul>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/4535783837/hatena-hamazou-22/"><img src="http://ecx.images-amazon.com/images/I/61F699PB3SL._SL160_.jpg" class="hatena-asin-detail-image" alt="ライフゲイムの宇宙" title="ライフゲイムの宇宙"></a>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4535783837/hatena-hamazou-22/">ライフゲイムの宇宙</a></p>
<ul>
<li><span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%A6%A5%A3%A5%EA%A5%A2%A5%E0%A1%A6%A5%D1%A5%A6%A5%F3%A5%C9%A5%B9%A5%C8%A1%BC%A5%F3" class="keyword">ウィリアム・パウンドストーン</a>,<a href="http://d.hatena.ne.jp/keyword/William%20Poundstone" class="keyword">William Poundstone</a>,<a href="http://d.hatena.ne.jp/keyword/%CD%AD%DF%B7%C0%BF" class="keyword">有澤誠</a></li>
<li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%C6%FC%CB%DC%C9%BE%CF%C0%BC%D2" class="keyword">日本評論社</a></li>
<li><span class="hatena-asin-detail-label">発売日:</span> 2003/06/12</li>
<li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li>
<li><span class="hatena-asin-detail-label">購入</span>: 4人 <span class="hatena-asin-detail-label">クリック</span>: 30回</li>
<li><a href="http://d.hatena.ne.jp/asin/4535783837" target="_blank">この商品を含むブログ (30件) を見る</a></li>
</ul>
</div>
<div class="hatena-asin-detail-foot"></div>
</div>
<p>おすすめの本です。ライフゲームの説明だけでなく、熱力学や現代物理学、天文学、生物学の話題も散りばめられています。少し難しいですがとても面白いです。初版は1990年ですが2003年に復刊されました。</p>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
--------
AUTHOR: aidiary
TITLE: AIの実装/ミニマックス法
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 1
ALLOW PINGS: 1
DATE: 12/26/2004 11:12:38 AM
CATEGORY: Javagame
-----
BODY:
<div class="section">
<p>コンピュータと対戦できるようにAIを実装します。ここでは思考ゲームのもっとも基本的なアルゴリズムであるミニマックス法について解説します。</p>
<p><a href="http://d.hatena.ne.jp/aidiary/files/othello06.jar">othello06.jar</a> <a href="http://d.hatena.ne.jp/aidiary/files/othello06.jar?d=download"><img src="http://www.hatena.ne.jp/images/common/icon-download.gif" alt="直"></a></p>
<h4>プレイヤーとAIが交互に打つ</h4>
<p>AIとは人工知能(Artificial Intelligence)のことです。人工知能って言うと大げさですけどね。簡単に言うと対戦相手のコンピュータのことです。前回は黒石も白石も全部プレイヤーが打っていました。そこで今回は白石をAIに任せてプレイヤーと対戦できるようにしていきます。プレイヤーは黒石です。AIの詳細を説明する前に実装の全体を示します。</p>
<pre class="syntax-highlight">
<span class="synComment">// AI</span>
<span class="synType">private</span> AI ai;
<span class="synType">public</span> MainPanel(InfoPanel infoPanel) {
・・・
<span class="synComment">// AIを作成</span>
ai = <span class="synStatement">new</span> AI(<span class="synType">this</span>);
・・・
}
</pre>
<p>AIクラスのオブジェクトを作っています。このAIクラスに思考ルーチン(AIがどのように石を打つかの考え方)を実装していきます。次にプレイヤーとAIが交互に打てるようにmouseClicked()を変更します。</p>
<pre class="syntax-highlight">
<span class="synComment">/**</span>
<span class="synComment"> *</span><span class="synSpecial"> マウスをクリックしたとき。石を打つ。</span>
<span class="synSpecial"> </span><span class="synComment">*/</span>
<span class="synType">public</span> <span class="synType">void</span> mouseClicked(MouseEvent e) {
<span class="synStatement">switch</span> (gameState) {
・・・
<span class="synStatement">case</span> PLAY :
<span class="synComment">// どこのマスかを調べる</span>
<span class="synType">int</span> x = e.getX() / GS;
<span class="synType">int</span> y = e.getY() / GS;
<span class="synComment">// (x, y)に石が打てる場合だけ打つ</span>
<span class="synStatement">if</span> (canPutDown(x, y)) {
<span class="synComment">// 戻せるように記録しておく</span>
Undo undo = <span class="synStatement">new</span> Undo(x, y);
<span class="synComment">// その場所に石を打つ</span>
putDownStone(x, y, <span class="synConstant">false</span>);
<span class="synComment">// ひっくり返す</span>
reverse(undo, <span class="synConstant">false</span>);
<span class="synComment">// 手番を変える</span>
nextTurn();
<span class="synComment">// 終了したか調べる</span>
endGame();
<span class="synComment">// AIが石を打つ</span>
ai.compute();
}
<span class="synStatement">break</span>;
・・・
}
}
</pre>
<p>プレイヤーが石を打った後、AIが石を打つ処理compute()を挿入しています。compute()ではミニマックス法で石を打つ位置を決め、実際に白石を打つ処理です。こうするとmouseClicked()でプレイヤーが石を打ったあとAIが石を打つようになります。</p>
<h4>Undoクラス</h4>
<p>Undoは盤面を戻すために必要なクラスです。Undoを使うと石を打ってひっくり返したあとでも石を打つ前の盤面に戻すことができます。Undo で管理する情報は</p>
<ul>
<li>石を打った場所</li>
<li>打った石によってひっくり返された石の数</li>
<li>ひっくり返された石の座標</li>
</ul>
<p>です。ひっくり返された石の座標を覚えておけば、もう一度ひっくり返して元通りになります。また石を打った場所を覚えておけばその石を取り除いてもとの盤面に戻せます。</p>
<pre class="syntax-highlight">
<span class="synType">public</span> <span class="synType">class</span> Undo {
<span class="synComment">// 石を打つ場所</span>
<span class="synType">public</span> <span class="synType">int</span> x;
<span class="synType">public</span> <span class="synType">int</span> y;
<span class="synComment">// ひっくり返った石の数</span>
<span class="synType">public</span> <span class="synType">int</span> count;
<span class="synComment">// ひっくり返った石の場所</span>
<span class="synType">public</span> Point[] pos;
<span class="synType">public</span> Undo(<span class="synType">int</span> x, <span class="synType">int</span> y) {
<span class="synType">this</span>.x = x;
<span class="synType">this</span>.y = y;
count = <span class="synConstant">0</span>;
pos = <span class="synStatement">new</span> Point[<span class="synConstant">64</span>];
}
}
</pre>
<p>Undoがなぜ必要かというとそれは「待った!」の機能を入れるため・・・というのは嘘です(がUndoを使えば簡単に追加できます)。実はミニマックス法を実装する上で盤面を戻す機能が必要だからです。ミニマックス法はAIが「あーでもないこーでもない」というふうにいろいろなところに石を打っていい場所を探す処理なんです。AIは盤面に石を打ってひっくり返してを繰り返していい場所を探していきます。そのとき盤面を元に戻す必要があるわけです。人が頭の中で盤面を先読みする場合と同じですね。Undoの具体的な使い方を見てみます。</p>
<pre class="syntax-highlight">
<span class="synComment">// (x, y)に石が打てる場合だけ打つ</span>
<span class="synStatement">if</span> (canPutDown(x, y)) {
<span class="synComment">// 戻せるように記録しておく</span>
Undo undo = <span class="synStatement">new</span> Undo(x, y);
<span class="synComment">// その場所に石を打つ</span>
putDownStone(x, y, <span class="synConstant">false</span>);
<span class="synComment">// ひっくり返す</span>
reverse(undo, <span class="synConstant">false</span>);
}
</pre>
<p>まずcanPutDown(x,y)で石が(x,y)に打てることを確かめています。そしてnew Undo(x,y)でUndoオブジェクトを作っています。Undoの引数の(x,y)は(x,y)に石を打ったことを表しています。そして実際に石を putDownStone()で打ち、reverse()でひっくり返しています。ここでreverse()にundoを与えているのがミソです。ひっくり返すときにundoにひっくり返した石の場所を記録しています。</p>
<pre class="syntax-highlight">
<span class="synComment">// ひっくり返した場所を記録しておく</span>
undo.pos[undo.count++] = <span class="synStatement">new</span> Point(x, y);
</pre>
<p>こうすれば石を打った場所、ひっくり返した石の場所がundoに記録されます。盤面を元に戻したいときはundoBoard()を使います。</p>
<pre class="syntax-highlight">
<span class="synComment">/**</span>
<span class="synComment"> *</span><span class="synSpecial"> オセロ盤を1手手前の状態に戻す。 AIは石を打ったり戻したりして盤面を評価できる。</span>
<span class="synComment"> *</span><span class="synSpecial"> </span>
<span class="synComment"> * </span><span class="synSpecial">@param</span><span class="synIdentifier"> undo</span><span class="synComment"> ひっくり返した石の情報。</span>
<span class="synComment"> */</span>
<span class="synType">public</span> <span class="synType">void</span> undoBoard(Undo undo) {
<span class="synType">int</span> c = <span class="synConstant">0</span>;
<span class="synStatement">while</span> (undo.pos[c] != <span class="synConstant">null</span>) {
<span class="synComment">// ひっくり返した位置を取得</span>
<span class="synType">int</span> x = undo.pos[c].x;
<span class="synType">int</span> y = undo.pos[c].y;
<span class="synComment">// 元に戻すには-1をかければよい</span>
<span class="synComment">// 黒(1)は白(-1)に白は黒になる</span>
board[y][x] *= -<span class="synConstant">1</span>;
c++;
}
<span class="synComment">// 石を打つ前に戻す</span>
board[undo.y][undo.x] = BLANK;
<span class="synComment">// 手番も元に戻す</span>
nextTurn();
}
</pre>
<p>undoに記録されているひっくり返した石の場所を1つずつ調べ、-1をかけて元に戻しています。黒は1、白は-1なので-1をかければひっくり返したことになります。最後に石を打った場所を空白に戻し、手順を戻せば完全に盤面が元通りになります。注意ですがundoは1手前にしか戻せません。待った!を実装したいときはundoBoard()を呼び出せるようにすればいいわけです。真剣勝負に待ったは卑怯ですけどね。</p>
<h4>AIクラス</h4>
<p>いよいよこの章の最大の山場AIを実装する処理です。AIが使う機能は全部AIクラスにまとめて実装します。まずAIのコンストラクタです。</p>
<pre class="syntax-highlight">
<span class="synComment">/**</span>
<span class="synComment"> *</span><span class="synSpecial"> コンストラクタ。メインパネルへの参照を保存。</span>
<span class="synComment"> *</span><span class="synSpecial"> </span>
<span class="synComment"> * </span><span class="synSpecial">@param</span><span class="synIdentifier"> panel</span><span class="synComment"> メインパネルへの参照。</span>
<span class="synComment"> */</span>
<span class="synType">public</span> AI(MainPanel panel) {
<span class="synType">this</span>.panel = panel;
}
</pre>
<p>コンストラクタでメインパネル(盤面)への参照を渡しています。panelはAIクラスから盤面を操作したり、盤面の情報を得るために必要となります。次にAIが打つ場所を決定して実際に白石を打つcompute()を見てみます。</p>
<pre class="syntax-highlight">
<span class="synComment">/**</span>
<span class="synComment"> *</span><span class="synSpecial"> コンピュータの手を決定する。</span>
<span class="synComment"> *</span><span class="synSpecial"> </span>
<span class="synSpecial"> </span><span class="synComment">*/</span>
<span class="synType">public</span> <span class="synType">void</span> compute() {
<span class="synComment">// ミニマックス法で石を打つ場所を決める</span>
<span class="synComment">// 戻ってくる値は bestX+bestY*MASU</span>
<span class="synType">int</span> temp = minMax(<span class="synConstant">true</span>, SEARCH_LEVEL);
<span class="synComment">// 場所を求める</span>
<span class="synType">int</span> x = temp % MainPanel.MASU;
<span class="synType">int</span> y = temp / MainPanel.MASU;
<span class="synComment">// 打った場所、ひっくり返した石の位置を記録</span>
Undo undo = <span class="synStatement">new</span> Undo(x, y);
<span class="synComment">// その場所に実際に石を打つ</span>
panel.putDownStone(x, y, <span class="synConstant">false</span>);
<span class="synComment">// 実際にひっくり返す</span>
panel.reverse(undo, <span class="synConstant">false</span>);
<span class="synComment">// 手番を変える</span>
panel.nextTurn();
}
</pre>
<p>最初にminMaxで打つ場所(x,y)を決めます(どう決めるかはあとで説明します)。あとはプレイヤーと同じですね。undoオブジェクトを作ってから実際に石を打ち、石をひっくり返しています。プレイヤーの場合と比較してみてください。AIの場合はcanPutDown()、石を打てるか調べる処理がぬけてます。これはminMax()で決定した打つ場所(x,y)には必ず石が打てることが保証されているからです。必ず打てるのでcanPutDown()でわざわざチェックする必要はないわけです。次はミニマックス法でAIが石を打つ場所(x,y)をどう決めるかを見ていきます。</p>
<h4>ミニマックス法とは</h4>
<p>ミニマックス法を説明する前にゲーム木の説明から始めます。オセロ、チェス、将棋、碁、バックギャモン、チェッカーといった思考ゲームと呼ばれるゲームではゲーム木を使ってゲームを表現します。ゲーム木はゲームの最初の状態からの局面を表現したものです。下にオセロのゲーム木の一部を示します。</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20100518105930" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20100518/20100518105930.gif" alt="f:id:aidiary:20100518105930g:image" title="f:id:aidiary:20100518105930g:image" class="hatena-fotolife"></a></p>
<p>ゲームの最初は黒の手番です。黒が打てるところは4箇所あります。そのそれぞれに対して打った場合の盤面が2段目です(4つ描くの大変なので3つに省略してあります)。次は白の手番です。黒の打った盤面それぞれに対して白はいくつか打てる場所があります。そのそれぞれに対して打った場合が3段目です(全部描くと大変なので2つに省略してあります)。このようにゲームのすべての可能性を木構造で表したのがゲーム木です。ゲーム木を描くのに上のようにオセロ盤をいちいち描いていたら非常に大変なので次のように省略して描くことにします。</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20100518105931" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20100518/20100518105931.gif" alt="f:id:aidiary:20100518105931g:image" title="f:id:aidiary:20100518105931g:image" class="hatena-fotolife"></a></p>
<p>局面を□で囲んであります。□のことをノード(節)と呼び、ノードをつないでいる線を枝と呼びます。ノードは局面を表し、枝は着手(実際に石を打つこと)を表します。薄く塗られているノードのは黒の局面です。太い枝は黒の着手です。ノードの中の番号は参照しやすくするためにふった番号です。[N0] のことをルートノードと呼びます。また[N1][N2][N3]は[N0]の下にあるので[N0]の子ノードと呼び、[N0]は[N1][N2][N3] の親ノードと呼びます。</p>
<p>人がオセロをするときにはある手を打ったらどのような局面になるかを予想してその着手がよいか悪いか判断しています。へぼでも1手先くらい読みますよね?ここに打ったら相手に大量にひっくり返されちゃうからやめようとか考えるはずです。このような何手か先を予想して着手を決めることを「先読み」と呼びます。ここでは人ではなくAIに「先読み」をやらせたいわけです。AIが先読みをするにはゲーム木の探索を行います。</p>
<p>ゲーム木を説明したので次はミニマックス法(ゲーム木の探索手法)の説明に入ります。ミニマックス法は先読みを行って最適な手を探索するアルゴリズムです。ここでは2手先読みの例でミニマックス法を説明します。AIは白なので白をルートノードにします。[N1]で[N2]へ行く手と[N3]へ行く手のどっちを打てば最適かを探すわけです。</p>
<p><a href="http://f.hatena.ne.jp/aidiary/20100518105932" class="hatena-fotolife" target="_blank"><img src="http://f.hatena.ne.jp/images/fotolife/a/aidiary/20100518/20100518105932.gif" alt="f:id:aidiary:20100518105932g:image" title="f:id:aidiary:20100518105932g:image" class="hatena-fotolife"></a></p>
<p>まず[N1]で白(AI)は[N2]と[N3]のどっちがよいか調べます(1手先読み)。2手先読みするのでまだどっちか決めません。さらに先を読みます。次に[N2]で黒が打ってくるすべての手を調べ、その先の局面[N4]と[N5]を求めます。2手先読みですのでここで[N4]と[N5]の盤面評価値を求めます。盤面評価値とは白(AI)にとってその盤面がどれだけ望ましいかを表す値です。ここでは[N4]が8、[N5]が10としましょう。えっ、8と10はどっから出てきたかって?これは次回の盤面評価で取り上げます。</p>
<p>[N4]と[N5]を調べたので[N2]に戻ります。[N2]の評価値はいくつでしょうか?ここがミニマックス法の真髄です。[N2]は黒(プレイヤー)の手番です。白(AI)が手を選択することはできません。あなたなら[N4]へ行く手と[N5]へ行く手のどっちを選びますか?普通、黒(プレイヤー)は白(AI)に不利な方を選択するはずです。つまり[N4]と[N5]の評価値の低い方(MIN)[N4]を選択します。よって黒の手番[N2]の評価値は8です。</p>
<p>[N2]の方は2手先読みが終了したので次に[N3]の方を先読みします。[N3]はとりあえず2手先読みするまで評価を保留します。[N6]と [N7]の評価値が2と15だとしましょう。[N3]は黒の手番なので必ず評価値の低い方[N6]を選択します。よって、[N3]の評価値は2です。黒は [N7]を白に選ばせてはくれないのです。</p>
<p>[N3]の方も2手先読みが終了したので[N1]に戻ります。さて、白は[N1]で[N2]と[N3]のどちらを選びましょう?もちろん評価値の高い方(MAX)[N2]を選びます。[N3]を選んでしまうと次の黒で[N6]を選ばれて評価値が2になってしまうからです。8の方が得ですよね?</p>
<p>これで白(AI)の手が決まりました。お気づきだとは思いますがミニマックス法はMIN-MAX法です。まとめると</p>
<ul>
<li>白(AI)の手番では子ノードのうち最大(MAX)の評価値を持つ局面へ行く手を選ぶ</li>
<li>黒(対戦相手)の手番では子ノードのうち最小(MIN)の評価値を持つ局面へ行く手を選ぶと予想する</li>
</ul>
<p>となります。</p>
<h4>ミニマックス法の実装</h4>
<p>ミニマックス法はAIクラスのminiMax()です。</p>
<pre class="syntax-highlight">
<span class="synComment">/**</span>
<span class="synComment"> *</span><span class="synSpecial"> ミニマックス法。最善手を探索する。打つ場所を探すだけで実際には打たない。</span>
<span class="synComment"> *</span><span class="synSpecial"> </span>
<span class="synComment"> * </span><span class="synSpecial">@param</span><span class="synIdentifier"> flag</span><span class="synComment"> AIの手番のときtrue、プレイヤーの手番のときfalse。</span>
<span class="synComment"> * </span><span class="synSpecial">@param</span><span class="synIdentifier"> level</span><span class="synComment"> 先読みの手数。</span>
<span class="synComment"> * </span><span class="synSpecial">@return</span><span class="synComment"> 子ノードでは盤面の評価値。ルートノードでは最大評価値を持つ場所(bestX + bestY * MAS)。</span>
<span class="synComment"> */</span>
<span class="synType">private</span> <span class="synType">int</span> minMax(<span class="synType">boolean</span> flag, <span class="synType">int</span> level) {
<span class="synComment">// ノードの評価値</span>
<span class="synType">int</span> value;
<span class="synComment">// 子ノードから伝播してきた評価値</span>
<span class="synType">int</span> childValue;
<span class="synComment">// ミニマックス法で求めた最大の評価値を持つ場所</span>
<span class="synType">int</span> bestX = <span class="synConstant">0</span>;
<span class="synType">int</span> bestY = <span class="synConstant">0</span>;
<span class="synComment">// ゲーム木の末端では盤面評価</span>
<span class="synComment">// その他のノードはM
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment