感知器学习算法(PLA)及python实现

本文介绍了感知器学习算法(PLA)的基本原理,包括线性阈值单元的工作方式和感知器的训练过程。通过示例解释了如何使用感知器进行线性二元分类,并提供了两个Python实现,一个是未使用任何包的代码,另一个利用了sklearn库。此外,还讨论了感知器在处理线性不可分数据时的问题和解决方案。
摘要由CSDN通过智能技术生成

感知器学习算法(PLA)及python实现

1、感知器原理

感知器是最简单的人工神经网络结构之一,由 Frank Rosenblatt 发明于 1957。它是基于一种稍微不同的人工神经元,称为线性阈值单元(LTU):输入和输出现在是数字(而不是二进制开/关值),并且每个输入连接都与权重相连。LTU计算其输入的加权和( z = W1×1 + W2×2 + … + + WN×n = Wt·x ),然后将阶跃函数应用于该和,并输出结果: HW(x) = STEP(Z) = STEP(W^T·x) 。

单一的 LTU 可被用作简单线性二元分类。它计算输入的线性组合,如果结果超过阈值,它输出正类或者输出负类。例如,你可以使用单一的 LTU基于花瓣长度和宽度去分类鸢尾花。训练一个 LTU 意味着去寻找合适的 W0 和 W1 值,。感知器简单地由一层 LTU 组成,每个神经元连接到所有输入。这些连接通常用特殊的被称为输入神经元的传递神经元来表示:它们只输出它们所输入的任何输入。此外,通常添加额外偏置特征( X0=1 )。这种偏置特性通常用一种称为偏置神经元的特殊类型的神经元来表示,它总是输出 1。

引入这样一个例子具体说明一下:某银行要根据用户的年龄、性别、年收入等情况来判断是否给该用户发信用卡。我们把用户的个人信息作为特征向量x,令总共有d个特征,每个特征赋予不同的权重w,表示该特征对输出(是否发信用卡的影响有多大。那所有特征的加权和的值与一个设定的阈值threshold进行比较:大于这个阈值,输出为+1,即发信用卡;小于这个阈值,输出为-1,即不发信用卡。感知器模型,就是当特征加权和与阈值的差大于或等于0,则输出h(x)=1;当特征加权和与阈值的差小于0,则输出h(x)=-1,而我们的目的就是计算出所有权值w和阈值threshold。

2、训练过程

首先随机选择一条直线进行分类。然后找到第一个分类错误的点,如果这个点表示正类,被误分为负类,则这里写图片描述,那表示wx夹角大于90度,其中w是直线的法向量。所以,x被误分在直线的下侧(相对于法向量,法向量的方向即为正类所在的一侧),修正的方法就是使wx夹角小于90度。通常做法是,一次或多次更新后的wx夹角小于90度,能保证x位于直线的上侧,则对误分为负类的错误点完成了直线修正。

同理,如果是误分为正类的点,即这里写图片描述,那表示wx夹角小于90度,其中w是直线的法向量。所以,x被误分在直线的上侧,修正的方法就是使wx夹角大于90度。通常做法是,一次或多次更新后的wx夹角大于90度,能保证x位于直线的下侧,则对误分为正类的错误点也完成了直线修正。
按照这种思想,遇到个错误点就进行修正,不断迭代。要注意一点:每次修正直线,可能使之前分类正确的点变成错误点,这是可能发生的。但是没关系,不断迭代,不断修正,最终会将所有点完全正确分类(PLA前提是线性可分的)。这种做法的思想是“知错能改”。
实际

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值