image.png

感知器算法

基本概念

感知器算法是神经网络的前身, 也是深度学习中最基础最核心也是最底层的思想支撑, 所以我们如果要学习深度学习, 首先要了解感知器算法
现在我们要介绍的是神经元的概念, 神经网络最开始是生物学的概念, 输入一个生物电信号, 然后从突触那里输出, 我们如果要模拟人的思考方式, 我们很容易想到的是模拟神经元之间传递信息的方式来构建模型
image-20220128131846019.png
根据这个概念, 在1943年建立了单个神经元的数学模型(MP模型)
image-20220128132223316.png
然后在1957年, 科学家从纯数学的角度来描述问题:
给定一些输入输出对感知器算法 - 图5 ,其中 感知器算法 - 图6,求一个函数,使:感知器算法 - 图7
感知器算法 - 图8 , 从一堆(X, y)中学习参数感知器算法 - 图9,使函数能正确分类

注: sign(x)叫做符号函数,在数学和计算机运算中,其功能是取某个数的符号(正或负):
感知器算法 - 图10

感知器算法

简单来说, 就是输入 感知器算法 - 图11能够从一些输入输出对感知器算法 - 图12 中通过学习算法, 获得权重 感知器算法 - 图13感知器算法 - 图14 , 从而获得和人一样的对物品的分类能力, 这个学习算法就是感知器算法
具体步骤:
①随机选择 感知器算法 - 图15感知器算法 - 图16
②取一个训练样本感知器算法 - 图17
(1)若感知器算法 - 图18感知器算法 - 图19
感知器算法 - 图20
(2)若感知器算法 - 图21感知器算法 - 图22
感知器算法 - 图23
③再取另一个感知器算法 - 图24 回到②
④终止条件: 直到所有的输入输出对都不满足②中条件之一, 退出循环

可能上面的步骤看着不是很直观, 我们举一个例子:
感知器算法 - 图25感知器算法 - 图26 目前的 感知器算法 - 图27感知器算法 - 图28 对 x 不能正确分类
则用以下的方式调整:
感知器算法 - 图29

变形后得到下面的式子为调整 感知器算法 - 图30 和 b
感知器算法 - 图31

实际上就是不断调整感知器算法 - 图32 使它能够正确分类, 我们这个模型就算是完成了
注: 上面的那个两条竖线的符号是矩阵的F范数, 这个范数表达的意思就是矩阵各个位置做平方和然后开根号:
感知器算法 - 图33

所表达的意义就是对向量长度的推广, 可以理解为是矩阵的长度

定义问题

以上为最通俗的解释, 如果我们要对感知器进行重新证明, 需要重新对这个式子进行数学定义:
为了证明和描述的简便, 定义一个增广向量感知器算法 - 图34 , 在向量x的第二维加上一个1, 这样设的好处是, 可以将感知器算法 - 图35 转化成两个矩阵相乘, 使计算变得简便:
①若y=+1, 则 感知器算法 - 图36
②若y=-1, 则 感知器算法 - 图37 下面会介绍为啥这个向量里会这样设
定义增广的 感知器算法 - 图38 如下: 感知器算法 - 图39 …打不出来大号的omega, 那就用W代替吧
此时的输入如果是单个样本就变成了感知器算法 - 图40 下面的参数 W, X都是矩阵
所以现在我们要建立感知机的目的就是要找到一个感知器算法 - 图41 使下面的式子成立:

感知器算法 - 图42

目的是要找W, 使得感知器算法 - 图43 无论使正样本还是负样本都满足这个式子:

感知器算法 - 图44

所以这里可以看出定义负样本的时候设成-x和-1会让整个式子也满足大于等于0的条件, 这样定义会让证明变得简单, 因为只要让式子满足一个条件即可, 而不用分大于0小于0两种情况讨论了

算法步骤

现在我们重新写一下定义后得感知器算法的步骤:
输入感知器算法 - 图45
①随机取 W
②挑一个感知器算法 - 图46, 若 感知器算法 - 图47, 则感知器算法 - 图48
③回到②直到所有的X都不成立时退出

证明

然后我们定义这个问题, 然后来证明这个问题:
感知器算法收敛定理:
输入 感知器算法 - 图49, 如果线性可分, 即存在W, 使
感知器算法 - 图50

opt: optimize,这里面表示一个比较优的W参数,可以将整个(超)平面较好地分开
则利用上述感知器算法, 经过有限步后, 得到一个感知器算法 - 图51使
感知器算法 - 图52

大家可以观察一下上述两个式子的差别, 实际上感知器算法 - 图53感知器算法 - 图54有极小的可能是同一个值, 感知器算法 - 图55为理想的情况, 而我们得到的这个感知器算法 - 图56一直在逼近这个感知器算法 - 图57

现在我们开始正式证明这个定理:
不失一般性, 设感知器算法 - 图58 , 因为Wopt与aWopt是同一平面(a>0), 只有系数的差别, 所以我们为了简化这样定义
假设第k步的W是感知器算法 - 图59 且有一个感知器算法 - 图60 使得
感知器算法 - 图61
也就是说第k步没有被正确分类
根据感知器算法:
感知器算法 - 图62
同时取模,也就是取矩阵的范数, 然后再平方

感知器算法 - 图63

取模之后这里直接按照平方和公式展开了, 把上面的结果抄下来

感知器算法 - 图64

然后我们可以看到上面的式子中第三项与我们最开始的假设的(1)是一样的,所以这一项一定小于0
第四项中由感知器收敛定理里面可知Wopt和向量X的内积大于0, 后两项的和一定小于0, 所以此时我们可以看出a取足够大, 后三项的和小于0
所以, 若感知器算法 - 图65 的话, 一定可以取一个很大的a, 使

感知器算法 - 图66%7D-aW%7Bopt%7D%20%5Cright%5C%7C%5E%7B2%7D%20%3C%20%5Cleft%5C%7C%20W%7B(k)%7D-aW%7Bopt%7D%20%5Cright%5C%7C%5E%7B2%7D%0A#card=math&code=%5Cleft%5C%7C%20W%7B%28k%2B1%29%7D-aW%7Bopt%7D%20%5Cright%5C%7C%5E%7B2%7D%20%3C%20%5Cleft%5C%7C%20W%7B%28k%29%7D-aW_%7Bopt%7D%20%5Cright%5C%7C%5E%7B2%7D%0A&id=MBeVe)

由上面的式子我们可以看出来, 感知器算法 - 图67感知器算法 - 图68 更收敛于感知器算法 - 图69 的, 但是我们并不知道它收敛的节奏有多快, 所以我们需要定量取一个a, 来计算它收敛的快慢, 所以我们有如下的定义:

感知器算法 - 图70

然后我们设感知器算法 - 图71 , 所以我们至多经过感知器算法 - 图72步有限步骤, 感知器算法 - 图73 将变成0, W将会收敛至aWopt

所以得证,感知机算法是可以收敛的