首先考慮一個具有記憶能力的邏輯單元(也許是RNN), 它的輸出 受到當前輸入 與先前部份輸出 的影響。
我們可以透過一個空想實驗來理解這個過程:
- 今天我看到小明吃蘋果
"小明吃蘋果"這段資訊就是 ,但是我並不會因為這個資訊而特別做出什麼行為,僅僅只是記著。
- 隔天我又看到小明吃蘋果。
隔天看到"小明吃蘋果"這段資訊就是 ,而"小明昨天也吃蘋果"就是 ,把這兩個資訊揉合在一起,我產生了新的概念"小明連續吃了兩天的蘋果";這就是
- 如此一般持續過了一個月,小明幾乎天天吃蘋果 。(爾偶不吃)
究竟哪一天小明有沒有吃蘋果,我並不會清楚的記得,而是變成"小明過去一個月經常吃蘋果"這樣一個概念記在腦海中,而這個概念就是 。
- 小明今天心情似乎很糟,而且還沒見他今天吃蘋果。
"小明心情很糟,沒吃蘋果"這個資訊就是 。
- 於是我買了蘋果送給他
"買蘋果送他"這個觸發行為的指令就是 。
當然,這是一個簡化的空想實驗,以天為最小時序單位、一些邏輯映射關係也直接省略(如:"買蘋果送他"這個輸出似乎還應該夾帶"別人不開心我也不開心"或"小明對我而言是個特別的人"...之類的其他輸入資訊才能發生的邏輯映射。
只是為了方便讀者釐清幾個簡單的概念:
- 智能體的當前決策,來自當前認知以及先前記憶造成的邏輯映射。
- 資訊會被壓縮並丟失。
- 資訊的壓縮與丟失不只發生在認知,也發 生在記憶。
- 因此智能體不會 100% 的記憶所有細節。
輸入資訊量、記憶資訊量與資訊損失之間的關係
接著我進行了幾個假設:
- 所有輸入與輸出的資訊都是二進制的數組
- 只在乎資訊的量,而不在乎內容,也就是數組的位元數
- 輸入的資訊量不隨時間改變( )
於是我列出了下式:
:輸出的資訊量,也就是位元數 :輸入的資訊量 :資訊殘留率,其值小於等於1
對任意時間而言的輸出資訊量,來自於當前輸入資訊量流失;以及先前輸出的資訊流失後的加總。
於是我們可以列出:
可以歸納出:
若考慮在無窮的時間後,智能體被資訊塞滿的情況:
資訊殘留率的測定
對任意輸出位元 ,其值決定於 與 的布林函式。
固定 後窮舉 ,輸出可能的排列組合數比上輸入的排列數,即為:
固定 後窮舉 ,輸出可能的排列組合數比上輸入的排列數,即為:
※ "" 是集合元素數量的意思。
如果資訊位元數過高,窮舉成本過大,或許可以用抽樣的方式處理。
關於資訊殘留率
理工的朋友看到 這個記號應該會很容易連想到功率, 但是最初在設計變數的時候我是想使用 作為記號的, 畢竟它經常被使用在「衰減」的場合,而這是一個資訊衰減的場合, 不過半衰期的方程式是指數型態的,而我想描述的是一組線性方程式。
另外一個候選方案是沿用電腦科學領域已經有的資訊壓率 ,但是很遺憾的, 資訊壓縮率的定義與我期望使用的殘留率剛好是倒數關係; 資訊壓縮率是一個大於 1 的數值。
值得一提,還有另外一個與資訊殘留率接近但是本文並沒有使用到的概念, 生存函數(Survival function),它是一個隨著時間衰減, 並且介於 0 到 1 之間的函數,不過它的衰減模式是一個變化的過程, 而且考慮的是連續的時間。(本文的模型是離散的,而且衰減模式固定)
衡量智能體的智能程度
我的目的是為了分析布林類神經網路才建立這個模型的, 不過仔細想想,這個模型好像能描述各種「具有記憶能力的智能體」。
智能體基本上是一個映射函數,反應輸入到輸出之間的映射關係, 而在此模型中,為了簡化問題,所有映射關係都由布林運算完成。
:輸入智能體的資訊量,單位為 bit :輸出智能體的資訊量,單位為 bit :記憶於智能體的資訊量,單位為 bit :資訊殘留率
注意,資訊量描述的並不是有幾條線。舉例來說 3bit 的解碼器,其輸出有 8 條線,但是資訊量仍為 3 bit,資訊量的定義如下: