独热()在數位電路和機器學習中被用來表示一種特殊的位元組或向量,該位元組或向量裏僅容許其中一位爲1,其他位都必須爲0。其被稱爲独热因爲其中只能有一個1,若情況相反,只有一個0,其餘爲1,則稱爲独冷(One-cold)。在統計學中,虚拟变量代表了類似的概念。
應用
有限狀態機
独热碼常常被用來表示一個有限狀態機的。如果使用二進制或格雷碼來代表狀態,則需要用到解碼器才能得知該碼代表的狀態。使用独热码來代表狀態的話,則不需要解碼器,因爲若第n個位元爲1,就代表機器目前在第n個狀態。
一個有限狀態機的例子是由15個狀態構成的。使用独热編碼來實現此狀態機的話,可以將15個正反器串聯在一起,每個正反器的Q輸出接到下一個正反器的D輸入,而第一個正反器的D輸入則是接到第15個的Q輸出,形成一個環狀。第一個正反器代表機器的第一個狀態,第二個正反器代表第二個狀態,依此類推。當機器被歸零重設時,第一個正反器的值爲1,其餘爲0。當一個時脈邊緣抵達正反器時,會將1推進到下一個正反器。依照這種方式,1可一步步推進到第15個正反器,亦即第15個狀態,再之後則重新回到第一個狀態。
可以將二進制或格雷碼轉換成独热码,而優先編碼器則是作用相反。
與其他編碼的差異
優點
- 決定狀態機目前狀態的時間成本低,因爲讀取一個正反器的時間成本固定。
- 改變機器的狀態所需時間成本也是固定,因爲每次只需要改變兩個正反器的值。
- 設計及設計變更容易。
- 容易偵測出非法狀態。
- 可以有效率地使用FPGA的大量正反器。
相較於其他編碼,使用独热码來實現狀態機通常可以達到更高的時脈頻率。
缺點
- 比起其他編碼,需要更多的正反器,使得其在PAL裝置上不切實際。
- 會有很多非法狀態存在。這是由於N個正反器構成的計數器總共有2^N個狀態(每個正反器可以是0或1,所以總共2^N種可能狀態),但是合法狀態卻只有N個(即同一時間只允許一個正反器是1,其他必須爲0),所以總共會有2^N-N個可能的非法狀態。
自然語言處理
在自然語言處理中,若有個字典或字庫裏有N個單字,則每個單字可以被一個N維的独热向量代表。譬如若字庫裏僅有apple(蘋果)、banana(香蕉)以及pineapple(鳳梨)這三個單字,則他們各自的独热向量可以爲:
\begin{array}{ll}
apple &=[1\ 0\ 0] \\
banana &=[0\ 1\ 0] \\
pineapple &=[0\ 0\ 1]
\end{array}
由於電腦無法理解非數字類的數據,独热編碼可以將類別性數據轉換成統一的數字格式,方便機器學習的演算法進行處理及計算。而轉換成固定維度的向量則方便機器學習演算法進行線性代數上的計算。另外由於一個独热向量中,絕大部分的數字都是0,所以若使用稀疏矩陣的資料結構,則可以節省電腦記憶體的使用量。
參見
- D正反器
- 一进制
- 唯一量化
- 异或门
- 译码器
- 五取二碼
- 格雷碼
- 克羅內克δ函數
- 矩陣單元
參考文獻
评论 (0)