感知机算法(Perceptron Learning Algorithm)

感知机算法(Perceptron Learning Algorithm),第1张

感知机(perceptron)是二类分类的线性分类模型,它的思想很简单,就是在一个二维空间中寻找一条直线将红点和蓝点分开(图1),类比到高维空间中,感知机模型尝试寻找一个超平面,将所有二元类别分开(图2)。

如果我们找不到这么一条直线的话怎么办?找不到的话那就意味着类别线性不可分(图3),也就意味着感知机模型不适合你的数据的分类。使用感知机一个最大的前提,就是数据是线性可分的。

如果我们有n个样本,每个样本有m维特征和一个二元输出类别:

感知机的目标是找到一个超平面:

让其中一个类别的样本满足 ,而另一类样本满足

,从而样本线性可分。但这样戚雹的超平面并不是唯一的,感知机模型采取不同的初始值( )解可能会不同。

我们用相量方式对上式进行表达: ,由此感知机的模型可以定义为:

,其中:

例如:将一个新的样旦仔行本 带入训练好的模型 ,当   ,  被分为 类。当  ,  被分为 类。

我们将满足 的样本类别输出值取 ,满足 的样本类别输出值取 。从而正确分类的样本满足 ,而错误分类的样本满足 。损失函数的优化目标是使所有被错误分类的样本到超平面的距离之和最小。

一个被错误分类的样本 , ,到超平面的距离是 ,

其中    。 为超平面的法向量, 的大小变化并不会影响样本点到超平面的距离。我们令 ,并且假设所有错误分类的点的集合为M,则所有错误分类的样本到超平面的距离之和为:

最终构建的损失函数为:

感知机模型选择的是采用随机梯度下降,这意味着我们每次仅仅需要使用一个误分类的点来更新梯度。损失函数 的梯度如下:

随机选取一个错误分类点 ,对 进行更新:

式中 为初始值, 是步长(learning rate)。通过这样迭代可以使损失函数 不断减小,直到为0。

感知机模型的优化方法可以通俗的解释为:当一个样本被错误分类,即位于分类超平面的错误一侧时,则调整 的值,使分类超平面向该错误分类点的一侧移动,以减少该错误分类点与超平面间的距离,直至超平面越过该错误分类点,最终被正确分类。

上一节的感知机模型的算法形式我们一般称为感知机模型的算法原始形式。对偶形式是对算法执行速度的优化。对偶形式的基本想法是将 表示为样本 和标签 的线性组合,通过求解其系数而求得 。我们取初始值 为 ,选取错误分类样本 对 进行更新有:

假设为了将样本 正确分类而更新 的次数为 ,每一个样本 的 的初始值为 ,每当次样本在某一次梯度下降迭代中因误分类而更新时, 的值 ,则 关于 的增量分别为 和 。则用所有样本对 进行更新,最后得到的 可以表示为

的通俗解释:如果 的值越大,那么意味着样本 经常被误分。很明显离超平面很近的点,当超平面稍微移动一点点, 的类别就发生变化。

我们用 的等价形式  来判断错误分类。上式中 表示的是两个样本的内积,而且这个内积的结果在更新 的过程中会多模哗次使用。如果我们事先用矩阵运算计算出所有的样本之间的内积,那么在算法运行时, 仅仅一次的矩阵内积运算比多次的循环计算省时。 计算量最大的判断误分类这儿就省下了很多的时间,这也是对偶形式的感知机模型比原始形式优的原因。

样本的内积矩阵称为Gram矩阵,它是一个对称矩阵,记为

例如: , , 则Gram矩阵为

                  

   G=      =   

                    

以上为建立感知机模型的相关理论知识,如果有需要用python建立感知机模型进行分类的小伙伴的可以上访问我的github:

https://github.com/Rocky1ee/Perceptron-Model

小伙伴们如果觉得文章还行的请点个赞呦!!同时觉得文章哪里有问题的可以评论一下  谢谢你!

实现无人机飞行的程序可以分为以下几个步骤:

连接无人机:通过无人机的肢搜咐 API 或 SDK 连接到无人机。

设置起飞点和降落点:输入起飞点和降漏蠢落点的 GPS 坐标,通过 API 或 SDK 进行设置。

安排航线:根据航线规划要求,输入无人机需要飞行的航线点集合,设置无人机航线。

启动无人机:通过 API 或 SDK 启动无人机,使其开始执行航线。

飞行过程中监控:在无人机飞行过程中,通过无人机的传感器和 GPS 定位信息实时监测其飞行状态和位置。

任务结束和返航:当无人机完成任务后,通过历纯 API 或 SDK 进行返航,并在到达降落点后进行安全降落。

下面是一个简单的示例代码:

scss

# 引入无人机 API 或 SDK

import drone_sdk

# 连接无人机

drone = drone_sdk.connect()

# 设置起飞点和降落点

takeoff_point = (lat, lon, alt)

landing_point = (lat, lon, alt)

drone.set_takeoff_point(takeoff_point)

drone.set_landing_point(landing_point)

# 安排航线

waypoints = [(lat1, lon1, alt1), (lat2, lon2, alt2), ...]

drone.set_waypoints(waypoints)

# 启动无人机

drone.takeoff()

drone.start_mission()

# 飞行过程中监控

while drone.is_flying():

current_position = drone.get_position()

current_status = drone.get_status()

# 在这里添加你的监控逻辑

# 任务结束和返航

drone.return_to_home()

drone.land()

需要注意的是,无人机的 API 或 SDK 可能会因品牌和型号的不同而有所区别,以上代码仅供参考。

你好,我觉得这两者是没有区别的。都表现的是一种自觉或者是感知。是一种对前途的改知。

自己选择的路坚持走下去。有时候,我们做出的最艰难的决定,最终会成为我们做过最漂亮的事。

2,无事心不空,有事心不乱。不管发老高生什么,都不要放弃,坚持走下去,肯定会有意想不到的风景。也许不是你本来想走的路,也不是你本来想登临的山顶,可另一条路有另一条路的风景,不同的山顶也一样会有美丽的日出,不要念念不忘原来的路!

3,我的累,别人感受不到,我说了别人未必能够身同感受,努力熬着,或许没有那么糟糕,明年会更好这个想法坚持着我继续走下去。

4,其实人生没有对错,只有选择后的坚持,不后悔,走下去,就是对的。学会善待自己,别去背负太多;学会爱惜自己,因为没有人比你更懂你自己。生活中的爱与恨,不过是分分合合;生活中的喜与悲,不过是喜怒哀乐;生活中的伤与痛,不过是难分难舍;不要求什么十全十美,该珍惜的珍惜。

5,你永远不知道生活将会给你怎样的惊喜,找到适合自己的路,坚持走下去,按自己的原则,好好生活。即使有人亏待你,但时间和人生绝对不会亏待你。

6,生活中每个人都很累,余生,愿你累的时候也能懂得怎么过。生活除了责任,就是唯一的坚持,无论遇到什么样的变化,除派含稿了坚强就是一直坚持走下去!

7,优柔寡断,是人生最大的负能量。人生没什么好优柔的。从生命角度去看,你人生路径上的任何一种选择都是错误的,无论你怎么选,都有差错;因此,当选择来临,A和B,拿一个便走就是。人生没有对错,只有选择后的坚持,不后悔,走下去,就是对的。

8,如果你作出了某种选择,就要准备好承担一切后果。即使再苦再累,也不要心生抱怨,因为这是你自己的选择!人生故事里的大多数结局都源于你的选择,没有什么好抱怨的。你选择了什么样的道路,就会拥有什么样的人生。人生不是游戏,我们没有多少可供尘孝选择的机会。既然选择了,就要咬牙坚持走下去。

9,自己选择的路就要坚持走下去,路上的艰辛无需抱怨…

10,成功就是多坚持一分钟,这一分钟不放弃,下一分钟就会有希望,所以,当你扛不住时就咬咬牙,再苦再累,只要坚持走下去。

11,人生的道路上,永远不是笔直的,必定有很多弯路,有很多精彩的地方,也会有很多不堪的地方。走累了,遇到弯路了,坚持走下去会柳暗花明,也会一条死路走到黑。可以停下来思考,但不要再耽误过多时间。精彩的蜿蜒小径、笔直的康庄大道就在未来等着。

12,不要害怕失败,努力就好了。成功就继续坚持走下去,失败了就说明这条路并不适合我,那么我就另寻它路。人生很短,快乐就好。

13,黑夜里长行的人,难免孤独,但之所以坚持走下去,是因为相信也并看到了,那一束黎明温柔的光。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12291867.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存