= 3. 知識と推論 = == 3.0 記憶 == 知識を * 蓄積していること * 取り出すこと 蓄積したが取り出せないこと → 忘却 → 思い出す === 人間の記憶 === 二重貯蔵モデル:: * 短期記憶 (時間、容量に制約) * 長期記憶 (繰り返し、コーディング(語呂合わせなど)によって定着させる。記憶量の上限突破を防ぐために忘却することがある) === 人間とコンピュータの違い === * コンピュータは忘却しない * コンピュータは命令されたとおりに動く * 人間は失敗する ------ == 3.1 知識ベース(KB) == 知識:: 知っている内容。認識によって得られた成果。 * 推論(知識を加工して新しい概念を作り出すこと) 1. 宣言的知識 * りんごは(通常)赤い。 * 太郎の父は三郎 * ''事実'' (What型, "何であるか") 2. 手続き的知識 * 雨が降ったら傘をさす * 風邪をひいたら薬を飲む * ''規則'' (How型, "どうするのか") == 3.2 知識表現 == 1. プロダクションシステム * `if (cond) { do_something(); }` * もし〜ならば〜{だ|する} === 推論機構 === プロダクション集合に作業記憶を照合して処理を行う一連のメカニズム 1. Working Memoryを参照して、<条件>を満足するルールをプロダクション集合から見つける 2. 複数みつかったら一つ選ぶ、あるいは見つからなかったら終了 3. ルールを実行してWorking Memoryを更新する 4. 1に戻る === 例 === 1. `IF X > MAX THEN MAX = X` 2. `IF Y > MAX THEN MAX = Y` 3. `IF Z > MAX THEN MAX = Z` \\ W.M. `X = 3, Y = 5, Z = 7, MAX = 4` 1. 2.と3.のルールが合致。MAXを5に更新 2. 3.のルールが合致。MAXを7に更新 3. 合致するルールなし。終了 === 競合解消の方針(Strategy) === 1. あらかじめルールに優先順位をつけておく 2. 条件の最も厳しいルールを使う 3. 一番新しくW.M.に付加された項目を参照しているルールを使う 4. 直前に使ったルールは使わない