標籤:

簡單介紹OpenPsi

拋掉論文里那一堆繁複的歷史和概念,PSI(Principles of Synthetic Intelligence )其實是一個簡單的理念:

認知是一個相互依存的整體,對任何單一認知過程的模擬都難以形成真正的意識。

Language can not be fully understood without understanding mental

representation, representation can not be understood without perception, perception

not without interaction, interaction not without action control, action control and

affordances not without motivation, and motivation not without the contexts set by

evolution, environment, physiology and sociality, and so on.

在OpenCog體系里,最底層的是atomspace一個圖資料庫,在這之上是模式匹配 pattern matcher (大致相當於普通資料庫中sql的地位),在此之上建立了一個統一的unified rule engine,上一篇文章講到的 forward chaining 和 backward chaining都可以基於這個unified rule來實現,在規則引擎之上便是OpenPsi(一個規則選擇框架 rule selection framework )

作為框架OpenPsi的固定了解決問題的基本模式,對於任何問題思考總是有兩個方面:

  1. 在什麼情況下做什麼事能達到什麼目標 rule
  2. 需求是什麼,要滿足需求需要做什麼事? demand

其中在OpenPsi框架里規則或知識總被固化為形如:Context + Procedure/Actions ==> Goal的表達式:

if (context) and (action is taken) then (goal is fulfilled)

用OpenPsi框架比單純用unified rule engine的好處是:

  1. 它提供了一個模式,讓你按這個套路來展開對高層需求(demand)和知識(rule)的描述
  2. 它提供了一些工具定義工具和輔助調試工具,方便你的將你思考變成可運行的代碼
  3. 它提供了 psi-set-action-selector! psi-set-updater! 之類擴展點來替換掉系統的默認實現,這更方便你在不同的抽象層次上來組織代碼

在執行的層面看,OpenPsi主要提供了一個psi-step來供上層代碼調用(Main loop),一個psi-step又包含Action selection和Action execution and goal evaluation兩個過程

在執行Action selection時一個規則被選中必須滿足兩個條件

  1. associated with a demand 即規則必須和需求關聯,系統默認的action-selector是關聯度越高,越有可能被選擇,這個權重由ImplicationLink 的stv來指定
  2. context satisfiable 即action發揮作用的條件(context)必須是可落地的(groundable)

目前官方代碼庫的例子有些問題沒辦法跑了,我基於官方的單元測試整理寫了個簡單的例子,更具體的理解大家可以結合代碼來看:

;導入opencog和openpsi模塊(use-modules (opencog) (opencog openpsi));定義context(define context-foo (list ; They are in a list so as to simplify removal. (List (Concept "For PlusLink") ; Avoid error during pattern matching (Variable "x") (Variable "y") ) (Equal (Plus (Variable "x") (Variable "y")) (Number 5) ) ));定義action(define action-foo (ExecutionOutput (GroundedSchema "scm: act-foo") (List (Variable "$abc"))));定義action具體調用的代碼(define (act-foo groundings) (display "you are executing action...
"
) (Concept "act-foo"));定義需求demand-component(define (component-foo) (psi-component "component-foo"));定義action完成後能達到的目標(define goal-foo (psi-goal "goal-foo"));創建一個能滿足context的環境(define (groundable-content-foo) (list ; They are in a list so as to simplify removal. (List (Concept "For PlusLink") (Number 3) (Number 2))));定義創建規則的函數(define (rule-foo) (psi-rule context-foo action-foo goal-foo (stv 1 1) (component-foo)));判斷action是否執行成功了(define (act-foo-present?) (cog-node? (cog-node ConceptNode "act-foo")))(rule-foo);創建規則,即知識(groundable-content-foo);創建知識可以發揮作用的環境(psi-step (component-foo));執行一次迭代(display (act-foo-present?));判斷action是否成功執行(display "
"
)

推薦閱讀:

第一台獲得公民身份的機器人誕生,這將遇見什麼?
AI時代這樣做,傳統醫療才不會out!!!
《深度卷積網路:從AlphaGo到GAN》連載:2.2.8 ~ 2.3.3
全球首個無人駕駛清掃車隊亮相,2018人工智慧3個預測
「一點點」和「喜茶」的這些套路你應該知道

TAG:人工智慧 |