本文来自之前在Udacity上自学机器学习的系列笔记。这是第8篇,介绍了监督学习中的感知器。
感知器
感知器如下图所示。
是输入,它们分别乘以一个权重后相加,然后与一个阈值相比,如果, 那么分类结果为1,否则为0。这个模型在上个世纪50年代开始被称为“感知器(Perceptron)”,是人工神经网络的计算单元。
AND, OR, NOT
使用感知器可以表示布尔函数,即输入和输出只能是0和1的函数。比如说,当, , 时为和运算AND;和的取值可以是0和1,当两者都取0或者只有其中之一为1时,它们与权重相乘的加和是小于的,输出为0。而只有两者都为1时,才大于,输出为1。
同理也有,, , 为或运算OR;, 为非运算NOT。
有了这三种,我们还可以基于这三种逻辑函数构建所有的布尔函数,例如XOR。
感知器规则
对于,如果判断为正,那么输出为1,否则为0。我们将也合并到左边,即, 。
定义,即为对应于的输出,为学习速率,那么定义如下规则:
其中对的处理使得,当的输出值与目标值不同时,可以按照反方向进行迭代。
这个规则对于二元的线性可分的数据集,可以找出这个分隔数据的半平面(halfplane),而且只需要经过有限次的迭代。
梯度下降法
上面的规则通过与阈值比较来构建函数,下面考虑一种不和阈值进行比较的情况。这个情况加入了非线性因素,从而在处理数据集上具有更强的健壮性,即可以处理非线性可分的数据集。
我们引入激活函数,定义平方误差函数:
求导
所以
上面引入了平方误差函数,后者是可导的。从而得到一个更加健壮的分类模型。
Sigmoid函数
根据上面的思考,我们可以尝试定义一个可导的阈值函数,即
该函数的图形为:
可以看出,当时,输出大于0.5;当时,输出小于0.5。将感知器套上激活函数,就得到了神经网络的基础。