机器学习笔记(8):感知器

2020-03-01  本文已影响0人  链原力

本文来自之前在Udacity上自学机器学习的系列笔记。这是第8篇,介绍了监督学习中的感知器。

感知器
感知器如下图所示。

image.png

x_1, x_2, x_3是输入,它们分别乘以一个权重\omega_1, \omega_2, \omega_3后相加,然后与一个阈值\theta相比,如果\geq 0, 那么分类结果为1,否则为0。这个模型在上个世纪50年代开始被称为“感知器(Perceptron)”,是人工神经网络的计算单元。

AND, OR, NOT
使用感知器可以表示布尔函数,即输入和输出只能是0和1的函数。比如说,当\omega_1=\frac{1}{2}, \omega_2=\frac{1}{2}, \theta=\frac{3}{4}时为和运算AND;x_1x_2的取值可以是0和1,当两者都取0或者只有其中之一为1时,它们与权重相乘的加和是小于\theta的,输出为0。而只有两者都为1时,才大于\theta,输出为1。

同理也有,\omega_1=\frac{1}{2}, \omega_2=\frac{1}{2}, \theta=\frac{1}{4}为或运算OR;\omega_1=-1, \theta=0为非运算NOT。

有了这三种,我们还可以基于这三种逻辑函数构建所有的布尔函数,例如XOR。

感知器规则
对于\sum_{i=1}^{k}x_i\omega_i\geq\theta,如果判断为正,那么输出为1,否则为0。我们将\theta也合并到左边,即\omega_0=-\theta, x_0=1

定义\hat{y}=(\sum_{i=0}^{k}x_i\omega_i\geq0),即\hat{y}为对应于x_i的输出,\eta为学习速率,那么定义如下规则:
\omega_i=\omega_i+\Delta \omega_i
\Delta \omega_i = \eta (y- \hat{y}) x_i

其中对\Delta \omega_i的处理使得,当\hat{y}的输出值与目标值不同时,可以按照反方向进行迭代。

这个规则对于二元的线性可分的数据集,可以找出这个分隔数据的半平面(halfplane),而且只需要经过有限次的迭代。

梯度下降法
上面的规则通过与阈值比较来构建函数,下面考虑一种不和阈值进行比较的情况。这个情况加入了非线性因素,从而在处理数据集上具有更强的健壮性,即可以处理非线性可分的数据集。

我们引入激活函数a=\sum_{v}x_iw_i,定义平方误差函数:
E(\omega)=\frac{1}{2} \sum(y-a)^2
求导
\frac{\partial E}{\omega_i} = \frac{\partial}{\partial \omega_i} \frac{1}{2} \sum(y-a)^2=\sum(y-a) \frac{\partial}{\partial \omega_i} (- \sum x_i \omega_i) = \sum(y-a)(-x_i)

所以\Delta \omega_i = \eta (y-a) x_i

上面引入了平方误差函数,后者是可导的。从而得到一个更加健壮的分类模型。

Sigmoid函数
根据上面的思考,我们可以尝试定义一个可导的阈值函数,即
\sigma(a) =\frac {1}{1+e^{-a}}

该函数的图形为:

image.png

可以看出,当a>0时,输出大于0.5;当a<0时,输出小于0.5。将感知器套上激活函数,就得到了神经网络的基础。

上一篇下一篇

猜你喜欢

热点阅读