吴恩达《深度学习》第一门课(2)神经网络的编程基础

2.1二分类

(1)以一张三通道的64×64的图片做二分类识别是否是毛,输出y为1时认为是猫,为0时认为不是猫:

y输出是一个数,x输入是64*64*3=12288的向量。

(2)以下是一些符号定义(数据集变成矩阵之后进行矩阵运算代替循环运算,更加高效)

x:表示一个nx维数据,维度为(nx,1)

y:表示输出结果,取值为(0,1);

(x(i),y(i)):表示第i组数据;

X=[x(1),x(2),……,x(m)]:表示按列将所有的训练数据集的输入值堆叠成一个矩阵;其中m表示样本数目;

Y=[y(1),y(2),……,y(m)]:表示所有输入数据集对于的输出值,其维度为1×m;

2.2逻辑回归

(1)逻辑回归的输出值是一个概率,算法思想如下:

(2)激活函数使用sigmoid,它使得输出值限定在0到1之间,符合概率的取值。

(3)关于偏置项(偏差)b,可将其变成θ0,对应的x0恒定为1,如下所示:

2.3逻辑回归的代价函数

(1)损失函数(针对单个样本):

(2)代价函数(针对全部训练样本):

2.4梯度下降法

(1)下图中左边为凸函数,右边为非凸函数,逻辑回归中代价函数为凸函数,故任意的初始化都能收敛到最优点:

(2)参数w、b的更新方式:

2.5导数

导数即斜率。

2.6跟多的导数例子

记住一些常见的导数求法或者直接查看导数表。

2.7计算图

(1)下图展示计算图计算的过程:

(2)正向传播用于计算代价函数

2.8计算图的导数计算

(1)反向传播利用链式法则来进行求导,如对a进行求导,其链式法则公式为:

2.9逻辑回归中的梯度下降

针对于单个样本

(1)计算图如下:

(2)首先计算da:

(3)然后计算dz:

(4)最后计算dw,db(下面的式子其实已经对所有样本进行的求导):

2.10m个样本的梯度下降法

(1)以下代码显示了对整个数据集的一次迭代

(2)以上过程会有两个循环,一个循环是循环是遍历样本,第二个循环是当w很多时是要循环的,上面之写出了两个w,所以没体现出来。

2.11向量化

(1)使用循环的方式计算:ωTx

(2)使用向量的方式

后者不仅书写简单,更重要的是计算速度可以比前者快特别多。

2.12向量化的更多例子

(1)消除w带来的循环

设置u=np.zeros(n(x),1)来定义一个x行的一维向量,从而替代循环,仅仅使用一个向量操作dw=dw+x(i)dz(i),最后我们得到dw/m。

2.13向量化逻辑回归

(1)将样本x横向堆叠,形成X,同时根据python的广播性质(把实数b变成了(1,m)维),得到:

(2)继续利用Python的计算方法,得到A:

2.14向量化logistic回归的梯度输出

(1)没有用向量化时使用的代码:

(2)使用向量化之后的代码:

其中前面五个式子完成了前向和后向的传播,也实现了对所有训练样本进行预测和求导,再利用后两个式子,梯度下降更新参数。另外如果需要多次迭代的话,还是需要用到一个循环的,那是避免不了的。

2.15Python中的广播

(1)下图形象的总结了Python中的广播

(2)在Python的numpy中,axis=0是按照列操作,axis=1,是按照行操作,这一点需要注意。

2.16关于python_numpy向量的说明

(1)使用a=np.random.randn(5)生成的数据结构在python中称为一维数组,它既不是行向量也不是列向量,用a.shape的结果是(5,)这表示它是一个一维向量,a和它的转置相乘其实得到的是一个数。

(2)应该使用a=np.random.randn(5,1)这样生成的是一个行向量,它和他的转置乘积会是一个矩阵:

2.17Jupyter/iPython Notebooks快速入门

2.18(选修)logistics损失函数的解释

(1)首先需要明确,逻辑回归的输出表示y等于1的概率。故有:

(2)合并成一个式子(要使得式子越大越好):

(3)根据对数函数log的单调递增性,对上式取对数有:

(4)要最大化上式,最小化上式取反,得到一个样本的损失函数。

(5)所有样本时,认为样本间独立同分布,故联合概率就是每个样本的乘积:

(6)两边取对数得到:

(7)要最大化上式(最大似然估计)也就是最小化:

总结一下:为了最小化成本函数J(w,b),我们logistic回归模型的最大似然估计的角度出发,假设训练集中的样本都是独立同分布的条件下。

原文地址:https://www.cnblogs.com/ys99/p/9280724.html

时间: 2024-10-08 09:16:43

吴恩达《深度学习》第一门课(2)神经网络的编程基础的相关文章

吴恩达深度学习:1.2什么是神经网络

写在开头的话,本博客内容全部来自吴恩达深度学习教学课程,插图均来自吴恩达课件,在此说明来处,不喜勿喷! 一.什么是神经网络 1.我们从一个房屋加个预测的例子开始,假设有一个6间房间的数据集,已知房屋的面积单位是平方米或者平方英尺,已知房屋加个,现在想要找到一个函数,根据房屋面积来预测房屋价格的函数.如果有机器学习的只是,可以用线性回归得到这样的一条直线: 但是我们知道,价格永远不可能为一个负值,所以用一个直线的线性回归进行预测不太合适,我们可以在size轴将预测线弯曲一点,让他结束于0,我们所要

吴恩达深度学习课程第二课-改善深层神经网络

第一周 深度学习的实用层面 1.1 训练,配置,测试训练集 学习完如何构建神经网络,接下来学习如何高效运行神经网络 数据集划分: train,dev,test: 在train中训练模型,利用dev选择最佳模型,利用test测试最终模型 1.2 偏差Bias,方差Variance 欠拟合(高偏差),过拟合(高方差) 1.3 处理欠拟合,过拟合方案 1.4 正则化Regularization 原文地址:https://www.cnblogs.com/nrocky/p/12114269.html

吴恩达深度学习课程第一课 — 神经网络与深度学习 — 第一周练习

课程一 - 神经网络和深度学习 第一周 - 深度学习简介 第 1 题 “人工智能是新电力”这个比喻指的是什么? A.人工智能为我们的家庭和办公室的个人设备供电,类似于电力. B.通过“智能电网”,人工智能正在传递新一波的电力. C.人工智能在计算机上运行,因此由电力驱动,但它让计算机做以前不可能做的事情. D.与100年前开始的电力类似,人工智能正在改变多个行业. 第 2 题 以下哪些是最近深度学习开始崛起的原因?(选2个答案) A.我们拥有了更多的计算能力 B.神经网络是一个崭新的领域. C.

吴恩达-深度学习-课程笔记-8: 超参数调试、Batch正则化和softmax( Week 3 )

1 调试处理( tuning process ) 如下图所示,ng认为学习速率α是需要调试的最重要的超参数. 其次重要的是momentum算法的β参数(一般设为0.9),隐藏单元数和mini-batch的大小. 第三重要的是神经网络的层数和学习率衰减 adam算法的三个参数一般不调整,设定为0.9, 0.999, 10^-8. 注意这些直觉是ng的经验,ng自己说了,可能其它的深度学习研究者是不这么认为的. 那么如何选择参数呢?下面介绍两个策略,随机搜索和精细搜索. 早一代的机器学习算法中,如下

吴恩达-深度学习-课程笔记-6: 深度学习的实用层面( Week 1 )

1 训练/验证/测试集( Train/Dev/test sets ) 构建神经网络的时候有些参数需要选择,比如层数,单元数,学习率,激活函数.这些参数可以通过在验证集上的表现好坏来进行选择. 前几年机器学习普遍的做法: 把数据分成60%训练集,20%验证集,20%测试集.如果有指明的测试集,那就用把数据分成70%训练集,30%验证集. 现在数据量大了,那么验证集和数据集的比例会变小.比如我们有100w的数据,取1w条数据来评估就可以了,取1w做验证集,1w做测试集,剩下的用来训练,即98%的训练

吴恩达-深度学习-课程笔记-7: 优化算法( Week 2 )

1 Mini-batch梯度下降 在做梯度下降的时候,不选取训练集的所有样本计算损失函数,而是切分成很多个相等的部分,每个部分称为一个mini-batch,我们对一个mini-batch的数据计算代价,做完梯度下降,再对下一个mini-batch做梯度下降.比如500w个数据,一个mini-batch设为1000的话,我们就做5000次梯度下降(5000个mini-batch,每个mini-batch样本数为1000,总共500w个样本). 对于batch梯度下降(每次计算所有的样本),随着迭代

吴恩达 深度学习笔记+作业 (一)

1.1.2 Building basic functions with numpy 1.1.2.2 numpy.exp, sigmoid, sigmoid gradient import numpy as np def sigmoid(x): s = 1/(1+np.exp(-x)) return s # 设sigmoid为s, s' = s*(1-s) def sigmoid_derivative(x): s = 1/(1+np.exp(-x)) ds = s*(1-s) return ds

吴恩达深度学习专项课程3学习笔记/week1/Setting up ML Application

应用ML是一个高度迭代的过程 Idea->Code->Experment->... 去不断地调整超参数. Train/Dev/Test sets 通常将数据集划分为Train/Dev/Test集. Training set: 用于模型的训练 Hold-out cross validation set/Developmet set: 用于测试,调整模型超参数 Test set: 用于最终评估 以前的ML问题:数据规模在w级,通常70/30划分Train/Test集或者60/20/20比例划

吴恩达深度学习笔记(deeplearning.ai)之卷积神经网络(二)

经典网络 LeNet-5 AlexNet VGG Ng介绍了上述三个在计算机视觉中的经典网络.网络深度逐渐增加,训练的参数数量也骤增.AlexNet大约6000万参数,VGG大约上亿参数. 从中我们可以学习到: 随着网络深度增加,模型的效果能够提升. 另外,VGG网络虽然很深,但是其结构比较规整.每经过一次池化层(过滤器大小为2,步长为2),图像的长度和宽度折半:每经过一次卷积层,输出数据的channel数量加倍,即卷积层中过滤器(filter)的数量. 残差网络(ResNet) 由于存在梯度消

吴恩达深度学习笔记(deeplearning.ai)之循环神经网络(RNN)(一)

1. RNN 首先思考这样一个问题:在处理序列学习问题时,为什么不使用标准的神经网络(建立多个隐藏层得到最终的输出)解决,而是提出了RNN这一新概念? 标准神经网络如下图所示: 标准神经网络在解决序列问题时,存在两个问题: 难以解决每个训练样例子输入输出长度不同的情况,因为序列的长度代表着输入层.输出层的维度,不可能每训练一个样例就改变一次网络结构. 标准的神经网络不能共享从文本不同位置上学到的特征.举例说明:如果Harry作为人名位于一个训练例子中的第一个位置,而当Harry出现在其他例子的不