吴恩达-深度学习-神经网络和深度学习-第二周
2017-09-09 22:11
477 查看
参考:
http://blog.csdn.net/red_stone1/article/details/77851177
第二周的主要任务是设计一个二分分类器。
假如给定一副猫的图片,那么二分类问题就可描述为:判别这幅图像中是否有猫?分类结果也只有1(表示存在),0(表示不存在)两种。
x:表示一个nx维数据,为输入数据,维度为(nx,1);
y:表示输出结果,取值为(0,1) ;
(x(i),y(i)):表示第i 组数据,可能是训练数据,也可能是测试数据,此处默认为训练数据;
X=[x(1),x(2),...,x(m)]:表示所有的训练数据集的输入值,放在一个nx∗m的矩阵中,其中m表示样本数目;
Y=[y(1),y(2),...,y(m)]:对应表示所有训练数据集的输出值,维度为1∗m 。
线性回归
二分模型:
a=y^=σ(z)=σ(wTx+b)
其中σ(z)=11+e−z。
损失函数:
L(y^(i),y(i))=−y(i)logy^(i)−(1−y(i))log(1−y^(i))
代价函数:
J(w,b)=1mΣmiL(y^(i),y(i))
计算方法
解决此类问题常见的方法是梯度下降法,w和b的修正量可以表达如下:
w=w−α∂J(w,b)∂w
b=b−α∂J(w,b)∂b
每次迭代时,只需按照梯度方向下降即可收敛得到结果。
可以得到一下公式(具体推导不展开了~~):
∂a∂z=a(1−a)
∂L∂a=−ya+1−y1−a
∂L∂z=∂L∂a∂a∂z=a−y
进一步可以得到:
∂L∂w1=∂L∂z∂z∂w1=x1(a−y)
∂L∂w2=∂L∂z∂z∂w2=x2(a−y)
∂L∂b=∂L∂z∂z∂b=(a−y)
因此对于损失函数可以写成:
dw1=1mΣmix(i)1(a(i)−y(i))
dw2=1mΣmix(i)2(a(i)−y(i))
db=1mΣmi(a(i)−y(i))
因此其流程代码可以写成:
然而考虑到在深度学习中,训练数据通常非常大,使用循环进行训练是一个非常不合理的方式。因此有必要对其进行向量化
http://blog.csdn.net/red_stone1/article/details/77851177
第二周的主要任务是设计一个二分分类器。
二分类问题
二分类问题是一种简单分类问题,其输出结果是两个离散值。假如给定一副猫的图片,那么二分类问题就可描述为:判别这幅图像中是否有猫?分类结果也只有1(表示存在),0(表示不存在)两种。
数学模型
符号定义x:表示一个nx维数据,为输入数据,维度为(nx,1);
y:表示输出结果,取值为(0,1) ;
(x(i),y(i)):表示第i 组数据,可能是训练数据,也可能是测试数据,此处默认为训练数据;
X=[x(1),x(2),...,x(m)]:表示所有的训练数据集的输入值,放在一个nx∗m的矩阵中,其中m表示样本数目;
Y=[y(1),y(2),...,y(m)]:对应表示所有训练数据集的输出值,维度为1∗m 。
线性回归
二分模型:
a=y^=σ(z)=σ(wTx+b)
其中σ(z)=11+e−z。
损失函数:
L(y^(i),y(i))=−y(i)logy^(i)−(1−y(i))log(1−y^(i))
代价函数:
J(w,b)=1mΣmiL(y^(i),y(i))
计算方法
解决此类问题常见的方法是梯度下降法,w和b的修正量可以表达如下:
w=w−α∂J(w,b)∂w
b=b−α∂J(w,b)∂b
每次迭代时,只需按照梯度方向下降即可收敛得到结果。
公式推导
为简化推导过程,假设nx=2,则可以得到z=w1x1+w2x2+b。可以得到一下公式(具体推导不展开了~~):
∂a∂z=a(1−a)
∂L∂a=−ya+1−y1−a
∂L∂z=∂L∂a∂a∂z=a−y
进一步可以得到:
∂L∂w1=∂L∂z∂z∂w1=x1(a−y)
∂L∂w2=∂L∂z∂z∂w2=x2(a−y)
∂L∂b=∂L∂z∂z∂b=(a−y)
因此对于损失函数可以写成:
dw1=1mΣmix(i)1(a(i)−y(i))
dw2=1mΣmix(i)2(a(i)−y(i))
db=1mΣmi(a(i)−y(i))
因此其流程代码可以写成:
J=0; dw1=0; dw2=0; db=0; for i = 1 to m z(i) = wx(i)+b; a(i) = sigmoid(z(i)); J += -[y(i)log(a(i))+(1-y(i))log(1-a(i)); dz(i) = a(i)-y(i); dw1 += x1(i)dz(i); dw2 += x2(i)dz(i); db += dz(i); J /= m; dw1 /= m; dw2 /= m; db /= m; w=w-alpha*dw b=b-alpha*db
然而考虑到在深度学习中,训练数据通常非常大,使用循环进行训练是一个非常不合理的方式。因此有必要对其进行向量化
w.reshape(2,1) b.reshape(1,1) X=[x1,x2,...,xn] Y=[y1,y2,...,yn] Z=np.dot(w.T,X)+b A=sigmoid(Z) dz=A-Y dw=X*dz.trans()/m db=np.sum(dz)/m w=w-alpha*dw b=b-alpha*db
代码实现
待定。。。相关文章推荐
- 深度学习与神经网络-吴恩达-第二周优化算法
- coursera 吴恩达 -- 第一课 神经网络和深度学习 :第二周课后习题 Logistic Regression with a Neural Network mindset
- Coursera deep learning 吴恩达 神经网络和深度学习 第二周 编程作业 Logistic Regression with a Neural Network mindset
- 吴恩达深度学习入门学习笔记之神经网络和深度学习(第二周:神经网络基础)
- 吴恩达深度学习入门学习笔记之神经网络和深度学习(第二周:神经网络基础)
- coursera 吴恩达 -- 第一课 神经网络和深度学习 :第二周课后习题 Neural Network Basics Quiz, 10 questions
- 【中文】【吴恩达课后编程作业】Course 1 - 神经网络和深度学习 - 第二周作业
- coursera 吴恩达 -- 第一课 神经网络和深度学习 :第二周课后习题 Python Basics with numpy (optional)
- Coursera 深度学习 deep learning.ai 吴恩达 神经网络和深度学习 第一课 第二周 编程作业 Python Basics with Numpy
- 吴恩达深度学习课程笔记之神经网络基础
- Coursera deep learning 吴恩达 神经网络和深度学习 第三周 编程作业 Planar data classification with one hidden layer
- 神经网络和深度学习-第二周神经网络基础-第四节:梯度下降法
- coursera 吴恩达 -- 第一课 神经网络和深度学习 :第四周课后习题 Building your Deep Neural Network - Step by Step v5
- coursera 吴恩达 -- 第一课 神经网络和深度学习 :第四周课后习题 Deep Neural Network - Application v3
- 吴恩达(Andrew Ng)深度学习工程师笔记 - 第一门课-神经网络和深度学习-第一周深度学习概论-第四节:为什么深度学习会兴起?
- 神经网络和深度学习-第二周神经网络基础-第七节:计算图
- coursera 吴恩达 -- 第一课 神经网络和深度学习 :第一周课后习题 Neural Network Basics
- 神经网络和深度学习-第二周神经网络基础-第二节:Logistic回归
- 神经网络和深度学习-第二周神经网络基础-第八节:计算图的导数计算
- 【学习日记】吴恩达深度学习工程师微专业第一课:神经网络和深度学习