感知机模型

感知机

感知机时神经网络的雏形,是线性二分类器,输入实例的特征向量,输出1,-1进行实例的分类。感知机模型是寻找N维空间的超平面。(超平面是指将空间一分为二的平面,N维空间的超平面为N-1维,如二维平面的超平面是一条直线,三维空间的超平面是一个平面)。
感知机模型的表示:
f ( x ⃗ ) = s i g n ( w ⃗ ⋅ x ⃗ + b ) f(\vec{x})=sign(\vec{w} \cdot \vec{x}+b) f(x )=sign(w x +b)
其中, w ⃗ \vec{w} w 和b是模型的参数,需要学习的, w ⃗ \vec{w} w 为该超平面 w ⃗ ⋅ x ⃗ + b = 0 \vec{w} \cdot \vec{x}+b=0 w x +b=0的法向量。
在这里插入图片描述
感知机模型_第1张图片

感知机学习

感知机模型重要就是确定超平面,就是求出 w ⃗ , b \vec{w},b w ,b这两个参数。方法就是建立一个目标函数,就行迭代求优。该目标函数往往为损失函数(当前模型与实际真实模型的差距),通过梯度下降,最小化损失函数。
自然容易想到的是,统计训练数据分类分错的样本个数,但是他无法用函数表示,就是无法就行微分,不能用梯度下降。因此采用另一个方法,计算误分类的点到超平面的距离 d d d,损失函数就是所有误分类点到超平面的距离的总和。
L ( w ⃗ , b ) = ∑ d i L(\vec{w},b)=\sum d_i L(w ,b)=di

点到超平面的距离计算

设样本点 x 0 ⃗ \vec{x_0} x0 ,在超平面 w ⃗ ⋅ x ⃗ + b = 0 \vec{w} \cdot \vec{x}+b=0 w x +b=0的投影(作垂线)为 x 1 ⃗ \vec{x_1} x1 ,则所求的距离d就是向量 x 0 x 1 ⃗ \vec{x_0x_1} x0x1 的模长。显然 w ⃗ \vec{w} w x 0 x 1 ⃗ \vec{x_0x_1} x0x1 平行,则有:
w ⃗ ⋅ x 0 x 1 ⃗ = ∣ w ⃗ ∣ ∣ x 0 x 1 ⃗ ∣ c o s ( 0 o r π ) \vec{w}\cdot\vec{x_0x_1}=|\vec{w}| |\vec{x_0x_1}|cos(0 or π) w x0x1 =w x0x1 cos(0orπ)
由于方向存在同向,方向,会出现正负,但是我们只关心值大小,因此给他加个绝对值。
∣ w ⃗ ⋅ x 0 x 1 ⃗ ∣ = ∣ w ⃗ ∣ ∣ x 0 x 1 ⃗ ∣ = w 1 2 + w 2 2 . . . d |\vec{w}\cdot\vec{x_0x_1}|=|\vec{w}| |\vec{x_0x_1}|=\sqrt{w_1^2+w_2^2...} d w x0x1 =w x0x1 =w12+w22... d
向量的模长可以用二范式表示。
∣ w ⃗ ⋅ x 0 x 1 ⃗ ∣ = ∣ w ⃗ ∣ ∣ x 0 x 1 ⃗ ∣ = ∣ ∣ w ⃗ ∣ ∣ d |\vec{w}\cdot\vec{x_0x_1}|=|\vec{w}| |\vec{x_0x_1}|=||\vec{w}|| d w x0x1 =w x0x1 =w d
又有:
w ⃗ ⋅ x 0 x 1 ⃗ = w 1 ( x 1 1 − x 0 1 ) + w 2 ( x 1 2 − x 0 2 ) + w 3 ( x 1 3 − x 0 3 ) . . . . \vec{w}\cdot\vec{x_0x_1}=w^1(x_1^1-x_0^1)+w^2(x_1^2-x_0^2)+w^3(x_1^3-x_0^3).... w x0x1 =w1(x11x01)+w2(x12x02)+w3(x13x03)....
= ( w 1 x 1 1 + w 2 x 1 2 + w 3 x 1 3 + . . . ) − ( w 1 x 0 1 + w 2 x 0 2 + w 3 x 0 3 + . . . ) = w ⃗ ⋅ x 1 ⃗ − w ⃗ ⋅ x 0 ⃗ =(w^1x_1^1+w^2x_1^2+w^3x_1^3+...)-(w^1x_0^1+w^2x_0^2+w^3x_0^3+...)=\vec{w}\cdot \vec{x_1}-\vec{w}\cdot \vec{x_0} =(w1x11+w2x12+w3x13+...)(w1x01+w2x02+w3x03+...)=w x1 w x0
因为 x 1 ⃗ \vec{x_1} x1 在超平面上,满足 w ⃗ ⋅ x 1 ⃗ + b = 0 \vec{w} \cdot \vec{x_1}+b=0 w x1 +b=0
原式就可化简:
w ⃗ ⋅ x 0 x 1 ⃗ = − b − w ⃗ ⋅ x 0 ⃗ \vec{w}\cdot\vec{x_0x_1}=-b-\vec{w}\cdot \vec{x_0} w x0x1 =bw x0
∣ w ⃗ ⋅ x 0 x 1 ⃗ ∣ = ∣ b + w ⃗ ⋅ x 0 ⃗ ∣ = ∣ ∣ w ⃗ ∣ ∣ d |\vec{w}\cdot\vec{x_0x_1}|=|b+\vec{w}\cdot \vec{x_0}|=||\vec{w}|| d w x0x1 =b+w x0 =w d
样本到超平面距离为:
d = ∣ b + w ⃗ ⋅ x 0 ⃗ ∣ ∣ ∣ w ⃗ ∣ ∣ d={|b+\vec{w}\cdot \vec{x_0}| \over ||\vec{w}||} d=w b+w x0
因为 x 0 ⃗ \vec{x_0} x0 是误分类的样本,则其真值 y 0 y_0 y0(-1或1)必然和 b + w ⃗ ⋅ x 0 ⃗ b+\vec{w}\cdot \vec{x_0} b+w x0 是正负相反(相同那分类就对了)。因此 y 0 ( b + w ⃗ ⋅ x 0 ) ⃗ < 0 y_0(b+\vec{w}\cdot \vec{x_0)}<0 y0(b+w x0) <0,则:
d = − y 0 ( b + w ⃗ ⋅ x 0 ⃗ ) ∣ ∣ w ⃗ ∣ ∣ d={-y_0(b+\vec{w}\cdot \vec{x_0}) \over ||\vec{w}||} d=w y0(b+w x0 )
假设总共有n个误分类的样本,则总的距离差为:
∑ i − y i ( b + w ⃗ ⋅ x i ⃗ ) ∣ ∣ w ⃗ ∣ ∣ \sum_i {-y_i(b+\vec{w}\cdot \vec{x_i}) \over ||\vec{w}||} iw yi(b+w xi )
感知机模型重点是分类,不关心距离超平面的距离大小,因此可以不考虑 1 ∣ ∣ w ⃗ ∣ ∣ 1\over ||\vec{w}|| w 1,因此可以得到误差函数为:
L ( w ⃗ , b ) = − ∑ y i ( b + w ⃗ ⋅ x i ⃗ ) L(\vec{w},b)=-\sum y_i(b+\vec{w}\cdot \vec{x_i}) L(w ,b)=yi(b+w xi )
梯度下降求参数
目标函数: m i n L ( w ⃗ , b ) = − ∑ y i ( b + w ⃗ ⋅ x i ⃗ ) minL(\vec{w},b)=-\sum y_i(b+\vec{w}\cdot \vec{x_i}) minL(w ,b)=yi(b+w xi )
函数对 w ⃗ , b \vec{w},b w ,b求偏导.
感知机模型_第2张图片
因为是最小化目标函数,因此要沿着梯度的负方向进行更新参数。
感知机模型_第3张图片
在实际应用中,并不是统计完所有误分类的样本,在进行梯度下降更新参数,而是采用随机梯度下降,出现误分类点就进行一次梯度下降,更新参数。
感知机模型_第4张图片
η \eta η是学习率,控制更新的幅度,一般来讲不能太大。

参考:

https://zhuanlan.zhihu.com/p/53892602

你可能感兴趣的:(机器学习)