吴恩达深度学习课程学习笔记第三周

2.7计算图:

一个神经网络的计算,都是按照前向或反向传播过程组织的。我们需要计算出一个新的网络的输出(前向过程),紧接着进行一个反向传输操作。计算图解释了为什么我们用这种方式组织这些计算过程

如下图计算函数 J ,J是由三个变量 a , b , c  组成的函数,这个函数是 3 ( a + b c ) 。计算这个函数实际上有三个不同的步骤,首先是计算 b 乘以 c  ,我们把它储存在变量 u中,因此 u = b c u ; 然后计算 v = a + u v ;最后输出 J = 3 v  ,这就是要计算的函数 J 。我们可以把这三步画成如下的计算图,我先在这画三个变量 a , b , c ,第一步就是计算 u = b c u ,我在这周围放个矩形框,它的输入是 b , c  ,接着第二步 v = a + u v,最后一步 J = 3 v  。 举个例子: a = 5 , b = 3 , c = 2 , u = b c u 就是6, , v = a + u v 就是5+6=11。 J 是3倍的 ,因此。即 3 ∗ ( 5 + 3 ∗ 2 ) 。如果你把它算出来,实际上得到33就是 J的值。 当有不同的或者一些特殊的输出变量时,例如本例中的 J 和逻辑回归中你想优化的代价函数 J,因此计算图用来处理这些计算会很方便。从这个小例子中我们可以看出,通过一个从左向右的过程,你可以计算出的 J。为了计算导数,从右到左(红色箭头,和蓝色箭头的过程相反)的过程是用于计算导数最自然的方式。

Logistic 回归的梯度下降法:

假设样本只有两个特征 x1和x2,为了计算z输入参数 \omega 1\omega 2和b、特征值x1和x2。

逻辑回归的公式定义如下:

损失函数: 

代价函数: 

单个样本的代价函数: 

w和b的修正:

 

在这个公式的外侧画上长方形。然后计算: 也就是计算图的下一步,最后计算损失函数。有了计算图,就不需要再写出公式了。因此,为了使得逻辑回归中最小化代价函数只需要修改参数 w 和 b 的值。

通过微积分得到:

 求得:

计算 w 和 b 变化对代价函数 L  的影响:

 dw_{1}=\frac{1}{m} \sum_{i}^{m}x_{1}^{\left ( i \right )}\left ( a^{\left ( i \right )} -y^{\left ( i \right )}\right )                             

 

dw_{2}=\frac{1}{m} \sum_{i}^{m}x_{2}^{\left ( i \right )}\left ( a^{\left ( i \right )} -y^{\left ( i \right )}\right ) 

使用dz=\left ( a-y \right )计算 dz,使用dw_{1}=x_{1}\cdot dz计算dw_{1}以及dw_{2}

w_{1}=w_{1}-\alpha dw_{1}w_{2}=w_{2}-\alpha dw_{2}b=b-\alpha db

 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;
w=w-alpha*dw
b=b-alpha*db

此方法在逻辑回归上需要编写两个for循环。第一个for循环是一个小循环遍历 m 个训练样本,第二个for循环是一个遍历所有特征的for循环。2个特征,n就等于2,如果有更多特征就要从dw_{1}一直算到dw_{n}

在代码中显式地使用for循环使算法很低效,同时在深度学习领域会有越来越大的数据集。所以能够应用算法且没有显式的for循环会是重要的,并且会适用于更大的数据集。向量化技术可以允许代码摆脱这些显式的for循环。

 向量化:

向量化是非常基础的去除代码中for循环的艺术,在深度学习安全领域、深度学习实践中

 所以如果使用非向量化方法去计算w^{T}x,代码如下:

x
z=0
for i in range(n_x)
    z+=w[i]*x[i]
z+=b
很慢

z=np.dot(w,x)+b这是向量化计算w^{T}x的方法,非常快。

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值