Deeplearning.ai学习笔记-神经网络和深度学习(一)
2018-02-12 10:53
876 查看
前言
深度学习基础
基础术语
深度学习的优势
Logistic回归函数
Logistic数学表达式
Logistic表示代码
损失函数Loss function
代价函数Cost function
梯度下降Gradient Descent
前向传播反向传播
用向量表示样本
向量化
广播broadcast
Numpy中乘法使用
对应元素相乘npmultiply 或
同线性代数中矩阵乘法的定义 npdot
Numpy中维度表示建议
该系列笔记是该课程中重点知识的罗列和自己的一些理解,可供正在学习此课程的同学作为参考,也是方便自己日后复习使用。
学习本课程需要有一点python基础、懂得Numpy库的基础使用,有高中的数学基础、懂得一点点矩阵、向量知识大致就可以了。这些知识可以到吴恩达的机器学习课程学习。
关于本篇笔记:这篇笔记是深度学习课程中第一课《神经网络和深度学习》的第一篇笔记,主要是深度学习基础知识的梳理
Convolution Neural Network(CNN):适用于图像处理
结构化数据:如数据库里的数据
非结构化数据:hard to understand:如图像、文本
大数据(带labels的)使得神经网络精确度更高
在数据集不多的时候深度学习的优势并不是很明显,但是在大数据的情况下,辅助以好的算法和强计算能力,会使神经网络的运行速度和精确度大大提高。
σ(z)=11+e−zσ(z)=11+e−z
有几个特征就有几个X和W
当z趋向无穷大,值趋向1
当z趋向无穷小,值趋向0
1.首先前向传播计算J(损失函数)
根据for下面前三步求得J
2.接着反向传播
根据dz,dw1,dw2…… ->先求和,再平均。计算出代价函数、偏导数
3.利用梯度下降求w1,w2……
一般的损失函数是误差平方:
L=12(y′−y)2L=12(y′−y)2
但是如果是像Logistic Regression逻辑回归这样的算法,则用:
代价函数是损失函数的平均,一般代价函数是一个凸函数,有最小值。
偏导数:就是当这个函数中有不只一个参数时,分别对每个参数进行求导
w=w−αdww=w−αdw
\alpha是学习率,上面的dw正确的写法应该是偏导数,但是可以这么理解。
w的导数dw就是斜率,dw用反向传播的方法求出。
反复计算使得函数将到最低点。
反向传播(backprop)计算出相应的导数,运用微积分的链式法则
计算导数的方法:通过计算两个值的变化量的商(因变量随自变量变化而变化)
在代码中表示前面每个值的导数(都是相对于结果输出值<-因变量)的方式:
如下图:a的导数表示为da = dJ/da
m个X:(一个X里有n个特征)
X中一个样本里的特征纵向表示,不同的样本横向表示。如下图:
样本的结果值Y:
如:
向量化可以大大节省时间
注意:如果列数等于行数不可以进行运算!唯一的特例:(1,n)与(n,1)之间可以运算,结果为(n,n)维向量
注意:如果列数等于行数不可以进行运算!唯一的特例:(1,n)与(n,1)之间可以运算,结果为(n,n)维向量
两个向量根据矩阵乘法法则计算:
2.经常使用np.reshape来使向量理想化
深度学习基础
基础术语
深度学习的优势
Logistic回归函数
Logistic数学表达式
Logistic表示代码
损失函数Loss function
代价函数Cost function
梯度下降Gradient Descent
前向传播反向传播
用向量表示样本
向量化
广播broadcast
Numpy中乘法使用
对应元素相乘npmultiply 或
同线性代数中矩阵乘法的定义 npdot
Numpy中维度表示建议
前言
这次学习的主题是深度学习,学习的第一门课程就是吴恩达的Deeplearning.ai项目课程。此系列笔记也是根据该深度学习课程整理而成。该系列笔记是该课程中重点知识的罗列和自己的一些理解,可供正在学习此课程的同学作为参考,也是方便自己日后复习使用。
学习本课程需要有一点python基础、懂得Numpy库的基础使用,有高中的数学基础、懂得一点点矩阵、向量知识大致就可以了。这些知识可以到吴恩达的机器学习课程学习。
关于本篇笔记:这篇笔记是深度学习课程中第一课《神经网络和深度学习》的第一篇笔记,主要是深度学习基础知识的梳理
深度学习基础
基础术语
Recurrent Neural Network(RNN):适用于序列方面Convolution Neural Network(CNN):适用于图像处理
结构化数据:如数据库里的数据
非结构化数据:hard to understand:如图像、文本
深度学习的优势
算法、硬件计算能力的提高使神经网络运行速度变快大数据(带labels的)使得神经网络精确度更高
在数据集不多的时候深度学习的优势并不是很明显,但是在大数据的情况下,辅助以好的算法和强计算能力,会使神经网络的运行速度和精确度大大提高。
Logistic回归函数
Logistic数学表达式
z=WTX+bz=WTX+bσ(z)=11+e−zσ(z)=11+e−z
有几个特征就有几个X和W
当z趋向无穷大,值趋向1
当z趋向无穷小,值趋向0
Logistic表示代码
1.首先前向传播计算J(损失函数)
根据for下面前三步求得J
2.接着反向传播
根据dz,dw1,dw2…… ->先求和,再平均。计算出代价函数、偏导数
3.利用梯度下降求w1,w2……
损失函数Loss function
损失函数是针对于一个样本的训练结果考察,如果针对整个训练集的精确度考察,用代价函数Cost function一般的损失函数是误差平方:
L=12(y′−y)2L=12(y′−y)2
但是如果是像Logistic Regression逻辑回归这样的算法,则用:
代价函数Cost function
代价函数是损失函数的平均,一般代价函数是一个凸函数,有最小值。
梯度下降Gradient Descent
梯度下降算法对代价函数使用,对每个参数单独进行梯度下降偏导数:就是当这个函数中有不只一个参数时,分别对每个参数进行求导
w=w−αdww=w−αdw
\alpha是学习率,上面的dw正确的写法应该是偏导数,但是可以这么理解。
w的导数dw就是斜率,dw用反向传播的方法求出。
反复计算使得函数将到最低点。
前向传播、反向传播
前向传播(frontprop)可以计算出输出结果反向传播(backprop)计算出相应的导数,运用微积分的链式法则
计算导数的方法:通过计算两个值的变化量的商(因变量随自变量变化而变化)
在代码中表示前面每个值的导数(都是相对于结果输出值<-因变量)的方式:
如下图:a的导数表示为da = dJ/da
用向量表示样本
m个样本(X,Y)组成训练集、测试集m个X:(一个X里有n个特征)
X中一个样本里的特征纵向表示,不同的样本横向表示。如下图:
样本的结果值Y:
向量化
如果很大的数据之间计算,尽可能不要用for循环,用向量化最好如:
目标:m与n中对应值分别相乘 for循环: m = [1,2,3,4] n = [5,6,7,8] for i in range(4): a = a + m[i]*n[i] 向量化: import numpy as np m = np.array([1,2,3,4]) n = np.array([5,6,7,8]) a = np.dot(m,n)
向量化可以大大节省时间
广播broadcast
两个多维度向量加减乘除时,只要两个向量columns或者ranks有一个相等,即行数相等或者列数相等则可以在相应的位置上进行运算。如果没有哪一个对应相等,则不可以运算。注意:如果列数等于行数不可以进行运算!唯一的特例:(1,n)与(n,1)之间可以运算,结果为(n,n)维向量
Numpy中乘法使用
对应元素相乘:np.multiply(), 或 *
两个多维度向量相乘时,只要两个向量columns或者ranks有一个相等,即行数相等或者列数相等则可以在相应的位置上进行运算。如果没有哪一个对应相等,则不可以运算。注意:如果列数等于行数不可以进行运算!唯一的特例:(1,n)与(n,1)之间可以运算,结果为(n,n)维向量
同线性代数中矩阵乘法的定义: np.dot()
PS:矩阵乘法不符合交换律,复合结合律两个向量根据矩阵乘法法则计算:
Numpy中维度表示建议
1.不要使用rank 1array!如下: 不要使用: a = np.arange(100) a = np.random.randn(5) 用(1,n)(n,1)等来代替 a = np.arange(100).reshape(1,100) a = np.random.randn(1 9cba ,5)
2.经常使用np.reshape来使向量理想化
相关文章推荐
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(1-2)-- 神经网络基础(转载)
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(1-3)-- 浅层神经网络(转载)
- 改善深层神经网络:超参数调试、正则化以及优化-- DeepLearning.ai 学习笔记(2-1)
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(5-1)-- 循环神经网络
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(1-4)-- 深层神经网络(转载)
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(1-4)-- 深层神经网络
- Deeplearning.ai学习笔记-神经网络和深度学习(二)
- Coursera深度学习课程 DeepLearning.ai 提炼笔记(1-2)-- 神经网络基础
- Deeplearning.ai学习笔记-改善深层神经网络(一)
- 浅层神经网络 -- DeepLearning.ai 学习笔记(1-3)
- 深层神经网络 --DeepLearning.ai 学习笔记(1-4)
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(1-2)-- 神经网络基础
- 神经网络基础--DeepLearning.ai 学习笔记(1-2)
- Coursera深度学习课程DeepLearning.ai 提炼笔记(1-3)-- 浅层神经网络
- Coursera deeplearning.ai 深度学习笔记1-4-Deep Neural Networks-深度神经网络原理推导与代码实现
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(1-2)-- 神经网络基础
- [DeeplearningAI笔记]神经网络与深度学习3.2_3.11(激活函数)浅层神经网络
- 深度学习与神经网络学习笔记(四)
- Deeplearning.ai学习笔记-改善深层神经网络(二)-降低方差
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(4-4)-- 特殊应用:人脸识别和神经风格迁移