Logistic Regression可能是绝大多数人入门分类所学到的第一个模型,我也不例外。
Logistic Regression的函数空间由用下面模型来定义:
下图是一个Logistic Regression的简单示例,它在二维特征中找到一条直线将两个class区分开。橘黄色直线便是
如果我们考虑一个简单的问题——异或(xor),那么我们就会发现Logistic Regression无法处理它。这是为什么呢?我们来看一下。
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
上面这张表包含了xor操作所有的四种可能性,那么画在图上的话,就如下图所示(用黑色表示,用红色表示)
这时候我们发现无论用什么直线,都无法将这两个class (和) 区分开。那应该怎么办呢?
我们不妨对和做一些变换,我们定义和分别表示样本到和的距离,我们得到下面这张表
0 | 0 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | |
0 | 1 | 0 | 1 | |
1 | 1 | 1 | 1 | 0 |
把和画在图上是下图这样,注意黑色✖️是两个样本重叠到一起了:
这时候就可以轻易地画一条直线将这两个class分开了。
实际上,上面的操作是一个坐标转换,将原来的和转换成为和。但是问题随之又来了,在实践工作中,我们不可能每次都去对坐标进行转换,那样就过于费时费力,而且也违背机器学习的初衷。
我们能否让机器自动学习如何进行坐标转换呢?答案是肯定的。
我们可以训练两个模型,将原来的和分别转换到和,这两个模型可以选择最基础的Logisitic Regression。我们把这两个模型和最后用于分类的Logistic Regression连接起来,就得到最终的模型:
可以看到,这个模型实际上是将三个Logistic Regression通过某种方式连接起来了,这便是Neural Network的雏形,模型中每一个Logistic Regression称之为一个Neuron。Neural Network的连接方式有很多,这篇文章就不一一细表了。现在我们知道在上述这个简单的神经网络所定义的函数空间里面有我们所需要的目标函数,那么如何把这个目标函数找出来呢?
我会在后续的博文中专门写一下找出这个目标函数的方法,大名鼎鼎的误差反向传播算法,可以说没有它,就没有深度学习。
网友评论