美文网首页
机器学习的最入门算法--感知机

机器学习的最入门算法--感知机

作者: 李卓然get | 来源:发表于2020-01-04 09:48 被阅读0次

感知机(perceptron) 算法由美国学者Frank Rosenblatt在1957年提出。感知机是神经网络的起源算法,因此,要想学习机器学习,了解感知机的重要思想是非常必要的。

1.感知机是什么

感知机就是接收多个输入信号,给出一个输出信号的模型。
如图,是一个有两个输入,一个输出的最基本的感知机。图中圆圈为神经元,当两个输入乘以对应的权重并加和进入该神经元后,如果值大于设定的阈值 \theta ,则该神经云被激活,输出1,否则输出0,阈值用 \theta 表示。

<img src="https://raw.githubusercontent.com/lizhuoranget/pictures/master/7901577959743_.jpg" width="130" height="130" />

<center>图1 有两个输入的感知机</center>数学式表示如下:
公式1

y=\left\{ \begin{aligned} 0 \quad(\omega_1x_1 + \omega_2x_2 \leq \theta) \\ 1 \quad(\omega_1x_1 + \omega_2x_2 > \theta) \\ \end{aligned} \right.

2.简单逻辑电路

感知机可以表示基本电路如与门电路表如下:

<center>表1 与门真值表</center>

x1 x2 y
0 0 0
1 0 0
0 1 0
1 1 1

如何用感知机表示呢?很简单,只需要人工设定好一定的权值,即可得到,如权值 \omega 设为:(0.5,0.5,0.7),(1.0,1.0,1.0)等都可满足。

同样的,或门与非门也可以通过设定不同的参数,使用感知机进行表示。
这里参数是通过人工设定的,而机器学习的目的就是通过训练数据让计算机找到正确的参数,该过程就叫做学习

3.感知机的实现

为了更加数学化的表示以上实现过程,作如下改变:
公式2

y=\left\{ \begin{aligned} 0 \quad(b + \omega_1x_1 + \omega_2x_2 \leq 0) \\ 1 \quad(b + \omega_1x_1 + \omega_2x_2 > 0) \\ \end{aligned} \right.

此处,b为偏置, \omega​ 为权重。权重表示了控制输入信号的重要性,偏置则是激活神经元的容易程度。
实现形式如下:

def AND(x1, x2):
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    b = -0.7
    tmp = np.sum(w*x) + b
    if tmp <= 0:
        return 0
    else:
        return 1

4.感知机的局限

如下,异或逻辑电路的真值表如下

<center>表2 异或门真值表</center>

x1 x2 y
0 0 0
1 0 1
0 1 1
1 1 0

发现无论如何对感知机调参,感知机都无法实现异或逻辑电路的表示。
<img src="https://raw.githubusercontent.com/lizhuoranget/pictures/master/7921577959745_.jpg" width="130" height="130" />

<center>图2 可否通过一条直线分开圆形和三角</center>

<img src="https://raw.githubusercontent.com/lizhuoranget/pictures/master/7911577959744_.jpg" width="130" height="130"/>

<center>图3 使用曲线可以分开圆形和三角</center>

所以,感知机只能表示由一条直线分割的空间,即线性空间,不能表示非线性空间。

5.多层感知机

不用悲观的是,如下图所示,我们通过之前实现的多个感知机,就可以实现异或逻辑的表示。如图,多层感知机就是一个多层的神经网络结构。

<img src="https://raw.githubusercontent.com/lizhuoranget/pictures/master/7941577959747_.jpg" width="150" height="60" />

<center>图4 通过组合与、与非、或门实现异或门</center>

<img src="https://raw.githubusercontent.com/lizhuoranget/pictures/master/7951577959748_.jpg" width="100" height="60" />

<center>图5 用感知机表示异或门</center>

<center>表3 异或门真值表</center>

x1 x2 s1 s2 y
0 0 1 0 0
1 0 1 1 1
0 1 1 1 1
1 1 0 0 0

理所当然,异或门的实现也相当简单,按照组合逻辑调用之前的门函数即可:

def XOR(x1, x2):
    s1 = NAND(x1, x2)
    s2 = OR(x1, x2)
    y = AND(s1, s2)
    return y

理论证明,通过组合多层感知机可以表示任意电路,甚至可以表示计算机。其实,理论上2层就够表示计算机,即现实现与门和或门,然后实现全加器和半加器,接着实现算数逻辑单元ALU,最后实现CPU。

相关文章

  • 机器学习的最入门算法--感知机

    感知机(perceptron) 算法由美国学者Frank Rosenblatt在1957年提出。感知机是神经网络的...

  • 感知机算法理解与C++实现

    开始接触机器学习,今天刚刚学习了感知机并用C++实现了算法。现在整理一下,与大家分享,希望能帮到刚刚入门机器学习的...

  • 感知机

    感知机 感知机模型 感知机学习策略 感知机学习算法 算法的收敛性 感知机学习算法的对偶形式 感知机实现二分类模型 ...

  • 机器学习算法—感知机

    author : Peterdate: 2019-08-18 感知机Perceptron 导读 感知机是二分类的...

  • 感知机

    感知机 感知机算法是很多算法的鼻祖,比如支持向量机算法,神经网络与深度学习。在学习感知机的构造时可以学习到深度学习...

  • 统计学习方法之感知机

    1.感知机模型 在机器学习中,感知机(perceptron)是二分类的线性分类模型,属于监督学习算法。输入为实例的...

  • 1、深度学习入门-感知机

    感知机是什么? 感知机 (perceptron):感知机是神经网络(深度学习)的起源算法,学习感知机的构造是通向神...

  • 机器学习1|感知机算法

    感知机是二分类模型,输入为实例的特征向量,输出为实例的类别,总结如下: 总结得比较简洁,主要是为了让抓住重点,思路...

  • 统计学习方法思路疏导—感知机

    机器学习各类算法注意点 前言 这篇文章主要记录笔者在学习感知机算法过程中,各个算法需要注意的地方,不过过多的提及算...

  • python machine learning学习笔记

    第二章 训练机器学习分类算法 感知机perceptron 自适应线性神经元adaptive linear neur...

网友评论

      本文标题:机器学习的最入门算法--感知机

      本文链接:https://www.haomeiwen.com/subject/fojxactx.html