这一章就讲了感知机。我觉得是深受工业革命的影响,把一些可以实现功能的基本单元都喜欢叫做什么机,这里的感知机,还有后来的以感知机为基础的支持向量机。直接看定义,看本质,实际上,感知机是一种线性分类模型。下面就以这句话为中心仔细阐述一下。
什么叫线性。
线性liner,正如其名,两个变量的关系的函数是一条直线,那它们就是线性关系,扩展到三维,一个平面依然是一次方程,所以平面也行线性的。线性有两个性质:可加性f(x+y)=f(x)+f(y);齐次性f(ax)=af(x).这两个性质的好处就是可以化整为零,各个击破;可以以小见大。通信中的放大器就很怕出现非线性失真,通信中研究的系统也多是线性时不变系统。事实上,自然界中的信号几乎都是连续的,问题也多是非线性的,只是我们在解决问题的时候都转换为简单问题。线性划分,简单来说就是通过直线或者超平面将数据进行划分。典型的线性分类器有感知机,LDA,逻辑斯特回归,SVM(线性核);
典型的非线性分类器有朴素贝叶斯(有文章说这个本质是线性的,http://dataunion.org/12344.html),kNN,决策树,SVM(非线性核)
什么叫分类。
之前博客中提到,机器学习的任务就是预测和分析数据,而当输出变量为有限离散变量时就是一种特殊的问题,我们预测数据属于哪一类,这就是分类问题。分类问题又可分为二分类问题和多分类问题。感知机是一种二分类的分类器。
什么叫模型。
既然知道了新数据的分类情况只能是二选一,那么我们就要定义分类的条件就是模型。而根据分类器对数据进行硬判决还是软判决,可以分为感知器模型和逻辑回归模型。前者对数据一刀切,非黑即白,具体用符号函数sign()实现,属于判别模型。后者将分类问题看作概率问题,像天气预报一样,多大的概率会下雨,多大的机会不下雨。
三要素
感知机算是一种简单的机器学习,机器学习三要素:模型、策略、算法。所以我们再看一下感知机的策略。很自然地,对平面上的两类点,首先我们当然希望能有一个直线将他们完全正确地隔在直线的两边。可以达到这个目的的直线有很多,我们当然希望从中挑选一个最好的。我们选择误分类点到平面S的总距离作为损失函数(连续可导),目标是将损失函数最小化。具体确定超平面还需要具体的算法,我们选择随机梯度下降法SGD(Stochastic Gradient Descent)。随机的意思是在误分类点中随机选择一个点,然后计算它的损失函数的梯度,梯度是下降最快的方向,在这个方向上迭代可以尽快找到使损失函数最小的点。决定了方向,还涉及到每次更新的幅度,这就是步长,也叫学习率(learning rate),lr太大的话容易越过最优点,太小又会导致收敛太慢。
感知机学习的算法又分为原始形式和对偶形式。在对偶形式中,把原来函数sign(wx+b)中的w和b看作是实例x和标记y的线性组合。实质与原始形式一样,只不过因为函数形式变为线性组合,在判断是否是误分类点时可以使用内积,即Gram矩阵。在上一篇博客的python代码中也出现了这个矩阵,用于计算feature map的内积。
最后需要说明的是,可以证明算法是收敛的,但是最后的结果却依赖于误分类点的选择顺序。为了得到唯一的超平面,需要我们对分离超平面增加约束条件,这也就是线性支持向量机SVM的由来。SVM也有对偶性,是面试官喜闻乐见的问题。这里先简单说两句SVM。支持向量机有两个特点,一是支持向量,一个是核函数。支持向量指只有超平面附近的点对结果影响大。核函数的引入使得SVM可以解决低维空间的线性不可分的问题,学习非线性支持向量机,其实是在高维空间隐式地学习线性支持向量机。
在习题部分,Minsky和Papert指出,感知机等线性模型不能表示复杂函数如异或XOR。其实就是要说明异或不是线性可分的。
Reference:
1. https://zhuanlan.zhihu.com/p/30596284
2. https://zhuanlan.zhihu.com/p/21301974
3. https://blog.csdn.net/u014755493/article/details/70182532
4. https://blog.csdn.net/yangfeisc/article/details/45486067