自動車の自動運転に一言

2015.12

 

 以下の拙著の中で,自動車自動運転を例題として,ルール集合から推論して,

右折を正しく実行するような推論実行方式の難しさに言及している.

 

(1)   ソフトウェア危機とプログラミングパラダイム(啓学出版,1992)→第9章「人工知能」

 (2) ソフトウェア工学(朝倉書店,1997)→第19章「人工知能」

 (3) ソフトウェア工学(第2版)(朝倉書店,2004)→15.3節「知識ベースシステム」

 

■上記拙著(1)の関連部分(9.2節 プロダクションシステム):

http://www.1968start.com/M/keigaku/index.html

http://www.1968start.com/M/keigaku/sp09.pdf  

 

■上記拙著(3)の関連部分の抜粋:

15.3 知識ベースシステム

15.3.2 プロダクションシステム

a. プロダクションシステムの特徴

 プロダクションシステムは,1967年に人間の認知モデルに基づく問題解決方法として考案されたもので,エキスパートシステム構築ツールの多くが,この機能を備えている.その主な特徴は,次のようなものである.

 (1) 知識は,「 if 条件 then 行動 」というルール形式で簡潔に表現されるため,コンピュータに不慣れな人にとっても自然で理解しやすい.

 (2) 前向き推論機能により,初期条件が与えられると,条件を満たすルールの実行を繰り返して結論を導くことができる.

 (3) 後向き推論機能により,目標が与えられると,目標を結論とするルールの条件が満たされているか否かの判定を繰り返して,目標の真偽を確認できる.

 

 b. プロダクションルール

 人間の世界には多種多様な知識が存在するが,「 if 条件 then 行動 」というルール形式で簡潔に表現されるノウハウ的な知識が重要な役割をもつ場合が多い.プロダクションシステムでは,このような知識をプロダクションルールとして記述する.これが従来のプログラムに相当する.

 プロダクションシステムの詳細は,次のような例題を用いて説明する.

 

[例題]自動車自動運転エキスパートシステムの概要.

 (1) 自動車は,図15.4の地域内の指定されたルートを自動運転により移動する.

 (2) 知識として,次の3種類のプロダクションルール(図15.5)を用いる.

 ・交通規則に関するルール群

  ・運転操作に関するルール群

  ・ルート(経路)に関するルール群

 (3) 説明を簡単にするために,次のような前提を設ける.

  ・すべての交差点に信号がある.

  ・歩行者はいない.

  ・交差点に同時に到着する自動車は,一方向からは1台以下とする.

 

 交通規則( t : traffic regulation )に関するルール群は,t1t1111個の判断ルールからなる.運転操作( d : driving operation )に関するルール群は,自動車の運転を制御するもので,d1d66個の操つくるルからなる.ルート( r : route )に関するルール群は,自動車にルートの指示を与えるもので,ルール数は可変である.15.5の例は,図15.4の黒線で示したP地点からQ地点へ移動するルートに関するルール群である.なお,この地図上の交差点の識別のために,左右の位置を表す1〜5の記号と上下の位置を表すAEの記号を用いて,交差点をたとえばC2というように表現する.

 

[交通規則に関するルール群]

 

(t1) if 赤信号 then 停止

(t2) if 黄信号 then 停止

(t3) if 青信号 then 進行

(t4) if 左折   then 左方向指示器点灯

(t5) if 右折   then 右方向指示器点灯

(t6) if 進行 and 直進 then 直進可

(t7) if 進行 and 左折 then 左折可

(t8) if 進行 and 右折 and 直進対向車 then 停止

(t9) if 進行 and 右折 and 左折対向車 then 停止

(t1O) if 進行 and 右折 and 右折対向車 then 右折可

(t11) if 進行 and 右折 and 対向車なし then 右折可

 

[運転操作に関するルール群]

 

(d1) if 左方向指示器点灯 then 左方向指示器点灯操作

(d2) if 右方向指示器点灯 then 右方向指示器点灯操作

(d3) if 直進可 then アクセル操作

(d4) if 左折可 then アクセル操作 and ハンドル左回転操作

(d5) if 右折可 then アクセル操作 and ハンドル右回転操作

(d6) if 停止   then ブレーキ操作

 

[ルート(PQ)に関するルール群]

 

(r1) if 交差点D2 then 直進1

(r2) if 交差点D3 then 左折

(r3) if 交差点C3 then 右折

(r4) if 交差点C4 then 左折

(r5) if 交差点B4 then 左折

(r6) if 地点Q   then 停止

 

15.5 自動運転に用いる3種類のプロダクションルール

 

 c. 推論方式

 このような知識を用いたプロダクションシステムの推論方式(プログラム実行方式)について説明する.まず,次のような状況例を考える.

 

[状況1]

 (1) 初期条件

  ・自動車の位置:交差点D2

  ・信号機の状態:青

  ・対向車の有無:なし

 (2) 推論過程の概略

 交差点D2が近づいたが,信号が青であり,この交差点は直進すればよいため,そのままアクセルを踏み続けた.

 

 このような推論を行うためのプロダクションシステムの基本構造は,図15.6のようなものである.15.5のルールの集合は,プロダクションメモリに保持しておく.「青信号」のような外界の状態や「直進」のような推論の中間結果は,ワーキングメモリに書き込んでおく.

 

 推論エンジンは,ワーキングメモリの状態を観察し,プロダクションメモリの中に条件部を満足するルールがあれば,それを実行するとともに,その実行結果をワーキングメモリに反映するという一連の動作を繰り返す.この推論過程は,図15.7に示すようなもので,認知―行動サイクルと呼ばれる人間の認知モデルに対応している.すなわち,人間の思考過程を認知と行動の繰り返し作用ととらえ,図15.7における照合と実行を繰り返すものである.照合の後の競合解消は,実行可能なルールが複数あった場合に,どれを優先して実行するかを決めるものである.

 

 さきの状況1の場合の実行過程を示したのが,表15.1である.まず,初期条件の「交差点D2」と「青信号」と「対向車なし」がワーキングメモリに書き込まれ,図15.7の推論実行が開始される.最初の実行サイクルでは,照合過程で実行可能ルールとしてt3r1が選び出され,次の競合解消過程でそのうちのt3が選ばれ,最後の実行過程でそのルールの行動部の「進行」がワーキングメモリに書き加えられる.以下,同様にして, 5回目の実行サイクルで実行可能ルールがなくなるまで,推論が繰り返される.なお,このとき,実行されたルールは,実行可能ルールから削除されるものとする.

 

d. 競合解消戦略

 状況1の例では,1番目の実行サイクルにおいて,実行可能ルールが複数個あり,ルール番号の小さい方を優先して実行した.このように実行可能な複数のルールの中から一つを選択することを競合解消( conflict resolution )といい,その方法を競合解消戦略という.これには次のようなものがある.

 ・記述順優先:ルール記述順の早いものを優先

 ・最新優先 :より最近にワーキングメモリに書き込まれたデータを

        照合対象の条件部にもつルールを優先

 ・詳細優先 :条件部が複雑なルールを優先

 ・重要度優先:各ルールにつけられた重要度の重みの大きいルールを優先

このほかにもいろいろ考えられるが,適切な競合解消戦略を設定することは,一般には容易ではない.

 

 その例として,自動運転エキスパートシステムの次の場合を考えてみよう.

 

[状況2]

 (1) 初期条件

  ・自動車の位置:交差点C3

  ・信号機の状態:赤

  ・対向車の有無:直進対向車

 (2) 推論過程の概略

 交差点C3が近づいたが,ここは右折しなければいけないので,右方向指示器を点灯した.信号が赤なので停止し,青信号になるのを待った.信号が青になったが,直進対向車があるので,引き続き停止し,対向車の通過を待って右折した.

 

 この場合の実行過程を表15.2に示す.競合解消戦略は,状況1(表15.1)の場合と同様に記述順優先を採用した.なお,説明を簡単にするために,自動車の位置や交差点での信号の状態および対向車の有無は,即時に認識されてワーキングメモリに反映されるものとするが,これらについてもルール化は可能である.

 

 さて,競合解消戦略として記述順優先を用いた表15.2の実行過程では,交差点で停止してから右方向指示器を点灯するという不都合が生じている.これは,実行サイクルの1番目と2番目において,交通規則に関するルール群や運転操作に関するルール群が,ルートに関するルール群よりも先に記述されているためである.この不都合に関しては,ルートに関するルール群を最初に記述するように順序を変更すれば解決する.この場合,ルールの実行順序はr3t1t5d2d6の順になる.

 

 この例において,最新優先戦略を用いた場合を考えてみよう.実行可能ルールが複数あった場合,より最近にワーキングメモリに書き込まれたデータを照合対象の条件部にもつルールを優先する.いま,1番目の実行サイクルでは,ワーキングメモリに書き込まれた順番が「交差点C3」,「赤信号」,「直進対向車」の順だったとすると,「交差点C3」を条件部にもつr3よりも「赤信号」を条件部にもつt1のほうが優先して実行される.以下,同様の方法で,ルールの実行順は,t1d6r3t5d2となり,やはり交差点で停止してから右方向指示器を点灯するという不都合が生じている.これを避けるためには,交差点において,まず信号機の状態認識をした後で交差点の位置認識をするか,あるいは「交差点C3」がワーキングメモリに書き込まれた段階ですぐに実行を開始するようにシステムの制御を行う必要がある.その場合は,ルールの実行順は,r3t5d2t1d6となる.

 

 次に,条件部が複雑なルールを優先する詳細優先戦略をとった場合を考えてみよう.交差点C3における信号機の状態が「青信号」で,対向車の有無が「対向車なし」のとき,t5t11が競合する場合があり,詳細優先戦略では条件部が複雑なt11の方が優先される.条件の複雑さが同じときは最新優先を採用することにしておくと,右方向指示機を点灯しないまま右折してしまうという不都合が生じる.

 

 このような種々の不都合を避けるためには,重要度優先戦略を用いてルールの実行順序を明示的に規定しておく方法がある.たとえば,ルートに関するルール群を重要度最大とし,次に交通規則に関するルール群とし,運転操作に関するルール群を最小の重要度としておく.そして,運転操作に関するルール群の中では,方向指示機操作のルールの重要度を高くしておけば,いままで述べた問題は生じない.しかしながら,ルール実行順を明示的に指定する方法は,ユーザの負担が大きく,手続き記述と同じことになるため,簡易プログラミングとしてのプロダクションシステムの利点が失われる.

 

 e. あいまいな知識の扱い

 ここでは詳しく述べなかったが,知識表現では,真偽が明確でないあいまいな知識を表現する機能が必須である.そのために,プロダクションシステムでは,ルールに確信度を付加できるようにしている.しかしながら,実際には,正確な確信度の設定というあいまいさの数量化は難しい問題である.

 

[引用終わり]