本文主要是介绍深度学习 day02神经网络基础,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
01 二分分类
- 逻辑回归是一个用于二分分类的算法
- 计算机保存一张图片就需要保存三个独立矩阵,分别对应图片中的红、绿、蓝三个颜色通道,如果照片是64×64像素的就有三个64×64的矩阵。然后需要将这三个矩阵所有元素都存放在特征x向量中(x向量就是64×64×3=12288维)。
![在这里插入图片描述](/upload/202107/31/202107310609542433.png)
- 输入X用矩阵表示:python中用来输出矩阵的维度代码是X.shape=(n,m),表示X是一个n×m的矩阵。
02 逻辑回归
- 当你实现逻辑回归时,你要做的就是学习参数w和b。因为要求输出y帽是在0到1之间,所以我们将输入x的线性函数w^T+b带入到sigma函数中,得到sigma函数。当z很大时输出接近于1,当z很小时输出接近于0。
![在这里插入图片描述](/upload/202107/31/202107310609546549.png)
03 逻辑回归损失函数
- 损失函数又叫误差函数可以用来衡量算法在单个训练样本运行情况,在这里我们不用第一个式子,我们用第二个损失函数,因为在逻辑回归中如果使用第一个式子,最终会得到很多个局部最优解,梯度下降法可能找不到局部最优值(非凸),而使用第二个就会给我们一个凸的优化问题。
![在这里插入图片描述](/upload/202107/31/202107310609549708.png)
- 成本函数基于参数的总成本,衡量的是w和b在全体训练样本上的表现
![在这里插入图片描述](/upload/202107/31/202107310609551910.png)
04 梯度下降法
- 我们想要找到参数w和b来使成本函数最小,我们可以随机初始化参数,梯度下降法就是从初始点开始沿着最陡的下坡方向走一步,不断地进行迭代最终达到全局最小点。
![在这里插入图片描述](/upload/202107/31/202107310609555846.png)
- 下面是参数更新的过程,无论参数w在哪一边,他都会向成本函数最小值方向前进,并且可以看出随着w的的变化,函数的斜率也是不断地减小,随着斜率的减小,w变化幅度也就随之减小(也就是朝着成本函数最小值方向移动的越慢)。
![在这里插入图片描述](/upload/202107/31/202107310609559630.png)
05 计算图
- 一个神经网络的计算都是按照前向或者反向传播过程来实现的,首先计算出神将网络的输出,紧接着进行一个反向传输操作(我们用来计算出对应的梯度或者导数)。
- 从左到右的过程,可以计算出J的值。
![在这里插入图片描述](/upload/202107/31/202107310609562770.png)
06 计算图的导数计算
- 当计算所有这些导数时,最有效率的办法就是从右到左计算,跟着红色的箭头走,我们第一次计算对v的导数在之后计算对a的导数就可以用到,同样的对u的导数的计算在之后计算b的导数时就可以用到。他这个计算导数是,计算哪个导数就对那个值进行一些增加,看看他对J是如何影响的,使用微积分的链式法则就可以算出其导数。
![在这里插入图片描述](/upload/202107/31/202107310609566393.png)
![在这里插入图片描述](/upload/202107/31/202107310609580836.png)
07 逻辑回归中的梯度下降法
![在这里插入图片描述](/upload/202107/31/202107310609585568.png)
- 单个样本实例的一次梯度更新步骤:想要计算损失函数L的导数,首先我们要向前一步先计算损失函数关于变量a的导数(da),再向后一步计算出损失函数关于z的导数(dz),最后就是计算出dw、db了,就可以进行更新参数更新了。(更新w/b为b减去学习率乘以dw/db)
![在这里插入图片描述](/upload/202107/31/202107310609589030.png)
08 m个样本的梯度下降
- 全局成本函数是从1到m项损失函数和的平均==>根据这个我们可以推导出全局成本函数对w1的导数也同样是各项损失函数对w1导数的平均。所以真正需要做的就是计算这些导数并且求平均,这样会得到全局梯度值,能够直接将其应用到梯度下降算法中。
![在这里插入图片描述](/upload/202107/31/202107310609592174.png)
- 首先让我们初始化,接着我们要使用for循环来遍历训练集,并计算相应的每个训练样本的导数,然后将他们加起来。(这里有两个循环:第一个是遍历训练集,第二个是遍历所有特征)
![在这里插入图片描述](/upload/202107/31/202107310609595519.png)
09 向量化
- 向量化技术可以使代码摆脱这些显式的for循环,会帮助处理更大的数据集。
- 可扩展深度学习实现是在GPU(图像处理单元)上做的,但是课程是在Jupyter Notebook做的,仅用CPU。CPU和GPU都有并行化的指令有时候也叫做SIMD指令(单指令流多数据流,这个意思是如果你使用了能去掉显式for循环的函数,这样python的numpy能充分利用并行化去更快的计算)
- 下图是一个非向量化与向量化实现的对比:
![在这里插入图片描述](/upload/202107/31/202107310609599162.png)
- 下面是通过python来实际进行操作,对比非向量化与向量化实现:
![在这里插入图片描述](/upload/202107/31/202107310610004826.png)
这篇关于深度学习 day02神经网络基础的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!