独热

二進制 格雷碼 独热码 000  000  00000001  001  001  00000010  010  011  00000100  011  010  00001000  100  110  00010000  101  111  00100000  110  101  01000000  111  100  10000000

独热（）在數位電路和機器學習中被用來表示一種特殊的位元組或向量，該位元組或向量裏僅容許其中一位爲1，其他位都必須爲0。其被稱爲独热因爲其中只能有一個1，若情況相反，只有一個0，其餘爲1，則稱爲独冷（One-cold）。在統計學中，虚拟变量代表了類似的概念。

 應用 

 有限狀態機 
独热碼常常被用來表示一個有限狀態機的。如果使用二進制或格雷碼來代表狀態，則需要用到解碼器才能得知該碼代表的狀態。使用独热码來代表狀態的話，則不需要解碼器，因爲若第個位元爲1，就代表機器目前在第個狀態。 

一個有限狀態機的例子是由15個狀態構成的。使用独热編碼來實現此狀態機的話，可以將15個正反器串聯在一起，每個正反器的Q輸出接到下一個正反器的D輸入，而第一個正反器的D輸入則是接到第15個的Q輸出，形成一個環狀。第一個正反器代表機器的第一個狀態，第二個正反器代表第二個狀態，依此類推。當機器被歸零重設時，第一個正反器的值爲1，其餘爲0。當一個時脈邊緣抵達正反器時，會將1推進到下一個正反器。依照這種方式，1可一步步推進到第15個正反器，亦即第15個狀態，再之後則重新回到第一個狀態。 

可以將二進制或格雷碼轉換成独热码，而優先編碼器則是作用相反。 

 與其他編碼的差異 

 優點 

 決定狀態機目前狀態的時間成本低，因爲讀取一個正反器的時間成本固定。
 改變機器的狀態所需時間成本也是固定，因爲每次只需要改變兩個正反器的值。
 設計及設計變更容易。
 容易偵測出非法狀態。
 可以有效率地使用FPGA的大量正反器。

相較於其他編碼，使用独热码來實現狀態機通常可以達到更高的時脈頻率。

 缺點 

 比起其他編碼，需要更多的正反器，使得其在PAL裝置上不切實際。
 會有很多非法狀態存在。這是由於個正反器構成的計數器總共有個狀態（每個正反器可以是0或1，所以總共種可能狀態），但是合法狀態卻只有個（即同一時間只允許一個正反器是1,其他必須爲0），所以總共會有個可能的非法狀態。

 自然語言處理 
在自然語言處理中，若有個字典或字庫裏有個單字，則每個單字可以被一個維的独热向量代表。譬如若字庫裏僅有apple（蘋果）、banana（香蕉）以及pineapple（鳳梨）這三個單字，則他們各自的独热向量可以爲： 



由於電腦無法理解非數字類的數據，独热編碼可以將類別性數據轉換成統一的數字格式，方便機器學習的演算法進行處理及計算。而轉換成固定維度的向量則方便機器學習演算法進行線性代數上的計算。另外由於一個独热向量中，絕大部分的數字都是0，所以若使用稀疏矩陣的資料結構，則可以節省電腦記憶體的使用量。

 參見 

 D正反器
 一进制
 唯一量化
 异或门
 译码器
 五取二碼
 格雷碼
 克羅內克δ函數
 矩陣單元

 參考文獻 

Category:数字电路
Category:1