知識処理
第三回

知識の表現
その2
事実とルール今日の内容1. 宣言的知識＝事実＋ルール
2. 事実とルールの書き方
ただし、ルールはちょっと複雑
3. 知識プログラミング言語Prolog
4. 家系図プログラムを例にして具体的にプログラムを書こう前回の問題• 「私の好きなもの（あるいは、好きなこと）」に関する宣言的知識を図で説明してください。
• 宣言的知識は以下のような概念ネットワークで表現してください（ノードはたくさんあるほどよい）。

解答例1• 博識ですね解答例2• ギョーザにこだわってますね宣言的知識は事実とルールに分けられる

事実とルール• 事実– 具体化された概念と関係を含む知識• 地球は回っている、太陽は東から昇り西に沈む• 地球や太陽は共に概念であるが、具体例が一つしかない
ので、具体化する必要がない• 固有名詞、人名、地名などは一般に具体化された概念• ルール– 抽象化された概念と関係を含む知識• 人間は哺乳類である、蛇は爬虫類である• 人間も蛇も具体例が複数あり、どの人間かどの蛇かということが問題になる• ルールを具体化することによって新しい事実が導かれる

推論（reasoning）• 事実とルールを組み合わせて結論としての事実を導くこと• 「ソクラテスは人間である」（事実）と「人間は哺乳類である」（ルール）から「ソクラテスは哺乳類である」（結論=事実）を導く

具体化と抽象化（1/2）• 概念の具体化– その概念を個体（集合の要素）として捉える– 例 「ソクラテス」という概念は個体（要素）• 概念の抽象化– その概念を集合として捉える– 例 「人間」という概念は集合• 概念間の関係– 関係は2つの集合の要素の組の集合として捉える– 例 「部分」という関係は部分に関する集合と全体に関する集合の要素の組

具体化と抽象化（2/2）

事実とルールの記述（1/2）• 定数– 具体化された概念（集合の要素）を定数で表す• 述語– 抽象化された概念（集合）を単項述語で表す– 単項述語とはa(X)のような形式（Xは変数）– 関係（集合の要素の組）を二項述語で表す– 二項述語とはb(X, Y)のような形式（X,Yは変数）• 文– 述語の変数に定数を代入したもの– 事実は文で表す

事実とルールの記述（2/2）• Socrates is a human(ソクラテスは人間である)– Socrates は具体化された概念で集合の要素であるため定数socratesで表す（定数は小文字で表す）– humanは抽象化された概念で集合であるため単項述語human(X)で表す（変数は大文字で表す）– Socrates is a human は述語の変数に定数を代入してhuman(socrates).と記述する– これは文であり事実を表す• human is a mammal(人間は哺乳類である)– mammalは抽象化された概念なので単項述語mammal(X)で表す– human is a mammalは「human(X)ならばmammal(X)である」と捉え
mammal(X) :- human(X).と記述する– これは「humanの要素ならばmammalの要素でもある」というルール

複雑なルール• AがBの親であり、かつBが男性(の要素)ならば、BはAの息子である– 「parent_of(親である)」というのは関係なので、二項述語で表す– 「AがBの親である」はparent_of(A, B)のように表す– 「BがAの息子である」はson_of(B, A)のように表す– 「male(男性)」は抽象化された概念なので、単項述語male(X)で表す• 「◯であり、かつ△ならば、□である」は次のようなルールになる– □ :- ◯, △.
– つまり以下のようなルールとして表される– son_of(B, A) :- parent_of(A, B), male(B).

家系図プログラム
再び

家系図プログラム（1/4）
徳川家康の息子と娘が誰か知りたい家系図プログラム（2/4）• 事実– 「秀忠」「忠吉」「家光」は男である– 「市姫」「松姫」「千姫」は女である– 「秀忠」「忠吉」 「市姫」「松姫」の父親は「家康」である– 「家光」「千姫」の父親は「秀忠」である• ルール– 父親は親である– 母親は親である– 男であり、それに親がいたら、その親にとってそれは息子である– 女であり、それに親がいたら、その親にとってそれは娘である• 質問– 家康の息子は誰か？

家系図プログラム（3/4）• 事実– male(秀忠). male(忠吉). male(家光).
– female(市姫). female(松姫). female(千姫).
– father_of(家康, 秀忠). father_of(家康, 忠吉).
father_of(秀忠, 家光). father_of(家康, 市姫).
father_of(家康, 松姫). father_of(秀忠, 千姫).

• ルール

– parent_of(X, Y) :- father_of(X, Y).
parent_of(X, Y) :- mother_of(X, Y).
– son_of(X, Y) :- parent_of(Y, X), male(X).
– daughter_of(X, Y) :- parent_of(Y, X), female(X).

• 質問– ?- son_of(X, 家康).

家系図プログラム（4/4）

ここでちょっとブレイク

講義に関するコメント（1/2）••••
関係の話をしていましたが、「名古屋大学」と「大学」は具体抽象関係と言っていましたが、ある意味「大学」の中の「名古屋大学」とも考えられるのかなと思いました。また「体」と「手足」も部分関係でもあり、腕から毒が入っても体中に毒がまわるから依存関係でもあると思いました。
宣言的知識は辞書のように知識の定義や•元となる知識をたどっていくと（相対的なものだという特徴から）きりがなくなってしまうとありました。しかし、人工知能が現実世界を正しく認識しようとすると定義（具体例）をたどるしかなく、本当の具体例？が数値化できない以上実際の世界そのものを人間のように理解することはできないように思えましたがどうなの•でしょうか。
概念のネットワークにおいて、「部分」と「具体」の違いがよくわかりませんでした。
例えば、「PC」に対する「Windows」、「linux」は、部分なのか、具体なのか。

大学という概念が複数の部分に分解され、その構成要素が欠けると、大学と呼べなくなるような場合、大学とその構成要素は部分全体関係で結ばれます。大学と名古屋大学はそういう関係ではありません
よね。例えば、大学と教員や学生は部分全体関係になっていると言えるでしょう。
人体と手足の関係も部分全体関係です。
部分全体関係が依存関係の要素を含むのはある意味当然ですから、依存関係でもあるというのは正しいです。
よい質問ですね。人間が概念を獲得するメカニズムが解明されないと、人工知能が「人間のように」世界を理解することはできないでしょう。また、それは「脳が脳を理解できるか」という問題でもあり、私は答えは「No」なのではないかと思います。
しかし、だからと言って人工知能が役に立たないということではありません。「人間のように」世界が理解できなくても、「人工知能なりに」世界を理解して情報処理をすることはできるのです。
「OS」 と「PC」が部分全体関係ということはできるかも知れません。それは、OSがインストールされていないと、PCはPC足りえないからです。
「Windows」や「linux」は、「OS」に対して、具体抽象関係があります。 「Windows」がなくなっても、 「OS」は「OS」であり続けることができるからです。

講義に関するコメント（2/2）
••

•

•

•

機械にとってネイピア数が理解しにくいとおっしゃいましたが、人間にとって、ネイピア数もかなり難しい知識ではないでしょうか。
ロボットもオムライスを作ることは可能だと思います。ロボットに食材のデータや•キッチンにある器具のデータを記憶し、各工程を指示しておけばある程度のクオリティの物はできると思います。また、使われている食材と合う食材や調味料のデータを記録しておけばアレンジさせることも可能だと思います。
概念のネットワークには、考えれば考えるほどノードがでてくると思うのですが、どこでノードをうちきればよいですか？
AIの知識量が学習によって多くなっていくと検索に時間がかかって答えを出すまでの時間が長くなっていってしまうような気がするのですが、これを長くしないための工夫などがあるのでしょうか。

••「ネイピア数」という概念が機械にとって理解しにくいという話ではなく、 「ネイピア数」を表現する方法（数式や定義など）が、人間が理解するために（人間に正しく伝達するために）考えられた方法である、ということが言いたかったのです。「ネイピア数」をプログラムで表現すれば、それは人間にとって（数式に比べて）理解しにくく、機械によって理解が容易な表現になります。
これも「オムライスの作り方」が機械が理解しにくいという話ではなく、 「オムライスの作り方」を説明するクックパッドのページが、人間に理解させることを意図した表現であり、機械がそれを読んで理解するには適切な表現ではない、ということが言いたかったのです。機械が理解できる表現できれば、機械がその情報を使いこなすことは可能になるでしょう。
まず、すべての知識が記述できると考えるのは間違いですから、そんなことは考えてはいけません。そうではなく、AIを作るために「どんな知識をどのくらい記述すればいいか」を考えるのです。そのために、知識処理を学ぶのです。
それはよい質問です。もちろん、知識のサイズが大きくなるに処理が大変になります。
そのための工夫について、これから勉強していくことになります。

その他のコメント（1/5）•••

人工知能の発達や科学技術の進歩によって、これからどんどんめんどくさいことがなくなっていくんじゃないかと思います。逆に未来では昔の慣習などがめずらしい体験としての価値を生んだりするかもしれないと思いました。どう思いますか？
今日の講義とはあまり関係ありません
が、小説を書く人工知能や、人工知能で東大に合格しよう、などの取り組みがありますが、人工知能がそのような能力を獲得することができると思いますか。
また、できるとしたらどれくらいかかると思いますか。
ふと思ったのですが、人工知能は人間の「死」を理解したり、学習したりすることはできるのでしょうか。そもそも人工知能にとって「死」とは何でしょう。人は他人の死を見て学ぶことはできますが、自分が経験して学習することはできません。
人工知能はそれを学ぼうとした時、どのように学ぼうとするのでしょうか。

•••

おそらく「今めんどくさいこと」はどんどん機械に置き換えられていくと思いますが、人間は新たに「もっとめんどくさいこと」を生み出していき、今度はそれを自動化しようとするのではないでしょうか。
「マイナンバー」とかを見ていると、そんな気がします。また、おっしゃるとおり、昔の伝統的行事のようなものは「めんどくさいけれど、こんな深い意味があったんだ」と再評価されることがあると思います。
できると思いますが、その前に、「人間の言葉をどうやって機械に理解させるか」についての革新的なアイディアが生まれると思います。機械学習はそのための有力な手段ですが、まだ完全ではありません。
それが10年後くらいとして、さらにその10年後くらいには東大にも合格できるようになるのではないでしょうか。
するどいですね。人工知能は生物ではないので、おそらく「人間のように」死を理解することはできないと思いますが、「人間が死をどのように捉えているか」は言葉の理解によって可能になると思います。しかし、人工知能が「死を恐れる」ということはおそらくないのではないかと思います。

その他のコメント（2/5）••••

講義で使用されている発表システムを余裕があれば製品化したいとおっしゃっていましたが、wiiリモコンを改造したものをそのまま製品化できるのでしょうか？
また、製品化する際に追加したい機能等はありますか？
スライドのWiiはおそらく改造していると思うのですが、任天堂におこられませんか？
パワーポイントのソフトは何の言語＆技術で作ってるんですか。
リモコンの仕組みが気になるので、出来たら少し詳しく教えて下さい。

••

•

•

そのままではもちろん製品化できません。Wiiリモコンの部分を作り直す必要があるでしょう。
しかし、Wiiリモコンは任天堂のオリジナルの技術ではなく、既存の技術の寄せ集めですから、似たようなものを製作しても（形状が酷似していなければ）製品化しても大丈夫だと思います。もし製品化するなら、もっと小型化すると思います。
実は、かなり以前にこの技術を任天堂に売り込もうとしたことがありましたが、ゲームにしか興味がないらしく断られてしまいました。最近、プラネタリウムでこの技術を使いたいという話があり（ただし任天堂ではない）、もしかしたら技術提供することになるかも知れません。
C++とC#です。Bluetoothの信号をTCPのパケットに変換する部分をC++で、パワーポイントの内容を解析して、ポインタで操作できるようにする部分をC#で書いています。
パワーポイントの操作は、マイクロソフトの提供するライブラリを使っています。
このポインタの仕組みは、スライドを解析し、文字や図などの内容を操作する仕組みとポインタの画面上の座標を計算する仕組みの2つから構成されています。画面上の座標を計算するためにWiiリモコンの仕組み（赤外線LEDを点として認識する赤外線用カメラ）を使っています。

その他のコメント（3/5）•••

先生は、日常生活で乗り物を乗る経験を •してらっしゃるとのことでしたが、そうしていると足腰が弱ってしまいそうで心配です。今後ますます年を重ねられた時を見すえ、できるだけ歩いた方がよろしいのではないでしょうか。（余計なお世話だと言われそうですが…）それとも、その乗り物に乗っている方が筋力がつくのでしょうか？また、ウォーキングをされたり、ジムに通ったりしてらっしゃるのですか？
座れるタイプの乗り物もすごく気になるし、 •見てみたいですが、講義中に先生の姿が見えにくくなるのは残念です。Ninebotには、“ペッパーくん”のような、何か愛称などはないのですか？個人的にはナインボットの“ナボちゃん”がいいです。
パーソナルモビリティの普及は車いす•などを見てると難しそうに思いますが、どこまで人間生活に溶け込めるか、確かに気になります。

心配してくれてどうもありがとう。私が考えているのは「将来、ほとんどの身体機能は自動機械で補うことができる」ということです。
それなら、年齢とともに劣化することはないし、肉体が損傷しても普段通りに生活することができます。そのためには機械と人間が一体化できるような仕組みが必要です。場合によっては、人間の認知機能を機械が補ってくれるでしょう。
だから、このような機械はどうあるべきかを考えながら乗っているのです。ちなみに、常にバランスをとる必要があるので姿勢はちょっと良くなると思います。
Nine(9)botなので９（きゅー）ちゃんと呼んでいます。きゅうりのつけものではありません。
今回の乗り物はAirWheelという製品名がついていますが、９ちゃんの次に購入したので、１０（じゅっ）ちゃんと呼んでいます。さらに、現在開発中のオリジナルの乗り物（正式名称はOmnis）は１１（じゅういっ）ちゃんと呼んでいます。もっとも、このネーミングはちょっとセンスがない気がしています。
パーソナルモビリティの進化形は人間社会を変える発明になると思っています。
自動運転車（全自動車？）と同様に、人々の利便性だけでなく安全性を高める技術だからです。つまり、近未来では交通事故で死亡する人はいなくなると信じています。

その他のコメント（4/5）••••
「OK Google」を使わないというコメントに対して、店員がロボットだったら声をかけるはずという返答がありましたが、店員がロボットだったら声で呼ばなくても、タッチパネルの機械で注文するように店員に対しても、機械を用いてロボットに指示できるようにした方が音声認識を搭載しなくても、意思疎通ができるはずだし、そちらの方が好まれる気がします。
現代の若者におけるface-to-faceのコミュニケーション能力の欠如を侮ってはいけません。
•GateBoxのビデオは未来的で面白そうなことではあったが、ワクワク感よりも、少し寂しさを感じてしまった。
家にいてくれる人工知能の映像を見て、こういうものが普及したときに親友や恋人といった人間関係もまた変わっていくのだろうと感じました。私はあの人工知能が •いてくれたら生活がもっといきいきしたものになるだろうし、場合によっては恋人がいらないと言い出してしまうかもしれません。

それが真実なら由々しき事態ですね。
対面的コミュニケーションというのは自然に上手くなるものではなくて、トレーニングを要するものだと思っていた方がよいと思います。
お店で定員と話すのは、最も簡単で手軽なコミュニケーションの練習だと思います。普段話していないと、いざというときに話せなくなってしまうのです。
それが一般的な印象だと思います。
私はどちらかというと危険な感じがします。特に、メーカーがこの製品を外部からコントロールできるようになっているとしたら、ユーザーの行動も操作されてしまうと思います。
それが本当に幸福につながるのかよくわかりません。高齢者ならいざ知らず、若者が仮想的人格に恋愛感情を持ってのめり込むのは少子化を加速するという理由以外でもいろいろまずいような気がします。

その他のコメント（5/5）• 大学生活は想像していたより •忙しく、勉強に時間を費やすことができていません。時間を有効活用するために、長尾先生がしていたことがあれば、教えてください。
• 学生時代ぼっちだったと言っていましたが、今の先生はとても •話が上手いように感じられます。
そのトーク力はどこで身に付けたのですか？ぜひ参考にしたいです。
•• クリエイティブな発想を養うためには、どうすればいいと思いますか。

最も大事なことは「目標を持つこと」でしょう。
目標の達成のためにすることなら、意欲をもって取り組むことができると思います。今やっている勉強が、自分の目標に関係あるかどうかを判断して、やるべき勉強を取捨選択して、優先度を決めるのがよいと思います。時間の上手い使い方とは、目標に合ったことに適切に優先度を付けて、それが高い順に行動して、優先度の低いものについてはうまくいかなくても気にしないようにすることです。勉強がつまらなくなるのは、それが単位を取るためだけにやっていると感じるときだと思います。
他者と同じことを同じようにするのが好きではなかったのですが、それほど孤独だったわけではなく、気の合う人たちと話をするのは嫌いではありませんでした。
無論、知らない人と話をするのは緊張しますが、知らない人と長く話ができるようになると会話のスキルはかなり上がるでしょう。
つまり、話がうまくなる秘訣は、人とたくさん話をすることです。
疑問が生まれたら、それをあいまいなままに理解しないことです。発想力を養うためには、常に何かに疑問を持って、その疑問を解消するためにいろいろ考えることです。自分が解決できると思われる問題が多ければ多いほど、自分のできることは増えますし、新しいことが思いつきやすくなります。

Prolog(Programmingin Logic)

Prolog (Programming in Logic)• 事実とルールから成るプログラム– 事実• a(b, c).のような書き方• aは関係、b,cは具体化された概念（定数：小文字で書く）– ルール• a(X, Y) :- d(X, Y).のような書き方• a,dは関係、X,Yは具体化が可能な（抽象化された）概念（変数：大文字で書く）• プログラムの実行は「質問」による– 質問• ?- a(X, Y).のような書き方• Yes, NoあるいはX=b, Y=cのような答えが返ってくるPrologの動作原理（1/2）• パターンマッチング– 同じ名前の述語同士を照合する処理– a(X, Y)とa(b, c)を照合するとX=b, Y=cとなる– d(X, b)とd(c, Y)を照合するとX=c, Y=bとなる– a(X, Y)とd(b, c)は照合できない（述語が異なるため）– a(b, c)とa(e, f)は照合できない（定数が異なるため）• Prologの実行は、質問に照合する事実とルールを見つけること

Prologの動作原理（2/2）

家系図プログラムの実行（1/2）• 家康の息子は誰か？

家系図プログラムの実行（2/2）• 家康の娘は誰か？

まとめ（1/2）• 知識には、事実とルールの2種類がある– 事実は具体化された概念と関係から成る– ルールは抽象化された概念と関係から成る– 推論：事実とルールから新たな事実が導かれる• 知識のネットワーク構造から事実とルールが構成される– 事実：ネットワーク構造の個別の知識に関するもの– ルール：一般的な知識に関するもの– 自動的な構成法については「学習」のところで説明しますまとめ（2/2）• Prolog– 知識のプログラムのための処理系の一つ– 事実とルールから成る– 質問を入力するとプログラムが実行される

講義資料はダウンロードできます• URLは、以下の通り。
–http://www.nagao.nuie.nagoya-u.ac.jp/syllabus/knowledge_proc.html• メールでの質問も受け付けます。
研究室に遊びに来たい人は連絡ください。
連休明けくらいに見学会を企画しています。
–nagao@nuie.nagoya-u.ac.jp

今日の問題• 「XはYの孫である」という関係を、grandchild_of(X, Y)と書くとします。
• parent_of(A, B)という関係を使ってgrandchild_of(X, Y)を定義してください。
– ここで「定義する」とは、 grandchild_of(X, Y) :- ○○.という「ルール」を書くこと。

• 次に、 「XはYの祖父母である」という関係を、grandparent_of(X, Y)と書くとします。
• grandchild_of(A, B)を使ってgrandparent_of(X, Y) を定義してください。