ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

机器学习——Perceptron(感知机)

2021-12-19 14:02:02  阅读:286  来源: 互联网

标签:mathbb 机器 matrix cdot self 感知机 Perceptron 神经元


Introduce

感知机模型(Perceptron)是一个最简单的有监督的二分类线性模型。他可以从两个方面进行介绍

方面一 问题分析

问题(一维):儿童免票乘车问题(孩子身高低于1.2m可以免票上车)

这转换成数学表达式就是 $x:$身高,$y:\{-1:$免票 ,$1:$购票$\}$

$$ y=\left\{\begin{matrix}+1,x\ge1.2m \\ -1,x\lt1.2m\end{matrix}\right. $$

如果把$y$用函数$f(x;b)$表达出来就如下所示

$$ y=f(x;b)=\left\{\begin{matrix}+1,z=x+b\ge0 \\ -1,z=x+b \lt0 \end{matrix}\right. $$

 

用机器学习的话来说变量$x$就是一个特征,$y$就是一个标记,$b$就是一个偏置

问题(二维):西瓜分类(依靠西瓜的颜色和敲击的响声分类)

这里的$x$就从一个一维特征编程了二维的特称向量$\{x_1:$颜色 ,$x_2:$响声$\}$ $y$仍然是一个标记 $y:\{-1:$坏瓜 ,$1:$好瓜$\}$ 数据如图所示:

 

用一般的数学方法,我们希望将两个变量$x_1,x_2$映射到一个维度上去 就会出现如下三种经典的情况

映射到水平方向

 

映射到竖直方向

 

映射到任意方向

二维向量映射到一维空间需要有映射的方向。此时就需要一定的方向向量$\mathbb{w}=(w_1 \ w_2)^T$ 此时,如果把$y$用函数$f(\mathbb{x};\mathbb{w},b)$来表示

$$ y=f(\mathbb{x};\mathbb{w},b)=\left\{\begin{matrix}+1,\mathbb{w}^T\mathbb{x}+b\ge0 \\ -1,\mathbb{w}^T\mathbb{x}+b\lt0 \end{matrix}\right. $$

综上所述,可以类推到n维。只要将$\mathbb{x},\mathbb{w}升维就可以了$

方面二 模型发展

1943年,McCulloch和Pits结合神经元模型Neuron提出来经典的抽象的M-P神经元模型

神经元的生物学结构

M-P神经元模型 

而感知机模型是从神经元模型发展过来的。感知机是由两层神经元组成的一个简单模型。只有输出层是M-P 神经元,即只有输出层神经元进行激活函数处理,也称为功能神经元( functional neuron);输入层只是接受外界信号(样本属性)并传递给输出层(输入层的神经元个数等于样本的属性数目),而没有激活函数。示意图如下:

 

Definition

假设输入空间(特征空间)是$\mathcal{X} \subset \mathbb{R}^n$,输出空间是$\mathcal{Y}=\{-1,+1\}$。输入$x\in \mathcal{X}$表示实例的特征向量,对应于输入空间(特征空间)的点;输出$y\in \mathcal{Y}$表示类别。由输入空间到输出空间的如下函数: $$ f(x)=sign(w \cdot x+b) $$ 成为感知机。其中,$w,b$成为感知机模型的参数,$w \in \mathbb{R}^n$叫做权值(weight)或权值向量(weight vector),$b \in \mathbb{R}$叫做偏置(bias),$w \cdot x$表示两者的内积。$sign$是符号函数,即 $$ sign(a)=\left\{\begin{matrix}+1,a\ge0\\-1,a\lt0\end{matrix}\right. $$ 感知机是一种线性分类器,属于判别模型。感知机模型的假设空间是定义在特征空间中的所有线性分类模型(linear classification model)或线性分类器(linear classifier),即函数模型$\{f\,|\,f(x)=w \cdot x +b \}$

Loss Function

感知机学习的策略就是最小化损失函数。对于感知机来说损失函数有两种方式。

1. 统计误分类点: $$ l(w)=\sum_{i=1}^N \ \mathbb{I}(y_i \cdot (w^Tx +b ) < 0) $$  但是指示函数不连续,在计算过程中不太友好

2. 统计误分类点到分来超平面的距离: $$ \begin{align}l(w) &=|w^Tx +b |\\ &=\sum_{i=1}^N - \,y_i \cdot (w^Tx +b )\end{align} $$

Algorithm

为了找到更好的$w,b$。使用随机梯度下降SGD(Stochastic Gradient Descend), 但是该方法容易受特征缩放、学习率因素影响陷入局部最小值。 $$ w_{n+1} \leftarrow w_n +\eta \frac{\partial l}{\partial w}\\ b_{n+1} \leftarrow b_n +\eta \frac{\partial l}{\partial b} $$

对该算法的超参数:学习率$\eta$,误差上限$\varepsilon$,学习次数$epoch$

收敛性

设训练数据集$T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\}$是线性可分的,其中$x_i\in \mathcal{X}=\mathbb{R}^n,\ y_i\in\mathcal{Y}=\{+1,-1\},\ i=1,2,\cdots,N$则:

  • 存在满足条件$||\hat{w}_{opt}||=1$的超平面$\hat{w}_{opt} \cdot \hat{x}=w_{opt}\cdot x +b_{opt}=0$将训练数据集完全正确分开;且存在$\gamma>0$,对所有$i=1,2,\cdots,N$: $$ y_i (\hat{w}_{opt} \cdot \hat{x})=y_i(w_{opt}\cdot x +b_{opt})\geq \gamma $$
  • 令$R=max_{1 \leq i \leq N} ||\hat{x}_i||$,则感知机算法在训练数据集上的误分类次数$k$满足不等式: $$ k \leq (\frac{R}{\gamma})^2 $$

Disadvantage

1. 存在多解
2. 依赖初值,也依赖选择顺序
3. 当数据集线性不可分就会产生迭代震荡。例如XOR异或问题

针对感知机算法的缺点,提出SVM解决多解问题,Pocket Algorithm使感知机容忍一些错误。

Python代码实现

import numpy as np

data1 = [[1,2],[3,3],[2,1],[5,2]]
lable1 = [1,1,-1,-1]

data2 = [[3,3],[4,3],[1,1]]
lable2 = [1,1,-1]


class Model:
    def __init__(self,data):
        self.w = np.zeros(np.shape(data)[1])  # 权重参数
        self.b = 0  # 偏置
        self.l_rate = 1  # 学习率

    def sign(self, x, w, b):
        y = np.dot(x, w) + b
        return y

    # 随机梯度下降法
    def fit(self, data, lable):
        is_wrong = False
        while not is_wrong:
            wrong_count = 0
            for d in range(len(data)):
                X = data[d]
                y = lable[d]
                judge = y * self.sign(X, self.w, self.b)
                if judge <= 0:
                    self.w = self.w + self.l_rate * np.dot(y, X)
                    self.b = self.b + self.l_rate * y
                    if judge == 0:
                        print('未分类=', d + 1, ' ', data[d])
                    else:
                        print('误分类=', d + 1, ' ', data[d])
                    print('w = ',self.w,'b= ',self.b)
                    wrong_count += 1
            if wrong_count == 0:
                is_wrong = True

perception1 = Model(data1)
perception1.fit(data1,lable1)

参考

李航 统计学习方法

周志华 机器学习(西瓜书)

shuhuai008 机器学习白板推导

标签:mathbb,机器,matrix,cdot,self,感知机,Perceptron,神经元
来源: https://www.cnblogs.com/young978/p/15706047.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有