背景
分类问题是机器学习中研究和使用都相当多的问题之一;它一般是个有监督的学习(surprised learning)过程;大致来说,有监督的学习是目前工业界有成效应用最多的了,虽然它(surprised learning)距离真正意义上人工智能还有一定差距的感觉;但是多多掌握分类问题模型仍然还是非常有必要的,其现有的应用场景已经非常之多了,这里不一一列举;在很多应用环节都能完成迅速识别、形成初步认知、甚至逐步替代人力。
从经典的数字识别(MNIST)到最近的kaggle题目Recursion Cellular Image Classification,分类数从10个直接上升到了1000+个。关于类似的多分类数据集还有ImageNet。
这次要思考和解决的主要问题是关于输出的编码方式和损失函数的选择,在简单地把之前建模少量类别的分类问题直接应用到超多类别问题时,遇到了一些问题。
1.首先,区别两个概念:多分类(multi-class)问题,以及多标签(multi-label)问题。
这个很好理解
2.编码问题
假定类别数为N;当N=1000时
首先说明为什么不直接用1,2,3....1000当标签(当然是可以归一化),因为距离问题
那么按照拓扑学的想法,我们能不能在M维空间中打上1000个点,使得任意两个点间的距离(可以是欧氏距离也可以是其他)是相等的,那么可以解决这个问题;
类比一下,容易想到,
当是3分类时,平面M=2就