模糊數學_學習筆記
模糊邏輯學習筆記
注意,筆者水準有限,有錯請指出。
背景
模糊邏輯是一個名叫盧菲特. 澤德(Lotfi Zadeh)的人在20世紀60年代中期發明的,它能讓電腦以一種類似人的方法去推理語言術語和規則。計算機能夠通過模糊集合把一個輸入的精确值(或普通值)模糊化,然後使用模糊規則得出模糊輸出,最後去模糊得到精确的輸出值。這就是衆所周知的基于規則的模糊推理,如下圖:

普通集合
這個概念很常見,比如一個普通集合A={1, 2, 3, 4, 5}。那麼一個數是否屬于集合A是很明顯的,不是真就是假。可以使用隸屬度概念描述這種情況,例如數字4對集合A的隸屬度是1,數字7對集合A的隸屬度是0。
模糊集合
隸屬函數
模糊集合是從普通集合擴充得到的,普通集合的隸屬度是{0, 1},而模糊集合的隸屬度是[0,1]。舉個例子,假設有3個集合:笨拙、平均和聰明,表示一個人的智力水準。然後張三智商115,那麼他屬于“聰明”的隸屬度可能是0.75,屬于“平均”的隸屬度是0.25,屬于“笨拙”的隸屬度是0,如下圖所示:
看見上圖的三角形了嗎,它們是隸屬函數的圖像。模糊集合就是通過一個隸屬函數來定義的,這些函數可以是任意形狀,通常是三角形或者梯形的。構造這些隸屬函數有一些規則,下面再模糊規則處描述。
模糊集合運算符
模糊集合和普通集合一樣有集合運算。主要是如下幾個:
(1)交集
假設有2個隸屬函數F1, F2,那麼x對于它們的隸屬度分别是F1(x), F2(x)。它們的交集是它們中最小的那個:
F1(x)⋁F2(x)=min{F1(x), F2(x)}
(2)并集
它們的并集是它們之中最大的那個:
F1(x)⋀F2(x)=max{F1(x), F2(x)}
(3)補集
F1(x)′=1−F1(x)
限制詞
限制詞是一進制的運算符,可以用來修飾模糊集合的含義。兩個常用的限制詞是“非常地”和“相當地”。對一個模糊集合 A 來說,用“非常地”作修飾:
FVERY(A)=(FA(x))2
換句話說,結果就是隸屬度的平方。“相當地”是利用隸屬度的平方來修飾一個模糊集合的,像這樣:
FFAIRLY(A)=FA(x)
這些限制詞的效果可以從下面的圖看出來,使用“相當地”修飾隸屬度的話,标準應該比集合本身更加寬松。相反,用“非常地”去修飾的話,标準就變得比較嚴格。大概就是這麼一個情況。
模糊語言變量
一個模糊語言變量是由一個或者多個模糊集合的合成,它定量地表示一種概念或一個域。例如模糊語言變量IQ的成員是模糊集合“笨拙”、“平均”和“聰明”,用集合符号可以寫成:笨拙,平均,聰明IQ={笨拙,平均,聰明}。注意,模糊語言變量的成員集合的隸屬度函數的形狀和不對稱性是可以改變的,視問題需要而定。
模糊規則
模糊規則主要是由一種前因與後果的形式構成的:IF 前提 THEN 後果。
我們使用一個武器選擇的例子來說明。假設使用火箭筒的期望值取決于2個因素:目标的距離和彈藥的數量。那麼前提是目标的距離和彈藥的數量,後果是使用火箭筒的期望值。
首先,我們要設計模糊語言變量,也即隸屬函數。設計模糊語言變量的時候,需要遵守幾個重要的準則:
- 對于通過模糊語言變量的任何垂直線(代表一個輸入值),在每個同它相交的模糊集合中的隸屬度總和應該接近于1。這就保證了穿越模糊語言變量的模糊形(所有成員集合的形狀組合)的數值之間的平穩過渡。
- 對于通過模糊語言變量的任何垂直線,它應該隻與2個或者更少的模糊集合相交。
好了,開始設計模糊語言變量。目标的距離由3個集合組成:Target_close、Target_Medium 和 Target_Far,這三個術語足以讓專家确定使用武器的規則。當想到"close"的時候,你基本會選擇近戰,其他術語類似。這樣就能得到目标距離這一模糊語言變量的隸屬度函數:
彈藥的數量(狀态)也是由3個集合組成:Ammo_Low、Ammo_Okay和Ammo_Loads,按照常識和經驗設計出隸屬度函數:
但是别忘記了期望值的模糊語言變量:
然後就是設計規則,因為火箭筒是中等距離武器,如果近距離發射會傷害到自己;如果太遠,那麼敵人可以躲避開。根據相關的經驗,這裡建立9條規則來确定使用火箭筒的期望值:
注意這裡的“與”,對應的是前面集合運算的交集,也即取最小的隸屬度。模糊規則的提出是基于經驗的,不同的人提出的規則可能不一樣,反映了不同的見解。
模糊推理
模糊推理就是使用上述提到的隸屬函數和規則進行計算。首先一定會有前提輸入,這裡輸入是目标的距離和彈藥的數量。假設目标的距離是200,彈藥的數量是8。
下面是模糊推理的步驟:
- 對于每條規則
- 對于每個前提條件,計算輸入資料的隸屬度
- 基于上一步即1.1中确定的值,計算規則的推理結論的置信度
- 将所有的推理結論的置信度合成一個單個的結論(一個模糊集合,包含結論的置信度)
- 将從2中得到的結論去模糊化
使用火箭筒例子來說明。
計算隸屬度和置信度
規則1
目标的距離是200,彈藥的數量是8,那麼對應 Target_Far 和 Ammo_Loads 的隸屬度分别是 0.33 和 0.00 ,是以取最小的是0.00,如下圖:
規則2
對應 Target_Far 和 Ammo_Okay 的隸屬度分别是 0.33 和 0.78 ,是以取最小的是0.33,如下圖:
合成單個的結論
其他規則同理可以計算出來,注意每個規則計算出來的是結論的置信度。可以根據這些結論構造一個模糊聯想矩陣:
從這個矩陣可以看到 undesirable 有2個值,這些叫做多重置信度。有很多處理多重置信度的方法,常用的兩種方法是有界限的和(和被限制到1)以及最大值。我們這裡使用取最大值的方法,是以可以得到 0.33。是以,當目标的距離是200,彈藥的數量為8時,所有規則綜合後的推理結果是:
結論 | 置信度 |
---|---|
不期望 | 0.33 |
期望 | 0.2 |
非常期望 | 0.67 |
接着可以把推理結果表現在模糊語言變量上:
然後把上述推理結果合成一個單一的模糊形:
去模糊化
去模糊化是模糊化的逆過程,是把一個模糊集合轉換成一個精确值的過程。有很多方法可以完成這個過程,這裡隻介紹一種,那就是中心法,這種方法很準确,其他方法請看參考的書籍。它得工作就是确定輸出集合整體的中心。一個模糊形的中心是可以被計算出來的,通過把這個模糊形分為S.P采樣點,計算每個采樣點對總體隸屬度的貢獻之和,再除以采樣的隸屬度之和。公式如下:
CrispValue=∑S=DomainMins=DomainMaxs×DOM(s)∑S=DomainMins=DomainMaxDOM(s)
其中 s 是在每個采樣點的值,以及 DOM(s) 是這個值在模糊語言變量中的隸屬度。被選來作計算的采樣點越多,結果就會越準确,雖然在實踐中隻有10到20個采樣點,但通常已經足夠了。
以火箭筒使用問題為例,取10個采樣點,對每個采樣點計算每個成員集合的隸屬度。
然後計算分子:
10×0.33+20×0.33+30×0.53+40×0.53+50×0.2+60×0.6+70×0.87+80×0.67+90×0.67+100×0.67=334.8
計算分母:
0.33+0.33+0.53+0.53+0.2+0.6+0.87+0.67+0.67+0.67=5.4
這樣就能得到精确值:
Desirability=334.85.4=62
感覺
模糊邏輯是一種重要的決策方法。
參考資料
- 謝季堅, 劉承平. 模糊數學方法及其應用[M]. 華中理工大學出版社, 2005.
- 巴克蘭. 遊戲人工智能程式設計案例精粹[M]. 人民郵電出版社, 2012.
其他相關資料
- 統計學習那些事
- 什麼是模糊集合
- 模糊邏輯-維基百科
- Fuzzy Logic - Inference System
- AI學習筆記——模糊邏輯(Fuzzy Logic)
- 模糊邏輯學習筆記
- Mamdani Fuzzy Model
- T-Norms
- T-norm fuzzy logics
- Triangular norms and conorms