“感知机”的学习
感知器是由美国计算机科学家罗森布拉特(F.Roseblatt)于1957年提出的。感知机(Perceptron)是二分类模型,是二类分类的线性分类模型,其输入为样本的特征向量,输出为样本的类别,取+1和‐1二值,即通过某样本的特征,就可以准确判断该样本属于哪一类。感知机能够解决的问题首先要求特征空间是线性可分的,再者是二类分类,即将样本分为{+1, ‐1}两类。由输入空 间到输出空间的符号函数为: f(x)=sign(wx+b)
w和b为感知机参数,w为权值(weight),b为偏置( bias)。假设训练数据集是线性可分的,感知机学习的目标就是求得一个能够将训练数据集中正样本和负样本完全分开的分类超平面,为了找到分类超平面,需要定义一个损失函数并通过将损失函数最小化来求w和b。
线性分类器在数学上被理解为线性判别函数(Linear Discriminant Functions),在几何上可以理解为决策超平面(Decision Hyperplanes)。感知器算法的诞生也就是为了确定线性判别函数中的未知参数向量w。
感知机学习算法是误分类样本驱动的,每一次更新权重和偏置都是由误分类样本决定。在实际操作中,首先随机选取一个分类超平面,即随机选取,然后用梯度下降法不断极小化目标函数式。极小化的过程不是一次使得所有误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降。
感知机(perceptron)是一个线性分类器(linear classifiers)。线性分类器的几何表示:直线、平面、超平面。感知机是神经网络的雏形,同时也是支持向量机的基础,感知机对应于输入空间(特征空间)中将实例划分为正负两类的分离超平面,属于判别模型。感知机学习旨在求出将训练数据进行线性划分的分离超平面。
感知机是生物神经细胞的简单抽象。神经细胞结构大致可分为:树突、突触、细胞体及轴突。单个神经细胞可被视为一种只有两种状态的机器——激动时为‘是’,而未激动时为‘否’。神经细胞的状态取决于从其它的神经细胞收到的输入信号量,及突触的强度(抑制或加强)。当信号量总和超过了某个阈值时,细胞体就会激动,产生电脉冲。电脉冲沿着轴突并通过突触传递到其它神经元。为了模拟神经细胞行为,与之对应的感知机基础概念被提出,如权量(突触)、偏置(阈值)及激活函数(细胞体)。
感知机在人工神经网络领域中,感知机也被指为单层的人工神经网络,以区别于较复杂的多层感知机(Multilayer Perceptron)。作为一种线性分类器,(单层)感知机可说是最简单的前向人工神经网络形式。尽管结构简单,感知机能够学习并解决相当复杂的问题。感知机主要的本质缺陷是它不能处理线性不可分问题(比如椭圆、余弦函数等)
Rosenblatt,在Hebb学习法则的基础上,发展了一种迭代、试错、类似于人类学习过程的学习算法——感知机学习,该算法的初衷是为了‘教导’感知机识别图像。除了能够识别出现较多次的字母,感知机也能对不同书写方式的字母图像进行概括和归纳。但是,由于本身的局限,感知机除了那些包含在训练集里的图像以外,不能对受干扰(半遮蔽、不同大小、平移、旋转)的字母图像进行可靠的识别,即对噪声敏感。
在Freund及Schapire(1998)使用核技巧改进感知机学习算法之后,愈来愈多的人对感知机学习算法产生兴趣。后来的研究表明除了二元分类,感知机也能应用在较复杂、被称为structured learning类型的任务上(Collins, 2002),又或使用在分布式计算环境中的大规模机器学习问题上。
感知机算法是一个简单易懂的算法,它是很多算法的鼻祖,比如支持向量机算法,神经网络与深度学习。因此虽然它现在已经不是一个在实践中广泛运用的算法,还是值得好好的去研究一下。
这种简单的感知机有一个明显缺陷:只能学习 线性可分函数 。这个缺陷重要吗?比如 XOR,这么简单的函数,都不能被线性分类器分类。为了解决这个问题,我们要使用一种多层感知机,也就是——前馈神经网络:事实上,我们将要组合一群这样的感知机来创建出一个更强大的学习机器。神经网络实际上就是将大量之前讲到的感知机进行组合,用不同的方法进行连接并作用在不同的激活函数上。