one-hot 编码
one-hot 目的:
解决多分类问题
原理:
比如我们有一100张动物的图片,一共有10种动物,****[鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗、猪],我们创建10个文件夹分别存放这些动物,文件夹就是这些动物的标签,这10个文件夹的文件名就是这些图片的标签(分类)。
[1,0,0,0,0,0,0,0,0,0] ==》 鼠
[0,1,0,0,0,0,0,0,0,0] ==》 牛
...
[0,0,0,0,0,0,0,0,1,0] ==》 狗
[0,0,0,0,0,0,0,0,0,1] ==》 猪
好,上面这种向量数组的描述形式就是 one-hot 编码。那么为什么我们要这么编码呢?来来来,就是解决多分类问题,要理解这个问题要先理解多分类问题在学习后输出的结果是什么。
假设我们输入一张猪的图片,机器求出的概率是分布是如下(随便写的):
结果:[0.11,0.29,0.01,0.02,0.03,0.01,0.01,0.01,0.02,0.5]
标签:[0,0,0,0,0,0,0,0,1] ==》 猪
上面这个向量数组 对应下标表示对应动物类型的概率,显然0.5最大,该图片是猪的概率最大。
好了,这个时候我们就已经可以通过输出和 ont-hot 编码来做 loss(损失了)
loss = f(结果-标签)
好了,现在我相信聪明的同学已经知道了 one-hot 的意义了, 注意发散一下思维,如何通过这个例子联想到 one-hot 和多分类问题的关系!!! 再想想如果没有 one-hot 编码,如何处理多分类问题呢?