本文へジャンプ

学科概要
  • HOME
  • 学科概要
  • 学生による学科紹介

学生による学科紹介

実際の授業をいくつか文書におこしてみました。先生方の仮想講義を体験してみてください。情報科学科の講義は90分授業です。午前中の講義は10時15分から、午後の講義は13時から始まります。14時45分からの講義がある曜日もあります。

知能システム論 | 辻井 潤一
開講時間:木曜2限 | 1
授業内容
人工知能の基本的な技法に関する講義を行う。具体的には、以下の項目に関して解説を行う。
(1)発見的探索手法、プランニング手法、 (2)知識表現と非単調論理、 (3)フレーム型知識表現と型付素性構造、 (4)機械学習、 (5)言語理解
概要
人間の知能をコンピュータに模倣させることができるかどうかを気にする人は、コンピュータができたかできなかったか、そのくらいの昔から、学問の世界でも、あるいはSFの世界でも、大勢いました。知能システム論の講義では、知能を持っているらしい振る舞いをコンピュータにさせるためにこれまでに考え出された、数多くの手法とその裏にある考え方を、学ぶことができます
人工知能
「知能とはなにか」なんていきなり考えはじめると、よくわかりません。「知能を持っているらしい振る舞い」にどんなものがあるかなら、すぐに例をいくつか思いつきます。

* 言われた指示を理解して行動する。
* 言葉を理解したり発したりする。
* チェスや囲碁のようなゲームをする。
* たくさん候補がある中から、いいやりかたを見つける


人間はどうやって知能を持っているらしい行動をするのでしょうか。これに関しては、古代の哲学者から現代の心理学者に至るまで、いろいろな人がいろいろなことを言っています。

哲学は考えます。しかし、考えたとおりのやりかたほんとうに知能が働くのか実験して確かめるわけではありません。心理学は人間を使って実験をして、知能がどんなふうにどのくらい速く働くのかつきとめようとします。しかし相手が人間なので、実験結果に影響する状況を完全にコントロールできるわけではありません。コンピュータを使えば、知能らしきものを一から作って、それがどのくらいうまく働くのかを、実験して確かることができます。対象となる知能らしきものは人工物なので、しくみはわかっているし、改造することもできます(人間相手ではこれができません)。実は、作ろうとしてみると意外なところが難しいことがわかります。

もちろん、人工知能を作る動機は知能のしくみを知りたいということだけではありませんコンピュータがもっと賢くなればもっと便利になることでしょう。

人工知能にはおおざっぱに分けると二つの手法があります。コンピュータに規則を教え込んで、教えた規則に従って考え(推論)させるやり方と、実例をたくさん見せて、規則性を見つけさせるやり方です。推論させるのを論理っぽい手法、たくさんの実例を見せるのは統計っぽい手法と呼ぶことにしましょう。
論理っぽい手法
論理っぽい手法、というと避けて通れないのが論理プログラミングです論理プログラミングのための代表的な言語、Prologを例として、どんなものだか見てみます。

Prologでは、コンピュータに

プログラミングは楽しい
fun(programming).

楽しいものは時間食いだ
time_consuming(X) :- fun(X).

ということを教えてあげると、下記のような問答ができます。

プログラミングは時間食い?
?- time_consuming(programming).
→ Yes

言われたことをそのまま返しているわけではなくて、一段考えています。もっと複雑な知識を与えておいても、ちゃんと動きます。確かに論理っぽいし、知能のかけらっぽいかも知れません。が、いつでも賢いやりとりができるわけではありません。たとえば:

楽しいXといえば?
?- fun(X).
→ X = programming
→ Yes

釣りは時間食い?
?- time_consuming(fishing).
→ No

楽しいことってプログラミングだけなのでしょうか。
釣りは時間食いではないのでしょうか。

Prologは根拠が見つからなければNoと返事をします。正しいことはすべて教えてもらったはずだという思い込み(閉世界仮説)をわざと持って返事をしている、とも言えます。

論理プログラミングの手法で、頑張って人間の常識をすべてコンピュータに教え込んでしまおうという試みがありました。しかしうまくいっていません。そこで、「そんなに難しい常識を使いこなせる人間って偉いんだな」と思うのが正しいのかもしれないし、「人間の常識ってぜんぜん厳密でも論理的でもないらしいな」と思うのが正しいのかもしれません。

では、論理プログラミングは役に立たないか、というとそんなことはなくて、問題の範囲を限定してやれば、十分役に立ちます。たとえば、台の上の積み木の配置について、現状を質問したり、目標となる状況を指定して達成する手順を答えさせたりする、というくらい狭い世界に話を限定すれば、1970年代にできるようになっていました。また、英語の文を読ませたときに文法的構造を判断させることは、論理プログラミングの延長として、できるようになっています。人間の常識にまでは届かないが、インターネット上のリソース同士の関連を論理プログラミングっぽく記述するRDFという言語は実用に供されている。 RSSリーダであちこちの記事を集めて読んでいる人がいたら、舞台裏ででRDFのやりとりが行われているかもしれません。インターネット上の情報を、人間が読まないと意味がわからないものだけではなくてコンピュータが読んでも意味がわかるものも含めてやれば、インターネット上の情報の整理整頓の一部をコンピュータが肩代わりできるかも知れないという発想です。

知能システム論では、論理プログラミングの基盤である導出原理から、制限であるフレーム問題、応用であるセマンティックウェブまで、幅広く学びます。
統計っぽい手法
さきほど、論理っぽい手法で、英語の文の構造をだいたい解析できる、と書きました。しかし、文の構造をひとつに定められないことがあります。文の構造がぜんぜん違っても、単語の並びとして偶然おなじになってしまうことがあるからです。陳腐な例を挙げます:

* Time flies like an arrow. (時は矢のように飛ぶ。)
* Time flies like an arrow. (時間バエは矢が好きだ。)
* Time flies like an arrow. (矢のようにハエを計時せよ。)


人間なら、どれが妥当な解釈か、すぐにわかります(というより、最初から妥当な解釈しか頭に浮かびません)。コンピュータに、どれがいちばんありそうな解釈か判断させるにはどうすればいいのでしょうか。どの単語がどのような使い方をされることが多いのか、実際に使われている英語を大量に読ませて学習させるという手があります(時間とハエで時間バエという複合名詞になることはまれだ、とか)。実例をたくさん読ませて学習させた後に、別の例を問題として与えて、どのくらいの正答率が出るのか見てみると、学習に効果があったのかどうかわかります。シャノンのエントロピーという、情報の量を測る単位があるので、学習したり答を出したりするときに、何が役に立って何があまり役に立たないのか、定量的に議論することができます。

メモリが安くなってきて、速いCPUも安くなってきているので、統計っぽい手法の可能性はどんどん広がっています。

知能システム論では、主に隠れマルコフモデルに関して、確率文脈自由文法などのモデルの形や、モデルの形が決まった上でのViterbiアルゴリズムやEMアルゴリズムといったパラメタ推定法や、自然言語の理解を中心とした応用を学びます。
探索
論理っぽい手法も、統計っぽい手法も、なにかを探しているところは共通しています。論理っぽい手法では、教えられた規則の中から、答えを導くものを探しています統計っぽい手法では、学習用のデータをうまく説明する規則性を探した上で、その規則性を使って、テスト用のデータのうまい説明を探します。

これらにも増して探索らしい探索といえば、チェスや将棋のようなゲームをプレイするプログラムです。そういうゲームでは、次にできることの候補の中から、一番都合がよいものを選ぶのです。次の手の選択には、次の次に相手ができることの候補の中から都合がよいものを選ぶことも大きく関係していて、要するに、今後可能なゲーム展開の中から、両方ができるだけ上手にプレイしているのはどんなゲーム展開なのかを絞り込んでいく作業が必要となります。可能なゲーム展開の数は莫大で、その中から見つけたいものの数は多くはないので、探索らしい探索問題です。

知能システム論では、幅優先探索や深さ優先探索、反復深化法、A*アルゴリズムなどの探索手法や、ゲームについてのminimax法やalpha-beta枝刈りを学びます。
授業の進行
スクリーン上のスライドを使って行われます。映されるスライドを印刷した資料は、毎回分厚かったです。
試験について
指定されたなかから論文を選んで読んで、要旨をレポートにする課題がありました。
次のステップへ
演習でオセロをプレイするプログラムを書き、競技会で競います。コンピュータを使って現実世界の問題に取り組もうと思うと、なにがどのくらい難しいのか、知能システム論の講義を受けていれば、だいたいの見当がすぐにつくようになります。