神经网络和深度学习笔记(一)
2017-10-16 20:10
316 查看
神经网络和深度学习笔记(一)
Logistic回归算法(Logistic Regression)
[用于二分分类的算法](一)基础知识
二分分类
Created with Raphaël 2.1.0InputInputOutputOutput0(NOT)1(IS)
计算机如何保存图片
输入的是特征变量 x
保存3个矩阵,对应RGB,如果图片尺寸64*64,则有3个64*64的矩阵
怎么计算特征变量?
xn=[R1,G1,B1.R2…]^T
维度nx=64*64*3
traning example里有多个样本,每个样本得x1,x2,x3……
得 x=[x1,x2,….]
有对应的label y=[y1,y2…]
补充:Python中X.shape输出矩阵维度 X.shape=(n.m) Y.shape=(1,m)
sigmod函数
(二)函数模型
成长函数
w,b要求的,(x(1),y(1))表示第一个样本,x为特征向量,y为label
loss(error) function
直观容易得到误差式子,但结果将会多个最优值(多个谷底)
由此思考得到另一条
cost function(全局成本函数)
在训练Logistic回归模型的时候需要找到合适的w,b使得误差最小,此处可用到梯度下降法。
(三)梯度下降法
J(w,b)为曲面高度,找到曲面最低点即是j最优,且得到w,b,而从这里可以看出logistic的回归函数是一个凹函数,选择凹函数。
Reapeat{
w:=w-αdw
b:=b-αb
}
通过断更新往最优方向走,详情看笔记本的图解
由公式知,需要dw,db,α(计算如下)
(四)计算偏导数来实现logistic回归
核心关键点
只有一个样本的例子
[Input]
x1,x2(特征向量),w1,w2,b
[Output]
z=w1x1+w2x2+b
L(a,y)
[求dw(dw1,dw2…),db](用于求梯度,详情看公式)
dz/dw1=(w1x1+w2x2+b)’=x1dz
dz/dw2=(w1x1+w2x2+b)’=x2dz
[求dz]
dz=dL/dz=dL/da*da/dz=a-y
应用到m个样本
【成本函数要求的是m个样本损失函数值的平均值 】
【J对w1求导得出全局梯度值dw1即算法中算出来的dw1,其他同理】
【算法】这个过程需要重复多次
//假设只有两个特征值w1,w2,每个样本(x(i),y(i)) J=0 //全局成本函数 dw1=0 //w1全局梯度值 dw2=0 //w2全局梯度值 b=0 //适合的常数 for i=1 to m //每次对单个样本操作 z(i)=w^T*x(i)+b a(i)=s(z(i+1)) J+=-[y(i)log(a(i))+(1-y(i))log(1-a(i))] //损失求和 dz(i)=a(i)-y(i) //求dz //求梯度下降需要的各参数和 dw1+=x1(i)dz(i) dw2+=x2(i)dz(i) db+=dz(i) J=J/m dw1=dw1/m dw2=dw2/m db=db/m //应用梯度下降 w1:=w1-αdw1 w2:=w2-αdw2 b:=b-αb
(五)向量化实现,同时处理整个训练集,实现梯度下降法的一部迭代
- 原来的算法
每个样本都要计算z,a,需要计算m次,怎么不用for?=x
可以在矩阵中运算
当x=[x1^t,x2^t…](x1是一个向量)
z=w^tx+b(作为一个矩阵运算)
//一次迭代(可以多次) //以下都是同时计算 python代码:Z=np.dot(w^T,X)+b //计算z A=sigmod(Z) //得到a dz=A-Y //求梯度下降需要的各参数和 dw=np.dot(X,dz) db=np.sum(dz) J=J/m dw=dw/m db=db/m //应用梯度下降 w:=w-αdw b:=b-αb
()python调试技巧
- 不要用秩为1的结构,即在定义的时候要用(n,m)而不是(n)
它与行向量或列向量不一样,效果不太直观,应该定义为行向量或列向量,直接用reshape(n,m)确保需要的维度
相关文章推荐
- Coursera吴恩达《神经网络和深度学习》课程笔记(2)
- Coursera吴恩达《神经网络和深度学习》课程笔记(3)
- 深度学习笔记一:神经网络概述
- 吴恩达深度学习视频笔记1-2:《神经网络和深度学习》之《神经网络基础》
- 吴恩达深度学习入门学习笔记之神经网络和深度学习(第二周:神经网络基础)
- 吴恩达深度学习入门学习笔记之神经网络和深度学习(第二周:神经网络基础)
- Coursera吴恩达《神经网络与深度学习》课程笔记(2)-- 神经网络基础之逻辑回归
- Deeplearning.ai学习笔记-神经网络和深度学习(一)
- 吴恩达深度学习视频笔记1-4:《神经网络和深度学习》之《深层神经网络》
- Deeplearning.ai学习笔记-神经网络和深度学习(二)
- 小白学《神经网络与深度学习》笔记之一-计算机的潜意识:浅谈神经网络-从神经元到深度学习
- 深度学习与神经网络学习笔记(四)
- 吴恩达深度学习视频笔记1-1:《神经网络和深度学习》之《深度学习概论》
- 吴恩达(Andrew Ng)深度学习工程师笔记 - 第一门课-神经网络和深度学习-第一周深度学习概论-第四节:为什么深度学习会兴起?
- 吴恩达深度学习入门学习笔记之神经网络和深度学习(第一周)
- Stanford机器学习笔记-5.神经网络Neural Networks (part two)
- 吴恩达-深度学习笔记《改善深层神经网络:超参数调试、正则化以及优化》
- 机器学习笔记——神经网络的实现
- tensorflow 学习笔记7 普通神经网络实现mnist手写识别
- 神经网络学习笔记1