Coursera吴恩达《神经网络和深度学习》课程笔记(2)
来源:互联网 发布:日线引用60分钟数据 编辑:程序博客网 时间:2024/05/23 02:00
神经网络和深度学习—神经网络基础
1. 二分类问题
对于二分类问题,大牛给出了一个小的Notation。
- 样本:
(x,y) ,训练样本包含m 个; - 其中
x∈Rnx ,表示样本x 包含nx 个特征; y∈0,1 ,目标值属于0、1分类;- 训练数据:
{(x(1),y(1)),(x(2),y(2)),⋯,(x(m),y(m))}
输入神经网络时样本数据的形状:
目标数据的形状:
2. logistic Regression
逻辑回归中,预测值:
其表示为1的概率,取值范围在
引入Sigmoid函数,预测值:
注意点:函数的一阶导数可以用其自身表示,
这里可以解释梯度消失的问题,当
参数梯度下降公式的不断更新,
3. logistic回归 损失函数
Loss function
一般经验来说,使用平方错误(squared error)来衡量Loss Function:
但是,对于logistic regression 来说,一般不适用平方错误来作为Loss Function,这是因为上面的平方错误损失函数一般是非凸函数(non-convex),其在使用低度下降算法的时候,容易得到局部最优解,而不是全局最优解。因此要选择凸函数。
逻辑回归的Loss Function:
- 当
y=1 时,L(ŷ ,y)=−logŷ 。如果ŷ 越接近1,L(ŷ ,y)≈0 ,表示预测效果越好;如果ŷ 越接近0,L(ŷ ,y)≈+∞ ,表示预测效果越差; - 当
y=0 时,L(ŷ ,y)=−log(1−ŷ ) 。如果ŷ 越接近0,L(ŷ ,y)≈0 ,表示预测效果越好;如果ŷ 越接近1,L(ŷ ,y)≈+∞ ,表示预测效果越差; - 我们的目标是最小化样本点的损失Loss Function,损失函数是针对单个样本点的。
Cost function
全部训练数据集的Loss function总和的平均值即为训练集的代价函数(Cost function)。
- Cost function是待求系数w和b的函数;
- 我们的目标就是迭代计算出最佳的w和b的值,最小化Cost function,让其尽可能地接近于0。
4. 梯度下降
用梯度下降法(Gradient Descent)算法来最小化Cost function,以计算出合适的w和b的值。
每次迭代更新的修正表达式:
在程序代码中,我们通常使用dw来表示
5. 逻辑回归中的梯度下降法
对单个样本而言,逻辑回归Loss function表达式:
反向传播过程:
前面过程的da、dz求导:
再对
梯度下降法:
6. m个样本的梯度下降
对m个样本来说,其Cost function表达式如下:
Cost function 关于w和b的偏导数可以写成所有样本点偏导数和的平均形式:
7. 向量化(Vectorization)
在深度学习的算法中,我们通常拥有大量的数据,在程序的编写过程中,应该尽最大可能的少使用loop循环语句,利用python可以实现矩阵运算,进而来提高程序的运行速度,避免for循环的使用。
逻辑回归向量化
- 输入矩阵X:
(nx,m) - 权重矩阵w:
(nx,1) - 偏置b:为一个常数
- 输出矩阵Y:
(1,m)
所有m个样本的线性输出Z可以用矩阵表示:
python代码:
- 1
- 2
逻辑回归梯度下降输出向量化
dZ对于m个样本,维度为
(1,m) ,表示为:dZ=A−Y db可以表示为:
db=1m∑i=1mdz(i)
python代码:
- 1
- dw可表示为:
dw=1mX⋅dZT
python代码:
- 1
单次迭代梯度下降算法流程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
8. python的notation
虽然在Python有广播的机制,但是在Python程序中,为了保证矩阵运算的正确性,可以使用reshape()函数来对矩阵设定所需要进行计算的维度,这是个好的习惯;
如果用下列语句来定义一个向量,则这条语句生成的a的维度为(5,),既不是行向量也不是列向量,称为秩(rank)为1的array,如果对a进行转置,则会得到a本身,这在计算中会给我们带来一些问题。
- 1
- 如果需要定义(5,1)或者(1,5)向量,要使用下面标准的语句:
- 1
- 2
- 可以使用assert语句对向量或数组的维度进行判断。assert会对内嵌语句进行判断,即判断a的维度是不是(5,1),如果不是,则程序在此处停止。使用assert语句也是一种很好的习惯,能够帮助我们及时检查、发现语句是否正确。
- 1
- 可以使用reshape函数对数组设定所需的维度
- 1
8. logistic regression代价函数的解释
Cost function的由来:
预测输出
其中,
当
将两种情况整合到一个式子中,可得:
对上式进行log处理(这里是因为log函数是单调函数,不会改变原函数的单调性):
概率
对于m个训练样本来说,假设样本之间是独立同分布的,我们总是希望训练样本判断正确的概率越大越好,则有:
同样引入log函数,加负号,则可以得到Cost function:
- Coursera吴恩达《神经网络和深度学习》课程笔记(2)
- Coursera吴恩达《神经网络和深度学习》课程笔记(3)
- Coursera吴恩达《神经网络与深度学习》课程笔记(2)-- 神经网络基础之逻辑回归
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(1-2)-- 神经网络基础
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(1-2)-- 神经网络基础(转载)
- Coursera吴恩达《神经网络与深度学习》课程笔记(1)-- 深度学习概述
- Coursera吴恩达《神经网络与深度学习》课程笔记(4)-- 浅层神经网络
- Coursera吴恩达《神经网络与深度学习》课程笔记(5)-- 深层神经网络
- Coursera吴恩达《优化深度神经网络》课程笔记(1)-- 深度学习的实用层面
- Coursera吴恩达《优化深度神经网络》课程笔记(1)-- 深度学习的实用层面
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(1-3)-- 浅层神经网络
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(1-4)-- 深层神经网络
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(4-1)-- 卷积神经网络基础
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(1-4)-- 深层神经网络(转载)
- 吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(4-1)-- 卷积神经网络基础
- Coursera深度学习课程 DeepLearning.ai 提炼笔记(1-2)-- 神经网络基础
- Coursera吴恩达《神经网络与深度学习》课程笔记(3)-- 神经网络基础之Python与向量化
- Coursera吴恩达《优化深度神经网络》课程笔记(2)-- 优化算法
- 51nod 1031 骨牌覆盖
- Ubuntu下crontab启动、重启、关闭命令
- OneThinkPHP Mac安装及问题解决
- 内存
- linux-top(查看各进程cpu用量等)
- Coursera吴恩达《神经网络和深度学习》课程笔记(2)
- C++头文件的秘密(转载)
- 征兵
- JSP+Servlet+JavaBean+DAO
- 琢磨点事
- android multi-display
- Traffic Jam UVA
- 《跃迁》读书笔记之成为高手的技术
- 高效的两段式循环缓冲区──BipBuffer