跳轉到內容

人工智慧/知識表示

來自華夏公益教科書

知識表示 (KR) 是我們用來描述如何在人工系統中編碼知識、信念、行動、情感、目標、願望、偏好以及所有其他心理狀態的名稱。由於幾乎所有的人工智慧研究都是透過程式設計計算機完成的,因此這些表示最終往往會成為軟體中某種字元集。但是,我們可以用比程式碼更高的層次來討論它們:資訊層。

例如,假設我們有一個 2000 年北美國家列表。我們編碼的知識將是三個國家:美國、加拿大和墨西哥。這是一個無序列表。然後我們可以用不同的計算機程式語言以不同的方式表示這種知識。例如

Python: NorthAmericanCountries = ("The United States", "Canada", "Mexico")

LISP: (setq north-american-countries '(the-united-states canada mexico))

等等。世界是一個複雜的地方,人工智慧程式設計師的任務是決定哪些細節需要編碼在 KR 中,哪些可以忽略。有時這很簡單。例如,如果你在為一臺計算機程式設計以決定棋盤上的走棋,那麼沒有必要精確地編碼每個棋子在方格中的位置。這與將要進行的移動無關。其他決定則更加困難。

總之,你希望擁有你所需要的複雜性,但不要更多。這樣做的原因是,增加表示複雜性會導致在執行人工智慧程式時,程式設計和計算過程更加複雜。

擁有“你所需要的複雜性”要求“表示充分性”,這意味著你的表示包含它需要完成其任務所需的資訊。評估 KR 的三種方式是清晰度、精確度和自然性。

清晰度

具有清晰度的 KR 是一個非歧義的 KR。我們使用程式語言的原因之一是我們自然使用的語言(如英語)是模糊的。程式語言被設計為沒有歧義。

精確度

具有精確度的 KR 達到了所需的細節程度。在國際象棋中,僅僅知道棋子在棋盤上是不夠的——代理需要知道棋子在哪個方格上,是什麼型別的棋子,以及是什麼顏色。棋子是否有劃痕與下國際象棋無關,因此可以將此類細節排除在表示之外。

自然性

第三個標準是自然性,即 KR 多麼容易被人理解,或者,也許,多麼容易被轉化為人們可以理解的東西。這很重要,因為在許多情況下,人們不希望簡單地相信人工智慧告訴他們的東西——他們想要解釋。能夠看到人工智慧用來生成其輸出的理由只有在 KR 具有某種程度的自然性時才有用。

自然性對於程式設計師也很重要。擁有一個自然的 KR 很好,這樣未來的程式設計師(也許是你!)以後就能理解編寫的內容。出於這個原因,你的 KR 必須具有明確的語義和語法。

例如,看看這個表示

red(car)

這意味著什麼?redcar 只是符號;它們可以代表我們想要的任何意思。讓我們假設 KR 被設計為自然的,並且它們的意思與英語中看起來的意思一樣。仍然存在歧義。這意味著所有汽車都是紅色的嗎?一輛特定的汽車是紅色的嗎?它是一個如果汽車是紅色的就返回 true 的函式嗎?或者它是一個命令來將汽車漆成紅色?

在程式設計時看起來很明顯的東西,以後可能會令人困惑。

讓我們回到上面關於表示北美國家的例子。列表中的三個國家沒有理由必須按順序排列。但是,在 LISP 和 Python 中,列表資料結構是有序的。例如,在 Smalltalk 語言中,有一個名為“bag”的資料結構,它可以容納無序的專案集合。我們選擇的程式語言通常會對 KR 施加約束。

北美有多少個國家?有三個,但這在上面的程式碼中明確表示了嗎?沒有。列表被表示。如果我們想明確地編碼列表長度,我們可以做類似的事情

NorthAmericanCountries = (3, "The United States", "Canada", "Mexico")

然而,計算列表中的內容很容易,所以大多數程式設計師會在需要時使用函式重新計算列表長度。這也使系統無需在每次列表長度更改時更改顯式表示的數字。

這體現了 KR 的**推理充分性**,即系統使用 KR 推斷其所需內容的程度。**表示效率**是指人工智慧使用 KR 進行推理的效率——根據時間或計算資源,視情況而定。

儘管任何程式設計師都可以建立他們想要的任何 KR,但已經存在很多 KR,並且它們的屬性已被充分理解。使用一個眾所周知的 KR 通常比自己建立 KR 更明智。在這本書中,我們將向你展示許多不同的 KR。在接下來的部分中,我們將討論其中兩個:語義網路和框架。

重要詞彙

  • 知識表示
  • KR
  • 表示充分性
  • 清晰度
  • 精確度
  • 自然性
  • 推理充分性
  • 表示效率


下一部分:語義網路

華夏公益教科書