引言
One-Hot 独热编码,又称为一位有效编码,将互相独立的标签表示为互相独立的二进制数字,每个样本只对应于一个类别(即只在对应的特征处值为1,其余特征处值为0),保证了独立标签之间的距离相等,即互相独立的标签之间相似性相同。
1 表示方法
One-Hot 独热编码是表示词向量最早的的方法。首先创建一个词表,里面包括了所有可能用到的为文字,每个文字占据一个位置。那么词向量就是一个该词表维度大小的向量,文字所在位置取值1,其它位置取值0。
例如,对于一个大小为3的list:["我", "爱", "你"]进行one-hot编码,其对应的one-hot编码为:
我 爱 你 我 1 0 0 爱 0 1 0 你 0 0 1
那么“我”的 One-Hot 独热编码就可以表示为向量 [1, 0, 0] ,“爱”可以表示为向量 [0, 1, 0],“你”可以表示为 [0, 0, 1]。
2 存在的问题
One-Hot 独热编码存在较大的问题是维度灾难和语义鸿沟:
2.1 维度灾难
维度灾难:是指如果词表很大,那么词向量的维度也会很大,这会使得数据样本稀疏,计算困难。
2.2 语义鸿沟
语义鸿沟:是指one-hot表示法产生的词向量都是彼此正交的(两个向量的内积为0),体现不出任何语义上的联系。
比如“爱”的向量 [0, 1, 0] 和“你”的向量 [0, 0, 1] 的内积(对应位置的元素相乘得到的数值再相加)为0,“我”和“爱”的向量的内积也是0,没有任何差异,并不能体现出它们之间的相似性大小。