【深度学习】— 多层感知机介绍、 隐藏层、从线性到非线性、线性模型的局限性

news2024/10/6 3:01:45

【深度学习】— 多层感知机介绍

  • 4.1 多层感知机
    • 4.1.1 隐藏层
      • 线性模型的局限性
      • 引入隐藏层
  • 4.2 从线性到非线性
      • 线性组合的局限性
      • 引入非线性
      • 堆叠更多隐藏层

4.1 多层感知机

在第 3 节中,我们介绍了 softmax 回归,并实现了其从零开始的实现和基于高级 API 的实现,训练了分类器来识别 10 类服装图像。在此过程中,我们学习了如何处理数据、将输出转换为概率分布、并应用适当的损失函数来最小化损失。现在,我们将深入探索深度神经网络,这是本书的核心模型之一。

4.1.1 隐藏层

在 3.1.1 节中,我们介绍了仿射变换,它是一种带有偏置项的线性变换。回想一下 softmax 回归的模型架构,它通过单个仿射变换将输入直接映射到输出,再进行 softmax 操作。如果标签确实与输入相关,这种方法是足够的。但仿射变换的线性假设过于强烈。

线性模型的局限性

线性模型假设输入特征与输出之间的关系是单调的,例如收入增加会增加偿还贷款的概率,但这种关系不是线性的。处理这个问题的一种方法是对数据进行预处理,比如使用收入的对数作为特征。

然而,对于某些问题,线性模型的假设会完全失败。例如,分类图像中的猫和狗时,某个像素的强度并不能单独决定类别。图像的像素需要依赖上下文,像素之间的复杂交互使得线性模型难以处理。

引入隐藏层

为了解决线性模型的局限性,我们可以在网络中加入隐藏层,使其能够处理更复杂的函数关系。最简单的方法是堆叠多个全连接层,每一层的输出作为下一层的输入,最终生成输出。这种架构称为多层感知机(multilayer perceptron,MLP)。

下图展示了一个单隐藏层的多层感知机:
图4.1.1: 一个单隐藏层的多层感知机,具有5个隐藏单元
图4.1.1: 一个单隐藏层的多层感知机,具有5个隐藏单元

这个 MLP 有 4 个输入,3 个输出,隐藏层有 5 个隐藏单元。输入层不涉及计算,网络的计算只发生在隐藏层和输出层。这种网络共有 2 层,每层都是全连接的,每个输入都会影响隐藏层中的每个神经元,而隐藏层中的每个神经元又会影响输出层中的每个神经元。

然而,如 3.4.3 节所述,具有全连接层的 MLP 可能有大量参数,这会带来高计算成本。即使不改变输入或输出的大小,也需要在参数节约和模型效果之间进行权衡。

4.2 从线性到非线性

与之前的章节类似,我们使用矩阵 X ∈ R n × d \mathbf{X} \in \mathbb{R}^{n \times d} XRn×d 表示包含 n n n 个样本的小批量数据,其中每个样本有 d d d 个输入特征。对于具有 h h h 个隐藏单元的单隐藏层多层感知机(MLP),隐藏层的输出可以用 H ∈ R n × h \mathbf{H} \in \mathbb{R}^{n \times h} HRn×h 表示,称为隐藏表示(hidden representations)。隐藏层的权重和偏置分别为 W ( 1 ) ∈ R d × h \mathbf{W}^{(1)} \in \mathbb{R}^{d \times h} W(1)Rd×h b ( 1 ) ∈ R 1 × h \mathbf{b}^{(1)} \in \mathbb{R}^{1 \times h} b(1)R1×h,输出层的权重和偏置分别为 W ( 2 ) ∈ R h × q \mathbf{W}^{(2)} \in \mathbb{R}^{h \times q} W(2)Rh×q b ( 2 ) ∈ R 1 × q \mathbf{b}^{(2)} \in \mathbb{R}^{1 \times q} b(2)R1×q

单隐藏层多层感知机的输出 O ∈ R n × q \mathbf{O} \in \mathbb{R}^{n \times q} ORn×q 的计算如下:

在这里插入图片描述

线性组合的局限性

引入隐藏层后,模型需要跟踪和更新更多的参数。但这种设置并没有带来好处。原因在于隐藏单元是输入的仿射变换,而输出层也是对隐藏层的仿射变换。仿射变换的仿射变换仍然是仿射变换,这与原先的线性模型没有本质区别。

我们可以证明:对于任意权重值,可以将隐藏层合并为一个等价的单层模型,具有参数 W = W ( 1 ) W ( 2 ) \mathbf{W} = \mathbf{W}^{(1)}\mathbf{W}^{(2)} W=W(1)W(2) 和偏置 b = b ( 1 ) W ( 2 ) + b ( 2 ) \mathbf{b} = \mathbf{b}^{(1)}\mathbf{W}^{(2)} + \mathbf{b}^{(2)} b=b(1)W(2)+b(2),公式为:

在这里插入图片描述

引入非线性

为了让多层感知机的架构真正有效,我们需要在每个隐藏单元的仿射变换之后应用非线性激活函数(activation function) σ \sigma σ。激活函数的输出称为活性值(activations)。有了激活函数后,多层感知机就不再是简单的线性模型:

在这里插入图片描述

激活函数 σ \sigma σ 逐行作用于其输入,并且通常按元素操作,即它可以独立地计算每个活性值,无需查看其他隐藏单元的值。这样,非线性变换可以增强模型的表达能力。

堆叠更多隐藏层

为了构建更强大的模型,我们可以继续堆叠更多的隐藏层。例如:

H ( 1 ) = σ 1 ( X W ( 1 ) + b ( 1 ) ) , \mathbf{H}^{(1)} = \sigma_1(\mathbf{X}\mathbf{W}^{(1)} + \mathbf{b}^{(1)}), H(1)=σ1(XW(1)+b(1)),
H ( 2 ) = σ 2 ( H ( 1 ) W ( 2 ) + b ( 2 ) ) , \mathbf{H}^{(2)} = \sigma_2(\mathbf{H}^{(1)}\mathbf{W}^{(2)} + \mathbf{b}^{(2)}), H(2)=σ2(H(1)W(2)+b(2)),

每一层都可以增强模型的表达能力,使其能够捕捉到更复杂的函数关系。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2191003.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UART通信协议

什么是UART UART ( Universal Asynchronous Receiver/Transmitter, 通用异步收发器) 是一种常用的串行通信协议,用于在 计算机和外部设备之间传输数据。它是一种异步通信协议,也就是说数据的传输不需要事先建立好同步时钟信号。 UART&#xf…

Unity MVC框架演示 1-1 理论分析

本文仅作学习笔记分享与交流,不做任何商业用途,该课程资源来源于唐老狮 1.一般的图解MVC 什么是MVC我就不说了,老生常谈,网上有大量的介绍,想看看这三层都起到什么职责?那就直接上图吧 2.我举一个栗子 我有…

深入理解 JavaScript 事件循环机制:单线程中的异步处理核心

深入理解 JavaScript 事件循环机制:单线程中的异步处理核心 JavaScript 是一门单线程的编程语言,也就是说它在同一时间只能执行一个任务。然而,现代 Web 应用经常需要处理大量的异步操作,如用户输入、网络请求、定时器等。为了确…

Vue的基本用法及模板语法

Vue.js使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue实例的数据。所有 Vue.js的模板都是合法的 HTML,所以能被遵循规范的浏览器和 HTML 解析器解析。 在底层的实现上,Vue将模板编译成虚拟 DOM 渲染函数。结合响应系…

实现Xshell与虚拟机中Linux服务器的连接(附常见错误解决)

前言 Xshell是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。 本文将介绍Xshell与虚拟机中Linux服务器连接…

前缀线性基——关于目前的理解以及一些样题

怎么说呢?在前几天我总结了了有关线性基的一篇博客,线性基用来去求整个区间的异或最值问题 前缀线性基——用于统计一个区间内的异或最值问题 那么我们如何去统计呢?那么就要去存储一个区间的异或空间线性基,因此我们的思路就是用…

【python】追加写入excel

输出文件运行前(有两张表,“表1”和“Sheet1”): 目录 一:写入单表(删除所有旧工作表,写入新表)二:写入多表(删除所有旧工作表,写入新表&#x…

平衡二叉搜索树之 AVL 树的模拟实现【C++】

文章目录 AVL树的简单介绍全部的实现代码放在了文章末尾准备工作包含头文件类的成员变量 构造函数和拷贝构造swap和赋值运算符重载析构函数findinsert[重要]当parent的平衡因子为1/-1时,如何向上更新祖先节点的平衡因子呢?怎么旋转?左单旋右单…

Windows Ubuntu下搭建深度学习Pytorch训练框架与转换环境TensorRT

Windows Ubuntu下搭建深度学习Pytorch训练框架与转换环境TensorRT JetBrains2024(IntelliJ IDEA、PhpStorm、RubyMine、Rider……)安装包Anaconda Miniconda安装.condarc 文件配置镜像源查看conda的配置和源(channel)自定义conda虚拟环境路径conda常用命…

Chromium 中JavaScript Screen API接口c++代码实现

Screen - Web API | MDN (mozilla.org) Screen Screen 接口表示一个屏幕窗口,往往指的是当前正在被渲染的 window 对象,可以使用 window.screen 获取它。 请注意:由浏览器决定提供屏幕对象,此对象一般通过当前浏览器窗口活动状…

《python语言程序设计》2018版第8章19题几何Rectangle2D类(下)-头疼的几何和数学

希望这个下集里能有完整的代码 一、containsPoint实现 先从网上找一下Statement expected, found Py:DEDENTTAB还是空格呢??小小总结如何拆分矩形的四个点呢.我们来小小的测试一下这个函数结果出在哪里呢???修改完成variable in function should be lowercase 函数变量应该…

No.2 笔记 | 网络安全攻防:PC、CS工具与移动应用分析

引言 在当今数字化时代,网络安全已成为每个人都应该关注的重要话题。本文将总结一次关于网络安全攻防技术的学习内容,涵盖PC端和移动端的恶意程序利用,以及强大的渗透测试工具Cobalt Strike的使用。通过学习这些内容,我们不仅能够了解攻击者的手法,更能提高自身的安全意识和防…

【牛顿迭代法求极小值】

牛顿迭代法求极小值 仅供参考 作业内容与要求 作业内容 作业要求 递交报告 代码 编程实现 计算偏导数 故上述非线性方程组的根可能为 f ( x , y ) f(x, y) f(x,y)的极值点,至于是极小值点还是极大值点或鞍点,就需要使用微积分中的黑塞矩阵来判断了。…

网络基础 【HTTPS】

💓博主CSDN主页:麻辣韭菜💓   ⏩专栏分类:Linux初窥门径⏪   🚚代码仓库:Linux代码练习🚚 💻操作环境: CentOS 7.6 华为云远程服务器 🌹关注我🫵带你学习更多Linux知识…

Linux之实战命令26:timeout应用实例(六十)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【…

安卓手机密码忘了怎么办?(只做科普)

注意:只做科普,拒绝利用技术做一些非法事情 科普人:网络安全工程师~DL 科普平台:快手,CSDN,微信公众号,小红书,百度,360 本期文章耗时比较大,如果喜欢&…

数学题-分糖果-答案解析

PDF文档回复:20241005 1[题目描述] 幼儿园有7个小朋友,你是其中之一,有一天你发现无穷多颗糖,最少可以拿16个,最多可以拿23个,你打算拿一些分给小朋友们,分配原则是如果每人(包括你)都可以拿1块糖&#xf…

快速上手C语言【上】(非常详细!!!)

目录 1. 基本数据类型 2. 变量 2.1 定义格式 和 命名规范 2.2 格式化输入和输出(scanf 和 printf) ​编辑 2.3 作用域和生命周期 3. 常量 4. 字符串转义字符注释 5. 操作符 5.1 双目操作符 5.1.1 算数操作符 5.1.2 移位操作符 5.1.3 位操作符…

IDEA下“File is read-only”可能原因及“找不到或无法加载主类”问题的解决

1.File is read-only”可能原因 写代码时想要修改这个静态变量的值,把这个语句注释掉,发现在这个文件中File is read-only无法编辑修改,于是想去掉这个状态 网上查看的解释大多是在File栏目或File->File Properties下可以找到Make File W…

Git介绍--github/gitee/gitlab使用

一、Git的介绍 1.1、学习Git的原因:资源管理 1.2、SCM软件的介绍 软件配置管理(SCM)是指通过执行版本控制、变更控制的规程,以及使用合适的配置管理软件来保证所有配置项的完整性和可跟踪性。配置管理是对工作成果的一种有效保护。 二、版本控制软件 …