第一门课-深度学习和神经网络 第二周(重点总结)


注:图片来源于网络

第二周:神经网络的编程基础(Basics of Neural Network

2.1 二分类(Binary Classification)

神经网络的训练过程可以分为前向传播(foward propagation)和反向传播(backward propagation)两个独立的部分。
回归问题与分类问题:输入变量与输出变量均为连续变量的预测问题是回归问题,输出变量为有限个离散变量的预测问题成为分类问题
逻辑回归:通过设定阈值,就成功将回归问题转化为了分类问题
逻辑回归是一个用于二分类(binary classification)的算法
这里有一个二分类问题的例子,假如你有一张图片作为输入,比如这只猫(非结构化数据),如果识别这张图片为猫,则输出标签1作为结果;如果识别出不是猫,那么输出标签0作为结果。
在这里插入图片描述
我们来看看一张图片在计算机中是如何表示的。为了保存一张图片,需要保存三个矩阵,它们分别对应图片中的红、绿、蓝三种颜色通道,如果你的图片大小为64x64像素,那么你就有三个规模为64x64的矩阵,分别对应图片中红、绿、蓝三种像素的强度值。为了便于表示,这里我画了三个很小的矩阵,注意它们的规模为5x4 而不是64x64,如下图所示:

在这里插入图片描述
为了把这些像素值放到一个特征向量中,我们需要把这些像素值提取出来,然后放入一个特征向量x。我们把所有的像素都取出来,例如255、231等等,直到取完所有的红色像素,接着最后是255、134、…、255、134等等,直到得到一个特征向量,把图片中所有的红、绿、蓝像素值都列出来。如果图片的大小为64x64像素,那么向量x的总维度,将是64乘以64乘以3,这是三个像素矩阵中像素的总量。在这个例子中结果为12,288。现在我们用n来表示输入特征向量的维度。所以在二分类问题中,我们的目标就是习得一个分类器,它以图片的特征向量作为输入,然后预测输出结果为1还是0,也就是预测图片中是否有猫:
在这里插入图片描述
符号定义:
在这里插入图片描述

2.2 逻辑回归(Logistic Regression)

在这里插入图片描述
y’:预测值
ω :逻辑回归的参数(nx,1)
x :输入
b :偏差
sigmoid函数:

在这里插入图片描述

2.3 逻辑回归的代价函数(Logistic Regression Cost Function

代价函数:通过训练代价函数来更新参数ω和参数b。
损失函数Loss function:又叫做误差函数,用来衡量算法的运行情况

逻辑回归中用到的损失函数:
在这里插入图片描述
如果y等于1,我们就尽可能让预测值变大,如果y等于0,我们就尽可能让预测值变小

逻辑回归中用到的代价函数:
为了衡量算法在全部训练样本上的表现如何,对个m个样本的损失函数求和然后除以m:
在这里插入图片描述

2.4 梯度下降(Gradient Descent)

梯度下降法:通过最小化代价函数(成本函数)J(w,b)来训练的参数w和b
在这里插入图片描述
梯度下降法的形象化说明:
可以用如图那个小红点来初始化参数ω 和b,也可以采用随机初始化的方法,对于逻辑回归几乎所有的初始化方法都有效,因为函数是凸函数,无论在哪里初始化,应该达到同一点或大致相同的点。
1.我们以如图的小红点的坐标来初始化参数ω 和b。
2.朝最陡的下坡方向走一步,不断地迭代
3.直到走到全局最优解或者接近全局最优解的地方

在这里插入图片描述
通过以上的三个步骤我们可以找到全局最优解,也就是代价函数(成本函数)这个凸函数的最小值点。
梯度下降法的细节化说明(仅有一个参数)

在这里插入图片描述
假定代价函数J(ω ,b) 只有一个参数ω ,即用一维曲线代替多维曲线,这样可以更好画出图像。
在这里插入图片描述
在这里插入图片描述
迭代就是不断重复做如图的公式:

α表示学习率(learning rate),用来控制步长(step),即向下走一步的长度就是学习率乘以代价函数对ω 求导(derivative),在代码中我们会使用dω 表示这个结果
在这里插入图片描述
整个梯度下降法的迭代过程就是不断地向左走,直至逼近最小值点
在这里插入图片描述
假设我们以如图点为初始化点,该点处的斜率的符号是负的,即,所以接下来会向右走一步。
在这里插入图片描述
整个梯度下降法的迭代过程就是不断地向右走,即朝着最小值点方向走。
在这里插入图片描述
梯度下降法的细节化说明(两个参数)

逻辑回归的代价函数(成本函数)是含有两个参数的。
在这里插入图片描述
ə表示求偏导符号,可以读作round

2.5 导数(Derivatives)

对微积分和导数直观的理解

2.6 更多的导数例子(More Derivative Examples)

1.导数就是斜率,而函数的斜率,在不同的点是不同的。
2.如果你想知道一个函数的导数,你可参考你的微积分课本百度百科,然后你应该就能找到这些函数的导数公式。

2.7 计算图(Computation Graph)

在这里插入图片描述

2.8 计算图导数(Derivatives with a Computation Graph)

在这里插入图片描述

2.9 逻辑回归的梯度下降(Logistic Regression Gradient Descent)

在这里插入图片描述
dz=a-y
dw1=x1·dz
dw2=x2·dz
db=dz
w1= w1 -α·dw1
w2= w2 -α·dw2

2.10 m 个样本的梯度下降(Gradient Descent on m Examples)

在这里插入图片描述
在这里插入图片描述
全局代价函数:实际上是1到m项各个损失的平均
全局代价函数对w1的微分,对w2的微分也同样是各项损失对微分的平均

我们初始化J=0,dw1=0,dw2=0,db=0
代码流程:

在这里插入图片描述
以上代码只应用了一步梯度下降。重复以上内容很多次,以应用多次梯度下降
当你应用深度学习算法,你会发现在代码中显式地使用for循环使你的算法很低效,同时在深度学习领域会有越来越大的数据集。所以能够应用你的算法且没有显式的for循环会是重要的,并且会帮助你适用于更大的数据集。所以这里有一些叫做向量化技术,它可以允许你的代码摆脱这些显式的for循环。

2.11 向量化(Vectorization)

和for循环相比,向量化可以快速得到结果

2.12 更多的向量化例子(More Examples of Vectorization)

向量乘法:u=np.dot(A,v)
向量初始化:u=np.zeros(n,1)
逐元指数乘法:u=np.exp(v)
逐元对数乘法:u=np.log(v)
逐元绝对值:u=np.abs(v)
最大值:u=np.maximum(v)
逐元平方:u=v**2

2.13 向量化逻辑回归(Vectorizing Logistic Regression)

在这里插入图片描述
上式的矩阵形式为Z=np.dot(w.T,X)+b

在这里插入图片描述

2.14 向量化逻辑回归的梯度计算(Vectorizing Logistic Regression’s Gradient)

高度向量化的、非常高效的逻辑回归的梯度下降算法
在这里插入图片描述
现在我们利用前五个公式完成了前向和后向传播,也实现了对所有训练样本进行预测和求导,再利用后两个公式,梯度下降更新参数。我们的目的是不使用for循环,所以我们就通过一次迭代实现一次梯度下降,但如果你希望多次迭代进行梯度下降,那么仍然需要for循环,放在最外层。不过我们还是觉得一次迭代就进行一次梯度下降,避免使用任何循环比较舒服一些。

2.15 Python中的广播机制(Broadcasting in Python)

如果两个数组的后缘维度的轴长度相符或其中一方的轴长度为1,则认为它们是广播兼容的。广播会在缺失维度和轴长度为1的维度上进行
其中sum的参数axis=0表示求和运算按列执行
axis用来指明将要进行的运算是沿着哪个轴执行,在numpy中,0轴是垂直的,也就是列,而1轴是水平的,也就是行

广播机制的一般原则如下:
在这里插入图片描述
总结一下broadcasting,可以看看下面的图:
在这里插入图片描述

2.16 关于 Python与numpy向量的使用(A note on python or numpy vectors)

a=np.randon.randn(5),a.shape的形状是一个(5,)的结构,被称为一个一维数组,它既不是一个行向量也不是一个列向量,这也导致它有一些bug
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果你每次创建一个数组,你都得让它成为一个列向量,产生一个(5,1)向量或者你让它成为一个行向量,那么你的向量的行为可能会更容易被理解。所以在这种情况下,a.shape等同于(5,1)。这种表现很像a ,但是实际上却是一个列向量。同时这也是为什么当它是一个列向量的时候,你能认为这是矩阵(5,1)
如果不完全确定一个向量的维度(dimension),我经常会扔进一个断言语句(assertion statement)

在这里插入图片描述

2.17 Jupyter/iPython Notebooks快速入门(Quick tour of Jupyter/iPython Notebooks)

2.18 逻辑回归损失函数详解(Explanation of logistic regression cost function)

发布了1 篇原创文章 · 获赞 0 · 访问量 295

猜你喜欢

转载自blog.csdn.net/qq_35024702/article/details/104860538