iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python机器学习多层感知机原理解析
  • 385
分享到

Python机器学习多层感知机原理解析

2024-04-02 19:04:59 385人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录隐藏层从线性到非线性激活函数ReLU函数sigmoid函数tanh函数隐藏层 我们在前面描述了仿射变换,它是一个带有偏置项的线性变换。首先,回想下之前下图中所示的softmax回

隐藏层

我们在前面描述了仿射变换,它是一个带有偏置项的线性变换。首先,回想下之前下图中所示的softmax回归的模型结构。该模型通过单个仿射变换将我们的输入直接映射到输出,然后进行softmax操作。如果我们的标签通过仿射变换后确实与我们的输入数据相关,那么这种方法就足够了。但是,仿射变换中的线性是一个很强的假设。

我们的数据可能会有一种表示,这种表示会考虑到我们的特征之间的相关交互作用。在此表示的基础上建立一个线性模型可能会是合适的,但我们不知道如何手动计算这么一种表示。对于深度神经网络,我们使用观测数据来联合学习隐藏层表示和应用于该表示的线性预测器。

我们可以通过在网络中加入一个或多个隐藏层来克服线性模型的限制,使其能处理更普遍的函数关系类型。要做到这一点,最简单的方法是将许多全连接层堆叠在一起。每一层都输出到上面的层,直到生成最后的输出。我们可以把前L−1层看作表示,把最后一层看作线性预测器。这种架构通常称为多层感知机(multilayer perceptron),通常缩写为MLP。下面,我们以图的方式描述了多层感知机。

在这里插入图片描述

这个多层感知机有4个输入,3个输出,其隐藏层包含5个隐藏单元。输入层不涉及任何计算,因此使用此网络产生输出只需要实现隐藏层和输出层的计算;因此,这个多层感知机的层数为2。注意,这个层都是全连接的。每个输入都会影响隐藏层中的每个神经元,而隐藏层中的每个神经元又会影响输出层的每个神经元。

然而,具有全连接层的多层感知机的参数开销可能会高得令人望而却步,即使在不改变输入和输出大小的情况下,也可能促使在参数节约和模型有效性之间进行权衡。

从线性到非线性

在这里插入图片描述

注意,在添加隐藏层之后,模型现在需要跟踪和更新额外的参数。
可我们能从中得到什么好处呢?这里我们会惊讶地发现:在上面定义的模型里,我们没有好处。上面的隐藏单元由输入的仿射函数给出,而输出(softmax操作前)只是隐藏单元的仿射函数。仿射函数的仿射函数本身就是仿射函数。但是我们之前的线性模型已经能够表示任何仿射函数。

在这里插入图片描述

由于 X中的每一行对应于小批量中的一个样本,处于记号习惯的考量,我们定义非线性函数 σ也以按行的方式作用于其输入,即一次计算一个样本。我们在之前以相同的方式使用了softmax符号来表示按行操作。但是在本节中,我们应用于隐藏层的激活函数通常不仅仅是按行的,而且也是按元素。这意味着在计算每一层的线性部分之后,我们可以计算每个激活值,而不需要查看其他隐藏单元所取的值。对于大多数激活函数都是这样。

在这里插入图片描述

激活函数

激活函数通过计算加权和并加上偏置来确定神经元是否应该被激活。它们是输入信号转换为输出的可微运算。大多数激活函数都是非线性的。由于激活函数是深度学习的基础,下面简要介绍一些常见的激活函数。


import torch
from d2l import torch as d2l

ReLU函数

最受欢迎的选择是线性整流单元,因为它实现简单,同时在各种预测任务中表现良好。ReLU提供了一种非常简单的非线性变换。给定元素x ,ReLU函数被定义为该元素与0的最大值:

在这里插入图片描述

通俗地说,ReLU函数通过将相应的激活值设为0来仅保留正元素并丢弃所有负元素。为了直观感受下,我们可以画出函数的曲线图。下图所示,激活函数是分段线性的。


x = torch.arange(-8, 8, 0.1, requires_grad=True)
y = torch.relu(x)
d2l.plot(x.detach(), y.detach(), 'x', 'relu(x)', figsize=(5, 2.5))

在这里插入图片描述

注意,当输入值精确等于0时,ReLU函数不可导。在此时,我们默认使用左侧的导数,即当输入为0时导数为0。我们可以忽略这种情况,因为输入可能永远都不会是0。这里用上一句古老的谚语,“如果微妙的边界条件很重要,我们很可能是在研究数学而非工程”,这个观点正好适用于这里。下面我们绘制ReLU函数的导数。


y.backward(torch.ones_ilke(x), retain_graph=True)
d2l.plot(x.detach(), x.grad, 'x', 'grad of relu', figsize=(5, 2.5))

在这里插入图片描述

使用ReLU的原因是,它求导表现得特别好,要么让参数消失,要么让参数通过。这使得优化表现得更好,并且ReLU减轻了困扰以往神经网络梯度消失问题。

注意,ReLU函数有许多变体,包括参数化ReLU函数(Parameterized ReLU)。该变体为ReLU添加了一个线性项,因此即使参数是负的,某些信息仍然可以通过:

在这里插入图片描述

sigmoid函数

在这里插入图片描述

在最早的神经网络中,科学家们感兴趣的是对“激发”或“不激发”的生物神经元进行建模。因此,这一领域的先驱,如人工神经元的发明者麦卡洛克和皮茨,从他们开始就专注于阈值单元。阈值单元在其输入低于某个阈值时取值为0,当输入超过阈值时取1。

当人们的注意力逐渐转移到梯度的学习时,sigmoid函数是一个自然的选择,因为它是一个平滑的、可微的阈值单元近似。当我们想要将输出视作二分类问题的概率时,sigmoid仍然被广泛用作输出单元上的激活函数(可以将sigmoid视为softmax的特例)。然而, sigmoid在隐藏层中已经较少使用,它在大部分时候已经被更简单、更容易训练的ReLU所取代。

在这里插入图片描述

tanh函数

与sigmoid函数类似,tanh(双曲正切)函数也能将其输入压缩转换到区间(-1,1)上。tanh函数的公式如下:

在这里插入图片描述

下面我们绘制tanh函数。注意,当输入在0附近时,tanh函数接近线性变换。函数的形状类似于sigmoid函数,不同的是tanh函数关于坐标系原点中心对称。

在这里插入图片描述

以上就是python机器学习多层感知机原理解析的详细内容,更多关于Python机器学习多层感知机的资料请关注编程网其它相关文章!

--结束END--

本文标题: Python机器学习多层感知机原理解析

本文链接: https://www.lsjlt.com/news/137788.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python机器学习多层感知机原理解析
    目录隐藏层从线性到非线性激活函数ReLU函数sigmoid函数tanh函数隐藏层 我们在前面描述了仿射变换,它是一个带有偏置项的线性变换。首先,回想下之前下图中所示的softmax回...
    99+
    2024-04-02
  • pyTorch深度学习多层感知机的实现
    目录激活函数多层感知机的PyTorch实现激活函数 前两节实现的传送门 pyTorch深度学习softmax实现解析 pyTorch深入学习梯度和Linear Regression实...
    99+
    2024-04-02
  • Python深度学习pytorch神经网络多层感知机简洁实现
    我们可以通过高级API更简洁地实现多层感知机。 import torch from torch import nn from d2l import torch as d2l ...
    99+
    2024-04-02
  • 机器学习中感知器是怎么产生的
    本篇内容介绍了“机器学习中感知器是怎么产生的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!感知器的诞生——从样本中学习神经网络的AI先驱们一...
    99+
    2023-06-02
  • 图文详解感知机算法原理及Python实现
    目录写在前面1.什么是线性模型2.感知机概述3.手推感知机原理4.Python实现4.1 创建感知机类4.2 更新权重与偏置4.3 判断误分类点4.4 训练感知机4.5 动图可视化5...
    99+
    2024-04-02
  • python机器学习GCN图卷积神经网络原理解析
    目录1. 图信号处理知识1.1 图的拉普拉斯矩阵1.1.1 拉普拉斯矩阵的定义及示例1.1.2 正则化拉普拉斯矩阵1.2 图上的傅里叶变换1.3 图信号滤波器2. 图卷积神经网络2....
    99+
    2024-04-02
  • python机器学习Logistic回归原理推导
    目录前言Logistic回归原理与推导sigmoid函数目标函数梯度上升法Logistic回归实践数据情况训练算法算法优缺点前言 Logistic回归涉及到高等数学,线性代数,概率论...
    99+
    2024-04-02
  • python机器学习Logistic回归原理是什么
    这篇“python机器学习Logistic回归原理是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python机器学习L...
    99+
    2023-07-02
  • 【可解释性机器学习】详解Python的可解释机器学习库:SHAP
    详解Python的可解释机器学习库:SHAP SHAP介绍SHAP的用途SHAP的工作原理解释器Explainer局部可解释性Local Interper单个prediction的解释多个预测...
    99+
    2023-08-31
    可解释性 SHAP 全局解释性 局部解释性
  • 用 Python 机器学习从零到一:手把手带你掌握机器学习的基本原理
    1. 什么是机器学习? 机器学习是人工智能的一个分支,旨在让计算机能够像人类一样学习和思考。机器学习算法能够从数据中学习到规律,并利用这些规律进行预测或决策。 2. 机器学习的基本原理 机器学习算法的基本原理是通过数据训练模型,然后利用...
    99+
    2024-02-14
    Python 机器学习 基础原理 数据预处理 模型训练 评估预测
  • Python数据分析和机器学习如何学
    今天就跟大家聊聊有关人工智能浪潮前,Python数据分析和机器学习如何学?,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。如同互联网发展的浪潮,AI正在创造一个全新的世界。面对AI发展...
    99+
    2023-06-02
  • Python机器学习入门(二)之Python数据理解
    目录1.数据导入1.1使用标准Python类库导入数据1.2使用Numpy导入数据1.3使用Pandas导入数据2.数据理解2.1数据基本属性2.1.1查看前10行数据2.1.2查看...
    99+
    2024-04-02
  • Python 机器学习之线性回归详解分析
    为了检验自己前期对机器学习中线性回归部分的掌握程度并找出自己在学习中存在的问题,我使用C语言简单实现了单变量简单线性回归。 本文对自己使用C语言实现单变量线性回归过程中遇到的问题和心...
    99+
    2024-04-02
  • 机器学习多项式拟合曲线的原理是什么
    机器学习多项式拟合曲线的原理是通过使用多项式函数来拟合给定数据集中的样本点,以达到最佳拟合的目标。具体原理如下:1. 多项式表示:在...
    99+
    2023-09-25
    机器学习
  • 机器学习Python实现 SVD 分解
    这篇文章主要是结合机器学习实战将推荐算法和SVD进行相应的结合 任何一个矩阵都可以分解为SVD的形式 其实SVD意义就是利用特征空间的转换进行数据的映射,后面将专门介绍SVD的基础概念,先给出python,这里先给出一个简单的矩阵,表示用...
    99+
    2023-01-31
    分解 机器 Python
  • Python机器学习的基础知识点有哪些
    这篇文章主要介绍了Python机器学习的基础知识点有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、基础概述机器学习(Machine Learing)是一门多领域交叉学...
    99+
    2023-06-15
  • Python机器学习中pandas的示例分析
    小编给大家分享一下Python机器学习中pandas的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!python的五大特点是什么python的五大特点:1...
    99+
    2023-06-15
  • python机器学习实现神经网络示例解析
    目录单神经元引论参考多神经元单神经元引论 对于如花,大美,小明三个因素是如何影响小强这个因素的。 这里用到的是多元的线性回归,比较基础 from numpy import a...
    99+
    2024-04-02
  • 简单的计算机组成原理及层次结构学习教程
    目录从软硬件角度划分计算机从物理构成角度理解计算机(9层)计算机系统的层次结构现代计算机硬件框图冯诺依曼体系机构六大特点 计算机硬件的主要技术指标CPU的结构及功能1)控制器2)运算...
    99+
    2024-04-02
  • Java基础学习之反射机制原理详解
    目录一、什么是反射二、反射的原理三、反射的优缺点四、反射的用途五、反射机制常用的类六、反射的基本使用一、什么是反射 (1)Java反射机制的核心是在程序运行时动态加载类并获取类的详细...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作