NLP深入学习(八):感知机学习

发布时间:2024年01月24日


0. 引言

前情提要:
《NLP深入学习(一):jieba 工具包介绍》
《NLP深入学习(二):nltk 工具包介绍》
《NLP深入学习(三):TF-IDF 详解以及文本分类/聚类用法》
《NLP深入学习(四):贝叶斯算法详解及分类/拼写检查用法》
《NLP深入学习(五):HMM 详解及字母识别/天气预测用法》
《NLP深入学习(六):n-gram 语言模型》
《NLP深入学习(七):词向量》

1. 感知机

感知机(Perceptron)是一种基于线性模型的监督学习算法,主要用于解决二分类问题。它是神经网络和许多其他机器学习算法的基础模型之一,由弗兰克·罗森布拉特(Frank Rosenblatt)于1957年提出。

1.1 基本概念与结构

  • 感知机模型试图找到一个超平面来分割特征空间中的数据点,使得不同类别的样本分别位于超平面的两侧。
  • 超平面可以用线性函数表示:
    f ( x ) = w T x + b f(x) = w^T x + b f(x)=wTx+b
    其中 x x x 是输入特征向量, w w w 是权值向量(weight vector), b b b 是偏置项(bias), s i g n ( f ( x ) ) sign(f(x)) sign(f(x)) 表示对输入 x x x 的分类结果,通常取+1或-1。
    在这里插入图片描述

1.2 学习策略

感知机的学习策略:确定参数 w w w b b b,定义一个损失函数并将其最小化。损失函数一般是选择误分类点到超平面的距离和:
∣ w ? x + b ∣ ∣ ∣ w ∣ ∣ \frac{|w·x+b|}{||w||} ∣∣w∣∣w?x+b?
∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣ w w w 的第二范数。因为 y y y取值是+1和-1,对于误分类的点有:
? y i ( w ? x + b ) > 0 -y_i(w\cdot x + b)>0 ?yi?(w?x+b)>0
因此,误分类点 x i x_i xi? 到超平面的距离是:
? 1 ∣ ∣ w ∣ ∣ y i ( w ? x + b ) -\frac{1}{||w||}y_i(w·x+b) ?∣∣w∣∣1?yi?(w?x+b)
那么所有的误分类点到超平面的总和距离为:
? 1 ∣ ∣ w ∣ ∣ ∑ x i ∈ M y i ( w ? x i + b ) -\frac{1}{||w||}\sum\limits_{x_i\in M}y_i(w·x_i+b) ?∣∣w∣∣1?xi?M?yi?(w?xi?+b)
不必考虑 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} ∣∣w∣∣1?,则得到感知机的损失函数:
L ( w , b ) = ? ∑ x i ∈ M y i ( w ? x i + b ) L(w,b) = -\sum\limits_{x_i\in M}y_i(w·x_i+b) L(w,b)=?xi?M?yi?(w?xi?+b)
其中M为误分类的点的集合。

2. 感知机学习算法

2.1 原始形式

已经确定了感知机的损失函数,那么其原始形式只需要最小化这个损失函数:
min ? w , b L ( w , b ) = ? ∑ x i ∈ M y i ( w ? x i + b ) \min \limits_{w,b}L(w,b) = -\sum\limits_{x_i\in M}y_i(w·x_i+b) w,bmin?L(w,b)=?xi?M?yi?(w?xi?+b)

随机梯度下降法初始时任选 w 0 w_0 w0? b 0 b_0 b0?作为初始超平面,如果有误分类点,随机选取一个误分类点,进行梯度下降,计算损失函数的梯度:
▽ w L ( w , b ) = ? ∑ x i ∈ M y i x i ▽ w L ( w , b ) = ? ∑ x i ∈ M y i \begin{aligned} \triangledown _wL(w,b)&=-\sum_{x_i\in M}y_ix_i \\ \triangledown_wL(w,b)&=-\sum_{x_i\in M}y_i \end{aligned} w?L(w,b)w?L(w,b)?=?xi?M?yi?xi?=?xi?M?yi??
梯度下降法使参数向反方向变化,使用随机选出的误分类点的数据,根据提前设置好的学习率对进行更新:
w ← w + η y i x i b ← b + η y i \begin{aligned} w& \leftarrow w+\eta y_ix_i \\ b& \leftarrow b+\eta y_i \end{aligned} wb?w+ηyi?xi?b+ηyi??
使损失函数不断减小,直到为0时就得到了可正确分类数据集的超平面。

2.2 对偶形式

感知机(Perceptron)的对偶形式是针对原始形式进行优化的一种方法,其基本思想是将原问题转换为对偶形式,从而改变算法求解的方式。在解决线性可分数据集的二分类问题时,原始的感知机算法通过迭代更新权重向量 w w w 来找到一个能够正确划分正负样本的超平面。

对偶形式则引入了拉格朗日乘子法,并且使用了一种基于误分类点的表示方式。在这个形式下,不再直接更新权重向量 w w w,而是维护一组系数 α \alpha α,每个系数对应训练集中的一条误分类样例。对偶形式的核心更新规则是在每次迭代中调整这些系数 α \alpha α,而不是权值向量和偏置项。

可将每次 w , b w,b w,b 增量表示为 α i y i x i , α i y i \alpha _iy_ix_i,\alpha _iy_i αi?yi?xi?,αi?yi?,其中 α = n i η \alpha = n_i\eta α=ni?η,假设 w 0 = b 0 = 0 w_0=b_0=0 w0?=b0?=0(无关要紧),更新过程表示为:
w = ∑ i α i y i x i b = ∑ i α i y i \begin{aligned} w&=\sum_i\alpha _iy_ix_i\\ b&=\sum_i \alpha _iy_i \end{aligned} wb?=i?αi?yi?xi?=i?αi?yi??

感知机模型可由 α , b \alpha ,b α,b表出。
f ( x ) = s i g n ( ∑ j α j y j ? x + b ) f(x)=sign(\sum_j\alpha _jy_j\cdot x + b) f(x)=sign(j?αj?yj??x+b)

在判断是否是误分类点时用
y i ( ∑ j α j y j x j ? x i + b ) ? 0 y_i(\sum _j\alpha _jy_jx_j\cdot x_i + b)\leqslant 0 yi?(j?αj?yj?xj??xi?+b)?0
更新时
α i ← α i + η b ← b + η y i \begin{aligned} \alpha _i &\leftarrow \alpha _i +\eta\\ b &\leftarrow b + \eta y_i \end{aligned} αi?b?αi?+ηb+ηyi??

对偶形式的优势在于它可能比原始形式收敛更快,尤其是在大规模稀疏数据集上,因为它的计算主要集中在误分类样本上。另外,对偶形式对于支持向量机(SVM)的学习算法也有重要影响,SVM 的对偶形式也是通过类似的拉格朗日对偶变换得到的,并且在实际应用中有更优的表现。

3. 参考

《NLP深入学习(一):jieba 工具包介绍》
《NLP深入学习(二):nltk 工具包介绍》
《NLP深入学习(三):TF-IDF 详解以及文本分类/聚类用法》
《NLP深入学习(四):贝叶斯算法详解及分类/拼写检查用法》
《NLP深入学习(五):HMM 详解及字母识别/天气预测用法》
《NLP深入学习(六):n-gram 语言模型》
《NLP深入学习(七):词向量》

文章来源:https://blog.csdn.net/qq_36803941/article/details/135815648
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。