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

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

深度学习的概述

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

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

神经网络的基础

从这里我们开始学习神经网络了,但是我们必须要学习一下相关的基础,比如我们要学习神经网络中常用的符号表示,以及图片这种非结构化的数据如何在计算机中向量化表示,以及我们输入到神经网络中的样本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),第一个数据是非专业的后车镜语音数据,这个数据很多,另外一个数据是专业的后车镜数据。

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

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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue3中播放flv流视频,以及组件封装超全

实现以上功能的播放&#xff0c;只需要传入一个流的地址即可&#xff0c;当然组件也只有简单的实时播放功能 下面直接上组件 里面的flvjs通过npm i flv.js直接下载 <template><div class"player" style"position: relative;"><p style&…

什么是EDM邮件推广营销?

电子邮件作为最古老的互联网沟通工具之一&#xff0c;凭借其无可比拟的直达性、个性化潜力与高投资回报率&#xff0c;始终占据着企业营销策略的核心地位。随着人工智能技术的革新应用&#xff0c;云衔科技以其前瞻视野与深厚技术底蕴&#xff0c;倾力打造了一站式智能EDM邮件营…

Excel·VBA二维数组组合函数之穷举推理题

看到一个帖子《CSDN-求助一道推理题》&#xff0c;与之前《python穷举暴力破解《2018年刑侦推理题》用python穷举的推理题很类似 那么是否可以使用《ExcelVBA二维数组组合函数、组合求和》combin_arr2d函数&#xff0c;生成结果进行穷举呢&#xff1f; Sub 穷举推理题()Dim …

搜维尔科技:Manus Prime 3 Mocap数据手套,体验极致的每指触觉!

完全适用于VR虚拟现实场景 特斯拉也在使用的量子数据 Tesla 目前正在使用 MANUS Quantum Metagloves创建一个数据集&#xff0c;帮助他们训练 Tesla 机器人。 量子数据训练QUANTUM AI 我们以类似的方式使用 Quantum Metagloves 来生成一流的手指跟踪数据集&#xff0c;并将其…

吴恩达2022机器学习专项课程(一) 4.5 线性回归的梯度下降

问题预览/关键词 本节内容梯度下降公式梯度下降公式的推导过程梯度下降在线性回归误差平方成本函数的收敛梯度下降在多曲面的收敛 笔记 1.本节内容 给线性回归模型的误差平方成本函数执行梯度下降。 2.梯度下降公式 线性回归下误差成本函数的梯度下降公式。 3.梯度下降公…

uniapp 小程序和app map地图上显示多个酷炫动态的标点,头像后端传过来,真机测试有效

展示效果 二、引入地图 如果需要搜索需要去腾讯地图官网上看文档&#xff0c;找到对应的内容 1.申请开发者密钥&#xff08;key&#xff09;&#xff1a;申请密钥 2.开通webserviceAPI服务&#xff1a;控制台 ->应用管理 -> 我的应用 ->添加key-> 勾选WebService…

OpenHarmony相机和媒体库-如何在ArkTS中调用相机拍照和录像。

介绍 此Demo展示如何在ArkTS中调用相机拍照和录像&#xff0c;以及如何使用媒体库接口进行媒体文件的增、删、改、查操作。 本示例用到了权限管理能力ohos.abilityAccessCtrl 相机模块能力接口ohos.multimedia.camera 图片处理接口ohos.multimedia.image 音视频相关媒体业…

SSM框架学习——MyBatis关联映射

MyBatis关联映射 为什么要关联映射 实际开发中&#xff0c;对数据库操作常常会涉及多张表&#xff0c;所以在OOP中就涉及对象与对象的关联关系。针对多表操作&#xff0c;MyBatis提供关联映射。 关联关系概述 一对一&#xff1a;A类中定义B类的属性b&#xff0c;B类中定义A…

华为云RDS for Mysql入门与配置

华为云RDS for MySQL支持混合SSD实例&#xff0c;它结合了华为云容器、本地SSD盘和高速云盘。 优势&#xff1a; 主备实例提供故障自动切换和手动切换&#xff0c;业务中断时间为秒级&#xff0c;以及异地灾难备份&#xff0c;最大程度上在出现故障的情况下保障整个数据库集群…

自动驾驶杂谈

在2024年的今天&#xff0c;自动驾驶技术已经迈向了一个崭新的阶段&#xff0c;日趋成熟与先进。昨日&#xff0c;我有幸亲眼目睹了自动驾驶车辆在道路上自如行驶的场景。然而&#xff0c;在市区拥堵的路段中&#xff0c;自动驾驶车辆显得有些力不从心&#xff0c;它们时而疾驰…

贝锐蒲公英企业路由器双机热备,保障异地组网可靠、不中断

对于关键业务&#xff0c;比如&#xff1a;在线支付系统、远程医疗监控系统、重要数据中心等&#xff0c;一旦网络发生故障&#xff0c;可能导致巨大的损失或影响&#xff0c;因此需确保网络拥有极高的可靠性、稳定性和容错能力。 面对此类场景和需求&#xff0c;贝锐蒲公英异…

Linux中间件(nginx搭建、LNMP服务搭建)

目录 一、安装nginx 第一步、下载nginx的压缩包到Linux中 ​第二步、安装依赖 第三步&#xff1a;安装 nginx 第四步&#xff1a;启动nginx 第五步&#xff1a;测试nginx 二、 nginx的配置文件 nginx.conf文件内容解读 案例&#xff1a;发布多个网站 二、lamp/lnmp …

【LeetCode】热题100 刷题笔记

文章目录 T1 两数之和T49 字母异位词分组常用小技巧 T1 两数之和 链接&#xff1a;1. 两数之和 题目&#xff1a; 【刷题感悟】这道题用两层for循环也能做出来&#xff0c;但我们还是要挑战一下时间复杂度小于 O ( n 2 ) O(n^2) O(n2)的解法&#xff0c;不能因为它是第一道 …

AIGC-Stable Diffusion发展及原理总结

目录 一. AIGC介绍 1. 介绍 2. AIGC商业化方向 3. AIGC是技术集合 4. AIGC发展三要素 4.1 数据 4.2 算力 4.3 算法 4.3.1 多模态模型CLIP 4.3.2 图像生成模型 二. Stable Diffusion 稳定扩散模型 1. 介绍 1.1 文生图功能&#xff08;Txt2Img) 1.2 图生图功能&…

每日一题 --- 右旋字符串[卡码][Go]

右旋字符串 题目&#xff1a;55. 右旋字符串&#xff08;第八期模拟笔试&#xff09; (kamacoder.com) 题目描述 字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k&#xff0c;请编写一个函数&#xff0c;将字符串中的后面…

DHCP服务搭建

DHCP搭建 一、DHCP简介 1、概念 DHCP&#xff08;Dynamic Host Configuration Protocol&#xff0c;动态主机配置协议&#xff09;是一种网络协议&#xff0c;用于自动分配IP地址和其他网络配置信息给网络上的设备。通过DHCP&#xff0c;计算机或其他设备可以自动获取IP地址、…

使用CSS计数器,在目录名称前加上了序号,让目录看起来更加井然有序

目录&#xff08;Text of Contents缩写为TOC&#xff09;&#xff0c;其实就是一篇文章的概要或简述。这好比&#xff0c;去书店买书&#xff0c;先是被这本书的标题所吸引&#xff0c;而后我们才会&#xff0c;翻开这本书目录&#xff0c;看看这本书主要是在讲些什么&#xff…

设置浏览器声音外放,其他声音耳机里放

需求描述&#xff1a; 我想在耳机里听歌&#xff0c;浏览器里的声音外放 找到这个面板 让浏览器的声音输出设为&#xff0c;扬声器

增加网站搜索引擎排名的6个准则

怎样提高网站排名首页 在竞争激烈的网络世界中&#xff0c;网站的排名对于吸引流量和提升曝光至关重要。登上搜索引擎结果页面的首页&#xff0c;意味着更多的曝光和点击率。以下是一些方法&#xff0c;可以帮助您提高网站在搜索引擎中的排名&#xff0c;让其跻身首页&#xf…

golang语言系列:Scrum、Kanban等敏捷管理策略

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 golang语言系列 文章&#xff0c;主要对编程通用技能 Scrum、Kanban等敏捷管理策略 进行学习 1.什么是敏捷开发 敏捷是一个描述软件开发方法的术语&#xff0c;它强调增量交付、团队协作、持续规划和持续学习。…