人工智能之深度学习笔记——每天五分钟快速掌握深度学习理论

news2024/11/22 15:38:48

本专栏会对深度学习以及深度学习搭建技巧做一个详尽的介绍,相信大家阅读完本专栏之后,深度学习已经不是一个遥不可及的名词,我们会知道它究竟是什么,本专栏尽可能地简单详细地介绍每一个深度学习知识,帮助每天只用很少的时间就可以掌握它。下面介绍一下从本专栏中,你都可以获取到什么?以下就是本专栏将会讲解的,如果你对深度学习感兴趣,那么欢迎订阅。

深度学习的概述

深度学习和机器学习有什么区别呢?最主要的区别就是模型的不同,深度学习主要使用神经网络算法模型,而机器学习就不是了,我们前面学习过逻辑回归就是机器学习算法模型。所以我们学习深度学习最主要的就是学习神经网络。

我们首先简单的介绍了一下深度学习这门课程要学习什么?然后从房价预测例子入手引出什么是神经网络?然后我们可以知道使用神经网络进行监督学习。

神经网络的基础

从这里我们开始学习神经网络了,但是我们必须要学习一下相关的基础,比如我们要学习神经网络中常用的符号表示,以及图片这种非结构化的数据如何在计算机中向量化表示,以及我们输入到神经网络中的样本X如何矩阵表示,以及标签y应该如何表示。

神经网络和逻辑回归算法有着很大的关联,所以我们从逻辑回归开始引入神经网络,所以我们温习一下机器学习算法——逻辑回归算法,然后神经网络优化也需要梯度下降,所以我们要温习一下梯度下降算法,这些算法在机器学习专栏中都进行了介绍,这里只是简单的回顾。

要想优化神经网络需要一个算法叫做反向传播,反向传播的核心就是链式求导,所以这里我们学习一下数学中的导数。然后反向传播是按照什么规则反向传播的呢?核心就是计算图,这里我们介绍计算图以及如何按照计算图完成梯度下降,你就知道神经网络反向传播的原理了。

如果一个样本一个样本的直接进行梯度下降计算速度会太慢,那么是否可以同时多个样本完成呢?当然可以,这里我们会学习到向量化技术,可以帮助我们完成多个样本的梯度下降任务,当然在实际深度学习框架中,也是这么做的,这里会介绍一些公式,但是我的意思就是想让大家理解,不要害怕,因为在实际的使用中,深度学习框架都帮助我们做好了。

要想学习深度学习,理论是一方面,另外一方面就是实践了,所以我们需要学习一门语言,python,有兴趣的可以看《每天五分钟python专栏》,这里会对python和numpy以及jupyter notebook进行简单的介绍

浅层神经网络

我们前面学习了神经网络基础,那么从这一章节开始,我们需要学习神经网络了,不过我们本章节学习的神经网络都是浅层的神经网络,什么是浅层的神经网络呢?就是层数不超过两层的神经网络(神经网络的层数不包括输入层)。

我们说过神经网络和逻辑回归充满着联系,所以我们通过逻辑回归引出了神经网络,我们可以简单的理解神经网络就是多个逻辑回归的叠加,我们可以通过逻辑回归的前向传播算法推导出神经网络的前向传播算法,我们也可以通过逻辑回归的反向传播算法推导出神经网络的反向传播算法。

下面我们将会学习神经网络的前向传播(从单样本到多项本向量化逐级开始)

本节课程详细介绍了神经网络的前向传播算法,更加具体的说是单样本的前向传播的过程的介绍

在神经网络中有一个强大的函数叫做激活函数,我们将介绍几种经典的神经网络的激活函数,并且介绍每种激活函数的优缺点,并且介绍什么时候使用哪种激活函数更加适合我们的需求。

我们构建神经网络的时候不使用激活函数不行吗?为什么非要使用非线性激活函数呢?本节课程将告诉你我们的神经网络中使用激活函数的原因。

我们在进行神经网络的反向传播过程中,使用链式求导法则,其中就要对激活函数对z求导,所以激活函数的求导是我们必须要掌握的内容,本节课程我们将介绍一些经典的激活函数的导数是什么?

前向传播介绍完了,不要忘记还有反向传播和梯度下降,这里我们将学习神经网络的反向传播和梯度下降,其实当你掌握逻辑回归的时候,神经网络也就掌握了。

当我们构建神经网络的时候,我们需要进行参数初始化的工作,那么我们是否可以将参数初始化为0呢?答案是不可以,为什么会不可以呢?本节课程告诉你。

深层神经网络

前面我们介绍了神经网络,不过是浅层的,我们本章更近一步,我们介绍深层神经网络,我们可以暂时简单的理解为超过两个隐藏层的神经网络,我们称它为深层神经网络

我们将学习深层神经网络的前向传播和反向传播,其实它和浅层的神经网络的前向传播和反向传播是一样的,只不过它多了几个隐藏层,多传播几层罢了。所以不用担心

我们前面已经学习了浅层神经网络,那么为什么我们需要使用深层神经网络呢?换句话说深层神经网络带给我们的好处是什么呢?本节课程告诉你。

现在神经网络的核心也就是前向传播和反向传播全部完成了,但是我们需要知道的是,神经网络在反向传播和前向传播向量化的时候,每一个矩阵的维度我们都需要特别的注意,因为一旦维度出现问题,那么程序就一定会出现问题,本节课程将总结神经网络中向量化过程中所有矩阵的维度。

最后我们将学习到一个新的概念参数和超参数,深度神经网络中有非常多的参数,我们将决定参数的参数称为超参数,那么超参数有哪些呢?详细课程内容会告诉你。也就是说我们调参就是调这些超参数。

深度学习的应用

神经网络的主要理论前向传播、反向传播、梯度下降介绍完了,下面再神经网络应用的时候,我们有哪些知识需要学习?

首先是数据集的问题,当我们有一个数据集的时候,我们应该如何划分这个数据集中训练集、验证集和测试集的比例。

在神经网络训练的过程中,有可能出现过拟合和欠拟合的问题,那么我们如何判断神经网络出现哪个问题了呢?我们将什么是偏差以及什么是方差,如何使用训练集误差和验证集误差来帮助我们判断我们的算法所出现的高偏差和高方差问题,并如何利用高偏差和高方差来找到一个最好的神经网络,以及如何使用正则化或者dropout技术来结果高方差(过拟合)的问题

数据处理我们需要知道的是,当我们的数据样本中特征差距很大的时候,我们需要进行归一化输入,而且归一化输入还能帮助神经网络更快的训练。

神经网络训练的时候,可能会发生梯度消失还有梯度爆炸的情况,原因是什么?我们可以用初始化的方式来解决,神经网络的权重初始化是不能随便初始化的,这里介绍一种初始化的方式,这种初始化方式可以尽量避免发生神经网络的梯度消失和梯度爆炸的情况。

神经网络的优化

当我们拥有了神经网络模型之后,我们将数据喂入到神经网络中,那么此时就可以让神经网络学习数据了,那么怎么学习呢?也就是如何优化呢?就是通过梯度下降算法,我们需要知道的是梯度下降算法是一种优化方法的统称,它有好多种梯度下降的方式,这里我们会学习到:Mini-batch梯度下降、动量梯度下降法、RMSprop、Adam 优化算法

当我们学习到这里的时候,我们会知道有一个超参数非常的重要,那个超参数就是学习率,学习率是梯度下降的一个非常重要的内容,那么我们如何使用学习率衰减来训练我们的神经网络,我们这里会进行介绍

神经网络经常会遇到局部最优的问题,其实局部最优也不是主要的问题,那么什么才是神经网络训练的时候会遇到的问题。我们如何才能解决这个问题。

调参技巧和归一化技术

本章节我们将学习调参技巧了,在深度学习中会有很多的超参数,我们需要调参从而找到最适合我们数据的参数,本节课程介绍了神经网络中比较重要的超参数,以及如何使用随机选择的方法来进行调参。

在超参数调参的时候,我们不能无限范围内调,这样范围太大,正确的做法是我们应该在一定范围内均匀选择参数。但有些超参数如果在某一范围内均匀调参,那么就会出现问题,比如超参数a,这个应该如何选择参数呢?

之后我们会学习归一化技术,它可以解决神经网络难以训练的问题,从而加快神经网络的训练。然后讲解mini-batch和batch归一化的结合,从而讲解整个神经网络的训练,将 Batch Norm 拟合进神经网络。我们知道batch归一化能够加快神经网络的训练,那么为什么它就能够加快呢?它的原理是什么?使用batch归一化训练好神经网络之后,那么测试的时候我们的样本应该如何处理呢?

我们使用神经网络常常处理多分类问题,那么我们可以使用softmax回归,其实他就是逻辑回归的扩展,我们将学习带有Softmax的分类器的前向传播和反向传播

机器学习策略

如何让我们的模型朝着更好的方向发展呢?我们将学习一些策略,他能够帮助我们的模型朝着更好的方向进行优化。

首先我们先来学习正交化的思想,也就是从四个维度来对算法模型进行优化,这四个维度分别为训练集、开发集、测试集以及用户效果,这四个维度相互之间互不影响,调节一个维度其它维度的效果并不会发生任何影响,这就是正交化的思想。

当我们模型进行调参的时候,此时我们相当于得到了一个新的模型,那么如何评估这个模型变好还是变坏呢?我们可以使用单一数字评估的指标来完成这个任务,这个数字提升了,那么我们就可以认为模型变好了,如果这个数字降低了,那么我们就可以认为这个模型变坏了。

但是实际上单一的评估指标可能并不能很好的反应算法的好坏,我们可以需要多个指标来完成评估的任务,但是这么多个指标中肯定有一个最优的指标,所以我们的任务是先确定一个最优的指标,如果两个模型最优指标想接近,那么我们需要让其它的指标尽量满足,这个其它指标就称为满足指标。

我们前面已经学习了数据的分割了,这里我们需要注意的是,而且知道了开发集(交叉验证集)需要和测试集在同一分布下,这里我们将会介绍一下为什么要这样做?

在实际开发过程中,可能你的指标在一直变换,最佳的指标就是最符合用户利益的指标,这就是我们设定指标的核心思想。

算法的性能不会无限的提升,当它们提升到人类的水平的时候,可能就得到了一个天花板,此时,算法的提升就会变得很困难,这就是所谓的贝叶斯最优错误率。怎样定义人类的贝叶斯最优错误率是多少?这个很重要,因为人和人都不一样,团队和团队都不一样,贝叶斯最优错误率的高低直接决定了可避免偏差的大小,这个很重要

训练集上的错误率-贝叶斯最优错误率=可避免偏差

开发集错误率-训练集错误率=方差

我们前面已经知道了,训练集上的错误率-贝叶斯最优错误率=可避免偏差,但是机器学习在某些领域已经全面的超越人类

解决偏差问题:使用更大规模的模型,更久的训练,使用更好的优化算法,比如Adam,

寻找新的神经网络架构(卷积神经网络或者循环神经网络),或者说更好的超参数,改变激活函数,改变隐藏层数或者隐藏层神经元的数量

解决方差问题:收集更多的数据,正则化,数据增强,尝试不同的网络架构,不同的超参数

当我们在调试算法模型的时候,我们可以使用高偏差和高方差的两个角度来解决算法所遇到的问题,还有一种方法就是使用误差分析的方法,也就是我们人为的统计出哪些数据出现了问题,出现问题的原因是什么,我们对其进行统计,从而算法模型进行针对性优化操作。

我们知道对于监督学习而言,数据是由样本特征x和标签y来构成的,如果此时样本标签标记错误,我们应该怎么办呢?我们会进行介绍

当搭建一个神经网络的时候,我们首先要做的就是快速建立开发集和测试集还有指标(指标随时可以进行修改),然后使用训练集上训练一下,然后看看在开发集上表现如何(看看开发集上的指标,这个指标决定了当前模型的好坏),然后配合使用偏差方差、分析以及错误分析来确定下一步来干什么,然后快速的进行下一轮的迭代操作,对新模型用指标评价,看看这个模型是否变得好了

我们使用

训练集上的错误率-贝叶斯最优错误率=可避免偏差

开发集错误率-训练集错误率=方差错误率

来判断算法出现为高偏差问题还是高方差问题,但这是训练集、开发集和测试集都在同一分布的方式,要是训练集和开发集以及测试集不在同一分布的时候,我们还需要使用一种其它的技巧来处理这个问题。

此时我们应该在训练集中随机取出一小部分的数据集,我们称它为训练——开发集,这是一个全新的数据子集,这部分不会训练你的神经网络。

此时训练集和训练——开发集在同一分布。开发集和测试集在同一分布。现在我们就可以计算以下几个:

训练集误差-贝叶斯错误率=偏差大小

训练、开发集误差-训练集误差=方差大小

开发集误差-训练、开发集误差=数据不匹配问题的大小

测试集误差-开发集误差=数据对开发集的过拟合程度

我们现在可以构建出一个这样的表格,以语音后车镜为例,这个表格横轴是两个数据(1、2),第一个数据是非专业的后车镜语音数据,这个数据很多,另外一个数据是专业的后车镜数据。

如果我们的算法模型出现了数据不匹配的问题,我们应该如何才能处理这个问题呢?

一般我们需要亲自去看一下训练集和开发集上的具体差异。这里要注意一点,为了避免在测试集过拟合,我们需要看训练集和开发集的具体差异,而不是训练集和测试集之间的差异。

然后我们要针对这个数据差异,专门收集更多的数据,将数据放到训练集中

我们以前建立一个神经网络只是为了解决一个任务,比如识别出这张图片是猫还是狗,本节课程我们将学习多任务学习。

以前有一些数据处理系统或者学习系统,它们需要多个阶段的处理。那么端到端深度学习就是忽略所有这些不同的阶段,用单个神经网络代替它。那么它有什么优点和缺点呢?

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

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

相关文章

Day78:服务攻防-数据库安全RedisCouchDBH2database未授权访问CVE漏洞

目录 前置知识 数据库应用-Redis-未授权访问&CVE漏洞 未授权访问:CNVD-2015-07557 未授权访问-CNVD-2019-21763 未授权访问-沙箱绕过RCE-CVE-2022-0543 数据库应用-Couchdb-未授权越权&CVE漏洞 Couchdb 垂直权限绕过(CVE-2017-12635&…

数据结构-链表的基本操作

前言: 在dotcpp上碰到了一道题,链接放这了,这道题就是让你自己构建一遍链表的创建,插入节点,删除节点,获取节点,输出链表,题目给了几张代码图,不过不用管那些图&#xf…

k8s 经常操作指令

发现有个技巧:get、describe、edit ...操作指令后,都对应的相应的资源类型/资源 编辑deployment,查看其中部署的容器 kubectl edit deploy -n namespace pod名前缀(不带hash) 注: 带hash的具体pod&…

如何让光猫4个网口都有网络

一般情况光猫只有LAN1口有网络,LAN2、LAN3和LAN4口都是预留给电视用的,那么如何让这3个网口也有网络呢? 使用场景: 光猫在弱电箱内,弱电箱中有三根网线(网线1、网线2和网线3)分别接入到了三个房…

IP地址与子网掩码

1 IP地址 1.1 IPv4与IPv6 1.2 IPv4地址详解 IPv4地址分4段,每段8位,共32位二进制数组成。 1.2.1 地址分类 这32位又被分为网络号和主机号两部分,根据网络号占用位数的不同,又可分为以下几类: A类地址:…

蓝桥杯(更新中)

递归与递推 递归 1.指数型枚举 解析:从 1 ∼ n 这 n 个整数中随机选取任意多个,输出所有可能的选择方案。 思路:枚举每一位对应的数字选与不选,例如:第一位对应的数字为1,有一种方案是选1,另…

解决报错——使用sqlite的扩展Spatialite

正文 笔者想使用sqlite3的扩展Spatiate 代码如下。 import sqlite3 conn sqlite3.connect(database.db) conn.enable_load_extension(True) conn.load_extension("mod_spatialite") 结果如下。 找不到指定模块。 笔者在网上到处搜索,终于解决了。&a…

电磁兼容(EMC):静电放电(ESD)抗扰度试验深度解读(一)

目录 1 .导言 2.适用产品范围 3.标准目的 4.试验等级 4.1 空气放电的最高电压为何定在15kV 1 .导言 电磁兼容设计的知识储备之一便是EMC相关标准,标准中的测试系统标准更是基础中的基础,深度理解,对产品的EMC设计有很好的帮助。以下对最…

算法题->盛最多水的容器C语言和JAVA双指针解法

盛最多水的容器C语言和JAVA双指针解法 题目描述: 力扣链接:https://leetcode.cn/problems/container-with-most-water/description/ 题意: 根据数组中的值(高)和下标差值(宽),求能容纳最多的体积V. 例子: 输出49的求解过程,根据木桶效应,存储水的高度由短木板决定,故 V 短…

EfficientVMamba实战:使用EfficientVMamba实现图像分类任务(一)

文章目录 摘要安装包安装timm 数据增强Cutout和MixupEMA项目结构编译安装Vim环境环境安装过程安装库文件 计算mean和std生成数据集 摘要 论文:https://arxiv.org/pdf/2401.09417v1.pdf 作者研究了轻量级模型设计的新方法,通过引入视觉状态空间模型&…

Linux中JMeter的使用

Linux中JMeter的使用 Linux版本JMeter安装 # 1、下载、安装JMeter 如果有安装包直接上传即可 wget -c https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-5.4.1.tgz # 解压 tar -zxvf apache-jmeter-5.4.1.tgz -C /usr/local/sjdwz_test cd /usr/local/sjdwz_t…

书生·浦语大模型全链路开源体系-第2课

书生浦语大模型全链路开源体系-第2课 书生浦语大模型全链路开源体系-第2课相关资源实战部署InternLM2-Chat-1.8B模型准备环境下载模型运行案例 实战部署InternLM2-Chat-7B模型准备环境下载模型及案例代码运行cli案例代码运行web案例代码配置SSH公钥信息配置SHH隧道连接 熟悉 Hu…

前端之CSS——网页的皮肤!!

目录 一、CSS简单介绍 二、css内容 2.1 css的编写方式 2.2 css选择器 2.3 样式属性 2.4 css包围盒 2.5 css中的display 2.6 css中的定位 2.7 css中的浮动与清除 2.7 弹性容器 2.8 字体图标 2.9 …

R语言,数据类型转换

原文链接:R语言技能 | 不同数据类型的转换 本期教程 写在前面 今天是4月份的第一天,再过2天后再一次迎来清明小假期。木鸡大家是否正常放假呢? 我们在使用R语言做数据分析时,会一直对数据进行不同类型的转换,有时候…

Linux安装nginx保姆级教程

文章目录 前言一、nginx安装(保姆级教程)1.安装nginx依赖2.安装wget3.创建nginx安装目录4.下载nginx5.查看下载好的nginx6.解压缩7.查看当前目录下的文件→进入nginx-1.8.0目录→查看当前目录下的文件8.安装nginx9.查看nginx安装目录并启动nginx10.网络请…

https安全性 带给im 消息加密的启发

大家好,我是蓝胖子,在之前# MYSQL 是如何保证binlog 和redo log同时提交的?这篇文章里,我们可以从mysql的设计中学会如何让两个服务的调用逻辑达到最终一致性,这也是分布式事务实现方式之一。今天来看看我们能够从http…

VTK中polydata的属性数据结构表示和用法

vtk中通过vtkDataArray进行数据的存储,通过vtkDataObject进行可视化数据的表达,在vtkDataObject内部有一个vtkFieldData的实例,负责对数据的表达: vtkFieldData存储数据的属性数据,该数据是对拓扑结构和几何结构信息的…

项目管理计划

《项目管理计划》 1.项目背景说明 2.项目目标和范围 3.项目组织架构 4.项目进度管理办法 5.项目沟通管理 6.项目风险管理 软件开发全套资料包获取进主页或文末个人名片直接获取。

Excel 数据-分列的三个经常用法

Case 1 :有时候数据导出时如果没有电子表格的话,只能导出本地文件,如下图情况: 可以使用数据-分列处理数据: 原来是因为SAP导出数据没有完成的原因,或者关闭Excel重新打开试一下。 重新打开后可以输入了 C…

日记本(源码+文档)

日记本(小程序、ios、安卓都可部署) 文件包含内容程序简要说明功能项目截图客户端首页日记列表 书写日记个人中心设置密码锁拨打客服热线修改信息退出登录登录页输入密码锁注册页 后端管理登录页首页管理员列表管理用户管理日记列表管理日记数据 文件包含…