《吴恩达深度学习》01神经网络和深度学习(第2周神经网络基础)

01. 神经网络和深度学习

第二周 神经网络基础

2.1 二分分类

  1. 图片在计算机中的保存:三通道(红,绿,蓝)
  2. X = [ x ( 1 ) , x ( 2 ) , ⋯   , x ( m ) ] X=[x^{(1)},x^{(2)},\cdots,x^{(m)}] X=[x(1),x(2),,x(m)],每个列向量为一个样本。

2.2 logistic回归

  1. 给定 x x x,目的是求 y ^ = P ( y = 1 ∣ x ) \hat{y}=P(y=1|x) y^=P(y=1x)
  2. sigmoid函数
    σ ( z ) = 1 1 + e − z \sigma(z)=\frac{1}{1+e^{-z}} σ(z)=1+ez1
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xx6brPZB-1585525565321)(./1583799980111.png)]
  3. logistic回归
    y ^ = σ ( w T + b ) \hat{y} = \sigma(w^{T}+b) y^=σ(wT+b)

2.3 logistic回归损失函数

  1. 平方损失函数(在logistic中不常用,因为会导致非凸)
    L ( y ^ , y ) = 1 2 ( y ^ − y ) 2 L(\hat{y}, y) = \frac{1}{2}(\hat{y}-y)^2 L(y^,y)=21(y^y)2
  2. 熵损失函数
    L ( y ^ , y ) = − ( y l o g y ^ + ( 1 − y ) l o g ( 1 − y ^ ) ) L(\hat{y}, y)=-(y log \hat{y}+ (1-y)log(1-\hat{y})) L(y^,y)=(ylogy^+(1y)log(1y^))
  3. 成本函数
    J j ( w , b ) = 1 m ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) Jj(w, b)=\frac{1}{m}\sum_{i=1}^{m}L(\hat{y}^{(i)}, y^{(i)}) Jj(w,b)=m1i=1mL(y^(i),y(i))

2.4 梯度下降法

  1. 流程
    w : = w − α ∂ J ( w , b ) ∂ w w:= w-\alpha \frac{\partial J(w, b)}{\partial w} w:=wαwJ(w,b)
    b : = b − α ∂ J ( w , b ) ∂ b b:= b-\alpha \frac{\partial J(w,b)}{\partial b} b:=bαbJ(w,b)

2.5 导数

2.6 更多导数的例子

2.7 计算图

  1. 举例: J ( a , b , c ) = 3 ( a + b c ) J(a,b,c)=3(a+bc) J(a,b,c)=3(a+bc)
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N2YdSvDC-1585525565322)(./1583803475057.png)]

2.8 计算图的导数计算

  1. 计算图
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o8ioiM5r-1585525565323)(./1583803600253.png)]
  2. 链式法则
  3. 代码中常用变量:dvar,最终关心的输出变量的导数

2.9 logistic回归中的梯度下降法

  1. 计算图
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dOIP9Btr-1585525565323)(./1583804673731.png)]

2.10 m个样本的梯度下降

J = 0 ; d w 1 = 0 ; d w 2 = 0 ; d b = 0 f o r i = 1 t o m z ( i ) = w T x ( i ) + b a ( i ) = σ ( z ( i ) ) J + = − [ y ( i ) l o g a ( i ) + ( 1 − y ( i ) ) l o g ( 1 − a ( i ) ) ] d z ( i ) = a ( i ) − y ( i ) d w 1 + = x 1 ( i ) d z ( i ) d w 2 + = x 2 ( i ) d z ( i ) d b + = d z ( i ) J / = m d w 1 / = m , d w 2 / = m , d b / = m ; J=0; dw_1 =0; dw_2=0;db=0\\ for i =1 to m\\ z^{(i)} = w^T x^{(i)} +b\\ a^{(i)} = \sigma (z^{(i)})\\ J += -[y^{(i)}loga^{(i)}+ (1-y^{(i)})log(1-a^{(i)})]\\ dz^{(i)} = a^{(i)}-y^{(i)}\\ dw_1 += x_1^{(i)}dz^{(i)}\\ dw_2 += x_2^{(i)}dz^{(i)}\\ db += dz^{(i)}\\ J /= m\\ dw_1 /=m, dw_2 /=m, db/=m; J=0;dw1=0;dw2=0;db=0fori=1tomz(i)=wTx(i)+ba(i)=σ(z(i))J+=[y(i)loga(i)+(1y(i))log(1a(i))]dz(i)=a(i)y(i)dw1+=x1(i)dz(i)dw2+=x2(i)dz(i)db+=dz(i)J/=mdw1/=m,dw2/=m,db/=m;
2. 问题:两次for循环,较为低效
3. 解决方法:向量化

2.11 向量化

  1. 什么是向量化
    z = w T x + b z=w^T x+b z=wTx+b
  2. 非向量化代码
    z = 0 f o r i i n r a n g e ( n − x ) : z + = w [ i ] ∗ x [ i ] z + = b z=0 \\ for i in range(n-x): z += w[i]*x[i] z+= b z=0foriinrange(nx):z+=w[i]x[i]z+=b
  3. 向量化代码
    z = n p . d o t ( w , x ) z=np.dot(w,x) z=np.dot(w,x)

2.12 向量化的更多例子

  1. 神经网络编程指南
    (1) 只要可能,尽量少用for循环;
  2. numpy常用函数:log, abs, maximum,**
  3. 向量化logistic梯度下降

2.13 向量化logistic回归

  1. Z = w T X + b Z=w^T X+b Z=wTX+b
  2. Z = n p . d o t ( w . T , X ) + b Z = np.dot(w.T, X)+b Z=np.dot(w.T,X)+b
  3. A = σ ( Z ) A = \sigma(Z) A=σ(Z)

2.14 向量化logistic回归的梯度输出

  1. d z = [ d z ( 1 ) , d z ( 2 ) , ⋯   , ( m ) ] dz = [dz^{(1)}, dz^{(2)}, \cdots, ^{(m)}] dz=[dz(1),dz(2),,(m)]
  2. d z = A − Y dz = A-Y dz=AY
  3. d b = 1 m n p . s u m ( d Z ) db = \frac{1}{m}np.sum(dZ) db=m1np.sum(dZ)
  4. d w = 1 m X d z T dw = \frac{1}{m}Xdz^T dw=m1XdzT

2.15 Python中的广播

  1. 广播可以使python运行更搞笑
  2. 例子(求每种食物中热量占比)
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CxlSSza1-1585525565324)(./1583809955223.png)]
  3. 代码
    c a l = A . s u m ( a x i s = 0 ) cal =A.sum(axis = 0) cal=A.sum(axis=0)
    p e r c e n t a g e = 100 ∗ A / ( c a l . r e s h a p e ( 1 , 4 ) ) percentage = 100*A/(cal.reshape(1,4)) percentage=100A/(cal.reshape(1,4))
    增加reshape确保矩阵维度正确
  4. 广播举例
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j5DhlWMr-1585525565324)(./1583810519346.png)]
  5. 广播通用规则
    ( m , n ) + − ∗ / ( 1 , n ) → ( m , n ) (m,n) +-*/ (1,n) \rightarrow (m,n) (m,n)+/(1,n)(m,n)
    ( m , n ) + − ∗ / ( m , 1 ) → ( m , n ) (m,n) +-*/ (m,1) \rightarrow (m,n) (m,n)+/(m,1)(m,n)
    ( m , 1 ) + ( 1 , 1 ) → ( m , 1 ) (m,1) + (1,1) \rightarrow (m,1) (m,1)+(1,1)(m,1)
    ( 1 , n ) + ( 1 , 1 ) → ( 1 , n ) (1,n) + (1,1) \rightarrow (1,n) (1,n)+(1,1)(1,n)

2.16 关于python numpy向量的说明

  1. 不要使用 ( n , ) (n,) (n,)形式的数据结构
    例子: a = n p . r a n d o m . r a n d ( 5 ) → a = n p . r a n d o m . r a n d n ( 5 , 1 ) a=np.random.rand(5) \rightarrow a=np.random.randn(5,1) a=np.random.rand(5)a=np.random.randn(5,1)
  2. 使用声明
    例子: a s s e r t ( a . s h a p e = = ( 5 , 1 ) ) assert(a.shape == (5,1)) assert(a.shape==(5,1))
  3. 重塑矩阵
    例子: a = a . r e s h a p e ( ( 5 , 1 ) ) a = a.reshape((5,1)) a=a.reshape((5,1))

2.17 Jupyter ipython笔记本的快速指南

2.18 logistic损失函数的解释

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值