为什么我们在语言建模中进行单热编码?

时间:2018-05-04 09:05:13

标签: nlp deep-learning rnn one-hot-encoding

有人能解释为什么单热编码在语言建模方面有用吗? (特别是在深度学习中)

(我知道其他编码方法,比如word2vec更好,我只想知道为什么单热编码有效)。

提前谢谢!

1 个答案:

答案 0 :(得分:1)

单热编码的主要应用是用矢量表示没有任何先前偏差的符号。 ' book',' apple',' library'是没有任何可衡量价值的象征性表征。

我们在神经网络中使用单热编码有两个地方: 1.编码输入2.编码预测输出。

神经网络的输入称为特征表示,输出作为查找工具的组件(在索引i中查找值)。但是,我想说两者实际上都是查找操作的工具。

神经网络在任何计算操作中寻找的最重要的属性是1.可区分性和2.与GPU的并行化。查找操作,如果像索引项一样完成并基于整数索引查找它们,则不是可区分操作,并且不可能轻易并行完成,但如果执行此操作的项是向量,则索引可以被表示为单热矢量,并且查找操作可以是矢量矢量(数字矩阵)的简单矩阵乘法和索引的单热表示。该乘法运算既可并行化又可微分。

当您使用单热编码x表示输入字时,将其与矩阵W相乘的结果将作为查找操作(这就是我们所知的嵌入层)和如果带有单热编码的输出标签y输出y'和转置y的乘法是预期索引中的确切值(通常是预测标签的概率或logit) )。这种表示并不总是执行此操作的最佳方式,这就是为什么您经常会发现稀疏'现代框架中的替代方案:即sparse_categorical_crossentropy输出。