吴恩达深度学习课程-第二周

1.二分类

​为了保存一张图片,需要保存三个矩阵,它们分别对应图片中的红、绿、蓝三种颜色通道,假设图片大小为 64 ∗ 64 64*64 6464(下图采用 5 ∗ 4 5*4 54表示),要用一个特征向量 x x x表示该图片,则要将图片中每个像素值转换为 x x x的一个维度,此时的维度大小为 12288 = 64 ∗ 64 ∗ 3 12288=64*64*3 12288=64643

在这里插入图片描述

可以将该特征向量 x x x输入到分类器(如逻辑回归模型)中,对图片是不是猫进行判断。下面对后续用到的符号进行梳理:

  • x x x:输入数据,维度为 ( n x , 1 ) (n_x,1) (nx,1)
  • y y y:输出结果,取值为 ( 0 , 1 ) (0,1) (0,1)
  • ( x ( i ) , y ( i ) ) (x^{(i)},y^{(i)}) (x(i),y(i)):第 i i i组数据
  • X = [ x ( 1 ) 、 x ( 2 ) 、 . . . x ( m ) ] X=[x^{(1)}、x^{(2)}、...x^{(m)}] X=[x(1)x(2)...x(m)]:表示所有训练集的输入值,维度为 n x ∗ m t r a i n n_x*m_{train} nxmtrain
  • Y = [ y ( 1 ) 、 y ( 2 ) 、 . . . y ( m ) ] Y=[y^{(1)}、y^{(2)}、...y^{(m)}] Y=[y(1)y(2)...y(m)]:表示所有训练集的输出值,维度为 1 ∗ m t r a i n 1*m_{train} 1mtrain

2.逻辑回归

参考之前博客吴恩达机器学习课程-第三周1.1-1.2

3.逻辑回归的代价函数

参考之前博客吴恩达机器学习课程-第三周1.4

4.梯度下降

参考之前博客吴恩达机器学习课程-第一周3.3

5.计算图

​神经网络的计算都是按照前向或反向传播过程组织的。首先计算出一个网络的输出(即前向过程),接着进行反向传输操作(即计算出对应的梯度),而计算图解释了为什么用这种方式组织这些计算过程

​ 假设函数 J = 3 ( a + b c ) J=3(a+bc) J=3(a+bc)。在前向传播中,令 u = b c ; v = a + v ; J = 3 v u=bc;v=a+v;J=3v u=bc;v=a+v;J=3v,给定数值后即可计算出 J J J的值:

在这里插入图片描述

5.1 使用计算图求导数

​上图中知道了前向传播的过程,该如何利用该过程求出 J J J的导数?

  • 首先计算 d J d v \frac{dJ}{dv} dvdJ,很明显该值为 3 3 3
  • 此时计算 d J d a \frac{dJ}{da} dadJ,该式可以理解为提高 a a a的值对 J J J的值有多大的影响:将 a = 5 a=5 a=5增加为 a = 5.001 a=5.001 a=5.001,则 v = 11 v=11 v=11变为 v = 11.001 v=11.001 v=11.001,最终 J = 33 J=33 J=33变为 J = 33.003 J=33.003 J=33.003,所以 d J d a = 3 \frac{dJ}{da}=3 dadJ=3。整个流程的变化可以理解为 d J d a = d J d v d v d a \frac{dJ}{da}=\frac{dJ}{dv}\frac{dv}{da} dadJ=dvdJdadv(即链式法则),为了简化表达将 d J d a \frac{dJ}{da} dadJ表示为 d a da da
  • 其他变量的导数 d b 、 d c 、 d u db、dc、du dbdcdu的计算与上述步骤类似

在这里插入图片描述

5.2逻辑回归中的梯度下降

​假设一个样本有两个特征 x 1 、 x 2 x_1、x_2 x1x2,目标函数为 L ( a , y ) = − ( y ( l o g ( a ) ) + ( 1 − y ) l o g ( 1 − a ) ) L(a,y)=-(y(log(a)) + (1-y)log(1-a)) L(a,y)=(y(log(a))+(1y)log(1a))。为了更新梯度需要计算出 ∂ L ( a , y ) ∂ w \frac{\partial L(a,y)}{\partial w} wL(a,y) ∂ L ( a , y ) ∂ b \frac{\partial L(a,y)}{\partial b} bL(a,y)

  • 首先计算 ∂ L ( a , y ) ∂ a = − y / a + ( 1 − y ) / ( 1 − a ) \frac{\partial L(a,y)}{\partial a}=-y/a+(1-y)/(1-a) aL(a,y)=y/a+(1y)/(1a)
  • 下面计算 ∂ L ( a , y ) ∂ z = ∂ L ( a , y ) ∂ a ∂ a ∂ z = ( − y / a + ( 1 − y ) / ( 1 − a ) ) ∗ ( a ( 1 − a ) ) = a − y \frac{\partial L(a,y)}{\partial z}=\frac{\partial L(a,y)}{\partial a}\frac{\partial a}{\partial z}=(-y/a+(1-y)/(1-a))*(a(1-a))=a-y zL(a,y)=aL(a,y)za=(y/a+(1y)/(1a))(a(1a))=ay
  • 最后计算 ∂ L ( a , y ) ∂ w 1 = ∂ L ( a , y ) ∂ z ∂ z ∂ w 1 = x 1 ( a − y ) \frac{\partial L(a,y)}{\partial w1}=\frac{\partial L(a,y)}{\partial z}\frac{\partial z}{\partial w1}=x_1(a-y) w1L(a,y)=zL(a,y)w1z=x1(ay) ∂ L ( a , y ) ∂ w 2 = x 2 ( a − y ) \frac{\partial L(a,y)}{\partial w2}=x2(a-y) w2L(a,y)=x2(ay) ∂ L ( a , y ) ∂ b = a − y \frac{\partial L(a,y)}{\partial b}=a-y bL(a,y)=ay

在这里插入图片描述

上述过程针对的是一个样本的梯度下降,对于 m m m个样本的梯度下降,目标函数为 J ( w , b ) = 1 m ∑ i = 1 m L ( a ( i ) , y ( i ) ) J(w,b)=\frac{1}{m}\sum_{i=1}^mL(a^{(i)},y^{(i)}) J(w,b)=m1i=1mL(a(i),y(i))。在下面代码中,上标 ( i ) (i) (i)表示当前样本上标:

在这里插入图片描述

上述代码的实现如果直接使用for循环效率是很低的,此时可以使用python库中向量化进行计算,将上面代码通过向量化后代码变得很简洁:

在这里插入图片描述

6.Python中的广播

总结后如下图:

在这里插入图片描述

注意:在每次创建一个数组时,尽量让它成为一个列/行向量。比如随机初始化一个大小为5的数组时,最好用 a = n p . r a n d o m . r a n d n ( 5 , 1 ) a=np.random.randn(5,1) a=np.random.randn(5,1),而不是 a = n p . r a n d o m . r a n d n ( 5 ) a=np.random.randn(5) a=np.random.randn(5)

7.逻辑回归损失函数的解释

在逻辑回归中,当真实标签 y = 1 y=1 y=1时,预测值 y ^ = p ( y ∣ x ) \hat y=p(y|x) y^=p(yx);当真实标签 y = 0 y=0 y=0时,预测值 y ^ = 1 − p ( y ∣ x ) \hat y=1-p(y|x) y^=1p(yx),对这两个式子进行如下处理:

  • 将上面两个式子合并为 p ( y ∣ x ) = y ^ y ( 1 − y ^ ) 1 − y p(y|x)=\hat y^y(1-\hat y)^{1-y} p(yx)=y^y(1y^)1y(分别将 y = 0 y=0 y=0 y = 1 y=1 y=1代入该式即可还原为原来的两个式子)
  • 因为 l o g log log函数是单增函数,所以最大化 p ( y ∣ x ) p(y|x) p(yx)等价于最大化 l o g ( p ( y ∣ x ) ) = y l o g y ^ + ( 1 − y ) l o g ( 1 − y ^ ) log(p(y|x))=ylog\hat y+(1-y)log(1-\hat y) log(p(yx))=ylogy^+(1y)log(1y^)

处理后的式子就是单个样本的目标函数 L ( y ^ , y ) L(\hat y,y) L(y^,y)取负值,取负值原因是因为目标函数是最小化损失,而 l o g ( y ∣ x ) log(y|x) log(yx)是要最大化输出概率。对于 m m m个样本,假设它们服从同一分布且相互独立,则 l o g ∏ i = 1 m p ( y ( i ) ∣ x ( i ) ) = ∑ i = 1 m l o g p ( y ( i ) ∣ x ( i ) ) = ∑ i = 1 m − L ( y ( i ) ∣ x ( i ) ) = − m J ( w , b ) log\prod_{i=1}^m p(y^{(i)}|x^{(i)})=\sum_{i=1}^mlog p(y^{(i)}|x^{(i)})=\sum_{i=1}^m -L(y^{(i)}|x^{(i)})=-mJ(w,b) logi=1mp(y(i)x(i))=i=1mlogp(y(i)x(i))=i=1mL(y(i)x(i))=mJ(w,b)

可以结合吴恩达机器学习课程-第三周1.4节理解

8.参考

https://www.bilibili.com/video/BV1FT4y1E74V?p=7-24

http://www.ai-start.com/dl2017/html/lesson1-week2.html

https://blog.csdn.net/qq_41398418/article/details/125034567

https://blog.csdn.net/qq_41398418/article/details/125080670

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值