在学习一个模型的时候应该问:
符号说明:
输入空间: X ⊆ R n X \subseteq R^{n} X⊆Rn
输入变量: x ∈ X x \in X x∈X
输出空间: Y = { + 1 , − 1 } Y=\{+1,-1\} Y={ +1,−1}
输出变量: y ∈ { + 1 , − 1 } y \in\{+1,-1\} y∈{ +1,−1}
假设空间:
f ( x ) = sign ( w ⋅ x + b ) f(x)=\operatorname{sign}(w \cdot x+b) f(x)=sign(w⋅x+b)
其中sign是符号函数
损失函数:
误分类点到超平面的距离:
L ( w , b ) = − ∑ x i ∈ M y i ( w ⋅ x i + b ) L(w, b)=-\sum_{x_{i} \in M} y_{i}\left(w \cdot x_{i}+b\right) L(w,b)=−xi∈M∑yi(w⋅xi+b)
其中M是误分类点的集合。
输入:
训练数据集 T = [ ( x 1 , y 1 ) , … , ( x N , y N ) ) T=\left[\left(x_{1}, y_{1}\right), \dots,\left(x_{N}, y_{N}\right)\right) T=[(x1,y1),…,(xN,yN))
学习率 η \eta η
感知机模型的对偶形式
f ( χ ) = sign ( ∑ j = 1 N α j y j x j ⋅ x + b ) α = ( α 1 , ⋯ α N ) T \begin{array}{c} f(\chi)=\operatorname{sign}\left(\sum_{j=1}^{N} \alpha_{j} y_{j} x_{j} \cdot x+b\right) \\ \alpha=\left(\alpha_{1}, \cdots \alpha_{N}\right)^{T} \end{array} f(χ)=sign(∑j=1Nαjyjxj⋅x+b)α=(α1,⋯αN)T
算法:
输入:
训练数据集 T = [ ( x 1 , y 1 ) , … , ( x N , y N ) ) T=\left[\left(x_{1}, y_{1}\right), \dots,\left(x_{N}, y_{N}\right)\right) T=[(x1,y1),…,(xN,yN))
学习率 η \eta η
1.初值 α : = 0 , b : = 0 \alpha:=0, b:=0 α:=0,b:=0
2.在训练集中选取数据 ( x i , y i ) \left(x_{i}, y_{i}\right) (xi,yi)
3.如果 y i ( ∑ j = 1 N α j y j x j ⋅ x + b ) ≤ 0 y_{i}\left(\sum_{j=1}^{N} \alpha_{j} y_{j} x_{j} \cdot x+b\right) \leq 0 yi(∑j=1Nαjyjxj⋅x+b)≤0
α i : = α i + η \alpha_{i}:=\alpha_{i}+\eta αi:=αi+η
b : = b + η y i b:=b+\eta y_{i} b:=b+ηyi
4. 转至2,直到训练集中没有误分类的点
输出w,b
对于随机梯度下降来说,对偶形式更新参数要少。
2.1 Minsky与Papert指出:感知机因为是线性模型,所以不能表示复杂的函数,如异或(XOR)。验证感知机为什么不能表示异或。
首先看一下异或:
简单理解,如果两个数a和b进行异或操作。如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。