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

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

  1. 复杂的非线性分类,决策边界很复杂
  2. 特征过多时,特征映射项非常多,计算成本高,容易过拟合,例如:图片的分类问题
二、神经元与大脑
  1. 起源:用来模拟大脑的算法
  2. 我们几乎可以将任何传感器接入大脑
  3. 主要学习将它应用于现代机器学习技术
三、神经网络结构及表达
  1. 神经网络模型:(逻辑单元)
    组成单元:输入,隐藏层,权重,输出,如图所示
    吴恩达老师机器学习课程--神经网络
    文章图片

    数学推导: 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. 完成逻辑运算:
    吴恩达老师机器学习课程--神经网络
    文章图片

五、神经网络解决多元分类问题 吴恩达老师机器学习课程--神经网络
文章图片

六、代价函数
  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=1∑m?k=1∑K?yk(i)?log(hΘ?(x(i)))k?+(1?yk(i)?)log(1?(hΘ?(x(i)))k?))+2mλ?l=1∑L?1?i=1∑sl??j=1∑sl+1??(Θji(l)?)2
七、反向传播算法–代价函数最小化 前向传播算法计算了每一个神经元的激活值
  1. 引入表示:l层第j个神经节点的激活值误差δ j ( l ) \delta^{(l)}_j δj(l)?
  2. 反向传播过程:
  3. 吴恩达老师机器学习课程--神经网络
    文章图片

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

    • 只有一组数据时的反向传播计算
      δ 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)

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

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

      当输出y为实数时,不用加入正则项
  4. 反向传播的理解:
    吴恩达老师机器学习课程--神经网络
    文章图片

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

八、梯度检验 解决神经网络虽然梯度下降但是效果并不理想,可以发现反向传播是否错误。
  1. 对于 θ \theta θ是实数 (类似于导数)吴恩达老师机器学习课程--神经网络
    文章图片

  2. 对于 θ \theta θ为n维向量(类似于偏导数)
    吴恩达老师机器学习课程--神经网络
    文章图片

  3. 算法思想: g r a d A p p r o x ≈ D V e c gradApprox \approx DVec gradApprox≈DVec
  4. 实现步骤:
    • 通过反向传播计算DVec
    • 估算数值梯度
    • 确保二者是相近的值
    • 在使用反向传播训练之前,关闭梯度检查(因为数值计算很慢,影响运行速度,同时也是因为这个原因不能使用该方法作为优化算法)
九、参数的随机初始化
  1. 梯度下降算法:初始化为0
  2. 神经网络实际操作,初始化为0不起任何作用,会使隐藏层的所有神经元值相同
  3. ==初始化 Θ \Theta Θ在 [ ? ε , ε ] [-\varepsilon,\varepsilon] [?ε,ε]之间的随机值
十、神经网络的总结
  1. 选择一个网络结构:
    输入的单元个数确定,输出的单元个数确定,隐藏层数目越多越好
  2. 训练神经网络
    吴恩达老师机器学习课程--神经网络
    文章图片
    吴恩达老师机器学习课程--神经网络
    文章图片

    【吴恩达老师机器学习课程--神经网络】吴恩达老师机器学习课程--神经网络
    文章图片

    推荐阅读