神经网络系列---感知机(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)。
相关推荐
charles_vaez16 分钟前
开源模型应用落地-glm模型小试-glm-4-9b-chat-快速体验(一)
深度学习·语言模型·自然语言处理
北京搜维尔科技有限公司34 分钟前
搜维尔科技:【应用】Xsens在荷兰车辆管理局人体工程学评估中的应用
人工智能·安全
说私域37 分钟前
基于开源 AI 智能名片 S2B2C 商城小程序的视频号交易小程序优化研究
人工智能·小程序·零售
YRr YRr38 分钟前
深度学习:Transformer Decoder详解
人工智能·深度学习·transformer
知来者逆43 分钟前
研究大语言模型在心理保健智能顾问的有效性和挑战
人工智能·神经网络·机器学习·语言模型·自然语言处理
Shy9604181 小时前
Bert完形填空
python·深度学习·bert
云起无垠1 小时前
技术分享 | 大语言模型赋能软件测试:开启智能软件安全新时代
人工智能·安全·语言模型
老艾的AI世界1 小时前
新一代AI换脸更自然,DeepLiveCam下载介绍(可直播)
图像处理·人工智能·深度学习·神经网络·目标检测·机器学习·ai换脸·视频换脸·直播换脸·图片换脸
翔云API2 小时前
PHP静默活体识别API接口应用场景与集成方案
人工智能
浊酒南街2 小时前
吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)4.9-4.10
人工智能·深度学习·神经网络·cnn