当前位置: 首页 > news >正文

开心实习之 深度学习之多层感知机

(一)感知机的起源与基本原理

感知机是由美国学者 Frank Rosenblatt 在 1957 年提出的,它是一种最简单的人工神经网络模型,就像一个简单的 “信息处理器”。

它的工作原理很直观:接收输入信号,通过权重和偏差对信号进行处理后,输出结果。具体来说,给定输入x(可以是多个,比如x1​、x2​)、权重w(对应每个输入,如w1​、w2​)和偏差b,感知机的输出规则如下:
当b+w1​x1​+w2​x2​≤0时,输出0;当b+w1​x1​+w2​x2​>0时,输出1。

这里的权重w和偏差b是感知机的关键参数,它们各自有着重要作用:

  • 权重w:控制输入信号的重要性。比如,在判断 “是否去郊游” 这个问题中,如果 “天气好坏” 这个输入的权重很大,就说明感知机更看重天气这个因素。
  • 偏差b:调整神经元被激活的容易程度。如果偏差值较大,那么即使输入信号的总和不是特别大,感知机也容易输出1(被激活);反之,偏差值小,感知机就不容易被激活。

(二)感知机的任务类型:二分类

感知机主要用于二分类任务,也就是输出结果只有0或1两种情况。它和另外两种常见的任务类型有明显区别:

  • 与回归任务相比:回归任务的输出是实数(比如预测房价,可能是 50 万、80 万等任意实数),而感知机只能输出0或1。
  • 与 Softmax 分类相比:Softmax 分类能输出多个类别的概率(比如判断一张图片是猫、狗、鸟的概率分别是 0.6、0.3、0.1),感知机则只能进行二分类。

(三)感知机的实际应用:简单逻辑电路

感知机可以很好地实现与门、与非门、或门这些简单的逻辑电路,通过设置合适的权重w和偏差b就能满足逻辑关系。

1. 与门

与门的逻辑规则是:只有当两个输入x1​和x2​都为1时,输出y才为1,否则输出0,其真值表如下:

x1​x2​y
000
100
010
111

要实现与门,我们可以设置多个符合条件的(w1​,w2​,b)组合,比如(0.5,0.5,-0.7)、(0.5,0.5,-0.8)、(1.0,1.0,-1.0)。以(1.0,1.0,-1.0)为例,我们来验证一下:

  • 当x1​=0,x2​=0时,b+w1​x1​+w2​x2​=−1.0+0+0=−1.0≤0,输出0,符合与门规则。
  • 当x1​=1,x2​=0时,b+w1​x1​+w2​x2​=−1.0+1.0+0=0≤0,输出0,符合规则。
  • 当x1​=0,x2​=1时,计算结果也是0,输出0,符合规则。
  • 当x1​=1,x2​=1时,b+w1​x1​+w2​x2​=−1.0+1.0+1.0=1.0>0,输出1,符合规则。
2. 与非门

与非门和与门的逻辑相反,只要两个输入不同时为1,输出就为1;当两个输入都为1时,输出为0,真值表如下:

x1​x2​y
001
101
011
110

实现与非门的一个(w1​,w2​,b)组合是(-0.5,-0.5,0.7)。同样验证一下:

  • 当x1​=0,x2​=0时,b+w1​x1​+w2​x2​=0.7+0+0=0.7>0,输出1,符合与非门规则。
  • 当x1​=1,x2​=0时,b+w1​x1​+w2​x2​=0.7−0.5+0=0.2>0,输出1,符合规则。
  • 当x1​=0,x2​=1时,计算结果也是0.2,输出1,符合规则。
  • 当x1​=1,x2​=1时,b+w1​x1​+w2​x2​=0.7−0.5−0.5=−0.3≤0,输出0,符合规则。
3. 或门

或门的逻辑规则是:只要两个输入中有一个为1,输出就为1;只有当两个输入都为0时,输出才为0,真值表如下:

x1​x2​y
000
101
011
111

实现或门的一个(w1​,w2​,b)组合是(0.5,0.5,-0.3)。验证如下:

  • 当x1​=0,x2​=0时,b+w1​x1​+w2​x2​=−0.3+0+0=−0.3≤0,输出0,符合或门规则。
  • 当x1​=1,x2​=0时,b+w1​x1​+w2​x2​=−0.3+0.5+0=0.2>0,输出1,符合规则。
  • 当x1​=0,x2​=1时,计算结果也是0.2,输出1,符合规则。
  • 当x1​=1,x2​=1时,b+w1​x1​+w2​x2​=−0.3+0.5+0.5=0.7>0,输出1,符合规则。

(四)感知机的 “短板”:无法解决异或问题

异或门的逻辑规则是:当两个输入不同时,输出为1;当两个输入相同时,输出为0,真值表如下:

x1​x2​y
000
101
011
110

无论我们怎么调整感知机的权重w和偏差b,都无法实现异或门的功能。这就暴露了感知机的局限性 ——只能表示由一条直线分割的空间,而异或问题需要用非线性的曲线来划分空间,感知机无法处理这种 “线性不可分” 的情况。

二、多层感知机:突破感知机局限的 “进阶模型”

为了解决感知机无法处理线性不可分问题的局限,多层感知机应运而生。它就像在感知机的基础上增加了 “中间处理环节”,让模型拥有了处理更复杂问题的能力,是最简单的深度神经网络。

(一)多层感知机的结构:多了 “隐藏层”

多层感知机在输入层和输出层之间增加了一个或多个 “隐藏层”。我们可以把它想象成一个工厂的生产流程:输入层是 “原材料入口”,隐藏层是 “中间加工车间”,输出层是 “成品出口”。

以单隐藏层的多层感知机为例,它的结构包括:

  • 输入层:接收外部数据,比如处理图片时,输入层接收图片的像素数据;处理文本时,接收文本的编码数据。
  • 隐藏层:对输入层传来的数据进行复杂的加工处理,隐藏层中的每个神经元都像一个小的感知机,会对输入数据进行计算和转换。隐藏层的大小(神经元个数)是超参数,需要我们根据具体问题来调整。
  • 输出层:将隐藏层处理后的结果输出,根据任务类型输出不同形式的结果。比如二分类任务输出0或1,多分类任务输出各个类别的概率。

如果是多个隐藏层的多层感知机,就相当于有多个 “中间加工车间”,数据会在多个车间里经过多轮加工,能处理更复杂的问题。

(二)多层感知机的 “核心引擎”:激活函数

激活函数在多层感知机中起着至关重要的作用,它就像 “催化剂”,能将输入信号的总和转换为输出信号,决定如何激活输入信号的总和。如果没有激活函数,多层感知机就会退化成感知机,无法处理非线性问题。

激活函数需要具备一些关键性质,才能让多层感知机更好地工作:

  1. 是连续并可导(允许少数点上不可导)的非线性函数,这样才能让模型处理非线性问题,并且方便后续的参数更新。
  2. 激活函数及其导函数要尽可能简单,这样能提高网络的计算效率,避免模型运行过慢。
  3. 激活函数的导函数的值域要在合适区间内,不能太大也不能太小,否则会影响模型训练的效率和稳定性。

常见的激活函数有以下几种:

1. 阶跃函数

阶跃函数是最简单的激活函数,它的规则很直接:以0为界,输入超过0,就输出1;否则输出0,可以表示为h(x)={0,1,​(x≤0)(x>0)​。其实感知机使用的就是阶跃函数作为激活函数,但它只能处理线性问题,在多层感知机中很少单独使用。

2. tanh 激活函数(双曲正切)

tanh 激活函数能将输入映射到(−1,1)这个区间内。它的曲线呈 “S” 形,当输入为正数时,输出接近1;当输入为负数时,输出接近−1;当输入为0时,输出为0。相比于阶跃函数,它的非线性更强,在一些场景中能让模型更好地学习数据规律。

3. ReLU 函数(线性修正函数)

ReLU 函数的规则很简单:当输入大于0时,输出等于输入;当输入小于等于0时,输出为0。它的计算速度非常快,而且能有效缓解 “梯度消失” 问题(在模型训练中,梯度越来越小,导致模型难以更新参数的问题),是目前多层感知机中最常用的激活函数之一。

(三)多层感知机的任务拓展:多分类

多层感知机不仅能处理二分类任务,还能通过 Softmax 函数处理多分类任务。Softmax 函数会将输出层的每个神经元的输出值转换为概率值,这些概率值的总和为1,我们可以根据概率值的大小来判断样本属于哪个类别。比如在识别手写数字的任务中,输出层有10个神经元(对应0−9这10个数字),Softmax 函数会输出每个数字的概率,概率最大的那个数字就是模型预测的结果。

三、模型训练:让多层感知机 “学会” 知识

(一)学习的本质:调整参数

多层感知机的学习过程,其实就是在外界输入样本的刺激下,不断改变网络的连接权值(还有偏差),甚至调整网络拓扑结构,让网络的输出不断接近期望的输出。简单来说,就是通过一次次的 “练习”(输入样本),调整模型的 “解题思路”(参数),直到模型能准确 “答题”(输出正确结果)。

(二)参数更新的关键步骤:前向传播与反向传播

1. 前向传播(正向传播)

前向传播就像 “顺着流程计算结果”:输入样本从输入层进入,经过隐藏层的一步步加工处理,最终到达输出层,得到模型的预测输出。在这个过程中,每个神经元都会根据输入数据、权重和激活函数计算出输出,将数据 “向前传递”。

2. 反向传播(误差反传)

反向传播则是 “根据结果找问题、改参数”:首先计算输出层的预测结果与实际期望结果之间的误差,然后将这个误差从输出层反向传递到各个隐藏层,根据误差的大小来调整每一层的权重和偏差。这样一来,模型就能知道哪些参数需要调整、调整多少,从而让下一次的预测结果更准确。反向传播是计算神经网络参数梯度的主要方法,为参数更新提供了依据。

(三)评估模型性能:关注两种误差

要判断一个多层感知机模型好不好,我们需要关注两种误差:

1. 训练误差

训练误差是模型在训练数据集上的误差,就像学生在平时的练习题(训练数据)上的错题率。如果训练误差很大,说明模型在 “练习题” 上都做得不好,还没有掌握基本的知识。

2. 泛化误差

泛化误差是模型在新数据集(之前没见过的数据)上的误差,相当于学生在考试(新数据)中的错题率。有时候,学生可能在练习题上表现很好(训练误差小),但考试时却考不好(泛化误差大),这说明学生可能只是死记硬背了练习题,没有真正理解知识。模型也是如此,我们更希望模型的泛化误差小,这样它才能在实际应用中处理新的数据。

比如用历年考试真题(训练数据)准备考试,在真题上取得好成绩(训练误差小),不代表在未来的考试(新数据)中也能取得好成绩(泛化误差小

http://www.dtcms.com/a/389185.html

相关文章:

  • 前端构造数据格式及表格添加行
  • 深度学习-神经网络(上篇)
  • 【脑电分析系列】第18篇:传统机器学习在EEG中的应用 — SVM、LDA、随机森林等分类器
  • 理解长短期记忆神经网络(LSTM)
  • Kurt-Blender零基础教程:第2章:建模篇——第1节:点线面的选择与控制与十大建模操作
  • 鸿蒙5.0应用开发——V2装饰器@Monitor的使用
  • 八、Java-XML
  • 计算机在医疗领域应用的独特技术问题分析
  • HTB Intentions writeup(SQL二次注入也是注入)
  • 第一章 预训练:让模型“博闻强识”
  • 【数组】求两个匀速运动质点的相交或最小距离
  • 新手向:Python爬虫原理详解,从零开始的网络数据采集指南
  • OKZOO进军HealthFi:承接AIoT,引领Health-to-Earn
  • Halcon 相机标定
  • 腾讯混元发布集成翻译模型Hunyuan-MT-Chimera-7B,已开放体验
  • mybatis-plus扩展
  • 从x.ai到VSCode:一个AI编程助手的意外之旅
  • SQLite vs MySQL:核心SQL语法差异全面解析
  • 【每日算法】两数相加 LeetCode
  • ActiveMQ底层原理与性能优化
  • Ceph IO流程分段上传(1)——InitMultipart
  • 大数据毕业设计选题推荐-基于大数据的农作物产量数据分析与可视化系统-Hadoop-Spark-数据可视化-BigData
  • 【回归之作】学校实训作业:Day04面向对象思想编程
  • Ubuntu20.04或者Ubuntu24.04 TypeC-连接屏幕不显示问题
  • 【SQLSERVER】SQL Server 表导出与导入
  • postgresql和mongodb谁的地位更高
  • RK3588+复旦微JFM7K325T工业控制解决方案
  • RabbitMQ全方位解析
  • 云望无人机图传原理,无人机图传方式哪种好
  • 无人机50公里遥控模块技术要点与难点