首页 > 其他分享 >《动手学深度学习》笔记1.6——多层感知机→代码实现

《动手学深度学习》笔记1.6——多层感知机→代码实现

时间:2024-09-20 19:24:27浏览次数:3  
标签:输出 1.6 函数 ReLU 感知机 多层 激活

目录

1. 感知机

2. 多层感知机

2.1 XOR(单分类)

2.2 为何需要 (非线性) 激活函数?

2.3 经典激活函数(Sigmoid、Tanh、ReLU)

2.4 多类分类

2.5 多隐藏层

2.6 调参(两种基本思路)

2.7 总结

3. 代码实现(pytorch)

3.1 从零实现

可能的报错与解法

3.2 简洁实现


原视频链接:10 多层感知机 + 代码实现 - 动手学深度学习v2_哔哩哔哩_bilibili

1. 感知机

XOR(异或)问题

  • 一个经典的非线性问题,它不能通过简单的线性分类器只能区分1个特征)来解决
  • 在二维空间中,XOR问题通常涉及两个轴(2个特征),其数据点分布在四个象限中;但属于同一类别的点并不是沿着任一单个轴排列的,而是以对角线的方式排列

2. 多层感知机

2.1 XOR(单分类)

  • 多层感知机就是组合多个 (相对简单的) 函数,进行更复杂的分类
  • 隐藏层(Hidden layer)的大小是超参数

  • 输入x:是n维向量
  • 单分类:通常指二分类,网络有一个输出节点,这个值被解释为属于某一类别的概率
  • 上图中的该神经网络具有一个输出层(Output layer),其中包含三个神经元(o1​, o2​, o3​),是多分类的配图
  • 输出层只有一个神经元的才是单分类!(也就是“学习XOR那张图”)

2.2 为何需要 (非线性) 激活函数?

如果忘记加激活函数(或者激活函数是线性的):

  • 输出层的每个神经元的输出将仅仅是输入的加权和
  • 最后的结果就变回了单层的(最简单的)感知机,模型还是简单线性的分类器

激活函数的作用:

  • 它决定了神经元是否应该被激活,即是否应该传递信号到下一层
  • 它对输入信号进行非线性变换

2.3 经典激活函数(Sigmoid、Tanh、ReLU)

  • 在双曲正切(tanh)激活函数中,参数 -2 是一个缩放因子,它用于控制函数的斜率或陡峭程度

李沐老师:

  • 如何让函数变成非线性?ReLU在0点拐个弯,就办到啦
  • ReLU函数的主要好处是算得快!(前两个激活函数用到的指数运算是很贵的,特别是在CPU上,在GPU上算指数也不便宜,还得是ReLU函数快好省~)
  • 因为ReLU很简单,大家用得多一点

2.4 多类分类

  • softmax 操作子:将所有输出拉(归一化)到 (0,1) 之间,所有输出之和为1
  • softmax 模型加一层隐藏层,模型的名字就会变成多层感知器

2.5 多隐藏层

2.6 调参(两种基本思路)

设置超参数(调参)需要凭借经验,(根据输入和输出的大小)有两种基本思路:

  1. 只设一个隐藏层,只有一层,根据输入和输出的大小,可大可小
  2. 不断提炼信息:深一点,设置多层,但一层比一层小(太大的话计算机吃不消),一般 m1 > m2 > m3 ... 越深越小

李沐老师

  • 机器学习的本质就是压缩,比如 图像 (输入复杂) 的分类 (输出简单)
  • 设置超参数,没有太多科学,纯粹靠手感 [ doge ]

2.7 总结

3. 代码实现(pytorch)

代码下载:《动手学深度学习》 — 动手学深度学习 2.0.0 documentation,网页上方点击jupyter记事本下载代码

3.1 从零实现

代码文件夹目录:chapter_multilayer-perceptrons/mlp-scratch.ipynb

可能的报错与解法

动手学深度学习-softmax-regression-concise-报错:AttributeError: ‘builtin_function_or_method‘ object has no-CSDN博客

3.2 简洁实现

李沐老师:

  • 多层感知机,对比softmax,从代码层面没有太多区别,只是多了一点点(隐藏层)
  • 这也是为啥大家都喜欢用mlp而不是svm
  • 再怎么改模型,调的东西并不多

(这侧面印证了“飞轮效应”)

标签:输出,1.6,函数,ReLU,感知机,多层,激活
From: https://blog.csdn.net/weixin_57972634/article/details/142332628

相关文章

  • 【机器学习(九)】分类和回归任务-多层感知机 (MLP) -Sentosa_DSML社区版
    文章目录一、算法概念二、算法原理(一)感知机(二)多层感知机1、隐藏层2、激活函数sigma函数tanh函数ReLU函数3、反向传播算法三、算法优缺点(一)优点(二)缺点四、MLP分类任务实现对比(一)数据加载和样本分区1、Python代码2、Sentosa_DSML社区版(二)模型训练1、Python代码2、Sent......
  • Ant select 选择器 地址联动 多层包裹
    //省<a-selectv-model:value="formState.address"style="width:180px;margin-right:20px":options="province.map((prov)=>({value:prov.name}))"......
  • 引言 -- 1.6 习题
    计算机系统可划分为哪几个层次,各层次之间的界面是什么?你认为这样划分层次的意义何在?在三台不同指令系统的计算机上运行同一程序P时,A机器需要执行1.0×10^9条指令,B机器需要执行2.0×10^9条指令,C机器需要执行3.0×10^9条指令,但三台机器的实际执行时间都是100秒。请分别计......
  • 酷柚易汛进销存​V1.6.2
    进销存管理系统,帮助中小企业实现进销存管理规范化,此系统能为你解决四大方面的经营问题:1.采购管理2.销售管理3.仓库管理4.资金管理,适用于:服装鞋帽、化妆品、机械机电、家具装潢、建材行业、快销品、母婴用品、办公用品、汽配汽修、生鲜农贸、手机通讯、数码家电、医药用品、制造业、......
  • 感知机--深度学习
    本章将介绍感知机A(perceptron)这一算法。感知机是由美国学者FrankRosenblatt在1957年提出来的。为何我们现在还要学习这一很久以前就有的算法呢?因为感知机也是作为神经网络(深度学习)的起源的算法。因此,学习感知机的构造也就是学习通向神经网络和深度学习的一种重要思想......
  • 【OCPP】ocpp1.6协议第5.16 Set Charging Profile章节的介绍及翻译
    目录5.16设置充电配置SetChargingProfile-概述主要内容1.概要2.操作流程3.参数说明4.配置示例实际应用结论5.16设置充电配置SetChargingProfile-原文译文5.16.1在订单开始时设置一个chargingprofile5.16.2在RemoteStartTransaction请求中设置一个charging......
  • IntelliJ IDEA 2024.1.6 (Ultimate Edition)中配置Java Web应用程序
    1. 前期准备工作已经下载安装了JDK(https://www.oracle.com/cn/java/technologies/javase/javase8u211-later-archive-downloads.html)和Tomcat(https://tomcat.apache.org/),并配置了环境变量(安装版的JDK和Tomcat不需要配置环境变量),注意JDK和Tomcat的版本号要相互适应。去官网下......
  • 感知机模型
    一、概述  感知机模型(PerceptronModel)也叫做神经元模型,设计灵感即来自于生物神经元的运行机制,依次完成信息接收、处理、输出的过程。当前大放异彩的各种人工神经网络模型即由一个个人工神经元构成,因此,本文介绍的感知机模型(神经元模型)就是各种神经网络模型的基本单元。二、......
  • 多层感知机的结构和原理
    多层感知机(MultilayerPerceptron,简称MLP)是最经典的前馈神经网络之一,广泛应用于分类、回归等任务。MLP是构建深度学习模型的基本组件,理解其结构和原理对于深入理解神经网络至关重要。1.多层感知机的结构MLP由以下几个部分组成:输入层(InputLayer):用于接收数据的输入,每个节......
  • 【机器学习】感知机
    1.感知机感知机是一个二分类的线性模型,它通过构造一个超平面,将特征空间中的样本分为两类。感知机的核心思想是找到一个超平面,使得不同类别的样本可以通过该超平面分开,适用于线性可分的数据集。优点:实现简单,易于理解和实现。在处理线性可分数据集时具有良好的表现。缺点......