# 論文筆記——A Validation Methodology for Agent-Based Simulations 有效性(validity)是模擬模型的基本前提,因此也是ABS的基本前提。然而MAS的模型通常會需要一些特定方法,於是在這篇論文中會提出ABS模型的驗證過程,結合了表面效度(face validity)、靈敏度分析、校準和統計驗證。 ## 簡介 有效性是模擬模型最重要的特性,代表著模型的正確與否。經過足夠的驗證,就能夠為實驗提供可靠的結果,且只有經過驗證才能讓這些結果作為原始系統能參考的答案。ABS為許多專業領域提供了新穎方式處理以前無法進行的模擬。 話雖這麼說,ABS的驗證存在著需要解決的問題,因此需要定義適當的流程。本文會先介紹各種能用在ABS模型的有效性概念和它們與模擬目標的關係,接下來簡短敘述遇到的問題和現有方法,然後介紹一個用於驗證ABS的框架。 ## 有效性類型 根據進行驗證的方式或是模型開發的進度可以找到不同類型的驗證,經驗驗證、根據統計驗證、概念模型驗證、操作驗證、結構驗證、過程驗證等等,已經出現過各式各樣的方式。作者提出了以兩個面向來表現有效性:測試方法的性質,和模型使用的元件。 * 測試方法的性質 表面效度可以看作表面驗證(face validation)的結果,依靠的是人類的智慧,方法包括專家對各種描述、動畫展示、或是結果數據的評估。總之表面效度能夠表達出,在系統專家或是stake-holder的觀點下,過程和結果是合理可信的。表面驗證可以在模擬的早期階段就開始應用,通常也被叫做合理性檢查(plausibility check),對ABS來說非常重要。 處在與理論派正好相對應的實驗派,經驗驗證(statistical validation)的方式是以統計測量和測試來比較模型產生的數據和現實數據,少數情況不一定是與現實比對,也可能是與已經被驗證過的模型比對。 * 模型使用的元件 可以分為行為效度(behavioral validity)和結構效度(structural validity),前者是指整體系統的輸入輸出行為,後者是指模型內部結構的有效性,換句話說就是變數之間的因果關係或代理人的推理。行為效度可以再細分為複製效度(replicative validity)和預測效度(predicative validity),分別表示樣本的有效性和樣本以外的預測。  上表整理了在不同研究目標下最優先要達到的驗證,forecast和prediction需要特別解釋一下,它們的差別在於未來的遠近,forecast通常在預測久遠以後發生的事,比方說日蝕發生的時間;prediction則是近期的預測,比方說天氣預報。 ### 現存的驗證技術 從非正式的檢查、人本檢查、對輸入輸出的統計測試,到正式的模型檢查程序,O. Balci列出了多達44種測試技術,都可以用在ABS中。除此之外還有前面提到的模型與模型進行比對驗證,叫作模型對齊。概念是讓有效性形成傳遞關係:如果模型A有效的重現了現實系統O,而模型B能夠十足重現A的成果,那麼我們可以認定模型B也能夠重現現實系統O。 若是在缺乏歷史數據的情況下,也能夠利用專家知識來完成驗證。比方說利益相關者方法(stakeholder approach)、同伴建模方法(companion approach)和角色扮演遊戲方法(role playing games approach),都是讓人類實際參與道模擬中以取得數據的方法。 ### ABS遇到的問題 #### 特徵輸出的敘述 只有在找到可以適當敘述系統特性的數字的時候,經驗驗證和統計驗證才有用處,但是這些數字代表的是大量行為的總和,沒辦法表現出具有特色的代理人行為。 #### 聚焦在瞬時動力學(Transient Dynamics) ABS很適合用在研究行為是否會改變系統穩態的互動問題,但是在驗證的時候必須與參考的系統進行比較,在動力學中如果能使用時間序列的驗證程序最為方便,只不過現在幾乎沒有有用的時間序列數據。 #### 非線性和脆性(brittleness) 讓代理人、環境、其他代理人或某些組織結構形成的系統可能會讓參數形成非線性的變化,導致無法預期的蝴蝶效應,讓模型面對參數變化非常脆弱,而且建模者也不一定能知道發生問題的所在。 #### 驗證工作的規模和數據的可取得性 ABS的規模比一般的,或者說較抽象的模擬需要更多的時間和記憶體需求,連帶造成的是在驗證時,必須從單一代理人或部分模型的子集合,到整個系統的輸入輸出都進行驗證,才會是嚴謹且有效的驗證,也因此消耗成本非常的大。 在數據方面,如果是要得到「整體系統」這種規模的數據其實很輕鬆,而要觀察「個體」則變得困難又麻煩,比方說在車站剪票口可以蒐集到總體的人流資訊,但若要觀察每一個乘客的移動路徑就變得太不切實際。另外在不同地區進行的資料收集也取決於當地的背景,最常見的就是隱私問題,有時光要記錄個人的數據就存在不少問題。 #### 可能做不到的反證 建模者會根據他的假設建立模型,並希望模型的模擬結果能夠支持或拒絕他的假設。但想要被拒絕常常都是不太可能,因為模型能夠自動將參數調整成符合參數的結果。有個叫作EOS的計畫,基於社會複雜性的主題設計了兩個衝突的合理假設的模型,兩者都能夠重現觀察到的社會現象,也因此沒有任何一個理論能被拒絕。 ## 驗證框架 流程會先從可運行的模型開始,判斷基準是第一次能夠生成動畫和輸出資料的時候,必須盡可能完成除錯,因為就算在ABS模型的早期開發階段,驗證也是很重要的一環。如果模型的概念不含有效性並得到實作和驗證,後續步驟就沒有意義。圖一表示對驗證過程的建議,和描述了如何將模型整合到更通用的建模周期的草圖。  ### 表面驗證 在模型設計過程中有重要作用,以下有三種進行方式: #### 動畫評估 Animation Assessment 意思是人類專家評估整個模擬系統或部分系統的動畫像不像原始的現實系統,因此動畫必須有足夠的細節呈現,並以人類容易檢驗的方式顯示元件的所有動態。動畫通常會以所謂的「上帝視角」呈現與現實相對應的景象,如此一來就能隨意選擇要觀察群體還是個體的行為。 #### 輸出評估 Output Assessment 模擬的輸出也能讓人類專家進行評估算式的合理性、數值間的關係、數值的變化和走向等等。在經過客製化處理的分析程式下,也能對輸出數值自動化評估。 #### 沉浸式評估 Immersive Assessment 人類專家能透過單一特定代理人的視角進行觀察,並了解代理人的感知和代理人對它的反應,於是專家就能藉由這些資訊評估代理人的行為是否合適。如果介面可以互動,專家還能觀察其他代理人對有人類控制的代理人互動的行為並進行評估。 ### 敏感度分析 Sensitivity Analysis 對包含許多參數的模型來說是重要的步驟,會涉及參數集的處理,然後顯示不同參數和數值設定所造成的影響,再對數值校準到適當的範圍。ABS中會面臨著一些特殊的參數問題,而些問題會導致特殊的解決方案,比方說:縮放(scaling)問題,因為大量的參數造成模型非常細緻;抽象的代理人參數和具體的獨立參數之間映射有問題,導致微小變化影響到行為準則的巨大改變;參數間的相依關係等,諸如此類。 敏感度分析包括組成實驗計畫,控制參數值依照時間變化而改變。對這些參數的組合,會進行一次獲多次的運行和評估。有關ABS的敏感度分析已經在[14]被解決。根據敏感性分析的結果,可以透過刪除不造成影響的參數和與之有關的部分,生成使用最少參數集的模型,並做為下一步校準的輸入,就是敏感度分析能帶來的幫助。 ### 校準 Calibration 校準的時候,模型參數必須以結構正確的模型產生有效結果的方式設置。它也被稱為模擬的「逆問題」(inverse problem),意思是,不是從給定的輸入$I_{fix}$和參數$P_{fix}$順向計算並產生輸出$O_{sim}$,而是從給定的輸入$I_{fix}$和輸出值$O_{fix}$開始,探索適當的參數值$P_{opt}$,以便在使用下一份輸入和參數集的時候,產生的輸出$O_{sim}$能夠近似於給定的輸出$O_{fix}$,寫作$O_{sim} \sim O_{fix}$,因此校準可以算是最佳化問題。 在ABS中,有兩個校準的主要問題必須解決: * 如何合理處理有問題的參數結構? 作者建議將整個模型看成是一個黑盒子,並使用有效的最佳化方法來尋找最好的參數設置。這個流程在局部有效性測量可用時,且校正也可以應用的時候可以被改良。有人建議使用強化學習來利用局部資訊,推理出最好的代理人行為,接著這個行為就能被當作是局部資訊下,能夠被使用的校準參考來源。 * 如何避免調適陷阱? 整合了合理性檢查和額外的測試能夠避免調適陷阱,合理性檢查代表的跟前面講的表面效度基本相同,只不過不會做到這麼全面,因為我們會假設模擬結果只有有限數量的變化。 若解決了參數設定的問題,則可以把敏感度分析和校準合併成一個步驟。 ### 統計驗證 Statistical Validation 在完成校準後還不能開始部屬模型,進行實驗然後分析輸出數據,因為校準和驗證必須使用不同的數據集,以確保評估模型能力的公正。因此要使用沒被使遇過的數據進行測驗,確認輸出結果也如同前面一般準確。 ###### tags: `論文` `Intellingent Agent`
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.