One-hot
One-hot在數位電路中被用來表示一種特殊的位元組合,該位元組裏,僅容許單一位元爲1,其他位元都必須爲0。之所以稱爲one-hot就是因爲只能有一個1(hot)。若情況相反,只有一個0,其餘爲1,則稱爲one-cold[1]。在機器學習裏,也有one-hot向量(英語:)的概念。在一任意維度的向量中,僅有一個維度的值是1,其餘爲0。譬如向量 ,即爲15維空間中的一組one-hot向量。將類別性資料轉換成one-hot向量的過程則稱one-hot編碼(英語:)[2]。在統計學中,虛擬變數代表了類似的概念。
二進制 | 格雷碼 | One-hot |
---|---|---|
000 | 000 | 00000001 |
001 | 001 | 00000010 |
010 | 011 | 00000100 |
011 | 010 | 00001000 |
100 | 110 | 00010000 |
101 | 111 | 00100000 |
110 | 101 | 01000000 |
111 | 100 | 10000000 |
One-hot目前並無公認或被廣泛使用的中文譯名。目前可見的one-hot encoding譯名有獨熱編碼[3] 以及一位有效編碼[4]。
應用
自然語言處理
在自然語言處理中,若有個字典或字庫裏有個單字,則每個單字可以被一個維的one-hot向量代表。譬如若字庫裏僅有apple(蘋果),banana(香蕉),以及pineapple(鳳梨)這三個單字,則他們各自的one-hot向量可以爲:
由於電腦無法理解非數字類的數據,One-hot編碼可以將類別性數據轉換成統一的數字格式,方便機器學習的演算法進行處理及計算。而轉換成固定維度的向量則方便機器學習演算法進行線性代數上的計算。另外由於一個one-hot向量中,絕大部分的數字都是0,所以若使用稀疏矩陣的資料結構,則可以節省電腦記憶體的使用量。
有限狀態機
One-hot編碼常常被用來表示一個有限狀態機的狀態。如果使用二進制或格雷碼來代表狀態,則需要用到解碼器才能得知該碼代表的狀態。使用one-hot來代表狀態的話,則不需要解碼器,因爲若第個位元爲1,就代表機器目前在第個狀態。
一個有限狀態機的例子是由15個狀態構成的環狀計數器。使用one-hot編碼來實現此狀態機的話,可以將15個正反器串聯在一起,每個正反器的Q輸出接到下一個正反器的D輸入,而第一個正反器的D輸入則是接到第15個的Q輸出,形成一個環狀。第一個正反器代表機器的第一個狀態,第二個正反器代表第二個狀態,依此類推。當機器被歸零重設時,第一個正反器的值爲1,其餘爲0。當一個時脈邊緣抵達正反器時,會將1推進到下一個正反器。依照這種方式,1可一步步推進到第15個正反器,亦即第15個狀態,再之後則重新回到第一個狀態。
位址解碼器可以將二進制或格雷碼轉換成one-shot表示形式。而優先編碼器則是作用相反。
與其他編碼的差異
參見
參考文獻
- Harris, David and Harris, Sarah. 2nd. San Francisco, Calif.: Morgan Kaufmann. : p.129. ISBN 978-0-12-394424-5.
- deeplizard. . YouTube. 2018-01-12 [2019-09-08]. (原始内容存档于2019-10-19) (英语).
- 柚子皮. . 2017-03-10 [2019-09-08]. (原始内容存档于2018-03-18) (中文).
- zhiyong_will. . 2015-03-03 [2019-09-08]. (原始内容存档于2019-01-30) (中文).
- Xilinx Inc. . (PDF). 1995 [2019-09-09]. (原始内容存档 (PDF)于2020-05-15) (英语).
- Xilinx Inc. . (PDF). 1995 [2019-09-09]. (原始内容存档 (PDF)于2020-05-15) (英语).
- Cohen, Ben. . Palos Verdes Peninsula, CA, US: VhdlCohen Publishing. 2002: p.48. ISBN 0-9705394-2-8.