动手学深度学习(第二版)学习笔记 第三章

news2024/11/16 5:39:32

第三章 线性神经网络

代码:d2l-zh/pytorch/chapter_linear-networks

3.1 线性回归

3.1. 线性回归 — 动手学深度学习 2.0.0 documentation

解析解

线性回归的解可以用一个公式简单地表达出来,这类解叫作解析解(analytical solution)。
首先,我们将偏置b合并到参数w中,合并方法是在包含所有参数的矩阵中附加一列。我们的预测问题是最小化。
这在损失平面上只有一个临界点,这个临界点对应于整个区域的损失极小点。
将损失关于 ∣ ∣ y − X w ∣ ∣ 2 ||\bold y-\bold Xw||^2 ∣∣yXw2的导数设为0,得到解析解:

w ∗ = ( X T X ) − 1 X T y \bold w^*=(\bold X^T \bold X)^{-1} \bold X^T \bold y w=(XTX)1XTy

像线性回归这样的简单问题存在解析解,但并不是所有的问题都存在解析解。解析解可以进行很好的数学分析,但解析解对问题的限制很严格,导致它无法广泛应用在深度学习里。

随机梯度下降

算法的步骤如下: (1)初始化模型参数的值,如随机初始化; (2)从数据集中随机抽取小批量样本且在负梯度的方向上更新参数,并不断迭代这一步骤。

最优化方法一:梯度下降法_意念回复的博客-CSDN博客_梯度下降优化算法

矢量化加速

SIMD

在训练我们的模型时,我们经常希望能够同时处理整个小批量的样本。 为了实现这一点,需要我们对计算进行矢量化, 从而利用线性代数库,而不是在Python中编写开销高昂的for循环。

%matplotlib inline
import math
import time
import numpy as np
import torch

n = 10000
a = torch.ones([n])
b = torch.ones([n])

c = torch.zeros(n)
timer = Timer()
for i in range(n):
    c[i] = a[i] + b[i]
f'{timer.stop():.5f} sec'
# '0.09661 sec'

timer.start()
d = a + b
f'{timer.stop():.5f} sec'

# '0.00021 sec'

结果很明显,第二种方法比第一种方法快得多。 矢量化代码通常会带来数量级的加速。 另外,我们将更多的数学运算放到库中,而无须自己编写那么多的计算,从而减少了出错的可能性。

3.2 线性回归的从零开始实验

3.2. 线性回归的从零开始实现 — 动手学深度学习 2.0.0 documentation

课后题

如果我们将权重初始化为零,会发生什么。算法仍然有效吗?

谈谈神经网络权重为什么不能初始化为0

在单层网络中(一层线性回归层),将权重初始化为零时可以的,但是网络层数加深后,在全连接的情况下,在反向传播的时候,由于权重的对称性会导致出现隐藏神经元的对称性,使得多个隐藏神经元的作用就如同1个神经元,算法还是有效的,但是效果不大好。

3.3 线性回归的简洁实现

3.3. 线性回归的简洁实现 — 动手学深度学习 2.0.0 documentation

为什么机器学习优化算法都采取梯度下降(一阶导算法),而不采用牛顿法(二阶导算法),收敛速度更快,一般能算出一阶导, 二阶导也应该能算。

为什么机器学习中通常使用梯度下降进行训练

高阶导数信息的准确估计需要训练数据的批量更大

复杂高维神经网络的代价函数具有极多鞍点使高阶方法失效

其实核心还是神经网络参数数量大造成高阶方法计算、存储成本难以接受

如果样本大小不是批量数的整数倍,那需要随机剔除多余的样本吗?

如果是100个样本且batchsize=60 :

(1)就取剩下的40个(2)丢掉剩下的40个(3)从下一个epoch再补20个

3.4 softmax回归

在这里插入图片描述

全连接层的参数开销

正如我们将在后续章节中看到的,在深度学习中,全连接层无处不在。 然而,顾名思义,全连接层是“完全”连接的,可能有很多可学习的参数。 具体来说,对于任何具有 d d d个输入和 q q q个输出的全连接层, 参数开销为 O ( d q ) O(dq) O(dq),这个数字在实践中可能高得令人望而却步。 幸运的是,将 d d d个输入转换为 q q q个输出的成本可以减少到 O ( d q n ) O(\frac{dq}{n}) O(ndq), 其中超参数 n n n可以由我们灵活指定,以在实际应用中平衡参数节约和模型有效性。

softmax运算

在这里插入图片描述

Huber’s Robust Loss

在这里插入图片描述

3.7 softmax回归的简洁实现

重新审视Softmax的实现

在这里插入图片描述

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

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

相关文章

深度学习实战19(进阶版)-SpeakGPT的本地实现部署测试,基于ChatGPT在自己的平台实现SpeakGPT功能

大家好,我是微学AI,今天给大家带来SpeakGPT的本地实现,在自己的网页部署,可随时随地通过语音进行问答,本项目项目是基于ChatGPT的语音版,我称之为SpeakGPT。 ChatGPT最近大火,其实在去年12月份…

「架构」全链路异步模式

总结自尼恩的全链路异步:网关纯异步化网关层的特点:不需要访问业务数据库只做协议转换和流量转发特点是 IO 密集型,特别适合纯异步的架构,可以极大的节省资源。如何进行网关异步化?使用高性能的通信框架Netty&#xff…

CSS3新增的视口单位Vh、Vw单位

定义vw:浏览器可见视口【宽度】的百分比(1vw代表视窗【宽度】的1%)vh:浏览器可见视口【高度】的百分比(1vw代表视窗【高度】的1%)vmin:当前 vw 和 vh 较小的一个值。vmax:当前 vw 和…

现在入行软测=49年入国军?三句话,让面试官再掏2K!

还有三五天就步入金三银四,很多软测人吐槽因为疫情,公司都在裁员,别说跳槽涨薪,能保住现在的工作就不错了。但也有那么一批人,凭借自己口才与实力拿到年薪近50W的offer。面试是初见1小时就要相互了解优缺点的过程&…

软考知识笔记 2023.2.24 2018下半年真题

答案: A BIOS (BasicInputOutputSystem) (基本输入输出系统) 是一组固化到计算机内主板上一个ROM芯片上的程序, 它保存着计算机最重要的基本输入输出的程序, 开机后自检程序和系统自启动程序, 它可从CMOS中读写系统设置的具体信息…

SpringBoot整合(六)多数据源和 JPA、MyBatis、JdbcTemplate 的集成

在springboot项目中,我们可能会碰到需要多数据源的场景。例如说: 读写分离:数据库主节点压力比较大,需要增加从节点提供读操作,以减少压力。多数据源:一个复杂的单体项目,因为没有拆分成不同的…

PPP简介,PPP分层体系架构,PPP链路建立过程及PPP的帧格式

PPP(Point-to-Point Protocol)是一种用于在两个网络节点之间传输数据的通信协议。它最初是为在拨号网络上进行拨号连接而开发的,现在已经被广泛应用于各种网络环境中,例如在宽带接入、虚拟专用网(VPN)等场景…

在linux中使用lftp和sftp下载文件(夹)

一、首先确保你的系统中已经下载了lftp和sftp。 1.安装lftp sudo apt install lftp sudo apt install screen 2.安装sftp 在Linux系统中,一般RedHat系统默认已经安装了openssh-client和openssh-server,即默认已经集成了sftp服务,不需要重…

LVGL8.3 集成 ST7789V 显示驱动和 CST816T 触摸屏驱动

LVGL8.3 集成 ST7789V 显示驱动和 CTS816S 触摸屏驱动起因效果(正常显示,触摸屏可调换X,Y轴)使用方式前提操作步骤最后参考起因 LVGL的ESP32 Drivers库中已经包含了大多数显示和触摸芯片的驱动,基本上只需要在MenuCon…

高级前端面试题汇总

iframe 有那些优点和缺点? iframe 元素会创建包含另外一个文档的内联框架(即行内框架)。 优点: 用来加载速度较慢的内容(如广告)可以使脚本可以并行下载可以实现跨子域通信 缺点: iframe 会…

【ssm框架】从0开始搭建ssm框架(idea版本)

SSM(SpringSpringMVCMyBatis)框架集由Spring、MyBatis两个开源框架整合而(SpringMVC是Spring中的部分内容),常作为数据源较简单的web项目的框架。 一、 环境介绍 先创建一个web工程。这里使用SSM最终完成一个员工信息的…

驾驭云端之风1——Spring Cloud微服务架构实践指南

本博客纯属个人总结,非原创。喜欢技术交流的,可关注博主,武汉有后端开发群,可支持内推,了解武汉行情等。 前沿 优惠卷平台项目的整体功能和模块,以及每个功能点的技术选型和背后的依据。 搭建一个简化版的…

窃密恶意软件Raccoon最新样本Stealer v2分析

Raccoon 是一个恶意软件家族,2019 年来一直在地下犯罪论坛中以恶意软件即服务的身份进行售卖。2022 年 7 月,该恶意软件家族发布了 C 语言编写的新版本 Raccoon Stealer v2,打破了以往使用 C 开发的传统。 Raccoon 是一个信息窃密恶意软件&a…

JavaEE高阶---Redis

一:缓存简介 1.1 缓存定义 缓存是一个高速数据交换的存储器,使用它可以快速的访问和操作数据 . 1.2 程序中的缓存 当没有使用缓存时 : 但随着业务的发展,公司的框架慢慢变成了多个程序调用一个数据库的情况了: 这是大部分公司的普遍的架构…

设备加密狗

场景描述 随着科技的飞速发展,越来越多的智能设备走进生产加工车间。例如智能雕刻机、钣金机、榫槽机、钻孔机、磨刀机等等。 这些智能设备存在很大共性,就是都内嵌完整的操作系统。有的是windows,有的是linux。设备制造商提供的专业软件运…

pycharm的下载讲解以及安装步骤

目录 Python安装 这时,有人要问了,下载pycharm一定要下载Python么? Python官网 Pycharm安装 完成 推荐书籍 写在最后 Python安装 首先我们进入Python的官方下载网站 这时,有人要问了,下载pycharm一定要下载Py…

算法设计与分析期末考试复习(五)

回溯法 回溯法是一种试探法,将n元问题P的状态空间E表示成为一棵高为n的带权有序数T,把在E中求问题P的解转换为在T中搜索问题P的解。 解题方法:按选优条件对T进行深度优先搜索,以达到目标。 从根节点出发深度优先搜索解空间树。当…

初学网络安全不可不知的:10款开源安全工具

随着互联网的不断发展,安全问题也越来越受到企业的重视。但安全问题往往需要大量资金的投入,例如聘请安全工程师,产品研发,测试等流程。这对于那些原本就资金紧缺的企业而言,是绝对无法接受的。因此,为了减…

Python3+Selenium3自动化测试-(准备)

最近在学习selenium自动化测试相关的内容,所以将实际准备情况做一记录, # 系统:win10(64位) # 浏览器:Chrome(67.0)、Firefox(61.0)、IE # python版本:3.6.5 # Selenium:3.13.0Selenium简介 Selenium是一…

JUC并发编程——线程安全问题

目录一、共享问题1.1 共享带来的问题1.2 临界区与竞态条件二、解决方案2.1 上下文切换——synchronized-解决2.2 上下文切换——synchronized-理解2.3 上下文切换——synchronized-思考2.4 锁面向对象改进2.5 方法上的 synchronized三、synchronized习题3.1 synchronized-加在方…