吴恩达深度学习——超参数调试

news2025/2/2 20:20:49

内容来自https://www.bilibili.com/video/BV1FT4y1E74V,仅为本人学习所用。

文章目录

  • 超参数调试
    • 调试
    • 选择范围
  • Batch归一化
    • 公式
    • 整合
  • Softmax

超参数调试

调试

目前学习的一些超参数有学习率 α \alpha α(最重要)、动量梯度下降法 β \beta β(次重要)、Adam优化算法 β 1 \beta_1 β1 β 2 \beta_2 β2 ϵ \epsilon ϵ(这三个参数一般默认)、层数layers(次次重要)、不同层中的隐藏单元数量hidden units(次重要)、学习率衰减learning rate decay(次次重要)、小批量大小mini-batch size(次重要)。在这里插入图片描述

对于超参数的取值,如果有两个超参数,可以画一个网格,然后随机取值;如果有三个超参数,画一个立方体随机取值。

另外,可以从粗到细取值。在某个范围内取的超参数明显比周围的效果要好,那么可以在这个范围内细分取值。

在这里插入图片描述
在这里插入图片描述

选择范围

在这里插入图片描述

假设学习率在0.0001~1之间,那么不应该随机均匀取值,否则大部分数据落在0.1~1上,因此,使用对数标尺搜索超参数。 0.0001 = 1 0 − 4 , 1 = 1 0 0 , r ∈ [ − 4 , 0 ] 0.0001=10^{-4},1=10^0,r\in[-4,0] 0.0001=104,1=100,r[4,0]。在 r r r的范围内随机取值,然后使用对数重新映射到对数标尺上。

Batch归一化

在这里插入图片描述
对于单层神经网络,对参数 x x x归一化,可以方便算法优化。
在这里插入图片描述
对于多层神经网络比如 w [ 3 ] w^{[3]} w[3],是否可以对参数 a [ 2 ] a^{[2]} a[2]归一化? a [ 2 ] a^{[2]} a[2]来自于 z [ 2 ] z^{[2]} z[2],所以对 z [ 2 ] z^{[2]} z[2]进行归一化,称为Batch归一化。

公式

  1. 计算均值:对于给定的mini - batch数据(以神经网络某层输入 z ( 1 ) , z ( 2 ) , ⋯   , z ( m ) z^{(1)}, z^{(2)}, \cdots, z^{(m)} z(1),z(2),,z(m)为例, m m m是mini - batch大小),计算其均值 μ \mu μ μ = 1 m ∑ i = 1 m z ( i ) \mu=\frac{1}{m}\sum_{i = 1}^{m}z^{(i)} μ=m1i=1mz(i)
  2. 计算方差:计算mini - batch数据的方差 σ 2 \sigma^2 σ2 σ 2 = 1 m ∑ i = 1 m ( z ( i ) − μ ) 2 \sigma^2=\frac{1}{m}\sum_{i = 1}^{m}(z^{(i)} - \mu)^2 σ2=m1i=1m(z(i)μ)2
  3. 归一化:对每个数据点 z ( i ) z^{(i)} z(i)进行归一化,得到 z n o r m ( i ) = z ( i ) − μ σ 2 + ϵ z_{norm}^{(i)}=\frac{z^{(i)} - \mu}{\sqrt{\sigma^2+\epsilon}} znorm(i)=σ2+ϵ z(i)μ,其中 ϵ \epsilon ϵ是一个很小的正数(如 1 0 − 8 10^{-8} 108),防止分母为零。
  4. 尺度变换和偏移:引入可学习参数 γ \gamma γ(尺度参数)和 β \beta β(偏移参数),对归一化后的数据进行变换: z ^ ( i ) = γ z n o r m ( i ) + β \hat{z}^{(i)}=\gamma z_{norm}^{(i)}+\beta z^(i)=γznorm(i)+β
    如果 γ = σ 2 + ϵ , β = μ \gamma=\sqrt{\sigma^2+\epsilon},\beta=\mu γ=σ2+ϵ β=μ,有 z ^ ( i ) \hat{z}^{(i)} z^(i)= z ( i ) z^{(i)} z(i) γ 、 β \gamma、\beta γβ是新引入的超参数。

整合

在这里插入图片描述

输入层有 x 1 x_1 x1 x 2 x_2 x2 x 3 x_3 x3三个输入特征,经过两层隐藏层,每层有两个神经元,最终输出 y ^ \hat{y} y^。神经元中 z [ l ] z^{[l]} z[l]表示第 l l l层的线性输出, a [ l ] a^{[l]} a[l]表示第 l l l层的激活输出。

在每一层的线性输出 z [ l ] z^{[l]} z[l]之后进行Batch归一化(BN)操作,引入可学习参数 β [ l ] \beta^{[l]} β[l] γ [ l ] \gamma^{[l]} γ[l],归一化后再经过激活函数得到 a [ l ] a^{[l]} a[l]。图中红色波浪线部分表示Batch归一化的处理位置。

在神经网络中,某层的线性输出原本为 z = W x + b z = Wx + b z=Wx+b 。当进行Batch归一化时,由于后续的 β \beta β(偏移参数)也起到了类似 b b b的添加偏移量的作用,所以从效果上看, b b b的作用被 β \beta β替代了。也就是说, b b b对输入数据所做的添加偏移量的操作,在Batch归一化后的 β \beta β操作中可以等效实现,因此在实际计算中可以将 b b b消去,简化计算过程。

在实际应用中,由于样本是mini-Batch,因此,归一化时可以使用指数加权平均来计算 μ \mu μ σ 2 \sigma^2 σ2

Softmax

之前的分类采用二分分类,这种分类只有0和1两种标记。如果我们需要更多的标记,可以使用Softmax回归来识别多种分类中的一个。

在这里插入图片描述

对于识别猫、狗、小鸡以及其他类别,总共有 C = 4 C = 4 C=4个类别,分别用0(其他)、1(猫)、2(狗)、3(小鸡)表示。下方的神经网络架构,输入 X X X经过多个隐藏层,最终输出层有 n [ L ] = 4 n^{[L]} = 4 n[L]=4个神经元,分别对应输入图像属于“其他”“猫”“狗”“小鸡”这四类的概率 P ( o t h e r ∣ x ) P(other|x) P(otherx) P ( c a t ∣ x ) P(cat|x) P(catx) P ( d o g ∣ x ) P(dog|x) P(dogx) P ( b c l ∣ x ) P(bcl|x) P(bclx),输出 y ^ \hat{y} y^代表预测的类别。

对于 z [ l ] = W [ l ] a [ l − 1 ] + b [ l ] z^{[l]} = W^{[l]}a^{[l - 1]}+b^{[l]} z[l]=W[l]a[l1]+b[l] ,使用Softmax作为激活函数。先对 z [ l ] z^{[l]} z[l]进行指数运算得到 t = e z [ l ] t = e^{z^{[l]}} t=ez[l] ,然后通过Softmax公式计算激活输出 a [ l ] a^{[l]} a[l] a [ l ] = e z [ l ] ∑ j = 1 4 t i a^{[l]}=\frac{e^{z^{[l]}}}{\sum_{j = 1}^{4}t_{i}} a[l]=j=14tiez[l] ,其元素 a i [ l ] = t i ∑ j = 1 4 t i a_{i}^{[l]}=\frac{t_{i}}{\sum_{j = 1}^{4}t_{i}} ai[l]=j=14titi ,将线性输出转换为概率分布。

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

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

相关文章

【赵渝强老师】K8s中Pod探针的ExecAction

在K8s集群中,当Pod处于运行状态时,kubelet通过使用探针(Probe)对容器的健康状态执行检查和诊断。K8s支持三种不同类型的探针,分别是:livenessProbe(存活探针)、readinessProbe&#…

如何对系统调用进行扩展?

扩展系统调用是操作系统开发中的一个重要任务。系统调用是用户程序与操作系统内核之间的接口,允许用户程序执行内核级操作(如文件操作、进程管理、内存管理等)。扩展系统调用通常包括以下几个步骤: 一、定义新系统调用 扩展系统调用首先需要定义新的系统调用的功能。系统…

安卓(android)订餐菜单【Android移动开发基础案例教程(第2版)黑马程序员】

一、实验目的(如果代码有错漏,可查看源码) 1.掌握Activity生命周的每个方法。 2.掌握Activity的创建、配置、启动和关闭。 3.掌握Intent和IntentFilter的使用。 4.掌握Activity之间的跳转方式、任务栈和四种启动模式。 5.掌握在Activity中添加…

Python安居客二手小区数据爬取(2025年)

目录 2025年安居客二手小区数据爬取观察目标网页观察详情页数据准备工作:安装装备就像打游戏代码详解:每行代码都是你的小兵完整代码大放送爬取结果 2025年安居客二手小区数据爬取 这段时间需要爬取安居客二手小区数据,看了一下相关教程基本…

happytime

happytime 一、查壳 无壳,64位 二、IDA分析 1.main 2.cry函数 总体:是魔改的XXTEA加密 在main中可以看到被加密且分段的flag在最后的循环中与V6进行比较,刚好和上面v6数组相同。 所以毫无疑问密文是v6. 而与flag一起进入加密函数的v5就…

深度学习 DAY3:NLP发展史

NLP发展史 NLP发展脉络简要梳理如下: (远古模型,上图没有但也可以算NLP) 1940 - BOW(无序统计模型) 1950 - n-gram(基于词序的模型) (近代模型) 2001 - Neural language models&am…

家居EDI:Hom Furniture EDI需求分析

HOM Furniture 是一家成立于1977年的美国家具零售商,总部位于明尼苏达州。公司致力于提供高品质、时尚的家具和家居用品,满足各种家庭和办公需求。HOM Furniture 以广泛的产品线和优质的客户服务在市场上赢得了良好的口碑。公司经营的产品包括卧室、客厅…

【08-飞线和布线与输出文件】

导入网表后 1.复制结构图(带板宽的) 在机械一层画好外围线 2.重新定义板子形状(根据选则对象取定义) 选中对象生成板子线条形状 3.PCB和原理图交叉选择模式 过滤器选择原理图里的元器件 过滤器"OFF",只开启Componnets,只是显示元器件 4. 模块化布局 PCB高亮元…

【单细胞第二节:单细胞示例数据分析-GSE218208】

GSE218208 1.创建Seurat对象 #untar(“GSE218208_RAW.tar”) rm(list ls()) a data.table::fread("GSM6736629_10x-PBMC-1_ds0.1974_CountMatrix.tsv.gz",data.table F) a[1:4,1:4] library(tidyverse) a$alias:gene str_split(a$alias:gene,":",si…

ZZNUOJ(C/C++)基础练习1031——1040(详解版)

1031 : 判断点在第几象限 题目描述 从键盘输入2个整数x、y值,表示平面上一个坐标点,判断该坐标点处于第几象限,并输出相应的结果。 输入 输入x,y值表示一个坐标点。坐标点不会处于x轴和y轴上,也不会在原点。 输出 输出…

【C语言】main函数解析

文章目录 一、前言二、main函数解析三、代码示例四、应用场景 一、前言 在学习编程的过程中,我们很早就接触到了main函数。在Linux系统中,当你运行一个可执行文件(例如 ./a.out)时,如果需要传入参数,就需要…

深度学习练手小例子——cifar10数据集分类问题

CIFAR-10 是一个经典的计算机视觉数据集,广泛用于图像分类任务。它包含 10 个类别的 60,000 张彩色图像,每张图像的大小是 32x32 像素。数据集被分为 50,000 张训练图像和 10,000 张测试图像。每个类别包含 6,000 张图像,具体类别包括&#x…

【Git】初识Git Git基本操作详解

文章目录 学习目标Ⅰ. 初始 Git💥注意事项 Ⅱ. Git 安装Linux-centos安装Git Ⅲ. Git基本操作一、创建git本地仓库 -- git init二、配置 Git -- git config三、认识工作区、暂存区、版本库① 工作区② 暂存区③ 版本库④ 三者的关系 四、添加、提交更改、查看提交日…

【JavaEE进阶】应用分层

目录 🎋序言 🍃什么是应用分层 🎍为什么需要应用分层 🍀如何分层(三层架构) 🎄MVC和三层架构的区别和联系 🌳什么是高内聚低耦合 🎋序言 通过上⾯的练习,我们学习了SpringMVC简单功能的开…

【数据结构篇】时间复杂度

一.数据结构前言 1.1 数据结构的概念 数据结构(Data Structure)是计算机存储、组织数据的⽅式,指相互之间存在⼀种或多种特定关系的数 据元素的集合。没有⼀种单⼀的数据结构对所有⽤途都有⽤,所以我们要学各式各样的数据结构, 如&#xff1a…

【数据结构】_链表经典算法OJ(力扣/牛客第二弹)

目录 1. 题目1:返回倒数第k个节点 1.1 题目链接及描述 1.2 解题思路 1.3 程序 2. 题目2:链表的回文结构 2.1 题目链接及描述 2.2 解题思路 2.3 程序 1. 题目1:返回倒数第k个节点 1.1 题目链接及描述 题目链接: 面试题 …

深度学习之“缺失数据处理”

缺失值检测 缺失数据就是我们没有的数据。如果数据集是由向量表示的特征组成,那么缺失值可能表现为某些样本的一个或多个特征因为某些原因而没有测量的值。通常情况下,缺失值由特殊的编码方式。如果正常值都是正数,那么缺失值可能被标记为-1…

MYSQL--一条SQL执行的流程,分析MYSQL的架构

文章目录 第一步建立连接第二部解析 SQL第三步执行 sql预处理优化阶段执行阶段索引下推 执行一条select 语句中间会发生什么? 这个是对 mysql 架构的深入理解。 select * from product where id 1;对于mysql的架构分层: mysql 架构分成了 Server 层和存储引擎层&a…

C++解决输入空格字符串的三种方法

一.gets和fgets char * gets ( char * str ); char * fgets ( char * str, int num, FILE * stream ); 1. gets 是从第⼀个字符开始读取,⼀直读取到 \n 停⽌,但是不会读取 \n ,也就是读取到的内容 中没有包含 \n ,但是会在读取到的内…

多模态论文笔记——NaViT

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细解读多模态论文NaViT(Native Resolution ViT),将来自不同图像的多个patches打包成一个单一序列——称为Patch n’ Pack—…