天天看點

《樹莓派開發實戰(第2版)》——2.1 Figaro簡介

本節書摘來異步社群《機率程式設計實戰》一書中的第2章,第2.1節,作者:【美】avi pfeffer(艾維·費弗),更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

首先,我們對figaro做一個概述。在第1章中已經介紹過,figaro是一種機率推理系統。在檢視其元件之前,我們先回顧機率推理系統的一般元件,使您可以和figaro比較。圖2-1重制了第1章中介紹的機率推理系統要點。提醒一下,關于情況的一般知識在機率模型中編碼,而證據提供關于特定情況的具體資訊。推理算法使用模型和證據回答關于情況的查詢。

《樹莓派開發實戰(第2版)》——2.1 Figaro簡介

現在我們來看看figaro。圖2-2展示了figaro的關鍵概念。可以看到,該圖和圖2-1有着相同的元件。figaro模型用來表達一般知識。您以證據的形式提供關于某種情況的具體知識。查詢告訴系統您所感興趣的發現。figaro推理算法取得證據并用模型提供查詢的答案。

《樹莓派開發實戰(第2版)》——2.1 Figaro簡介

現在,我們來觀察每一個元件。figaro的大部分接口提供了指定figaro模型的方法。figaro模型由一組稱為元素的資料結構組成。每個元素代表在您的情況中可以取一組值之一的變量。元素編碼定義不同值機率的資訊。您将在2.2.1小節中hello world示例的上下文中看到元素的基本定義。

元素主要有兩類:原子元素和複合元素。您可以将figaro視為構模組化型的構造工具箱。原子元素是基本構件,表示不依賴于其他元素的基本機率變量。2.3小節讨論原子元素并提供各種示例。複合元素是連接配接器,它們依賴于一個或者多個元素以構成更複雜的元素。您将在2.4小節中學習關于複合元素的知識。figaro提供種種不同的複合元素,其中兩種特别重要——apply(應用)和chain(鍊),您将在2.5小節中學習如何使用它們。

接下來的是證據。figaro提供了說明證據的豐富機制。大部分時候,您将使用證據的最簡單形式——觀測值。觀測值指定已知有某個特定值的元素。您将在2.2.3小節學習如何指定觀測值。有時候,您需要更通用的證據說明方法。為此figaro提供了條件和限制。條件和限制及其用法在2.6小節中描述。

figaro的查詢通過指明目标元素和您想知道的有關情況指明。您使用某種算法,按照證據找出有關目标元素的資訊。通常,您必須執行個體化某種算法,運作并在之後清理。我已經提供了使用預設設定執行所有步驟的簡單方法。在運作算法之後,您可以獲得查詢的答案。這些算法最常采取目标元素的各種取值機率。有時候,它們沒有告訴您機率,而是得出每個目标元素的最可能取值。對于每個目标元素,答案告訴您最高機率的取值。您将在2.2.2小節中看到如何指定查詢、運作算法和獲得答案。

繼續閱讀