神经网络系列---感知机(Neuron)


文章目录


感知机(Neuron)

感知机(Neuron)是一种简单而有效的二分类算法,用于将输入数据划分为两个类别。它是机器学习中最早的分类算法之一,由罗森布拉特(Rosenblatt)在1957年提出。

感知机(Neuron)的基本思想是通过一个决策函数将输入数据映射到特定的输出类别。它通过对输入向量进行加权求和,并将结果传递给一个激活函数来产生输出。感知机(Neuron)的学习过程主要涉及确定合适的权重,以便对不同的输入样本进行正确的分类。

感知机(Neuron)的决策函数可以表示为:

cpp 复制代码
    f(x) = sign(w * x + b)

    sign(x) = {
    +1, if x >= 0,
    -1, if x < 0
    }

它将大于等于0的值映射为+1,小于0的值映射为-1。在感知机(Neuron)中,"sign"函数被用于判断输入的加权和是否超过了某个阈值,从而确定输入被分类为哪个类别。

其中,x是输入向量,w是权重向量,b是偏置项,sign是符号函数,将输入的实数映射为+1或-1,表示两个不同的类别。

感知机(Neuron)的学习算法主要包括以下步骤:

  1. 初始化权重向量和偏置项。
  2. 针对训练数据中的每个样本,计算决策函数的输出。
  3. 根据实际输出和期望输出之间的差异,更新权重向量和偏置项。
  4. 重复步骤2和步骤3,直到所有训练样本都被正确分类或达到停止条件。

需要注意的是,感知机(Neuron)只适用于线性可分的问题,即可以通过一个超平面将两个类别的数据完全分开。对于线性不可分的问题,感知机(Neuron)算法无法收敛。

虽然感知机(Neuron)算法在解决简单分类问题上很有用,但它对于复杂问题的处理能力有限。后续发展出了更多强大的分类算法,如支持向量机(Support Vector Machine)和神经网络(Neural Networks)。

cpp 复制代码
y=ax+c  ==> ax +(-y)+c =0  //表示一条线 一维形式

z=ax+by+d  ==> ax +by+(-z)+d =0  //表示一个平面 二维形式
类似于神经网络中的 权重和偏置
cpp 复制代码
ax +by+c =0  //表示所有数据都在这一条线上
cpp 复制代码
ax +by+c > 0  //表示所有数据都在这一条线的上方
cpp 复制代码
ax +by+c < 0  //表示所有数据都在这一条线的上下方

多维度表示:相乘在相加

用矩阵表示

下面用感知机(Neuron) 表达 与(AND)、 或(OR) 、非(NOT) 、异或(XOR) 、 运算。

感知机可以实现逻辑运算中的AND、OR、NOT和异或(XOR)运算。

这里我将为你详细说明如何使用感知机实现这些逻辑运算。

  1. AND运算:
    AND运算是一个二元运算,当且仅当两个输入都为1时,输出为1,否则输出为0。使用感知机可以实现AND运算,具体步骤如下:
  • 设置权重向量为 w = [1, 1],偏置项为 b = -1.5。
  • 对于输入向量 x = [x1, x2],计算加权和:z = w * x + b。
  • 使用符号函数(sign)作为激活函数,即 f(x) = sign(z)。也就是f(x) = sign(x1 + x2 - 1.5),其中sign函数将大于等于0的值映射为1,小于0的值映射为-1。
  • 当且仅当 f(x) = 1 时,表示 AND 运算结果为真,否则为假。
  1. OR运算:
    OR运算也是一个二元运算,当两个输入中至少一个为1时,输出为1,否则输出为0。使用感知机可以实现OR运算,具体步骤如下:
  • 设置权重向量为 w = [1, 1],偏置项为 b = -0.5。
  • 对于输入向量 x = [x1, x2],计算加权和:z = w * x + b。
  • 使用符号函数(sign)作为激活函数,即 f(x) = sign(z)。也就是f(x) = sign(x1 + x2 - 0.5),其中sign函数将大于等于0的值映射为1,小于0的值映射为-1。
  • 当且仅当 f(x) = 1 时,表示 OR 运算结果为真,否则为假。
  1. NOT运算:
    NOT运算是一个一元运算,当输入为1时,输出为0,当输入为0时,输出为1。使用感知机可以实现NOT运算,具体步骤如下:
  • 设置权重向量为 w = [-1],偏置项为 b = 0.5。
  • 对于输入 x,计算加权和:z = w * x + b。
  • 使用符号函数(sign)作为激活函数,即 f(x) = sign(z)。也就是f(x) = sign( -x + 0.5),其中sign函数将大于等于0的值映射为1,小于0的值映射为-1。
  • 当且仅当 f(x) = 1 时,表示 NOT 运算结果为真,否则为假。

异或运算 一个感知机无法实现

  1. 描述上图 异或(XOR)运算:
    异或运算是一个二元运算,当两个输入相同时,输出为0;当两个输入不同时,输出为1。使用单个感知机无法直接实现异或运算,因为它不是线性可分的。但可以通过组合多个感知机实现。具体步骤如下:

一种常用的方法是使用两个感知机构建一个多层感知机(Multi-Layer Perceptron,MLP)。MLP由输入层、隐藏层和输出层组成,每个层都由多个感知机(神经元)组成。以下是使用MLP实现异或运算的具体步骤:

  1. 构建输入层和隐藏层:
  • 输入层有两个神经元,表示输入的两个二进制位(x1和x2)
  • 隐藏层有两个神经元,用于引入非线性映射,帮助解决异或运算的非线性可分性。
  1. 设置隐藏层的权重和偏置项:
  • 第一个隐藏层神经元,先对x1进行非(NOT)运算,也就是01,非00

  • 然后再进行与(AND)运算。(h1)的权重向量为 w1 = [1, 1],偏置项为 b1 = -1.5。即:f(x) = sign(x1 + x2 - 1.5)。

  • 第二个隐藏层神经元,先对x2进行非(NOT)运算,也就是01,非00

  • 然后再进行与(AND)运算。(h2)的权重向量为 w2 = [1, 1],偏置项为 b2 = -1.5。即:f(x) = sign(x1 + x2 - 1.5)。

  1. 设置输出层的权重和偏置项:
  • 输出层有一个神经元(y),表示异或运算的结果。
  • 输出层进行或(OR)运算,权重向量为 w3 = [1, 1],偏置项为 b3 = -0.5。
  1. 计算前向传播:
  • 对于输入向量 x = [x1, x2],首先计算隐藏层神经元的输出:
    h1 = sign(w1 * x + b1)
    h2 = sign(w2 * x + b2)
  • 然后,将隐藏层神经元的输出作为输入传递给输出层神经元:
    y = sign(w3 * [h1, h2] + b3)
  1. 输出结果:
  • 当 y = 1 时,表示异或运算的结果为真(1)。
  • 当 y = -1 时,表示异或运算的结果为假(0)。

通过这样的多层感知机结构和非线性激活函数(如符号函数),可以实现异或运算。这个例子中使用了一个隐藏层,但在实际应用中可能需要更多的隐藏层和神经元来处理更复杂的问题。这种多层感知机结构是神经网络的基础,也被称为前馈神经网络(Feedforward Neural Network)。

复制代码
5. 第二种 异或(XOR)运算:
异或运算是一个二元运算,当两个输入相同时,输出为0;当两个输入不同时,输出为1。使用单个感知机无法直接实现异或运算,因为它不是线性可分的。但可以通过组合多个感知机实现。具体步骤如下:

一种常用的方法是使用两个感知机构建一个多层感知机(Multi-Layer Perceptron,MLP)。MLP由输入层、隐藏层和输出层组成,每个层都由多个感知机(神经元)组成。以下是使用MLP实现异或运算的具体步骤:

1. 构建输入层和隐藏层:
- 输入层有两个神经元,表示输入的两个二进制位(x1和x2)。
- 隐藏层有两个神经元,用于引入非线性映射,帮助解决异或运算的非线性可分性。

2. 设置隐藏层的权重和偏置项:
- 第一个隐藏层神经元(h1)的权重向量为 w1 = [1, 1],偏置项为 b1 = -0.5。
- 第二个隐藏层神经元(h2)的权重向量为 w2 = [-1, -1],偏置项为 b2 = 1.5。

3. 设置输出层的权重和偏置项:
- 输出层有一个神经元(y),表示异或运算的结果。
- 输出层的权重向量为 w3 = [1, 1],偏置项为 b3 = -1.5。

4. 计算前向传播:
- 对于输入向量 x = [x1, x2],首先计算隐藏层神经元的输出:
  h1 = sign(w1 * x + b1)
  h2 = sign(w2 * x + b2)
- 然后,将隐藏层神经元的输出作为输入传递给输出层神经元:
  y = sign(w3 * [h1, h2] + b3)

5. 输出结果:
- 当 y = 1 时,表示异或运算的结果为真(1)。
- 当 y = -1 时,表示异或运算的结果为假(0)。
相关推荐
计算生物前沿30 分钟前
单细胞分析教程 | (二)标准化、特征选择、降为、聚类及可视化
人工智能·机器学习·聚类
kyle~1 小时前
Opencv---深度学习开发
人工智能·深度学习·opencv·计算机视觉·机器人
运器1231 小时前
【一起来学AI大模型】PyTorch DataLoader 实战指南
大数据·人工智能·pytorch·python·深度学习·ai·ai编程
超龄超能程序猿1 小时前
(5)机器学习小白入门 YOLOv:数据需求与图像不足应对策略
人工智能·python·机器学习·numpy·pandas·scipy
卷福同学1 小时前
【AI编程】AI+高德MCP不到10分钟搞定上海三日游
人工智能·算法·程序员
帅次1 小时前
系统分析师-计算机系统-输入输出系统
人工智能·分布式·深度学习·神经网络·架构·系统架构·硬件架构
AndrewHZ2 小时前
【图像处理基石】如何入门大规模三维重建?
人工智能·深度学习·大模型·llm·三维重建·立体视觉·大规模三维重建
5G行业应用2 小时前
【赠书福利,回馈公号读者】《智慧城市与智能网联汽车,融合创新发展之路》
人工智能·汽车·智慧城市
悟空胆好小2 小时前
分音塔科技(BABEL Technology) 的公司背景、股权构成、产品类型及技术能力的全方位解读
网络·人工智能·科技·嵌入式硬件
探讨探讨AGV2 小时前
以科技赋能未来,科聪持续支持青年创新实践 —— 第七届“科聪杯”浙江省大学生智能机器人创意竞赛圆满落幕
人工智能·科技·机器人