天天看點

《人工智能:計算Agent基礎》——2.3 分層控制

本節書摘來自華章計算機《人工智能:計算agent基礎》一書中的第2章,第2.3節,作者:(加)david l.poole,alan k.mackworth 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

在圖2-1中講述的一種建構agent的方法是将主體分為兩部分:傳感器和一個複雜的感覺系統,感覺系統将對世界的描述輸入給推理引擎來實作控制器,然後能夠生成傳給執行器的指令。但這 圖2-4 一個理想的分層agent系統結構。未标注的矩形表示層,雙線表示資訊流。虛線說明某一時刻的輸出作為下一時刻的輸入對智能系統而言是一個很差的結構,因為它太慢了,使得其很難緩解以下兩個沖突:複雜問題的緩慢推理和agent所需的進階目标的快速反應,例如,躲避障礙。它也不清楚,在其可操縱範圍之外存在一個獨立的世界(見習題2.1)。

《人工智能:計算Agent基礎》——2.3 分層控制

另一種可行結構是在圖2-4中描述的控制器的分層。每一層都将其下層看做一個可從中擷取感覺及送出指令的虛拟主體。越低層,反應速度越快,用于那些需要快速反應的情況,且能将對環境更簡單直白的感覺傳給高層,隐藏不重要的資訊。

總的來說,不同時間的狀态之間,會有大量的特征在層與層之間傳遞。

對于每個時刻的每一層存在如下三類輸入:

來自于信念狀态的特征,指的這些特征所記住的或以前的值。

從下層結構得到的感覺的特征。

從上層結構得到的指令的特征。

對于每個時刻的每一層存在如下三類輸出:

對應上層的更高等級的感覺。

對應下層的低等級指令。

信念狀态特征的下一個值。

層級的實作方式決定了層的輸出是如何由輸入的函數得出。此函數的計算可以涉及任意計算,但目的是使每層盡可能簡單。

為了實作控制器,層上的任何輸入必須有确切的指派來源。每個感覺或者指令輸入應該源自與其相連的其他層的輸出。其他的輸入來源于記住的信念。而層上的輸出不必有相連對象,或者可與多個輸入相連接配接。

進階推理在高層上給出,一般是離散的、定性的,而底層中給出的低級推理則是連續和定量的(見下面“定性與定量表示”的内容)。一個可推理産生離散和連續兩種值的控制器被稱為混合系統。51定性與定量表示很多的科學工程都會考慮使用微積分作為主要工具來進行數值量化的定量推理。而定性推理一般使用邏輯來在給定參數條件下進行性質上的區分而非數值上的推理。

定性推理很重要,原因如下:

一個agent可能無法獲知确切的數值。例如,對于一個倒咖啡的傳送機器人,它也許不能計算出倒咖啡時咖啡壺的最佳傾斜角度,但是一個簡單的控制規則就足夠給杯子加入合适高度的咖啡。

無視數量的推理有時可能更為合适。例如,你也許希望機器人的政策是,隻要能在其可正常操作的範圍内,在工作時便可無視一些東西,如機器人負載是多少、地闆有多滑或者電池的實際電量還有多少。

一個agent需要做定性推理來決定哪條定量規則更為合适。比如,如果傳送機器人正在向咖啡杯中加咖啡,不同的定量規則适合于決定在以下情況下咖啡往哪裡流:當咖啡壺的傾斜角度不夠咖啡流出時,當咖啡加入至一個沒滿的杯子時,當咖啡杯滿并流出時。

定性推理采用離散值,其中有多種不同的形式:

标志是用于在模組化個體中進行定性區分的數值。在咖啡這個例子中,有很多重要的定性區分,包括咖啡杯是否為空、部分滿、滿了。這些标志值對用于預計如果杯子足夠傾斜或者咖啡倒入杯中時會發生什麼來說是必需的。

數量級順序推理是種無視輕微差别的近似推理。舉個例子,一個部分滿的咖啡杯可能已經滿足傳送要求,還有一半滿和接近空。這些模糊定義并沒有一個明确定義的邊界。在杯中咖啡的實際量間和定性描述存在某些關系,但是其中并沒有嚴格的數值因子。

定性的導數可以表明是否一些數值在增加、減少或是不變。

一個靈活的agent在其做定量推理之前需要做定性推理。有時隻需要定性推理。是以agent并不總是需要進行定量推理,但是有時定量和定性推理都需要。【例2-4】 我們認定一個傳送機器人能在躲避障礙物的同時執行進階的導航任務。假定傳送機器人需要在避開可能的障礙物的同時按照順序通路圖1-7中環境的一系列位置。

假設傳送機器人有像轎車一樣的輪子,且每個時刻可以選擇直走、右拐或左拐。但不能停止運動。速度是恒定的,且唯一的指令是設定轉向角度。輪子的轉向是瞬時完成的,但是調整至一個确定角度需要時間。是以機器人隻能向正前方運動或按照一個固定的半徑繞圈。

機器人有一個位置傳感器,可以給自己提供目前坐标和方向。還有唯一一個伸向正前稍偏右的觸覺傳感器,用于探測是否碰觸到障礙。在下面的例子中,傳感器指向前方偏右30度的方向。機器人不自帶地圖,

《人工智能:計算Agent基礎》——2.3 分層控制

圖2-5 傳送機器人的分層分解且環境可以改變(如:障礙可以移動)。

對于此類傳送機器人的分層控制器已在圖2-5中給出。此機器人有個進階規劃需要執行。這個規劃是按順序通路一系列地點。機器人需要感覺環境,然後在環境中移動以便執行規劃。底層的具體細節并未在圖中給出。

最高層,被稱為後續規劃層,在例2-6中有描述。那一層擷取一個用于執行的規劃。此規劃是所需通路地點的名字的順序排列。地點會按照順序選中,每次選中的地點都會轉換成目前目标。此層将決定目标的x-y坐标位置。這些坐标是提供給底層的目标位置。高層知道位置的名字,而底層僅知道坐标。

高層中保留着相關的信念狀态,包含一系列機器人仍需通路的地點的名稱和目前目标的坐标。它以目前目标坐标的形式給中間層傳達指令。

中間層,也可被稱為前往目标并躲避障礙層,它試圖在避開障礙的同時前往目前目标地點。中間層在例2-5中有描述。目标的位置,即target_pos可從上層獲得。當中間層到達目标位置時,它會通過将arrived設為真來告訴頂層其已完成目标。中間層可給一直在等待的頂層發送中斷通知來達成此目的,當然頂層也可能一直在監聽中間層的運作情況來判定何時arrived狀态為真。當arrived變為真時,頂層接着會将目标位置改為規劃中下個位置的坐标點。因為頂層改變了目前目标位置,中間層必須使用前一個目标位置來決定其是否到達目标。因而,中間層必須從頂層獲得目前和之前的目标坐标:之前的坐标位置用于決定其是否已經到達,而現在的目标坐标是用于決定将往何處去。

中間層可以獲知機器人的目前坐标和方向,且能決定其觸覺傳感器是開啟還是關閉。它使用一個非常簡單的政策,即直行向目标直至被阻礙,此時其會選擇左拐。

中間層是建立在底層之上的,底層會提供機器人的一些簡單看法。底層可稱為行進機器人和報告障礙及位置層。它執行轉向指令并報告機器人的位置、方向及傳感器的開關狀态。

在層的内部是特征,而特征可以為其他特征值和該層輸入的函數。每個特征有一個所依賴的特征或輸入的一個弧形連接配接。特征的互相依賴圖一定是非循環的。非循環圖使得控制器可以通過運作一個順序指定數值的程式而實作。而構成信念狀态的特征可從記憶體中讀取和寫入。54

【例2-5】 前往目标并躲避障礙的中間層操縱機器人來躲避障礙物。此層的輸入與輸出在圖2-6中給出。

 圖2-6 傳送機器人的中間層機器人有一個通過觸摸來發現障礙物的觸覺傳感器。由下層提供的一個比特數值可以判定觸覺傳感器是否碰觸到障礙。底層也提供機器人的目前位置和方向。機器人所有能做的事情隻是向左或向右旋轉一個角度,或者直行。而此層的目的是讓機器人向目前目标位置運作,并躲開路上的障礙,到達時發出到達報告。

控制器的此層不包含内部信念狀态,是以并不存在信念狀态轉換函數。而用于控制機器人轉向的指令函數則是其輸入和是否已到達的函數。

當機器人的目前位置接近于上一個目标位置時說明其已到達。是以arrived狀态會被指定一個值,它是機器人目前位置、前一個目标位置與一個門檻值常數共同決定的函數:

arrived ∶= distance(previous_target_pos,robot_pos)其中,∶=是指定,distance是歐幾裡得距離,threshold是一個合适的距離。

如果觸覺傳感器開則左轉,否則朝向目标位置。這可以通過給steer指定合适的值來完成:

當機器人位于robot_pos,面朝方向robot_dir,且目前目标位置current_target_pos在機器人的前方位置,并滿足一些門檻值限制時(對于後面的例子,此門檻值為正前方偏移11°),straight_ahead(robot_pos,robot_dir,current_target_pos)為真。函數left_of用于檢測目标是否在機器人左側。

 圖2-7 傳送機器人控制器的頂層此層是純定量化的。它以數字量化推理而非使用離散值。

【例2-6】 最頂層,也叫後續規劃層,會被給予一個規劃,該規劃為一個需要順序通路的地點的名單。其中都是各種目标,這些目标都可被規劃者開發出來,如在第8章中開發出的那些。當機器人到達前一目标時頂層也會被告知。它必須将目前目标坐标輸出給中間層,并記住執行規劃時其需要的。此層顯示在圖2-7中。

該層會保留内部信念狀态。它會記住目前目标位置和其他需要去通路的位置。其中56to_do特征的數值是待定通路的地點的一個清單。而target_pos特征保留着目前目标的位置。

一旦機器人到達它的前一目标位置,下一個目标位置就會變成下一個需要通路地點的坐标。高層規劃會以位置名字的形式給予機器人,是以必須将其轉換成中間層可以使用的坐标形式。下面的編碼說明了當機器人到達前一目标位置時目标位置和to_do清單如何改變。

其中,to_do′是to_do特征的下一個值,target_pos′為下一個目标位置。在這裡head(to_do)是to_do清單的第一個元素,tail(to_do)是餘下的to_do清單,當to_do清單為空時,empty(to_do)為真。

在這層中,如果to_do清單變成空,機器人就不會改變其目标坐标,之後便會一直在原地繞圈。見習題2.3。

此層可确定已命名地點的坐标。通過一個簡單的有位置坐标的資料庫就可以實作。如果地點不會移動且事先知道,使用這樣一個資料庫是很明智的。然而,如果目标可以移動,那麼下層必須能告訴上層目标目前位置。上層必須請求下層告知給定目标的坐标。見習題2.8。

為了完成控制器,還必須初始化信念狀态變量,且進階規劃必須輸入。通過使用規劃的尾部來初始化to_do清單和使用第一個位置的坐标來初始化target_pos,這就可以實作。

圖2-8給出了有一個障礙的規劃[goto(o109),goto(storage),goto(o103)]的仿真。機器人開始時位于位置(0,5)且面朝90度(北),而在位置(20,20)與(35,-5)之間有一個矩形障礙。

圖2-8 執行例2-6中規劃的機器人仿真

agent對世界的模組化

信念狀态的定義非常一般,且沒有限制哪些是agent應該記住的。一般來說agent保留一些世界的模型是很有用處的,盡管這些模型不完全、不精确。一個關于世界的模型是某一時刻世界狀态和/或世界的動态的一種表示形式。

對于agent來說,可以基于其指令來保持和更新世界的信念。這種方法需要世界的狀态模型和世界的動态模型。給定某個時刻的狀态和動态,57可以預測下個時刻的狀态。這一過程也被稱為推算。例如,機器人可以保留其對自己位置的估計并基于自己的動作來自我更新。若世界是動态的或者執行器有噪聲(如半徑不精确的輪子的滑動或者加速不連續),噪聲會累積,是以估算的位置很快就會變得不準确以至于無用。然而如果模型在某些抽象層次上是準确的,則會成為該抽象層次上的合适模型。

另一種方法是使用感覺來建構世界的相關部分的模型。感覺就是用傳感器資訊來了解世界。舉個例子,這可能會包括使用視覺來分辨世界的特征和使用這些特征來決定機器人、障礙物或者需要撿起的包袱的位置。感覺一般都是模糊的和有噪聲的。僅基于一張世界的圖檔很難建立一個三維世界模型。

一個更加有前景的方法是将agent對世界狀态的預測與感覺資訊結合起來。這可以采用多種形式:

如果向前預測的噪聲與感覺的噪聲都有模組化,那下一個信念狀态就可以使用貝葉斯規則來估算。這也被認為是過濾。

如果使用更複雜的傳感器,如視覺傳感器,那就可以使用模型來預測何處可以發現視覺特征,接着便可用視覺來查找預測位置附近的這些特征。這會使得視覺任務變得更加簡單,且相對于前面的僅依靠預測,使用視覺可以大幅減少位置誤差。

如果可以采用如下方式得到最優動作,即通過首先發現最佳的世界模型,然後再使用此模型來決定最佳動作,那麼控制器問題便是可分割的。不幸的是,大部分控制問題是不可分割的。這意味着agent需要考慮多種模型來決定接下來做什麼,且它可從世界獲得什麼資訊58取決于其對該資訊的不同處理。通常來講,并不存在與agent行為完全獨立的世界最佳模型。

繼續閱讀