回顾
小夕在文章《逻辑回归》中详细讲解了逻辑回归模型,又在《Sigmoid与Softmax》中详细讲解了Sigmoid的实际意义(代表二类分类问题中,其中一个类别的后验概率)。
至此,我们已经比较透彻的理解了逻辑回归模型假设函数(也就是用于预测类别的函数)。纯从计算顺序上来说,逻辑回归预测类别的顺序即:
1. 输入样本X与模型参数作内积,结果记为z
2. 将中间结果z输入到Sigmoid函数,输出为0到1之间的一个数,a(在前两文中已经证明了这个a即其中一个类的后验概率)
然后,小夕要将上面的过程画出来。
这里假设输入的样本X是4维的,即,因此模型参数也是4维,即。为了方便,本文中忽略偏置项b的问题啦,自行脑补上。然后,blingling~释放小仙女的仙气~~
如上图,黑色圈圈代表原始的输入,即4维的特征向量。连接边代表模型参数,当然,这里用w表示啦,代表weight,即特征向量每一维度的权重。
权重的末端即X与的内积结果,即z,也是Sigmoid函数的输入。粉色圈圈即Sigmoid函数。输入z经过粉色圈圈后生成a,即某一类别的后验概率。
一个奇怪的idea
诶?你们有没有想过,同样对于二类分类任务,我们如果将多个逻辑回归分类器的输出,作为另一个逻辑回归分类器的输入,并让这个逻辑回归分类器负责输出分类任务的类别。比如我们用3个逻辑回归分类器的输出作为另1个逻辑回归分类器的输入,blingling,施展魔法:
蓝色的逻辑回归分类器和粉色的逻辑回归分类器的输出和就是绿色的逻辑回归分类器的输入。(好像句子有点长诶)绿色的逻辑回归分类器的输出就是二类分类任务中一个类别的后验概率。
诶?等等,想法看起来是没错,虽然绿色的逻辑回归分类器的分类任务很明确,就是我们最终的分类任务。但是蓝色和粉色的分类任务是什么呢?或者说,它们输出的后验概率和到底是什么类别的后延概率呢?
答:不知道。
是真的不知道啊。。。这一次不是小夕调皮了,是真的不知道。不是小夕不知道,而是全世界都不知道。更严谨的说,除了通过实验观测的方式可以看懂极少部分模型的这里的类别的含义外,绝大部分情况下,这就是个黑匣子,只有计算机心里自己清楚。
哎,不管啦,我们暂且不管蓝色和粉色的分类器的分类任务是什么,就由它自己作吧~我们继续。
那么问题来了,既然同样都是做二类分类,我们为什么大费周章,用这么多逻辑回归分类器,最终还是输出某个类的后验概率呢?
还记不记得,逻辑回归是一个线性分类器!
逻辑回归模型本质上就是用y=WX+b这个函数画决策面,而这个函数当然就是2维/3维/更高维空间的直线/平面/超平面,因此当然是线性分类器啦。
因此,对于下面这个分类任务(黑色是类别0的样本,红色是类别1的样本)单个逻辑回归分类器的决策面最多只能画成这样子了。
然而,这个分类任务很明显决策面不是这样子的呀,于是,我们上面DIY(自行设计)的这个“多逻辑回归组合的模型”要起作用了!
蓝色的逻辑回归分类器或许可以学习到如下的决策面
粉色的逻辑回归分类器或许可以学习到如下决策面
绿色的逻辑回归分类器将蓝色和粉色的决策结果结合起来,画出最终的如下决策面:
看~本来线性的逻辑回归分类器,经过组合之后,就成了一个复杂的非线性分类器了!非常完美的画出了复杂的决策边界!
那么这个这么好用的模型叫什么名字呢?
当然就是:
神经网络
神经网络blingling登场了~
将上面我们DIY的模型对着下面标准的神经网络模型对号入座吧:
我们DIY模型中的特征向量X在这里依然是X,被称为输入层,也是神经网络的第1层。
我们DIY模型中的蓝色和粉色逻辑回归分类器的Sigmoid输入、Sigmoid函数、Sigmoid输出在这里都放在了隐单元和输出单元中。但是我们DIY的模型中的Sigmoid函数在神经网络中被称为激活函数(以后会讲含义,而且SIgmoid并不是唯一合适的激活函数)。
当然啦,我们前面说了,蓝色逻辑回归分类器和粉色逻辑回归分类器的分类任务就是个黑匣子,根本不知道它输出的后验概率是什么类别的后验概率。所以说,在神经网络中,隐单元的数量一般也只能凭借经验或者交叉验证等非科学手段来确定。
各个隐单元组成的这一层被称为隐含层。
最后的输出单元,实际上也是跟前面一样,只不过在神经网络中更习惯于画成下面的样子,让每个输出单元代表一个类别:
当然,本质上是一样的东西啦。
我们DIY模型中的各个逻辑回归分类器的模型参数在这里被称为各层之间各个神经元之间连接边的权重。这里的连接边Wkji就代表第k层到第k+1层之间,第k层的第i个神经元到第k+1层的第j个神经元之间的连接权重,这个权重跟逻辑回归中的含义一样,这里代表两个神经元之间的连接强弱。
将其中一个隐单元点开看大图:
看吧~跟我们DIY的逻辑回归模型一模一样,就是输入X与权重W(即逻辑回归中的参数)做内积得到z,再丢入Sigmoid函数出来a。
over,看吧,神经网络并不是小白教程中找几个圈圈连一连,然后跑个BP算法就完事的孤立模型。没有想到它竟然跟逻辑回归有这么一腿吧( ̄∇ ̄)
更多疑问
诶?那这个复杂的模型如何训练呢?
激活函数为什么叫激活函数呢?这个模型又为什么叫神经网络呢?
在神经网络中,我们可不可以不局限在逻辑回归模型里呢?比如我们不用Sigmoid作为激活函数了,采用其他形式的函数作为激活函数可以吗?其他激活函数又各会带来什么新特性呢?
在神经网络中,我们可不可以增加更多隐含层呢?(相当于级联更多层的分类器)诶?有深度学习的味道了?
另外,如果我们要用神经网络做多类分类的话,又该怎么办呢?会跟Softmax有关吗?
众多疑惑和猜想,待小夕为你一一解开。敬请期待本系列的后续文章吧~