机器学习之感知器

原创 2017年05月04日 14:37:48

感知器

在讲神经网络前先说说感知器,感知器是一种二分类的线性分类模型,输出值取-1或1。感知器是最基础的神经网络,理解好感知器对后面的各种神经网络模型是很有帮助的。如下图,
这里写图片描述

它可以有多个输入(x1,x2,...xn),每个输入对应有一个权重(w1,w2...wn),除此之外还有一个偏置项w0

则输出为

o(x)=1,1,ifi=0nxiwi>0;otherwise;

其中将x0看成是1。而
i=0nxiwi=x0w0+x1w1+...+xnwn

则可以看成是x与w的点积。

感知器的作用

它的输入就是一个线性函数,所以可用于线性分类。同时感知器是单层神经网络,是神经网络的基础。

损失函数

损失函数可以用错误分类的点到超平面的总距离来表示,不直接使用统计错误分类的点总数作为损失函数是因为这样的损失函数不是w的连续可导函数。其中距离可用欧氏距离来表示,可用w的L2范数w来表示,于是根据距离公式有,

1w|wx0+b|

对于错误分类的点有,yi(wxi+b)>0,其中y为1或-1,所以错误分类点到超平面的距离为

1wyi(wx0+b)

得到总距离为
1wxiϵMyi|wx0+b|

忽略范数部分,于是得到损失函数
L(w,b)=xiϵMyi(wx0+b)

所以要做的是最小化损失函数L(w,b),使用梯度下降法,梯度分别由w和b的偏导决定,过程中随机用某个错误分类点来更新w和b,更新公式为w+ηyixib+ηyi

实现代码

import numpy as np

eta = 0.1
ite = 20

def train(x, y):
    w_ = np.zeros(1 + x.shape[1])
    for _ in range(ite):
        for xi, yi in zip(x, y):
            update = eta * (yi - predict(xi, w_))
            w_[1:] += update * xi
            w_[0] += update
    return w_

def predict(x, w):
    return np.where(np.dot(x, w[1:]) + w[0] >= 0, 1, -1)

x_train = np.array([[1, 2], [2, 1], [2, 3], [3, 5], [1, 3], [4, 2], [7, 3], [4, 5], [11, 3], [8, 7]])
y_train = np.array([1, 1, -1, -1, 1, -1, -1, 1, -1, 1])

w = train(x_train, y_train)
print("w = " , w)
x1 = [4, 3]
print(predict(x1, w))

========广告时间========

鄙人的新书《Tomcat内核设计剖析》已经在京东销售了,有需要的朋友可以到 https://item.jd.com/12185360.html 进行预定。感谢各位朋友。

为什么写《Tomcat内核设计剖析》

=========================
欢迎关注:

这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

林轩田机器学习基石观后笔记——感知器学习(PLA)

最近想对机器学习有一个系统的学习,所以观看了台湾大学林轩田教授的机器学习基石课程,该课程讲解的比较容易理解,对于不想学习大量的数学公式的初学者比较合适。 该课程第二讲是简单的感知器学习算法(PLA,...

神经网络与机器学习笔记——Rosenblatt感知器

Rosenblatt感知器 感知器是用于线性可分模式(模式分别位于超平面两边)分类的最简单的神经网络模型,基本上由一个具有可调突触权值和偏置的神经元组成。 Rosenblatt证明了当用来训练感知器的...

机器学习练习记录(1):伪逆法、势函数、基于二次准则的H-K函数、感知器法

伪逆法 RBF(Radial Basis Function)径向基函数神经网络的学习算法 RBF网络需要学习的参数有3个:基函数的中心ci,方差σi以及隐含层与输出层间的权值Wi,根据径向基函...

机器学习(斯坦福课程3-2)logical回归与感知器算法

1. 线性回归 假设 特征 和 结果 都满足线性。即不大于一次方。这个是针对 收集的数据而言。 收集的数据中,每一个分量,就可以看做一个特征数据。每个特征至少对应一个未知的参数。这样就形成了一...

机器学习小白笔记-1-感知器(Perceptron)

相关概念· 感知器1957年由Rosenblat提出,是神经网络与支持向量机的基础。它对应于输入空间中将实例划分为正负两类的分离超平面,属于判别模型,旨在求出将训练数据进行线性划分的分离...

感知器学习模型

  • 2017-02-21 18:19
  • 625B
  • 下载

感知器学习笔记

感知器学习笔记感知器(Perceptron) 是一种用于线性可分数据集的二类分类器算法。这种算法的局限性很大: 只能将数据分为 2 类 数据必须是线性可分的 虽然有这些局限,但是感知器是 ANN 和 ...

感知器学习

  • 2014-04-24 22:34
  • 3.17MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)