深度学习笔记(二)——神经网络和深度学习(神经网络基础一)

1.二分分类

计算机存储图片,是分别获取图片的RGB值,例如下图:

然后把这些值合并成一个特征向量:

 如果图片是64\times64的,那么特征向量x的维度n_{x}=64\times64\times3=12288。

二分分类的目的是训练出一个分类器,以图片的特征向量x作为输入,预测输出的结果标签y是1or0。

2.logistic回归及其损失函数

 损失函数:

成本函数:

我们需要找到最合适的w和b,使成本函数最小。

3.梯度下降法

成本函数J(w,b)函数是一个凸函数,如下图:

总是具有一个最优解,因此我们可以根据下面两个公式,选定一个初始状态,进行迭代,使得wb逐渐接近最优解,最终取得最优解或者最接近最优解。

w=w-\alpha \times \frac{\partial J(w,b)}{\partial w}b = b - \alpha \times \frac{\partial J(w,b)}{\partial b}\alpha为学习率)

4.logistic回归的梯度下降法

对单个样本而言,逻辑回归Loss function表达式如下:

该逻辑回归的正向传播过程非常简单。根据上述公式,例如输入样本x有两个特征(x_{1},x_{2}),相应的权重w维度也是2,即(w_{1},w_{2})。则z = w_{1}x_{1} + w_{2}x_{2} + b,最后的Loss function如下所示:

然后,计算该逻辑回归的反向传播过程,即由Loss function计算参数wb的偏导数。推导过程如下: 

知道了dz之后,就可以直接对w_{1},w_{2}b进行求导了。

则梯度下降算法可表示为:

如果有m个样本,其Cost function表达式如下:

Cost function关于wb的偏导数可以写成和平均的形式:

这样,每次迭代中wb的梯度由m个训练样本计算平均值得到。其算法流程图如下所示:

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;

经过每次迭代后,根据梯度下降算法,wb都进行更新:

这样经过n次迭代后,整个梯度下降算法就完成了。

在深度学习中,样本数量m通常很大,使用for循环会让神经网络程序运行得很慢。所以,我们应该尽量避免使用for循环操作,而使用矩阵运算,能够大大提高程序运行速度。

猜你喜欢

转载自blog.csdn.net/zhao2018/article/details/82927953