输入一个样本x,对样本x提取k个特征,根据这k个特征对x进行分类。
布隆过滤器:输入一个样本x,对x求k个哈希值,根据这k个哈希值对x进行分类:包含或者不包含。
机器学习中的样本集,必然是样本数远远大于类别数。
哈希,就是映射,就是函数。
函数就是在集合之间建立联系。
集合就是一个包含很多点的空间。
一切分类器最终都是若干个数字映射成若干个数字,终究是用数字描述的空间。
样本空间的容量必然大于类别空间的容量。
从样本空间到类别空间相当于压缩、哈希。
将N个布隆过滤器组合起来,就得到了一个神经网络一样的东西,它的输出有N个,这N个0、1值就可以表示类别的二进制表示。
对于包含N个类别的样本集,如果用one-hot方式,那就需要N个输出单元,如果使用二进制表示,那就可以只需要log2(N)个输出单元。
也可以训练log2N个神经网络,每个神经网络都输出一个值:0~1之间的数值。这样就越发像将若干个布隆过滤器拼起来了。
围棋、象棋关键也是一个分类器,即:将一个局面判为胜、负、和三种状态的分类器。棋的局面是天文数字,无法将这些样本集全部保存下来,但可以用另一种方式来“存储”这个样本集:函数。
描述事物的变化,就用到函数。
描述函数有两种方式:描点法,解析式法。
描点法需要大量的点,解析式法只要函数形式一固定,就只需要知道解析式的几个参数就够了。
所有的分类器都是固定的函数形式,它们学习的过程就是寻找参数的过程。
描点法在数据量小时比较直观。
解析式法给人以无限想象空间。
描点法是授人以鱼,解析式法是授人以渔。
给我一堆点,我只得到了这些点。给我一个解析式,我能够求出无数个点来。
描述简谐振动有两种方法:
- 描述它的运动形式:y=sin(x)
- 描述小球的受力形式:F=k*(dx)
描述事物的外在形式与描述事物的内在机理,二者一直都是描述事物的两种方式。
黑盒子与白盒子。把事物看做黑盒子,自己推断它的内部构造,这就是描点法。把事物看成白盒子,弄清原理,自然就可以推导出它的输出是怎样的。
这也是学习的两种方法。有的人不爱追求原理,甘当“调包侠”; 有的人追求底层,非看源码、懂原理心里才踏实。