从0开始深度学习(11)——多层感知机

news2024/10/18 5:54:08

前面介绍了线性神经网络,但是线性模型是有可能出错的,因为线性模型意味着是单调假设,但是现实中往往很复杂。例如,我们想要根据体温预测死亡率。 对体温高于37摄氏度的人来说,温度越高风险越大。 然而,对体温低于37摄氏度的人来说,温度越高风险就越低。
所以在深度神经网络中,我们使用观测数据来联合学习隐藏层表示和应用于该表示的线性预测器,以此来克服线性模型的限制

1 隐藏层

隐藏层(Hidden Layer)是人工神经网络(ANN)中介于输入层和输出层之间的层。隐藏层由多个神经元组成,这些神经元对输入进行加权求和,并通过激活函数进行非线性变换,可以让模型学习到更复杂的特征和模式

1.1 在网络中加入隐藏层

最简单的方法是将许多全连接层堆叠在一起。 每一层都输出到上面的层,直到生成最后的输出。 我们可以把前 L − 1 L-1 L1 层看作表示,把最后一层看作线性预测器。 这种架构通常称为多层感知机(multilayer perceptron),通常缩写为MLP。下图是一个多层感知机:
在这里插入图片描述
这个多层感知机有4个输入,3个输出,其隐藏层包含5个隐藏单元。输入层不涉及任何计算,因此使用此网络产生输出只需要实现隐藏层和输出层的计算。 因此,这个多层感知机中的层数为2。

注意,这两个层都是全连接的。每个输入都会影响隐藏层中的每个神经元, 而隐藏层中的每个神经元又会影响输出层中的每个神经元。

1.2 从线性到非线性

假设用矩阵 X X X 来表示 n n n 个样本的小批量,每个样本具有 d d d 个输入特征。

对于具有 h h h 个隐藏单元的单隐藏层感知机,我们用 H H H 表示隐藏层的输出,在数学中, H H H 也被称为隐藏层变量。因为隐藏层和输出层是全连接的,所以我们有隐藏层权重 W ( 1 ) W^{(1)} W(1) 和隐藏层偏置 b ( 1 ) b^{(1)} b(1),和输出层权重 W ( 2 ) W^{(2)} W(2) 和输出层偏置 b ( 2 ) b^{(2)} b(2) ,所以我们的多层感知机的输出 O O O可以用以下表示:
在这里插入图片描述
但是该模型依然没有实现非线性变化,因为隐藏单元是由输入的仿射函数给出,输出又是由隐藏单元的仿射函数给出,仿射函数的仿射函数,还是仿射函数,不包含非线性变化。

所以为了解决这一问题, 我们在在仿射变换之后对每个隐藏单元应用非线性的激活函数(activation function) σ \sigma σ,这样多层感知机的输出变成了下面的样式:
在这里插入图片描述
通过堆叠这样的隐藏层,可以产生更有表达能力的模型。

1.3 通用近似定理

定义:一个具有足够数量的隐藏层神经元的前馈神经网络(例如多层感知机),只要使用适当的激活函数(如非线性激活函数),可以以任意精度近似任何连续的、多变量的函数。

如,在一对输入上进行基本逻辑操作,多层感知机是通用近似器,但它并不关心训练的效率、网络的大小或如何选择最优的网络结构。因此,实际工作中还需要考虑优化算法、网络的设计和数据量等问题。

2 激活函数

激活函数(activation function)通过计算加权和并加上偏置来确定神经元是否应该被激活,它们将输入信号转换为输出的可微运算。 大多数激活函数都是非线性的。激活函数的输出被称为活性值(activations)。

2.1 ReLU函数

最受欢迎的激活函数是修正线性单元(Rectified linear unit,ReLU), 因为它实现简单,同时在各种预测任务中表现良好。 ReLU提供了一种非常简单的非线性变换。

给定元素 x x x ,ReLU函数被定义为该元素与0的最大值:
R e L U ( x ) = m a x ( x , 0 ) ReLU(x)=max(x,0) ReLU(x)=max(x,0)
在这里插入图片描述
即只保留正元素,丢弃所有负元素,可以看出ReLU是分段的。

当输入为负时,ReLU函数的导数为0,而当输入为正时,ReLU函数的导数为1。
在这里插入图片描述

所以:

  • 正向传播时,如果隐藏层仿射函数的输出 z z z 是正数,则输出本身;如果输出是负数或者0,则输出0.
  • 反向传播时,如果 z z z 是正数,则输出1; z z z 是负数或者0时,输出0

ReLU有很多变体,比如参数化ReLU,即为ReLU添加一个线性项,这样即使有些参数是负的,也可以通过:
在这里插入图片描述

2.2 sigmoid函数

对于一个定义域在 R \mathbb{R} R中的输入,sigmoid函数将输入变化为区间(0,1)上的输出,所以也被称为挤压函数(squashing function),公式如下:
在这里插入图片描述
在这里插入图片描述

早期神经网络热衷与“激发”和“不激发”,即认为有一个阈值单元,低于阈值取0,高于阈值取1。但当大家专注于梯度学习后,sigmoid函数作为一个平滑的曲线,逐渐被使用。

sigmoid函数的导数为以下公式:
在这里插入图片描述
在这里插入图片描述
即输入为0时,导数值最大为0.25,越远离0,导数值越接近0

2.3 tanh函数

与sigmoid函数类似, tanh(双曲正切)函数也能将其输入压缩转换到区间(-1, 1)上。 tanh函数的公式如下:
在这里插入图片描述
在这里插入图片描述
tanh的导数公式是:
在这里插入图片描述
在这里插入图片描述
即输入越接近0,导数值越接近最大值1,越远离0,导数值越接近0

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

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

相关文章

LeetCode 3200.三角形的最大高度:枚举

【LetMeFly】3200.三角形的最大高度:枚举 力扣题目链接:https://leetcode.cn/problems/maximum-height-of-a-triangle/ 给你两个整数 red 和 blue,分别表示红色球和蓝色球的数量。你需要使用这些球来组成一个三角形,满足第 1 行…

远距离长航时低成本泡沫垂直起降固定翼无人机技术详解

关于远距离长航时低成本泡沫垂直起降固定翼无人机技术,以下是一个详细的技术解析: 一、技术概述 远距离长航时低成本泡沫垂直起降固定翼无人机是一种结合了垂直起降技术和固定翼设计优势的无人机系统。该技术通过采用泡沫材料制造无人机机体&#xff0…

iOS IPA上传到App Store Connect的三种方案详解

引言 在iOS应用开发中,完成开发后的重要一步就是将IPA文件上传到App Store Connect以便进行测试或发布到App Store。无论是使用Xcode进行原生开发,还是通过uni-app、Flutter等跨平台工具生成的IPA文件,上传到App Store的流程都是类似的。苹果…

车易泊车位管理相机 —— 智能管理,停车无忧

在现代城市生活中,停车问题一直是困扰着车主和城市管理者的难题。车位难找、停车管理混乱等问题不仅浪费了人们的时间和精力,也影响了城市的交通秩序和形象。而车易泊车位管理相机的出现,为解决这些问题提供了一种高效、智能的解决方案。 一、…

DataWhale10月动手实践——Bot应用开发task03学习笔记

一、工作流 1. 工作流的定义 工作流由多个节点组成,这些节点可以包括大语言模型(LLM)、代码模块、逻辑判断工具、插件等。每个节点需要不同的信息来执行其功能。工作流的核心含义是:对工作流程及其操作步骤之间的业务规则进行抽…

无人机之位置信息计算篇

一、主要导航技术 卫星导航 全球定位系统(GPS):无人机上装有专门的接收器,用于捕获GPS系统发射的无线电信号。当无人机接收到来自至少四颗卫星的信号时,通过计算信号抵达时间的微小差异,即可运用三角定位…

SQL语句查询

SQL语句查询 查询产生一个虚拟表 看到的是表形式显示的结果&#xff0c;但结果并不真正存储 每次执行查询只是从数据表中提取数据&#xff0c;并按照表的形式显示出来 查询语法 SELECT <列名> FROM <表名> [WHERE <查询条件表达式>] SELECT …

插齿刀的齿数选择不同会有什么影响?

插齿——作为一种常用的制齿手段&#xff0c;经常被用到有台肩的齿轮以及空刀槽很窄的双联或多联齿轮&#xff0c;以及各种内齿加工中。虽然强力车齿在现在应用的越来越多了&#xff0c;但是插齿这种加工应该在相当长的一段时间内还是会继续服役的。中这期咱们聊聊插齿刀齿数对…

显示指定目录下所有.c文件中出现指定字符串的行号 Linux环境 C语言实现

问题&#xff1a;显示指定目录及其后代目录下所有.c文件中出现指定字符串的行号 算法&#xff1a; 分为两个文件编写 &#xff1a; display_string_lineno.c &#xff0c; Read_line.c 分为三个函数编写 &#xff1a; void display_lineno(char* dirname,const char *pstr)…

sankey.top - 桑基图/桑吉图/流程图/能量流/物料流/能量分析

sankey.top 桑基图大师(SankeyMaster)是您创建复杂桑基图表的首选工具。轻松输入数据并创建桑基图表&#xff0c;准确揭示复杂的数据关系&#xff01; 应用 https://apps.apple.com/cn/app/sankeymaster-sankey-diagram/id6474908221 在线编辑器 https://studio.sankeymaste…

解决ultralytics中的YOLOv8在执行task.py文件添加模块操作出现的KeyError报错

报错详情&#xff1a; 在ultralytics项目文件夹内运行/home/xxx/ultralytics/train.py进行单GPU训练的时候训练可以正常进行 from ultralytics import YOLO# Load a model model YOLO("/home/xxx/ultralytics/ultralytics/cfg/models/v8/yolov8s-FASFF.yaml") # …

Github学生包的JetBrains认证过期/idea认证过期如何解决?

官网通过Github更新状态即可JetBrains Account 注意要到邮箱走流程

自动化测试与敏捷开发的重要性

敏捷开发与自动化测试是现代软件开发中两个至关重要的实践&#xff0c;它们相互补充&#xff0c;共同促进了软件质量和开发效率的提升。 敏捷开发的重要性 敏捷开发是一种以人为核心、迭代、循序渐进的软件开发方法。它强调以下几个核心价值观和原则&#xff1a; 个体和交互…

力扣 简单 83.删除排序链表中的重复元素

文章目录 题目介绍题解 题目介绍 题解 法一&#xff1a;带dummy node class Solution {public ListNode deleteDuplicates(ListNode head) {//根据提示&#xff0c;val的值在-100~100&#xff0c;如果括号里面不填则默认dummy.val0&#xff0c;可能会和某些测试用例的val一样…

第三季度中国游戏市场收入创历史新高;京东物流与淘宝天猫达成合作;YouTube 上线“用相机拍摄”标签....|网易数智日报

第三季度中国游戏市场收入917.66亿&#xff0c;创历史新高 中国音数协游戏工委今日发布了最新的 2024 年第三季度中国游戏产业季度报告。 数据显示&#xff0c;2024 年第三季度中国游戏市场收入 917.66 亿元&#xff0c;环比增长 22.96%&#xff0c;同比增长 8.95%。 中国音…

完全指南:如何高效进行业务应用开发?

❤️ 温馨提醒 本篇文章较长&#xff0c;你可以根据目录选择最感兴趣的部分阅读。当然&#xff0c;我相信如果你全部阅读完&#xff0c;一定会有不少的收获。 引言 企业对业务应用开发的需求正在日益增长。 据 Gartner 统计&#xff0c;全球企业软件市场预计将在 2025 年达到…

数据结构——哈夫曼树及其应用(哈夫曼编码)

判断树&#xff1a;用来描述分类过程的二叉树 哈夫曼树&#xff08;最优二叉树&#xff09;的基本概念 路径&#xff1a;从树中一个结点到另一个结点之间的分支构成这两个结点间的路径。 结点的路径长度&#xff1a;两结点间路径上的分支数。 结点的路径长度计算&#xff1…

【jQuery】jQuery 处理 Ajax 以及解决跨域问题的方式

文章目录 HTTP原生创建 AjaxjQuery 处理 Ajax$.ajax()$().load()$.get()$.post() 跨域CORSJSONPiframeweb sockets HTTP 超文本传输协议&#xff08;HTTP&#xff0c;HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。设计 HTTP 最初的目的是为了提供一种发…

Redis中String类型数据扩容原理分析

大家好&#xff0c;我是 V 哥。在 Java 中&#xff0c;我们有动态数组ArrayList&#xff0c;当插入新元素空间不足时&#xff0c;会进行扩容&#xff0c;好奇 Redis 中的 String 类型&#xff0c;C 语言又是怎样的实现策略&#xff0c;带着疑问&#xff0c;咱们来了解一下。 最…

集成电路公司进销存系统生成合同——未来之窗行业应用跨平台架构

一、进销存生成合同优势 1. 提高效率&#xff1a;节省了手动起草和编辑合同的时间&#xff0c;能够快速生成合同&#xff0c;加快业务流程。 2. 减少错误&#xff1a;避免了人工输入可能导致的拼写、数据错误等&#xff0c;提高合同的准确性和规范性。 3. 数据一致性&#xff…