首页 > 其他分享 >感知机(Perceptron)

感知机(Perceptron)

时间:2023-06-21 20:03:46浏览次数:39  
标签:inputs 阈值 突触 self 感知机 Perceptron 神经元

受大脑启发的人工智能程序的一个早期例子是感知机(Perceptron),它由心理学家弗兰克·罗森布拉特于20世纪50年代末提出。感知机是一种基于神经网络的二分类模型,它可以用于对输入数据进行分类任务。感知机的结构简单,易于实现和训练,是神经网络的基础。

大脑神经系统

大脑神经系统无论从构造和功能来讲,都称得上是一个非常复杂的巨系统。

感知机(Perceptron)_感知机

在神经系统中,神经元通过电化学信号的传递来传递信息。

附:神经元和神经细胞是指同一种细胞类型,但是在不同的上下文中可能会使用不同的术语。在神经科学领域中,通常使用神经元来指代这种细胞类型。

感知机(Perceptron)_感知机_02

神经元由四个不同形态的部分构成:细胞体(躯干, neuron cell body)、树突(dendrites)、轴突(axon)和突触前末梢(axon tips)。 这些高度特化的细胞结构使它们能够传播电信号或动作电位,是神经元之间通信的基础。

感知机(Perceptron)_权重_03


图:两个神经元组成的神经网络

神经元内部的信号传递

神经元内部的信号传递主要通过离子通道完成。

感知机(Perceptron)_权重_04


图:神经元内部电信号传递

神经元膜上有许多种离子通道,包括钠离子通道、钾离子通道、钙离子通道等。这些离子通道的开闭控制了离子的流动,从而决定了神经元膜的电位变化。

当神经元受到兴奋性刺激时,钠离子通道会打开,使得细胞内钠离子浓度增加,膜电位变得更加正向。这种电位变化称为动作电位。动作电位的传递是神经元内部信息传递的基础,也是神经元与神经元之间信息传递的起点。在神经元内部,动作电位通过轴突传递到突触处,然后通过神经递质释放完成信号传递。

钾离子通道是在神经元受到兴奋性刺激后钠离子通道打开一段时间后打开的,它会使得细胞内钾离子浓度增加,导致膜电位变得更加负向。这种电位变化被称为复极期,它是神经元恢复静息状态的过程。

钙离子通道则在神经元内部的信号传递和突触可塑性中发挥着重要的作用。钙离子在神经元内部的浓度变化可以调节神经元的活动,而在突触处的钙离子浓度变化则参与了突触可塑性的调节,包括长时程增强(LTP)和长时程抑制(LTD)等过程。

神经元之间的信号传递

神经元之间的连接被称为突触。在突触处,神经元之间会释放化学物质,称为神经递质,来传递信号。

感知机(Perceptron)_权重_05

这些信号可以是兴奋性的(刺激神经元)或抑制性的(抑制神经元)。

化学递质是兴奋性还是抑制性,并不是由物质决定的,而是取决于它所作用的突触后膜的离子通透性和细胞内的离子浓度(主要是氯离子)

小结

单个神经细胞可被视为一种只有两种状态的机器——激动时为『是』,而未激动时为『否』。神经细胞的状态取决于从其它的神经细胞收到的输入信号量,及突触的强度(抑制或加强)。当信号量总和超过了某个阈值时,细胞体就会激动,产生电脉冲。电脉冲沿着轴突并通过突触传递到其它神经元。

感知机

为了模拟神经细胞行为,与之对应的感知机基础概念被提出,如权量(突触)、偏置(阈值)及激活函数(细胞体)。

对于计算机科学家或者心理学家来说,信息在神经元中的处理过程可以通过一个有多个输入和一个输出的计算机程序(感知机)进行模拟。

感知机(Perceptron)_感知机_06


图:神经细胞与感知机

神经元和感知机之间的类比如上图所示。上图左侧展示了一个神经元及其树突(为细胞带来输入信号的结构)、胞体和轴突(即输出通道);右侧展示了一个简单的感知机结构。与神经元类似,感知机将其接收到的输入信号相加,如果得到的和等于或大于感知机的阈值,则感知机输出1(被激活),否则感知机输出0(未被激活)。

为了模拟神经元的不同连接强度,罗森布拉特建议给感知机的每个输入分配一个权重,在求和时,每个输入在加进总和之前都要先乘以其权重。感知机的阈值是由程序员设置的一个数字,它也可以由感知机通过自身学习得到。

感知机(Perceptron)_权重_07

图大脑中的神经元(A)和一个简单的感知机(B)

简而言之,感知机是一个根据加权输入的总和是否满足阈值来做出是或否(输出1或0)的决策的简易程序。

在生活中,你可能会以下面这样的方式做出一些决定。例如,你会从一些朋友那里了解到他们有多喜欢某一部电影,但你相信其中几个朋友对于电影的品位比其他人更高,因此,你会给他们更高的权重。如果朋友喜爱程度的总量足够大的话(即大于某个无意识的阈值),你就会决定去看这部电影。如果感知机有朋友的话,那么它就会以这种方式来决定是否看一部电影。

学习感知机的权重和阈值

感知机中的所有“知识”都被编码在由数字组成的权重和阈值中

感知机(Perceptron)_权重_08

我们如何为一个给定的任务准确地设定正确的权重和阈值呢?

罗森布拉特再次给出了一个受大脑启发的答案:感知机应该通过自己的学习获得这些数值。

单层感知机的局限性

单层感知机由于其简单的结构,只能解决简单的线性可分问题。

感知机(Perceptron)_感知机_09

1969年,“符号主义”代表人物马文·明斯基(Marvin Minsky)的著作《感知器》提出对XOR线性不可分的问题:单层感知器无法划分XOR原数据,解决这问题需要引入更高维非线性网络(MLP, 至少需要两层),但多层网络并无有效的训练算法。这些论点给神经网络研究以沉重的打击,神经网络的研究走向长达10年的低潮时期。

感知机(Perceptron)_神经网络_10


图:我们无法通过一条直线分割红点和绿点(一边全是红点,一边全是绿点)。

实际出现过的感知机

上世纪 60 年代人类真的用插线的方式做过实体化的神经网络,叫做 Mark I Perceptron(感知机)

感知机(Perceptron)_权重_11

感知机(Perceptron)_感知机_12

感知机(Perceptron)_感知机_13

感知机(Perceptron)_感知机_14

用代码模拟感知机

下面是用Python模拟的单层感知机的代码,可以帮你理解感知机。

import numpy as np

# 单层感知机
class Perceptron:
    def __init__(self, input_size, lr=0.1):
        self.lr = lr
        self.weights = np.zeros(input_size + 1)
    
    # 预测
    def predict(self, inputs):
        total = np.dot(inputs, self.weights[:-1]) + self.weights[-1]
        return 1 if total > 0 else 0
    
    # 训练
    def train(self, inputs, labels):
        predictions = []
        for input in inputs:
            predictions.append(self.predict(input)) 
        errors = labels - predictions
        for i in range(len(inputs)):
            self.weights[:-1] += self.lr * errors[i] * inputs[i]
            self.weights[-1] += self.lr * errors[i]

# 输入值 
inputs = np.array([[1, 2, 3], [4, 5, 6]])  
# 标签
labels = np.array([1, 0])   

# 创建感知机  
perceptron = Perceptron(3)

# 训练
perceptron.train(inputs, labels)

# 预测
predictions = []
for input in inputs:
    predictions.append(perceptron.predict(input)) 
print(predictions)
# 输出 [1, 1]

上面代码预测结果跟我们的原始数据不一致,说明我们的训练次数、训练的数据不足。

总结

感知机是一种基于神经网络的二分类模型,它可以用于对输入数据进行分类任务。

感知机的结构简单,易于实现和训练,是神经网络的基础。

标签:inputs,阈值,突触,self,感知机,Perceptron,神经元
From: https://blog.51cto.com/u_15588078/6531132

相关文章

  • TensorFlow05.3 神经网络反向传播算法-多层感知机梯度(理论知识)
    首先这个是链式法则:如果扩展到多层感知机的话:我们在学这个的时候首先知道一个东西:所以这个整体的步骤就是:1.2.3.......
  • TensorFlow05.2 神经网络反向传播算法-单输出感知机和多输出感知机及其梯度
    1单输出感知机在这里我们可以看到,\(W_2,1^1\)其中他的下标第一个2,表示的连着上一层的x2,下标第一个1代表着连着下一侧的x1。然后上标1代表着第一层。E是做了一个loss处理。\(X_i^1\)这个下标的i代表当前层数节点的编号,然后这个1代表着第1层。\(W_i,j^k\),i表示上一层的节点编......
  • [ML从入门到入门] 初识人工神经网络、感知机算法以及反向传播算法
    前言人工神经网络(Artificialneuralnetworks,ANNs)被广泛认为诞生于20世纪四五十年代,其核心理论可以追溯到19世纪初 Adrien-MarieLegendre发明的最小二乘法,而在今天,经过了半个世纪互联网和计算机技术的迅猛发展,这片耕耘良久的沃土重新掀起了机器学习的研究热潮。本文主要......
  • 利用Theano理解深度学习——Multilayer Perceptron
    一、多层感知机MLP1、MLP概述对于含有单个隐含层的多层感知机(single-hidden-layerMulti-LayerPerceptron,MLP),可以将其看成是一个特殊的Logistic回归分类器,这个特殊的Logistic回归分类器首先通过一个非线性变换(non-lineartransformation)对样本的输入进行非线性变换,然后将变......
  • 机器学习入门-用Java实现简单感知机
    一、通俗理解机器学习1、机器学习是人工智能的一种,如图所示,它是人工智能的一个子方向。2、机器学习有点像人类的学习过程。1.人类学习通过经验(事件),归纳出规律。2.机器学习通过数据,训练出模型。3、机器学习不是基于编程形成的直接结果,不是代码直接写出一个模型y=-0.......
  • Pytorch高级api搭建多层感知机实战
    Pytorch高级api搭建多层感知机实战代码importtorchimporttorch.nn.functionalasFimporttorch.optimasoptimfromtorchvisionimportdatasets,transformsbatch_size=200learning_rate=0.01epochs=10train_loader=torch.utils.data.DataLoader(da......
  • 统计学习方法:感知机模型例题
    统计学习方法:感知机模型例题1.感知机学习算法的原始形式2.例题例2.1如图2.2所示的训练数据集,其正实例点是x1=(3,3)T,x2=(4,3)T,负实例点是x3=(1,1)T,试用感知机学习算法的原始形式求感知机模型f(x)=sign(w·x+b)。这里,w=(w(1),w(2))T,x=(x(1),x(2))T。3.线性可分数据集感知机学习......
  • 单层感知机的梯度推导
    单层感知机的梯度推导w10表示前一层的第1节点和这一层的第0节点相连。......
  • 多层感知机的梯度推导
    多层感知机的梯度推导pytorch实现注:torch.randn(m,n)生成m行n列的随机数......
  • week13_MLP_多层感知机
    Multi-LayerPerceptron多层感知机生物神经网络圣地亚哥·拉蒙-卡哈尔(西班牙语:SantiagoRamónyCajal,1852年5月1日-1934年10月17日),西班牙病理学家、组织学家,神经学家,1906年诺贝尔生理学医学奖得主。人类对大脑的研究由来已久,在十九世纪末到二十世纪初,在大脑神经系统的研究方......