OpenCog的認知動力機制
來自專欄 人工智慧與認知架構
從接觸OpenCog以來,我一直比較迷惑 AtomSpace中的知識是如何產生的,難道所有規則都需要手工錄入么?
這兩天啃《Build Better Mind》理解CogPrime才大概明白,一個通用AI系統需要具備的能力:
- 在環境中達成複雜目標的能力。
- 擁有多種記憶。 CogPrime指出的記憶有:聲明式記憶(Declarative memory)、過程式記憶(Procedural memory)、 感覺與情境記憶(Sensory and episodic memory)、 注意力記憶(Attentional memory,知道該如何分配注意力的記憶)、目標記憶(Intentional memory)
- 有知識發現機制(模式識別和構造)。 這也被叫做:cognitive processes 認知過程
- 能在認知過程認識到自己缺少信息、並依靠已知知識獲取新知識(或信息)的能力。
- 有協調多種認知過程的能力,以提高工作和獲取知識的效率。
在OpenCog的實現中"記憶"與"知識"這兩個概念其他沒有區別,它們都是存儲在AtomSpace的數據結構!可能聲明式記憶(Declarative memory)、過程式記憶(Procedural memory)和我們平常所說的知識的結構比較相近。所以一方面我們可以把不同結構記憶之間的轉換稱為knowledge creation,另一方面在上面的描述中,345強調的最終其實都是一種力量!
這種力量你可以把他叫生命力,叫創造力,叫激情,叫靈性。而在學術上我們對它的稱呼是 "認知動力"(cognitive dynamics) ,它是OpenCog整個架構運作起來的核心,是它讓僵化的知識體系的變得靈動而富有生命力!
整體來說認知動力在一個AI系統中由兩個方面組成:
- 是包涵我們自己實現的一些機制 CIM-Dynamics(Concretely-Implemented Mind Dynamics 翻譯起來應該叫認知動力學具體實現?)
- 是包涵系統運行過程中自組織湧現出的認知動力(這總讓我想到冥想課里講的概念:心猿意馬,我們的心正是一個這樣的湧現系統)
OpenCog的CIM-Dynamics是這樣實現的:
CogServer維護了一個認知循環,你可以理解它只是簡單的依次調用每一個Agent
而Agent根據各自的需要可以在AtomSpace里取出他們需要的知識atoms,並對他們進行操作(比如整理關係、修改權重等)
OpenCog源碼中就有不少例子比如ForgettingAgent(會根據長時記憶機制刪除Atoms)、ImportanceUpdatingAgent(會根據長時記憶和短時記憶規則調整節點的權重)、ImportanceDiffusionAgent、ImportanceSpreadingAgent
在opencog源碼examples目錄下有一個非常簡單的Agent例子,我們可以以它為模板實現自己的agent
https://github.com/opencog/opencog/tree/master/examples/agents
具體做法可以參考官方文檔
Creating a new Mind Agent in C
Creating a Mind Agent that does something in C
最後打個廣告:人工智慧與認知架構討論Q群718388498,歡迎加入!
推薦閱讀:
※人工智慧的三個層次:運算智能,感知智能,認知智能
※電銷機器人是怎麼操作的
※[探科技]進擊的人工智慧
※關於「脫離」你應該知道的一切
※艾米機器人能做什麼