您的位置:首页 > 理论基础 > 计算机网络

吴恩达-深度学习-神经网络和深度学习-第二周

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

每次迭代时,只需按照梯度方向下降即可收敛得到结果。

公式推导

为简化推导过程,假设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


代码实现

待定。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  深度学习
相关文章推荐