双变量非线性多分类

提出问题:铜钱孔形问题

前面用异或问题和弧形样本学习了二分类,现在我们看看如何用它来做非线性多分类。

我们有如表11-1所示的1000个样本和标签。

表11-1 多分类问题数据样本

样本 x1 x2 y
1 0.22825111 -0.34587097 2
2 0.20982606 0.43388447 3
1000 0.38230143 -0.16455377 2

还好这个数据只有两个特征,所以我们可以用可视化的方法展示,如图11-1。

多入多出的双层神经网络 - 图1

一共有3个类别:

  1. 蓝色方点
  2. 红色叉点
  3. 绿色圆点

样本组成了一个貌似铜钱的形状,我们就把这个问题叫做“铜钱孔形分类”问题吧,后面还要再提到。

问题:如何用两层神经网络实现这个铜钱孔三分类问题?

三种颜色的点有规律地占据了一个单位平面内(-0.5,0.5)的不同区域,从图中可以明显看出,这不是线性可分问题,而单层神经网络只能做线性分类,如果想做非线性分类,需要至少两层神经网络来完成。

红绿两色是圆形边界分割,红蓝两色是个矩形边界,都是有规律的。但是,学习神经网络,要忘记“规律”这个词,对于神经网络来说,数学上的“有规律”或者“无规律”是没有意义的,对于它来说一概都是无规律,训练难度是一模一样的。

另外,边界也是无意义的,要用概率来理解:没有一条非0即1的分界线来告诉我们哪些点应该属于哪个区域,我们可以得到的是处于某个位置的点属于三个类别的概率有多大,然后我们从中取概率最大的那个类别作为最终判断结果。