感知机模型

感知机模型

感知机模型的基本概念

输入控件是n维向量实数空间,输出空间是{-1,+1},映射函数是
f ( x ) = s i g n ( w ⋅ x + b ) f(x)=sign(w\cdot x +b) f(x)=sign(wx+b)
w被称为权值,b称为偏置,sign(x)是符号函数。

感知机是一种线性分类模型,属于判别模型(与之对应的是概率分布模型),

感知机的学习策略

感知机学习前提:数据集的线性可分性

线性可分性定义:给定数据集T={(xi,yi)}_n,xi是n维实数向量,yi是-1或+1,若存在某个超平面S,使得数据集的正实例点和负实例点都被正确的划分到超平面两侧,则称数据集T是线性可分的数据集。

感知机的损失函数

感知机的经验损失最小化策略是误分类点到超平面的距离之和,每个点到平面的距离为
− 1 ∣ ∣ w ∣ ∣ y i ( w ⋅ x i + b ) -\frac{1}{||w||}y_i (w\cdot x_i +b) w1yi(wxi+b)
则损失函数为
− 1 ∣ ∣ w ∣ ∣ Σ x i ∈ M y i ( w ⋅ x i + b ) -\frac{1}{||w||}\Sigma_{x_i\in M} y_i(w\cdot x_i +b) w1ΣxiMyi(wxi+b)
因为w可以都正则化为模为1的向量,所以我们可以去除前面一项,得到的是感知机的损失函数

感知机的学习算法

感知机的学习算法即为求解w和b,使如下最小化问题得到最优解:
m i n w , b L ( w , b ) = − Σ x i ∈ M y i ( w ⋅ x i + b ) min_{w,b}L(w,b)=-\Sigma_{x_i\in M}y_i (w\cdot x_i +b) minw,bL(w,b)=ΣxiMyi(wxi+b)
感知机学习算法是误分类驱动的,我们可以采用随机梯度下降法。具体算法如下:

感知机学习算法:

​ 输入:训练数据集T,学习率η;

​ 输出:w和b

​ (1)选取初值w0和b0;

​ (2)选取数据点(xi,yi)

​ (3)如果被误分类,则更新w和b:
w ← w + η y i x i b ← b + η y i w \leftarrow w+\eta y_i x_i \\b \leftarrow b+\eta y_i ww+ηyixibb+ηyi
​ (4)跳转到第(2)步,知道没有被误分类的数据点

学习算法的收敛性证明

证明:设数据集T是线性可分的,则

(1)存在满足条件的||w||为1的超平面将数据集完全分开,且存在γ>0,使得对i=1,2,…,N
y i ( w ^ o p t ⋅ x ^ i ) = y i ( w o p t ⋅ x i + b o p t ) y_i(\hat{w}_{opt}\cdot \hat{x}_i)=y_i (w_{opt}\cdot x_i +b_{opt}) yi(w^optx^i)=yi(woptxi+bopt)
(2)令
R = m a x 1 ≤ i ≤ N ∣ ∣ x ^ i ∣ ∣ R = max_{1\le i \le N}||\hat{x}_i|| R=max1iNx^i
则感知机算法在训练数据集上误分类次数满足
k ≤ ( R γ ) 2 k\le (\frac{R}{\gamma})^2 k(γR)2

(1):由于数据集线性可分,则存在超平面将数据集完全分开,取此超平面并将其模正则化为1,对于有限的i=1,2,…,N
y i ( w ^ o p t ⋅ x i ) = y i ( w o p t ⋅ x i + b o p t ) > 0 y_i (\hat{w}_{opt}\cdot x_i )=y_i (w_{opt}\cdot x_i +b_{opt})>0 yi(w^optxi)=yi(woptxi+bopt)>0
所以存在
γ = m i n i { y i ( w o p t ⋅ x i + b o p t ) } \gamma =min_i \{y_i(w_{opt}\cdot x_i +b_{opt})\} γ=mini{yi(woptxi+bopt)}
使得
y i ( w ^ o p t ⋅ x i ) = y i ( w o p t ⋅ x i + b o p t ) ≥ γ y_i (\hat{w}_{opt}\cdot x_i )=y_i (w_{opt}\cdot x_i +b_{opt})\ge \gamma yi(w^optxi)=yi(woptxi+bopt)γ
(2)不妨设感知机算法从
w ^ 0 \hat{w}_0 w^0
开始,令第k个误分类实例之前的扩充权重向量为
w ^ k − 1 = ( w k − 1 T , b k − 1 ) T \hat{w}_{k-1}=(w_{k-1}^T,b_{k-1})^T w^k1=(wk1T,bk1)T
则第k个误分类实例的条件是
y i ( w ^ k − 1 ⋅ x i ) = y i ( w k − 1 ⋅ x i + b k − 1 ) ≤ 0 y_i (\hat{w}_{k-1}\cdot x_i )=y_i (w_{k-1}\cdot x_i +b_{k-1})\le 0 yi(w^k1xi)=yi(wk1xi+bk1)0
则w和b的更新为:
w k ← w k − 1 + η y i x i b k ← b k − 1 + η y i w_k \leftarrow w_{k-1}+\eta y_i x_i \\b_k \leftarrow b_{k-1}+\eta y_i wkwk1+ηyixibkbk1+ηyi

w ^ k ← w ^ k − 1 + η y i x ^ i \hat{w}_k \leftarrow \hat{w}_{k-1}+\eta y_i \hat{x}_i w^kw^k1+ηyix^i
则有
w ^ k ⋅ w ^ o p t = w ^ k − 1 ⋅ w ^ o p t + η y i x ^ i ⋅ w ^ o p t ≥ w ^ k − 1 ⋅ w ^ o p t + η γ \hat{w}_k \cdot \hat{w}_{opt}=\hat{w}_{k-1} \cdot \hat{w}_{opt}+\eta y_i \hat{x}_i \cdot \hat{w}_{opt}\\\ge \hat{w}_{k-1} \cdot \hat{w}_{opt}+\eta \gamma w^kw^opt=w^k1w^opt+ηyix^iw^optw^k1w^opt+ηγ
由此可得不等式
w ^ k ⋅ w ^ o p t ≥ w ^ k − 1 ⋅ w ^ o p t + η γ ≥ ⋯ ≥ k η γ \hat{w}_k \cdot \hat{w}_{opt}\ge\hat{w}_{k-1} \cdot \hat{w}_{opt}+\eta \gamma \ge \cdots \ge k\eta \gamma w^kw^optw^k1w^opt+ηγkηγ
另外
∣ ∣ w ^ k ∣ ∣ 2 = ∣ ∣ w ^ k − 1 ∣ ∣ 2 − 2 η y i w ^ k − 1 + η 2 ∣ ∣ x ^ i ∣ ∣ 2 ≤ ∣ ∣ w ^ k − 1 ∣ ∣ 2 + η 2 ∣ ∣ x ^ i ∣ ∣ 2 ≤ ⋯ ≤ k η 2 R 2 ||\hat{w}_k||^2 =||\hat{w}_{k-1}||^2-2\eta y_i\hat{w}_{k-1}+\eta^2||\hat{x}_i||^2\\\le ||\hat{w}_{k-1}||^2+\eta^2||\hat{x}_i||^2\le\cdots \le k\eta^2R^2 w^k2=w^k122ηyiw^k1+η2x^i2w^k12+η2x^i2kη2R2
则有
k η γ ≤ w ^ k ⋅ w ^ o p t ≤ ∣ ∣ w ^ k ∣ ∣ ∣ ∣ w ^ o p t ∣ ∣ ≤ k η R k 2 γ 2 ≤ k R 2 k\eta\gamma \le \hat{w}_k \cdot \hat{w}_{opt} \le ||\hat{w}_k||||\hat{w}_{opt}||\le \sqrt{k}\eta R \\k^2\gamma^2 \le kR^2 kηγw^kw^optw^kw^optk ηRk2γ2kR2
所以
k ≤ ( R γ ) 2 k\le (\frac{R}{\gamma})^2 k(γR)2

学习算法的对偶形式

对偶形式的基本想法是将w和b表示为实例xi和标记yi的线性组合的形式,通过求解系数进而求得w和b。

感知机对偶学习算法:

​ 输入:训练数据集T,学习率η;

​ 输出:α和b;感知机模型为
f ( x ) = s i g n ( Σ j = 1 N α j y j x j ⋅ x + b ) f(x)= sign(\Sigma_{j=1}^N \alpha_j y_j x_j \cdot x + b) f(x)=sign(Σj=1Nαjyjxjx+b)
其中α为n维向量

​ (1)选取初值α=0和b=0;

​ (2)选取数据点(xi,yi)

​ (3)如果被误分类,即
y i ( Σ j = 1 N α j y j x j ⋅ x + b ) y_i (\Sigma_{j=1}^N \alpha_j y_j x_j \cdot x + b) yi(Σj=1Nαjyjxjx+b)
​ 则更新w和b:
α ← α + η b ← b + η y i \alpha \leftarrow \alpha+\eta\\b \leftarrow b+\eta y_i αα+ηbb+ηyi
yi)

​ (3)如果被误分类,即
y i ( Σ j = 1 N α j y j x j ⋅ x + b ) y_i (\Sigma_{j=1}^N \alpha_j y_j x_j \cdot x + b) yi(Σj=1Nαjyjxjx+b)
​ 则更新w和b:
α ← α + η b ← b + η y i \alpha \leftarrow \alpha+\eta\\b \leftarrow b+\eta y_i αα+ηbb+ηyi
​ (4)跳转到第(2)步,知道没有被误分类的数据点

参考:《统计学习方法》 李航

<p> 限时福利限时福利,<span>15000+程序员的选择!</span> </p> <p> 购课后添加学习助手(微信号:csdn590),按提示消息领取编程大礼包!并获取讲师答疑服务! </p> <p> <br> </p> <p> 套餐中一共包含5门程序员必学的数学课程(共47讲) </p> <p> 课程1:《零基础入门微积分》 </p> <p> 课程2:《数理统计与概率论》 </p> <p> 课程3:《代码学习线性代数》 </p> <p> 课程4:《数据处理的最优化》 </p> <p> 课程5:《马尔可夫随机过程》 </p> <p> <br> </p> <p> 哪些人适合学习这门课程? </p> <p> 1)大学生,平时只学习了数学理论,并未接触如何应用数学解决编程问题; </p> <p> 2)对算法、数据结构掌握程度薄弱的人,数学可以让你更好的理解算法、数据结构原理及应用; </p> <p> 3)看不懂大牛代码设计思想的人,因为所有的程序设计底层逻辑都是数学; </p> <p> 4)想学习新技术,如:人工智能、机器学习、深度学习等,这门课程是你的必修课程; </p> <p> 5)想修炼更好的编程内功,在遇到问题时可以灵活的应用数学思维解决问题。 </p> <p> <br> </p> <p> 在这门「专为程序员设计的数学课」系列课中,我们保证你能收获到这些:<br> <br> <span> </span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">①价值300元编程课程大礼包</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">②应用数学优化代码的实操方法</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">③数学理论在编程实战中的应用</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">④程序员必学的5大数学知识</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">⑤人工智能领域必修数学课</span> </p> <p> <br> 备注:此课程只讲程序员所需要的数学,即使你数学基础薄弱,也能听懂,只需要初中的数学知识就足矣。<br> <br> 如何听课? </p> <p> 1、登录CSDN学院 APP 在我的课程中进行学习; </p> <p> 2、登录CSDN学院官网。 </p> <p> <br> </p> <p> 购课后如何领取免费赠送的编程大礼包和加入答疑群? </p> <p> 购课后,添加助教微信:<span> csdn590</span>,按提示领取编程大礼包,或观看付费视频的第一节内容扫码进群答疑交流! </p> <p> <img src="https://img-bss.csdn.net/201912251155398753.jpg" alt=""> </p>
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页