吴恩达老师机器学习课程--神经网络

一、为什么使用神经网络?

  1. 复杂的非线性分类,决策边界很复杂
  2. 特征过多时,特征映射项非常多,计算成本高,容易过拟合,例如:图片的分类问题

二、神经元与大脑

  1. 起源:用来模拟大脑的算法
  2. 我们几乎可以将任何传感器接入大脑
  3. 主要学习将它应用于现代机器学习技术

三、神经网络结构及表达

  1. 神经网络模型:(逻辑单元)

    组成单元:输入,隐藏层,权重,输出,如图所示

    image-20200916174203149

    数学推导: a i ( j ) a_i^{(j)} ai(j)为第j个激活层的第i个单元, θ ( j ) \theta^{(j)} θ(j)为从j层到j+1层的偏重
    a 1 ( 2 ) = g ( Θ 10 ( 1 ) x 0 + Θ 11 ( 1 ) x 1 + Θ 12 ( 1 ) x 2 + Θ 13 ( 1 ) x 3 ) a 2 ( 2 ) = g ( Θ 20 ( 1 ) x 0 + Θ 21 ( 1 ) x 1 + Θ 22 ( 1 ) x 2 + Θ 23 ( 1 ) x 3 ) a 3 ( 2 ) = g ( Θ 30 ( 1 ) x 0 + Θ 31 ( 1 ) x 1 + Θ 32 ( 1 ) x 2 + Θ 33 ( 1 ) x 3 ) h Θ ( x ) = g ( Θ 10 ( 2 ) a 0 ( 2 ) + Θ 11 ( 2 ) a 1 ( 2 ) + Θ 12 ( 2 ) a 2 ( 2 ) + Θ 13 ( 2 ) a 3 ( 2 ) ) a_1^{(2)}=g(\Theta_{10}^{(1)}x_0+\Theta_{11}^{(1)}x_1+\Theta_{12}^{(1)}x_2+\Theta_{13}^{(1)}x_3)\\ a_2^{(2)}=g(\Theta_{20}^{(1)}x_0+\Theta_{21}^{(1)}x_1+\Theta_{22}^{(1)}x_2+\Theta_{23}^{(1)}x_3)\\ a_3^{(2)}=g(\Theta_{30}^{(1)}x_0+\Theta_{31}^{(1)}x_1+\Theta_{32}^{(1)}x_2+\Theta_{33}^{(1)}x_3)\\ h_{\Theta}(x)=g(\Theta_{10}^{(2)}a_0^{(2)}+\Theta_{11}^{(2)}a_1^{(2)}+\Theta_{12}^{(2)}a_2^{(2)}+\Theta_{13}^{(2)}a_3^{(2)}) a1(2)=g(Θ10(1)x0+Θ11(1)x1+Θ12(1)x2+Θ13(1)x3)a2(2)=g(Θ20(1)x0+Θ21(1)x1+Θ22(1)x2+Θ23(1)x3)a3(2)=g(Θ30(1)x0+Θ31(1)x1+Θ32(1)x2+Θ33(1)x3)hΘ(x)=g(Θ10(2)a0(2)+Θ11(2)a1(2)+Θ12(2)a2(2)+Θ13(2)a3(2))

前向传播==向量化实现方法:==剩下的表示以此类推,别忘了加偏执
z ( 2 ) = Θ ( 1 ) x a ( 2 ) = g ( z ( 2 ) ) z^{(2)}=\Theta^{(1)}x\\ a^{(2)}=g(z^{(2)}) z(2)=Θ(1)xa(2)=g(z(2))
逻辑回归单元组成了神经网络

四、神经网络的例子

  1. 完成逻辑运算:

    image-20200916200007680

五、神经网络解决多元分类问题

image-20200916203730883

六、代价函数

  1. 字母表示:

    L为网络层数​

    s_l 为第l层的神经元个数

    K 为output层神经元个数,即 h Θ ( x ) ∈ R K h_\Theta(x)\in R^{K} hΘ(x)RK

    m 为数据个数

    i 为第几个数据

    j l层的第几个节点

    表达式:
    J ( Θ ) = − 1 m ( ∑ i = 1 m ∑ k = 1 K y k ( i ) l o g ( h Θ ( x ( i ) ) ) k + ( 1 − y k ( i ) ) l o g ( 1 − ( h Θ ( x ( i ) ) ) k ) ) + λ 2 m ∑ l = 1 L − 1 ∑ i = 1 s l ∑ j = 1 s l + 1 ( Θ j i ( l ) ) 2 J(\Theta)=-\frac{1}{m}\Bigg(\sum_{i=1}^{m}\sum_{k=1}^{K}y_k^{(i)}log(h_{\Theta}(x^{(i)}))_k + (1-y_k^{(i)})log(1-(h_{\Theta}(x^{(i)}))_k) \Bigg) + \frac{\lambda}{2m}\sum_{l=1}^{L-1}\sum_{i=1}^{s_l}\sum_{j=1}^{s_{l+1}}(\Theta_{ji}^{(l)})^2 J(Θ)=m1(i=1mk=1Kyk(i)log(hΘ(x(i)))k+(1yk(i))log(1(hΘ(x(i)))k))+2mλl=1L1i=1slj=1sl+1(Θji(l))2

七、反向传播算法–代价函数最小化

前向传播算法计算了每一个神经元的激活值

  1. 引入表示:l层第j个神经节点的激活值误差 δ j ( l ) \delta^{(l)}_j δj(l)

  2. 反向传播过程:

  3. image-20200917163047403

    image-20200917160936796

    • 只有一组数据时的反向传播计算
      δ j ( 4 ) = a j ( 4 ) − y j δ ( 3 ) = ( Θ ( 3 ) ) T δ ( 4 ) . ∗ g ′ ( z ( 3 ) ) δ ( 2 ) = ( Θ ( 2 ) ) T δ ( 3 ) . ∗ g ′ ( z ( 2 ) ) 其 中 , 第 一 层 为 输 入 数 据 不 存 在 误 差 , 我 们 不 改 变 输 入 值 \delta^{(4)}_j=a^{(4)}_j-y_j\\ \delta^{(3)}=(\Theta^{(3)})^T\delta^{(4)}.*g'(z^{(3)})\\ \delta^{(2)}=(\Theta^{(2)})^T\delta^{(3)}.*g'(z^{(2)})\\ 其中,第一层为输入数据不存在误差,我们不改变输入值 δj(4)=aj(4)yjδ(3)=(Θ(3))Tδ(4).g(z(3))δ(2)=(Θ(2))Tδ(3).g(z(2)),
      公式推导https://blog.csdn.net/xuan_liu123/article/details/83660316?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~first_rank_v2~rank_v25-1-83660316.nonecase&utm_term=反向传播 吴恩达 推导

    • 当有大量数据计算时重点来啦

      数据集: ( x ( 1 ) , y ( 1 ) ) , . . . , ( x ( m ) , y ( m ) ) {(x^{(1)},y^{(1)}),...,(x^{(m)},y^{(m)})} (x(1),y(1)),...,(x(m),y(m))

      初始设置:对于任意的l,i,j: Δ i j ( l ) = 0 \Delta_{ij}^{(l)}=0 Δij(l)=0,用来累计偏导数项,除了输入节点所有节点的误差和

      l为层数,i为第l层的第几个误差

      步骤:

      For i=1 to m:
          Set a^(1) = x^(i)
          Perform forward propagation to compute a^(l) for l = 2,3,...l
          compute delta^(L)=a^(L)-y^(i)
          compute delta^(L-1),delta^(L-2),...,delta^(2)
          △_ij^(l) := △_ij^(l) + a_j^(l)delta^(2)
      

      image-20200918161307231

      image-20200926174233853

      当输出y为实数时,不用加入正则项

  4. 反向传播的理解:

    image-20200918162252756

image-20200918165650818

八、梯度检验

解决神经网络虽然梯度下降但是效果并不理想,可以发现反向传播是否错误。

  1. 对于 θ \theta θ是实数 (类似于导数)image-20200918195924813

  2. 对于 θ \theta θ为n维向量(类似于偏导数)

    image-20200918200359039

  3. 算法思想: g r a d A p p r o x ≈ D V e c gradApprox \approx DVec gradApproxDVec

  4. 实现步骤:

    • 通过反向传播计算DVec
    • 估算数值梯度
    • 确保二者是相近的值
    • 在使用反向传播训练之前,关闭梯度检查(因为数值计算很慢,影响运行速度,同时也是因为这个原因不能使用该方法作为优化算法)

九、参数的随机初始化

  1. 梯度下降算法:初始化为0
  2. 神经网络实际操作,初始化为0不起任何作用,会使隐藏层的所有神经元值相同
  3. ==初始化 Θ \Theta Θ [ − ε , ε ] [-\varepsilon,\varepsilon] [ε,ε]之间的随机值

十、神经网络的总结

  1. 选择一个网络结构:

    输入的单元个数确定,输出的单元个数确定,隐藏层数目越多越好

  2. 训练神经网络

    image-20200918213036529image-20200918213355756

    image-20200919154900665

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值