“感知机”的版本间的差异
(→发展) |
(→发展) |
||
第37行: | 第37行: | ||
1943年,心理学家[[沃伦·麦卡洛克]]和数理逻辑学家[[沃尔特·皮茨]]在合作的《A logical calculus of the ideas immanent in nervous activity》<ref>Warren S. McCulloch and Walter Pitts (1943), A logical calculus of the ideas immanent in nervous activity</ref>论文中提出并给出了[[人工神经网络]]的概念及人工[[神经元]]的数学模型,从而开创了人工神经网络研究的时代。1949年,心理学家[[唐纳德·赫布]]在《The Organization of Behavior》<ref>Donald Hebb (1949) The Organization of Behavior: A Neuropsychological Theory</ref>论文中描述了神经元学习法则——[[赫布型学习]]。 | 1943年,心理学家[[沃伦·麦卡洛克]]和数理逻辑学家[[沃尔特·皮茨]]在合作的《A logical calculus of the ideas immanent in nervous activity》<ref>Warren S. McCulloch and Walter Pitts (1943), A logical calculus of the ideas immanent in nervous activity</ref>论文中提出并给出了[[人工神经网络]]的概念及人工[[神经元]]的数学模型,从而开创了人工神经网络研究的时代。1949年,心理学家[[唐纳德·赫布]]在《The Organization of Behavior》<ref>Donald Hebb (1949) The Organization of Behavior: A Neuropsychological Theory</ref>论文中描述了神经元学习法则——[[赫布型学习]]。 | ||
− | 人工神经网络更进一步被美国神经学家弗兰克·罗森布拉特 Frank Rosenblatt 所发展。他提出了可以模拟人类感知能力的机器,并称之为"感知机"。1957年,在Cornell航空实验室中,他成功在IBM 704机上完成了感知机的仿真。两年后,他又成功实现了能够识别一些英文字母、基于感知机的[[神经计算机]]——[[Mark1]],并于1960年6月23日,展示与众。首个有关感知机的成果,由弗兰克·罗森布拉特于1958年发表在《The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain》<ref>Rosenblatt, Frank. x. (1958), The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain, Cornell Aeronautical Laboratory, Psychological Review, v65, No. 6, pp. 386–408. {{doi|10.1037/h0042519}}</ref>的文章里。1962年,他又出版了《Principles of Neurodynamics: Perceptrons and the theory of brain mechanisms》<ref>Rosenblatt, Frank. x. Principles of Neurodynamics: Perceptrons and the Theory of Brain Mechanisms. Spartan Books, Washington DC, 1961</ref> | + | 人工神经网络更进一步被美国神经学家弗兰克·罗森布拉特 Frank Rosenblatt 所发展。他提出了可以模拟人类感知能力的机器,并称之为"感知机"。1957年,在Cornell航空实验室中,他成功在IBM 704机上完成了感知机的仿真。两年后,他又成功实现了能够识别一些英文字母、基于感知机的[[神经计算机]]——[[Mark1]],并于1960年6月23日,展示与众。首个有关感知机的成果,由弗兰克·罗森布拉特于1958年发表在《The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain》<ref>Rosenblatt, Frank. x. (1958), The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain, Cornell Aeronautical Laboratory, Psychological Review, v65, No. 6, pp. 386–408. {{doi|10.1037/h0042519}}</ref>的文章里。1962年,他又出版了《Principles of Neurodynamics: Perceptrons and the theory of brain mechanisms》<ref>Rosenblatt, Frank. x. Principles of Neurodynamics: Perceptrons and the Theory of Brain Mechanisms. Spartan Books, Washington DC, 1961</ref>一书,向大众深入解释感知机的理论知识及背景假设。此书介绍了一些重要的概念及定理证明,例如感知机收敛定理。 |
− | 为了"教导"感知机识别图像,弗兰克·罗森布拉特在[[ | + | 为了"教导"感知机识别图像,弗兰克·罗森布拉特在[[赫布型学习]]的基础上,发展了一种迭代、试错、类似于人类学习过程的学习算法——感知机学习。除了能够识别出现较多次的字母,感知机也能对不同书写方式的字母图像进行概括和归纳。但是,由于本身的局限,感知机除了那些包含在训练集里的图像以外,不能对受干扰(半遮蔽、不同大小、平移、旋转)的字母图像进行可靠的识别。 |
− | 虽然最初被认为有着良好的发展潜能,但感知机最终被证明不能处理诸多的[[模式识别]]问题。这使得神经网络的研究领域停滞了很多年直到人们认识到一个有两层及以上的[[前馈神经网络]](也称为[[多层感知机]]),其处理能力远远大于单层的(也称为[[单层感知机]])。单层感知机只能学习线性可分的模式。1969年Marvin Minsky和Seymour Papert出版的一本著名的著作[[《感知机》]]表明,单层感知机学习一个[[XOR]]函数是不可能的。于是人们错误的认为以及推测对于多层感知机也会有类似的结果。然而,这是不对的。因为Minsky 和 Papert 都已经知道多层的感知机可以构造XOR函数。三年后,[https://en.wikipedia.org/wiki/Stephen_Grossberg Stephen Grossberg]发布了一系列的论文,介绍了能够对[http://cns.bu.edu/Profiles/Grossberg/Gro1973StudiesAppliedMath.pdf 微分,对比增强和XOR函数进行建模的网络]。然而,Minsky 和 | + | 虽然最初被认为有着良好的发展潜能,但感知机最终被证明不能处理诸多的[[模式识别]]问题。这使得神经网络的研究领域停滞了很多年直到人们认识到一个有两层及以上的[[前馈神经网络]](也称为[[多层感知机]]),其处理能力远远大于单层的(也称为[[单层感知机]])。单层感知机只能学习线性可分的模式。1969年Marvin Minsky和Seymour Papert出版的一本著名的著作[[《感知机》]]表明,单层感知机学习一个[[XOR]]函数是不可能的。于是人们错误的认为以及推测对于多层感知机也会有类似的结果。然而,这是不对的。因为Minsky 和 Papert 都已经知道多层的感知机可以构造XOR函数。三年后,[https://en.wikipedia.org/wiki/Stephen_Grossberg Stephen Grossberg]发布了一系列的论文,介绍了能够对[http://cns.bu.edu/Profiles/Grossberg/Gro1973StudiesAppliedMath.pdf 微分,对比增强和XOR函数进行建模的网络]。然而,Minsky 和 Papert 研究成果中的误导导致了神经网络研究的兴趣下降和资金大幅减少。直到十多年以后的十九世纪八十年代,[[神经网络]]研究才又迎来了一次复兴。该书也在1987年进行修订和再版,新版本的《感知机-修订版》对原文中的一些错误进行了说明和指正。 |
由于弗兰克·罗森布拉特等人没能够及时推广感知机学习算法到多层神经网络上,又由于《Perceptrons》在研究领域中的巨大影响,及人们对书中论点的误解,造成了人工神经领域发展的长年停滞及低潮,直到人们认识到[[多层感知机]]没有单层感知机固有的缺陷及[[反向传播算法]]在80年代的提出,才有所恢复。1987年,书中的错误得到了校正,并更名再版为《Perceptrons - Expanded Edition》。 | 由于弗兰克·罗森布拉特等人没能够及时推广感知机学习算法到多层神经网络上,又由于《Perceptrons》在研究领域中的巨大影响,及人们对书中论点的误解,造成了人工神经领域发展的长年停滞及低潮,直到人们认识到[[多层感知机]]没有单层感知机固有的缺陷及[[反向传播算法]]在80年代的提出,才有所恢复。1987年,书中的错误得到了校正,并更名再版为《Perceptrons - Expanded Edition》。 | ||
− | 1964年,Aizerman等人<ref>{{cite journal |last1=Aizerman |first1=M. A. |last2=Braverman |first2=E. M. |last3=Rozonoer |first3=L. I. |year=1964 |title=Theoretical foundations of the potential function method in pattern recognition learning |url=|journal=Automation and Remote Control |volume=25 |issue=|pages=821–837 }}</ref> 就提出了[[核感知机]]算法。在Freund及Schapire(1998)使用[[核技巧]]改进感知机学习算法之后,愈来愈多的人对感知机学习算法产生兴趣。感知机算法的间距下界的保证首先由Yoav | + | 1964年,Aizerman等人<ref>{{cite journal |last1=Aizerman |first1=M. A. |last2=Braverman |first2=E. M. |last3=Rozonoer |first3=L. I. |year=1964 |title=Theoretical foundations of the potential function method in pattern recognition learning |url=|journal=Automation and Remote Control |volume=25 |issue=|pages=821–837 }}</ref> 就提出了[[核感知机]]算法。在Freund及Schapire(1998)使用[[核技巧]]改进感知机学习算法之后,愈来愈多的人对感知机学习算法产生兴趣。感知机算法的间距下界的保证首先由Yoav Freund和 Robert Schapire(1998)<ref name = "T1"></ref>在不可分的情况下给出了,最近Mehryar [https://en.wikipedia.org/wiki/Mehryar_Mohri Mohri] and Rostamizadeh (2013)推广了先前的结论并给出了新的L1下界<ref>Mohri, Mehryar and Rostamizadeh, Afshin (2013). [https://arxiv.org/pdf/1305.0208.pdf Perceptron Mistake Bounds] arXiv:1305.0208, 2013.</ref>。后来的研究表明除了二元分类,感知机也能应用在较复杂、被称为structured learning类型的任务上,又或使用在分布式计算环境中的大规模机器学习问题上。 |
==结构== | ==结构== |
2020年5月22日 (五) 21:56的版本
在机器学习中,感知机是有监督学习中的一种二元分类器(一种输入一个实值向量,判断其是否属于某一个类的函数[1])。
这是一种线性分类器,即一种基于线性预测函数将一组权值与特征向量相结合的分类算法。
历史
来源
感知机算法由Frank Rosenblatt[2]在1957年在Cornell Aeronautical Laboratory(康奈尔航空实验室)时所发明的一种人工神经网络,它可以被视为一种最简单形式的前馈神经网络,是一种二元线性分类器。由美国The Office of Naval Research(海军研办公室)资助[3]。
Frank Rosenblatt给出了相应的感知机学习算法,常用的有感知机学习、最小二乘法和梯度下降法。譬如,感知机利用梯度下降法对损失函数进行极小化,求出可将训练数据进行线性划分的分离超平面,从而求得感知机模型。
感知机是生物神经细胞的简单抽象。神经细胞结构大致可分为:树突、突触、细胞体及轴突。单个神经细胞可被视为一种只有两种状态的机器——激动时为『是』,而未激动时为『否』。神经细胞的状态取决于从其它的神经细胞收到的输入信号量,及突触的强度(抑制或加强)。当信号量总和超过了某个阈值时,细胞体就会激动,产生电脉冲。电脉冲沿着轴突并通过突触传递到其它神经元。为了模拟神经细胞行为,与之对应的感知机基础概念被提出,如权量(突触)、偏置(阈值)及激活函数(细胞体)。
虽然生物神经元模型的复杂性是通常是理解神经行为所必须的。但研究表明,类感知机的线性模型也可以产生一些在真实神经元中看到的行为。[4][5].
感知机的目的是成为一台机器,而不是一个程序,虽然它的第一个实现是在IBM 704的软件中完成的,但是它后来在定制的硬件中实现为"Mark 1 感知机"。这台机器是为图像识别而设计的:它有一个由400个[ 光电池]组成的阵列,随机与“神经元”相连。权重在[电位器]中编码,权重的更新是由电动马达完成的[6]。
在1958年由美国海军组织的新闻发布会上,Rosenblatt发表了关于感知机的说明,感知机在新兴的人工智能社区中引起了激烈的讨论。根据Rosenblatt的说明,纽约时报报道这个感知机是一个电子计算机的胚胎,海军希望它能够行走、说话、写字、看见。复制自己并意识到自己的存在。[3]
发展
1943年,心理学家沃伦·麦卡洛克和数理逻辑学家沃尔特·皮茨在合作的《A logical calculus of the ideas immanent in nervous activity》[7]论文中提出并给出了人工神经网络的概念及人工神经元的数学模型,从而开创了人工神经网络研究的时代。1949年,心理学家唐纳德·赫布在《The Organization of Behavior》[8]论文中描述了神经元学习法则——赫布型学习。
人工神经网络更进一步被美国神经学家弗兰克·罗森布拉特 Frank Rosenblatt 所发展。他提出了可以模拟人类感知能力的机器,并称之为"感知机"。1957年,在Cornell航空实验室中,他成功在IBM 704机上完成了感知机的仿真。两年后,他又成功实现了能够识别一些英文字母、基于感知机的神经计算机——Mark1,并于1960年6月23日,展示与众。首个有关感知机的成果,由弗兰克·罗森布拉特于1958年发表在《The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain》[9]的文章里。1962年,他又出版了《Principles of Neurodynamics: Perceptrons and the theory of brain mechanisms》[10]一书,向大众深入解释感知机的理论知识及背景假设。此书介绍了一些重要的概念及定理证明,例如感知机收敛定理。
为了"教导"感知机识别图像,弗兰克·罗森布拉特在赫布型学习的基础上,发展了一种迭代、试错、类似于人类学习过程的学习算法——感知机学习。除了能够识别出现较多次的字母,感知机也能对不同书写方式的字母图像进行概括和归纳。但是,由于本身的局限,感知机除了那些包含在训练集里的图像以外,不能对受干扰(半遮蔽、不同大小、平移、旋转)的字母图像进行可靠的识别。
虽然最初被认为有着良好的发展潜能,但感知机最终被证明不能处理诸多的模式识别问题。这使得神经网络的研究领域停滞了很多年直到人们认识到一个有两层及以上的前馈神经网络(也称为多层感知机),其处理能力远远大于单层的(也称为单层感知机)。单层感知机只能学习线性可分的模式。1969年Marvin Minsky和Seymour Papert出版的一本著名的著作《感知机》表明,单层感知机学习一个XOR函数是不可能的。于是人们错误的认为以及推测对于多层感知机也会有类似的结果。然而,这是不对的。因为Minsky 和 Papert 都已经知道多层的感知机可以构造XOR函数。三年后,Stephen Grossberg发布了一系列的论文,介绍了能够对微分,对比增强和XOR函数进行建模的网络。然而,Minsky 和 Papert 研究成果中的误导导致了神经网络研究的兴趣下降和资金大幅减少。直到十多年以后的十九世纪八十年代,神经网络研究才又迎来了一次复兴。该书也在1987年进行修订和再版,新版本的《感知机-修订版》对原文中的一些错误进行了说明和指正。
由于弗兰克·罗森布拉特等人没能够及时推广感知机学习算法到多层神经网络上,又由于《Perceptrons》在研究领域中的巨大影响,及人们对书中论点的误解,造成了人工神经领域发展的长年停滞及低潮,直到人们认识到多层感知机没有单层感知机固有的缺陷及反向传播算法在80年代的提出,才有所恢复。1987年,书中的错误得到了校正,并更名再版为《Perceptrons - Expanded Edition》。
1964年,Aizerman等人[11] 就提出了核感知机算法。在Freund及Schapire(1998)使用核技巧改进感知机学习算法之后,愈来愈多的人对感知机学习算法产生兴趣。感知机算法的间距下界的保证首先由Yoav Freund和 Robert Schapire(1998)[1]在不可分的情况下给出了,最近Mehryar Mohri and Rostamizadeh (2013)推广了先前的结论并给出了新的L1下界[12]。后来的研究表明除了二元分类,感知机也能应用在较复杂、被称为structured learning类型的任务上,又或使用在分布式计算环境中的大规模机器学习问题上。
结构
设有[math]\displaystyle{ n }[/math]维输入的单个感知机(如右图示),[math]\displaystyle{ {a}_1 }[/math]至[math]\displaystyle{ {a}_n }[/math]为[math]\displaystyle{ n }[/math]维输入向量的各个分量,[math]\displaystyle{ {w}_1 }[/math]至[math]\displaystyle{ {w}_n }[/math]为各个输入分量连接到感知机的权量(或称权值),[math]\displaystyle{ {b} }[/math]为偏置,[math]\displaystyle{ f(.) }[/math]为激活函数(又曰激励函数或传递函数),[math]\displaystyle{ t }[/math]为标量输出。输出[math]\displaystyle{ t }[/math]的数学描述为:
- [math]\displaystyle{ t = f(\sum_{i=1}^{n}{{w}_i {x}_i + b}) = f(\mathbf{w}^T \mathbf{x}) \qquad\qquad(1) }[/math]
其中[math]\displaystyle{ \mathbf{w} = [w_1 \; w_2 \; ... \; w_n \; b]^T }[/math],[math]\displaystyle{ \mathbf{x} = [x_1 \; x_2 \; ... \; x_n \; 1]^T }[/math]及[math]\displaystyle{ f(x) }[/math]为反对称的符号函数,其定义为:
- [math]\displaystyle{ f(n) = \begin{cases}+1 & \text{if }n \geq 0\\-1 & \text{otherwise}\end{cases} \qquad\qquad(2) }[/math]
这里的 [math]\displaystyle{ w }[/math] 是一个实值构成的权重向量,[math]\displaystyle{ \mathbf{w} \cdot \mathbf{x} }[/math]是一个点积操作即 [math]\displaystyle{ \sum_{i=1}^m w_i x_i }[/math], [math]\displaystyle{ m }[/math] 是感知机输入值的个数,其中 [math]\displaystyle{ b }[/math] 是偏置项。偏置项决定了决策边界相对原点的偏移量,且不依赖于任何输入值。从式(1)可知,偏置被引申为权量,而对应的输入值为[math]\displaystyle{ 1 }[/math]。故,一感知机的输出行为是求得输入向量与权向量的内积后,经一个激活函数所得一个标量结果。
设输入向量与权向量的内积为零,可得出[math]\displaystyle{ (n+1) }[/math]维的超平面。平面的法向量为[math]\displaystyle{ \mathbf{w} }[/math],并经过[math]\displaystyle{ (n+1) }[/math]维输入空间的原点。法向量指向的输入空间,其输出值为[math]\displaystyle{ +1 }[/math],而与法向量反向的输入空间,其输出值则为[math]\displaystyle{ -1 }[/math]。故可知这个超平面定义了决策边界,并把输入空间划分为二。
在二分类问题中,[math]\displaystyle{ f(x) }[/math] 的值(0或1)用来将 [math]\displaystyle{ x }[/math] 分为正例或者负例。如果 [math]\displaystyle{ b }[/math] 是负的,那么输入和权重的结合生成的正值必须比 [math]\displaystyle{ |b| }[/math]大,从而使得分类的神经元大于0阈值。从空间上来说,偏置项改变了决策边界的位置(而不是方向)。如果训练集不是线性可分的,那么感知机学习算法就不会停止。如果向量不是线性可分的,那么学习将永远不会收敛到所有向量都分类正确的结果。感知机算法的局限性的最著名的例子就是线性不可分的情况,比如XOR问题。对于所有二分类函数的决策边界解的空间和学习表现的研究都在这个参考中[13]。
在神经网络的场景中,感知机是一个以单位阶跃函数为激活函数的人工神经元。感知机算法也被称为单层感知机。这个术语用于区分多层感知机即一个更加复杂的神经网络。作为一个线性分类器,单层感知机是一类最简单的前馈神经网络。
准则函数
设一训练集为[math]\displaystyle{ D = \{(\mathbf{p}_1, \; t_1), \;\dots\;, (\mathbf{p}_m, \; t_m)\} }[/math],其中[math]\displaystyle{ \mathbf{p}_i }[/math]表示输入,而[math]\displaystyle{ {t}_i }[/math]是对应的目标输出。由于符号函数的不连续性,如果采用标准的均方误差,所得误差函数必然是不连续的,因而基于梯度的学习算法也就不能被使用。为此,Rosenblatt提出了感知机准则函数:
- [math]\displaystyle{ E(\mathbf{w}) = -\sum_{\mathbf{p}_i \in M}^{}{(\mathbf{w}^T\mathbf{p}_i) \; {t}_i} \qquad\qquad(3) }[/math]
其中[math]\displaystyle{ M }[/math]是被当前[math]\displaystyle{ \mathbf{w} }[/math]错误分类的的输入向量集合。当[math]\displaystyle{ \mathbf{w}^T\mathbf{p}_i \geq 0 }[/math]时,[math]\displaystyle{ {t}_i }[/math]为[math]\displaystyle{ -1 }[/math],而当[math]\displaystyle{ \mathbf{w}^T\mathbf{p}_i \lt 0 }[/math]时,[math]\displaystyle{ {t}_i }[/math]为[math]\displaystyle{ +1 }[/math]。故,误差函数[math]\displaystyle{ E(\mathbf{w}) }[/math]是一组正数的和,又或当训练集里所有输入都被正确分类时,等于零。
学习算法
下面是一个介绍单层感知机学习算法的例子。对于存在隐层的多层感知机,必须使用诸如反向传播等更加复杂的算法。尽管下面的方法也是可行,但如果在函数是非线性且可微的情况下,那么可以使用链式法则等方法解决问题。
当多个感知机在一个人工神经网络中组合应用时,每个输出神经元都独立于其他神经元运行。因此,学习的每一个输出都可以单独考虑。
定义
我们先定义这些变量:
- [math]\displaystyle{ y = f(\mathbf{z}) }[/math] 表示感知对于某个输入向量 [math]\displaystyle{ \mathbf{z} }[/math] 的输出。
- [math]\displaystyle{ D = \{(x_1,d_1),\dots,(x_s,d_s)\} }[/math] 训练集 [math]\displaystyle{ s }[/math] 的样本, 其中:
- [math]\displaystyle{ x_j }[/math] 是 [math]\displaystyle{ n }[/math]维 输入向量。
- [math]\displaystyle{ d_j }[/math] 是感知对应输入的期望输出值。
我们用如下方式表示特征值:
- [math]\displaystyle{ x_{j,i} }[/math] 是输入向量的第 j 个样本的第 [math]\displaystyle{ i }[/math] 个特征。
- [math]\displaystyle{ x_{j,0} = 1 }[/math].
权重的表示:
- [math]\displaystyle{ w_i }[/math] 是权重向量的第 [math]\displaystyle{ i }[/math] 个值,这是为了表示和第 [math]\displaystyle{ i }[/math] 个输入特征相乘。
- 因为 [math]\displaystyle{ x_{j,0} = 1 }[/math], [math]\displaystyle{ w_0 }[/math] 实际上表示的是偏置项也就是常量 [math]\displaystyle{ b }[/math]。
为了表示每一轮独立的 [math]\displaystyle{ \mathbf{w} }[/math] ,这里使用如下符号:
- [math]\displaystyle{ w_i(t) }[/math] 是第 [math]\displaystyle{ t }[/math] 轮训练中的权重 [math]\displaystyle{ i }[/math] 。
不像Logistic回归这样的线性分类算法,在感知机学习算法中没有学习速率 。这是因为通过乘以常数的更新只是放缩了权重,但不会改变预测结果的符号[14]。
步骤
- 初始化权重与阈值。权重初始化为全0或者一个很小的随机值。在下面的例子中我们使用0作为初始化值。
- 对于数据集 [math]\displaystyle{ D }[/math] 中每一个样本 j ,对输入 [math]\displaystyle{ x_j }[/math] 执行以下的步骤,并得到期望的输出 [math]\displaystyle{ d_j }[/math]:
- 计算以下的输出:[math]\displaystyle{ \begin{align} y_j(t) &= f[\mathbf{w}(t)\cdot\mathbf{x}_j] \\ &= f[w_0(t)x_{j,0} + w_1(t)x_{j,1} + w_2(t)x_{j,2} + \dotsb + w_n(t)x_{j,n}] \end{align} }[/math]
- 更新权重:[math]\displaystyle{ w_i(t+1) = w_i(t) + r\cdot(d_j - y_j(t)) x_{j,i}, 0 \lt i \lt n }[/math],其中 [math]\displaystyle{ r }[/math]是学习速率。
- 对于离线学习,第二步需要重复直到迭代误差[math]\displaystyle{ \frac{1}{s} \sum_{j=1}^s |d_j - y_j(t)| }[/math]小于一个用户定于的误差阈值[math]\displaystyle{ \gamma }[/math],或者预定于的迭代轮数已经完成,这里的 [math]\displaystyle{ s }[/math] 是是样本集的大小。
这个算法在2.1和2.2步骤后更新了权重。这些权重会立即反应到训练数据中,并且随后进行更新,并不是等所有步骤结束后才更新的。
简单实现与演示
摘自李航博士的《统计学习方法》,对于训练数据集,其中正例点是[math]\displaystyle{ x_1=(3,3)T }[/math],[math]\displaystyle{ x_2=(4,3)T }[/math],负例点为[math]\displaystyle{ x_3=(1,1)T }[/math],用感知机学习算法的原始形式求感知机模型[math]\displaystyle{ f(x)=w·x+b }[/math]。这里[math]\displaystyle{ w=(w(1),w(2))T,x=(x(1),x(2))T }[/math]
import numpy as np
training_set = [[3,3],[4,3],[1,1]]
Y = [1,1,-1]
w = [0,0]
b = 0
n = 1
#check给出w,b,找到一个此时的误分点,如果没有,说明算法收敛
def check(w,b):
C = []
for e in training_set:
x1 = np.array(e).reshape((-1,1))
w1 = np.array(w)
c = np.dot(w1,x1)
y = Y[training_set.index(e)]
if y*(c+b)<=0:
C.append(e[0])
C.append(e[1])
break
else:
continue
return C
def update(C,w,b):
D = []
y = Y[training_set.index(C)]
x = np.array(C)
D.append(w + n*y*x)
D.append(b + n*y)
return D
while True:
C = check(w, b)
if len(C)==0:
break
else:
w = update(C,w,b)[0]
b = update(C,w,b)[1]
print('算法已经收敛')
print('y = sign(%d*x1 + %d*x2 + %d)'%(w[0],w[1],b))
得到结果
算法已经收敛
y = sign(1*x1 + 1*x2 + -3)
收敛性
感知机是一种线性分类器,因此如果数据集 [math]\displaystyle{ D }[/math] 是非线性可分的话,那么它永远无法让所以的输入向量分类正确,即正负的样本不能被一个线性超平面所分割。标准算法在这种情况下时是无法逐渐达到一个近似解的,并导致学习过程会直接失效。所以,如果我们不能事先知道数据集是否是线性可分的,则应该使用下面的变种。
如果训练集是线性可分的,那么感知机可以确保其收敛性。此外,感知机在训练过程中调整自身权重的次数是有上限的。
假设分属于两个类的输入向量可以被一个线性超平面分割成两个类,且样本到超平面的间距为 [math]\displaystyle{ \gamma }[/math]。即存在一个权重向量 [math]\displaystyle{ \mathbf{w} }[/math] 且 [math]\displaystyle{ ||\mathbf{w}||=1 }[/math],以及一个偏置项 [math]\displaystyle{ b }[/math] 使得对于所有的 [math]\displaystyle{ d_j=1 }[/math] 对应 j 有 [math]\displaystyle{ \mathbf{w}\cdot\mathbf{x}_j \gt \gamma }[/math] 和 [math]\displaystyle{ d_j=0 }[/math]对应的 j 有 [math]\displaystyle{ \mathbf{w}\cdot\mathbf{x}_j \lt -\gamma }[/math] 。且如果引入 [math]\displaystyle{ R }[/math] 表示输入向量最大的维度。Novikoff (1962)证明了感知机可以在 [math]\displaystyle{ O(R^2 \gamma^2) }[/math]轮迭代中完成收敛。证证明的思路是权重向量可以被有负点积的约束值在一个方向上修正,因此可以被 [math]\displaystyle{ Osqrt{t} }[/math] 的下界约束,这里的 [math]\displaystyle{ t }[/math] 是权重向量更新的次数。然而,它也可以被 [math]\displaystyle{ O(t) }[/math] 的上界约束。因为如果存在一个未知的满足条件的权重向量,那么在这个方向上每一次权重向量的改变都只取决于输入向量。
当感知机算法在训练集线性可分的条件下会在某个解中达到收敛,而且会在多个质量不同且满足条件的解中任意选一个。[15]最佳稳定性感知机现在一般称为SVM支持向量机,就是设计用来解决这个问题的。[16]
变种
渐进的pocket算法(Gallant, 1990)通过保留最近的最佳解解决了感知机学习过程中的稳定性问题。pocket算法接下来返回保存最佳的解而不是迭代的最后一个解。它也可以被用于线性不可分的数据集,那么感知机的学习目的就是找一个使得误分类数量最小的解。然而这些解是完全随机出现的,因此pocket算法不能在学习的过程中最终得到这些解也不能保证在给定的迭代次数中找到这些解。
Maxover算法 (Wendemuth, 1995)[17] 在某种意义上是具有鲁棒性得,因为无论是否事先知道数据集线性可分,它都会达到收敛。在线性可分的情况下,即使具有最佳的稳定性(即类之间达到最大间距)也能很好解决训练问题。对于线性不可分的数据集,它会返回一个少量误分类的解。在所有的情况下,该算法在学习过程中会逐渐接近解而不会存储先前的状态,也不会随机跳跃。收敛性是指线性可分数据集的全局最优解和非线性可分数据的局部最优解。
投票感知机 (Freund and Schapire, 1999),是一种使用多权重的感知机的变种。每当一个例子被错误的分类时,算法会启动一个新的感知机,然后使用最后的感知机的权重作为现在感知机的初始化权重。每次分类错误感知机都会被给予另外的权重直到所以样本分类正确。最后得到所有感知机加权投票的结果。
在线性可分问题中,感知机的训练目标在于在样本之间找到最大的间距分割两个类。所谓的最优稳定性感知机可以通过迭代训练和优化策略来确定,比如Min-Over算法 (Krauth and Mezard, 1987)[16] 或者AdaTron算法 (Anlauf and Biehl, 1989))。[18] AdaTron利用了问题对应的二次优化是凸的这一条件。最佳稳定性感知机加上核方法,这是SVM支持向量机概念的基础。
[math]\displaystyle{ \alpha }[/math]-感知机使用了带有阈值输出单元的固定随机权重的预处理层。这使得感知机能够通过投影二元空间对类似的模式进行分类。实际上对于一个维度足够高的的投影空间,模式就会变得线性可分了。
解决线性不可分问题的另一种方法是使用高阶的网络(sigma-pi unit)。在这种类型的网络中,每个输入向量的元素都会使用复杂输入(二阶)组合来拓展到高纬。这可以使其拓展到一个n阶网络。
但是,我们应该牢记,最好的分类器不需要完美分类所有训练数据。实际上,如果我们有先验性的约束,即数据据来自于高斯分布。那么输入空间的线性解是最佳的,而非线性解是过拟合的。
其他的线性分类算法包括了Winnow,SVM支持向量机,和Logistic回归。
多分类感知机
类似于其他训练线性分类器的技巧,感知机可以很自然地泛化成多分类分类器。这里的输入 [math]\displaystyle{ x }[/math] 和输出 [math]\displaystyle{ y }[/math] 是从任意集合中得到的。特征表示函数f(x,y)将每一个可能的输入/输出对映射到一个有限维的实值特征向量上。与之前相同,特征向量乘以一个权重向量 [math]\displaystyle{ w }[/math],但是现在该结果的值将被用于选择许多可能输出结果的其中之一:
- [math]\displaystyle{ \hat y = \operatorname{argmax}_y f(x,y) \cdot w. }[/math]
同样通过在样本的迭代来完成学习,预测每一个输出的结果,当预测和实际结果匹配时不更新权重,反之则更新。更新方式就是:
- [math]\displaystyle{ w_{t+1} = w_t + f(x, y) - f(x,\hat y). }[/math]
当 [math]\displaystyle{ x }[/math] 是一个实值向量,这个多分类的更新公式会退化到原始的感知机的更新公式。即 [math]\displaystyle{ y }[/math] 为 [math]\displaystyle{ \{0,1\} }[/math]中的一个,[math]\displaystyle{ f(x,y) = y x }[/math]。
对于某些问题,可以选择输入/输出和特征的表示。所以即使 [math]\displaystyle{ y }[/math] 是一个非常大或者无限集合中的元素。 [math]\displaystyle{ \mathrm{argmax}_y f(x,y) \cdot w }[/math] 也可以被高效地找到。
在最近的几年,感知机的训练已经成为了自然语言处理的热门话题,比如语音标记和语法分析等任务(Collins, 2002)。
参考
- ↑ 1.0 1.1 Freund, Y.; Schapire, R. E.(1999), "Large margin classification using the perceptron algorithm" . Report 37 (3): 277–296, doi:10.1023/A:1007662407062.
- ↑ Rosenblatt, Frank (1957), The Perceptron--a perceiving and recognizing automaton. Report 85-460-1, Cornell Aeronautical Laboratory.
- ↑ 3.0 3.1 Mikel Olazaran (1996). " A Sociological Study of the Official History of the Perceptrons Controversy". Social Studies of Science. 26 (3): 611–659 doi:10.1177/030631296026003005. JSTOR 285702.
- ↑ Morel, D., Singh, C. & Levy, W.B. J Comput Neurosci (2018). http://rdcu.be/FDUo
- ↑ Cash, Sydney, and Rafael Yuste. "Linear summation of excitatory inputs by CA1 pyramidal neurons." Neuron 22.2 (1999): 383-394.APA
- ↑ 6.0 6.1 Bishop, Christopher M. (2006), Pattern Recognition and Machine Learning. Springer.
- ↑ Warren S. McCulloch and Walter Pitts (1943), A logical calculus of the ideas immanent in nervous activity
- ↑ Donald Hebb (1949) The Organization of Behavior: A Neuropsychological Theory
- ↑ Rosenblatt, Frank. x. (1958), The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain, Cornell Aeronautical Laboratory, Psychological Review, v65, No. 6, pp. 386–408. doi:10.1037/h0042519
- ↑ Rosenblatt, Frank. x. Principles of Neurodynamics: Perceptrons and the Theory of Brain Mechanisms. Spartan Books, Washington DC, 1961
- ↑ Aizerman, M. A.; Braverman, E. M.; Rozonoer, L. I. (1964). "Theoretical foundations of the potential function method in pattern recognition learning". Automation and Remote Control. 25: 821–837.
- ↑ Mohri, Mehryar and Rostamizadeh, Afshin (2013). Perceptron Mistake Bounds arXiv:1305.0208, 2013.
- ↑ Liou, D.-R.; Liou, J.-W.; Liou, C.-Y. (2013). Learning Behaviors of Perceptron. iConcept Press. ISBN
- ↑ Genevieve B. Orr. "The Perceptron". Willamette University. Retrieved 3 March 2017.
- ↑ Bishop, Christopher M. "Chapter 4. Linear Models for Classification". Pattern Recognition and Machine Learning. Springer Science+Business Media, LLC. p. 194. ISBN 978-0387-31073-2.
- ↑ 16.0 16.1 W. Krauth and M. Mezard. Learning algorithms with optimal stability in neural networks. J. of Physics A: Math. Gen. 20: L745-L752 (1987)
- ↑ A. Wendemuth. Learning the Unlearnable. J. of Physics A: Math. Gen. 28: 5423-5436 (1995)
- ↑ J.K. Anlauf and M. Biehl. The AdaTron: an Adaptive Perceptron algorithm. Europhysics Letters 10: 687-692 (1989)
深入阅读
- Aizerman, M. A. and Braverman, E. M. and Lev I. Rozonoer. Theoretical foundations of the potential function method in pattern recognition learning. Automation and Remote Control, 25:821–837, 1964.
- Rosenblatt, Frank (1958), The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain, Cornell Aeronautical Laboratory, Psychological Review, v65, No. 6, pp. 386–408. doi:10.1037/h0042519.
- Rosenblatt, Frank (1962), Principles of Neurodynamics. Washington, DC:Spartan Books.
- Minsky M. L. and Papert S. A. 1969. Perceptrons. Cambridge, MA: MIT Press.
- Gallant, S. I. (1990). Perceptron-based learning algorithms. IEEE Transactions on Neural Networks, vol. 1, no. 2, pp. 179–191.
- Mohri, Mehryar and Rostamizadeh, Afshin (2013). Perceptron Mistake Bounds arXiv:1305.0208, 2013.
- Novikoff, A. B. (1962). On convergence proofs on perceptrons. Symposium on the Mathematical Theory of Automata, 12, 615-622. Polytechnic Institute of Brooklyn.
- Widrow, B., Lehr, M.A., "30 years of Adaptive Neural Networks: Perceptron, Madaline, and Backpropagation," Proc. IEEE, vol 78, no 9, pp. 1415–1442, (1990).
- Collins, M.2002. Discriminative training methods for hidden Markov models: Theory and experiments with the perceptron algorithm in Proceedings of the Conference on Empirical Methods in Natural Language Processing (EMNLP '02).
- Yin, Hongfeng (1996), Perceptron-Based Algorithms and Analysis, Spectrum Library, Concordia University, Canada
外部链接
- A Perceptron implemented in MATLAB to learn binary NAND function
- Chapter 3 Weighted networks - the perceptron and chapter 4 Perceptron learning of Neural Networks - A Systematic Introduction by Raúl Rojas (ISBN|978-3-540-60505-8)
- History of perceptrons
- Mathematics of perceptrons
- Explanation and Java implementation example (in Spanish)
- Perceptron (in Spanish)
编者推荐
深度神经网络(DNN)是否模拟了人类大脑皮层结构?
人工智能交融了诸多学科,而目前对人工智能的探索还处于浅层面,文章从不同角度和层次来思考,比如人工智能和大脑的关系。
NLP集智听课笔记—-从感知机到深度学习
提到深度学习和统计物理的关系,第一个要说的模型就是 Hopfield 模型。 本次笔记的从统计物理基本模型、 Hopfield 模型中的消息传递算法俩个方面说明
好课分享:从Python到机器学习
本课程针对不同技术起点的学习人群,特别挑选了多套多阶段的AI视频教程。本套教程幽默风趣、简单明了。如果你有心学习人工智能技术,那么你将从基础知识开始,循序渐进的掌握深度学习知识,最终通过亲手搭建多种神经网络,解决机器学习问题,掌握深度学习技术,点亮自己的人工智能技能树!
本中文词条由打豆豆、薄荷编辑,欢迎在讨论页面留言。 本词条内容翻译自 wikipedia.org,遵守 CC3.0协议。