独热[1](英语:One-hot)在数码电路机器学习中被用来表示一种特殊的位元组或向量,该字节或向量里仅容许其中一位为1,其他位都必须为0[2]。其被称为独热因为其中只能有一个1,若情况相反,只有一个0,其余为1,则称为独冷(One-cold)[3]。在统计学中,虚拟变量代表了类似的概念。

More information 二进制, 格雷码 ...
二进制 格雷码 独热码
000 000 00000001
001 001 00000010
010 011 00000100
011 010 00001000
100 110 00010000
101 111 00100000
110 101 01000000
111 100 10000000
Close

应用

有限状态机

独热码常常被用来表示一个有限状态机状态英语State (computer science)。如果使用二进制格雷码来代表状态,则需要用到解码器才能得知该码代表的状态。使用独热码来代表状态的话,则不需要解码器,因为若第个位元为1,就代表机器目前在第个状态。

一个有限状态机的例子是由15个状态构成的环状计数器英语Ring counter。使用独热编码来实现此状态机的话,可以将15个正反器串联在一起,每个正反器的Q输出接到下一个正反器的D输入,而第一个正反器的D输入则是接到第15个的Q输出,形成一个环状。第一个正反器代表机器的第一个状态,第二个正反器代表第二个状态,依此类推。当机器被归零重置时,第一个正反器的值为1,其余为0。当一个时脉边缘抵达正反器时,会将1推进到下一个正反器。依照这种方式,1可一步步推进到第15个正反器,亦即第15个状态,再之后则重新回到第一个状态。

地址解码器英语Address decoder可以将二进制或格雷码转换成独热码,而优先编码器则是作用相反。

与其他编码的差异

优点
  • 决定状态机目前状态的时间成本低,因为读取一个正反器的时间成本固定。
  • 改变机器的状态所需时间成本也是固定,因为每次只需要改变两个正反器的值。
  • 设计及设计变更容易。
  • 容易侦测出非法状态。
  • 可以有效率地使用FPGA的大量正反器[4]

相较于其他编码,使用独热码来实现状态机通常可以达到更高的时钟频率[4][5]

缺点
  • 比起其他编码,需要更多的正反器,使得其在PAL装置上不切实际。
  • 会有很多非法状态存在[6]。这是由于个正反器构成的计数器总共有个状态(每个正反器可以是0或1,所以总共种可能状态),但是合法状态却只有个(即同一时间只允许一个正反器是1,其他必须为0),所以总共会有个可能的非法状态。

自然语言处理

自然语言处理中,若有个字典或字库里有个单字,则每个单字可以被一个维的独热向量代表[7]。譬如若字库里仅有apple(苹果)、banana(香蕉)以及pineapple(凤梨)这三个单字,则他们各自的独热向量可以为:

由于电脑无法理解非数字类的数据,独热编码可以将类别性数据转换成统一的数字格式,方便机器学习的算法进行处理及计算。而转换成固定维度的向量则方便机器学习算法进行线性代数上的计算。另外由于一个独热向量中,绝大部分的数字都是0,所以若使用稀疏矩阵的数据结构,则可以节省电脑存储器的使用量。

参见

参考文献

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.