共183个视频,每天看6个,用时一个月(2.27-3.29)
一、如何建立神经网络以及如何在数据上训练他们——识别
二、严密构建神经网络——超参数调整、正则化、诊断偏差方差、高级优化算法
三、结构化机器学习工程——分割数据集的方式
四、构建卷积神网络CNN
五、序列模型-序列数据比如:自然语言处理,包括循环神经网络RNN、LSTM
m-训练集的规模、训练样本的数量
算法改进影响迭代速度
一、
1.神经网络的编程基础
2.神经网络中正向传播和反向传播的结构、算法结构、高效实现神经网络、编程练习
3.编写单隐层神经网络
4.建立多层深层神经网络
p7 二分分类
神经网络的计算过程分为前向传播和反向传播
logistic回归是一个用于二分分类的算法
符号
(x,y):表示一个单独的样本,x是nx维的特征向量,y的值为0或1
训练集由m个训练样本构成
X矩阵由x1、x2组成,有m列,nx行;Y矩阵由y1、y2组成,有1行,m列;
X.shape是一条Python命令,用来输出矩阵的维度,即(nx,m)和(1,m)
P8 logistic回归
logistic是一个学习算法,用在监督学习问题中输出标签是0或1时,是一个二元分类问题,已知输入的特征向量x可能是一张图,你希望识别出这是不是猫图,你需要一个算法可以给出一个预测值,预测y,当输入特征x满足条件时y就是1。已知Logistic回归的参数是w也是一个nx维向量,b就是一个实数,已知输入x和参数w和参数b,如何计算出预测y?
在logistic回归中,我们的输出变成y=sigmoid函数作用到这个量上
P9 logistic回归损失函数
损失函数(误差函数)用于衡量算法预测单个训练样本输出值y^和y的实际值有多接近:通过改变参数w,b的值最小化损失函数。
成本函数衡量算法在全体训练样本上的表现 J越小越好:
P10梯度下降法
梯度下降法用于训练学习训练集上的参数w和b,从初始点开始朝最陡的下坡方向走一步,在梯度下降后,也许在那里停下,因为他沿着最快下降的方向向下走(根据该点导数方向),这是梯度下降的一次迭代,经过几次迭代有可能收敛到这个全局最优解,
P11导数
df(x)/dx,直线情况下,任意点的斜率相等且等于导数
P12 更多导数的例子
曲线情况下导数的含义
P13计算图
一个神经网络的计算都是按照前向或反向传播过程来实现的,首先计算出神经网络的输出,接着进行一个反向传输的操作,后者用来计算出对应的梯度或者导数;
流程图是从左到右的计算
P14使用计算图求导
链式法则:dJ/da=(dJ/dv)*(dv/da) 从右向左求导
dvar表示导数
P15 logistic回归中的梯度下降法
怎样计算偏导数实现logistic回归中的梯度下降法,导数流程图计算梯度得到参数可改变的步长
P16 m个样本的梯度下降
计算每个训练样本的导数并加起来求平均数,得到全局成本函数,应用一步梯度下降获得参数更新,重复以上步骤。计算中的两个缺点,编程中有了两个for循环,深度学习算法中用显式for循环会使算法低效。用向量化摆脱for循环。
P17 向量化
目的是消除代码中显式for循环语句, z=np.dot(w,x)+b计算(w转置*x+b)
P18 向量化的更多例子
np.log(v)会逐个计算log; np.Abs会计算绝对值; np.maximum(v,0)计算所有元素中和0相比最大值;尽量用内置函数不用for
P19 向量化logistic回归
把m个样本放到X矩阵中,构建:
P20 向量化logistic回归的梯度输出
向量化同时计算m个训练数据的梯度
实现logistic回归的梯度下降一次迭代:
若要多次迭代需要for循环,暂时没有方式可以去掉
21 Python中的广播
广播是一种手段让Python代码执行得更快
计算四种食物中来自碳水化合物、蛋白质和脂肪的热量百分比各占多少,不用for循环实现:
如何让一个3*4的矩阵除以1*4的矩阵
如果你有一个m*n矩阵,然后加上或者减去、乘以或者除以一个1*n矩阵或m*1矩阵,python会把他复制n次变成m*n矩阵,然后再逐元素做加减乘除
更多参考NumPy文档broadcasting
2*3的矩阵+1*3的矩阵:会把1*3的矩阵复制扩展成2*3的矩阵
P22 关于python_numpy向量的说明
消除python和numpy代码bug的技巧:
不用秩为1或者形状是(5,)或(n,)的数组:
P23 Jupyter_ipython笔记本的快速指南
coursera中的ipython笔记本,运行时断网内核宕机要重启内核。
P24 logistic损失函数的解释
logistic回归函数的表达式