机器学习 | Week5-Neural_Networks_Learning-神经网络:学习-吴恩达AndrewNg

本文详细介绍了神经网络的成本函数和反向传播算法,包括成本函数的数学表达式和反向传播的计算过程。还讨论了梯度检查、随机初始化的重要性,以及神经网络在自动驾驶等领域的应用。同时,强调了在编程作业中实现BP算法的注意事项。

作为英语课程,读中文参考资料的确有助于理解,但是出于对以后更长久的学习优势考虑,笔记中我会尽量采用英文来表述,这样有助于熟悉专有名词以及常见语法结构,对于无中文翻译的资料阅读大有裨益。

一、Cost function and Backpropagation

  1. L:总层数
  2. SlS_lSl:第几层
  1. 上式进行一般化
    1. yiy^iyi原本是一个逻辑输出单元->取而代之的是K个ykiy_k^iyki
    2. 输出值h->向量hΘh_\ThetahΘ,记((hΘ)i(h_\Theta)_i(hΘ)i)是此向量的第i个元素
    3. 括号中的值是对最后一层输出的所有y值进行了求和,正则化一项是将所有l,i,j全部加起来
      1. 对于i=0的项,不进行正则化,这里没有加进去,即使加上去也没什么影响

J(Θ)=−1m[∑i=1m∑k=1Kyk(i)log⁡(hΘ(x(i)))k+(1−yk(i))log⁡(1−(hΘ(x(i)))k)]&+λ2m∑l=1L−1∑i=1sl∑j=1sl+1(Θji(l))2\begin{aligned} J(\Theta)=&-\frac{1}{m}\left[\sum_{i=1}^{m} \sum_{k=1}^{K} y_{k}^{(i)} \log \left(h_{\Theta}\left(x^{(i)}\right)\right)_{k}+\left(1-y_{k}^{(i)}\right) \log \left(1-\left(h_{\Theta}\left(x^{(i)}\right)\right)_{k}\right)\right]\&+\frac{\lambda}{2 m} \sum_{l=1}^{L-1} \sum_{i=1}^{s_{l}} \sum_{j=1}^{s_{l+1}}\left(\Theta_{j i}^{(l)}\right)^{2} \end{aligned}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. Backpropagation反向传播算法

    • 为了计算导数项
    • δ\deltaδ=a-y:差值

    • δ(3)=(Θ(3))Tδ(4)∗g′(z(3))\delta^{(3)}=\left(\Theta^{(3)}\right)^{T} \delta^{(4)} * g^{\prime}\left(z^{(3)}\right)δ(3)=(Θ(3))Tδ(4)g(z(3))

      • g′(z3)=a3(1−a3)g^{\prime}(z^3)=a^3(1-a^3)g(z3)=a3(1a3)
    • ∂∂θij(l)J(Θ)=aj(l)δil+1\frac{\partial}{\partial \theta_{i j}^{(l)}} J(\Theta)=a_{j}^{(l)} \delta_{i}^{l+1}θij(l)J(Θ)=aj(l)δil+1

      • lll当前计算层
      • jjj当前激活单元下标,下一层的第jjj个输入变量的下标
      • iii下一层误差单元的下标
    • 这里没有δ1\delta_1δ1,因为不需要考虑输入层误差项

  2. 考虑正则化后,引入Δijl\Delta_{ij}^lΔijl

    • 有了Δ\DeltaΔ后,可以计算cost function的偏导数,如上图
FP and BP compare
  • FP

  • 图中忽略了偏置单元,但这本质是由算法决定的,你有可能需要有可能不需要,大多数情况下bias=1,求导=0,都是直接丢弃的

二、Backpropagation Practice

  1. 系数从矩阵展开到向量

    • 通过(;)将矩阵展开为1列向量

    • 通过reshape来重塑矩阵

  2. Gradient Checking

    • 为了避免“一些小bug导致看起来J在下降,但实际得到的误差非常大”

    • ϵ\epsilonϵ一般在10−410^{-4}104

    • 一般用双边导数而非单边导数(双边准确率更高)

    • 【注意】一旦checking完成,确认gradient没有问题,真正进入计算时务必关掉checking函数,否则低效率会让你无法忍受(hhhh)

      • Once you have verified once that your backpropagation algorithm is correct, you don’t need to compute gradApprox again. The code to compute gradApprox can be very slow

  3. Random Initialization

    • 对称现象
    • 所以初始化也称为“打破对称”(Symmetry Breaking)
      • 使用rand函数和ϵ\epsilonϵ(与之前无关)确定范围在[−ϵ,ϵ][-\epsilon,\epsilon][ϵ,ϵ]
  4. Putting it Together(回顾)

    1. 搭建神经网络:可选多少个隐藏层,每个隐藏层有多少个隐藏单元

      • 搭建规则:Reasonable default:1 hidden layer,or if >1 hidden layer,have same no. of hidden units in every layer(usually the more the better)
    2. 训练过程

      1. Randomly initialize weights:初始化权值,通常是很小的接近于0的数

      2. implement FP for any input xix^ixi and its h(xi)h(x^i)h(xi)

      3. compute J(Θ)J(\Theta)J(Θ)

      4. implement BP to compute partial derivatives ∂∂ΘjklJ(Θ)\frac{\partial}{\partial\Theta_{jk}^l}J(\Theta)ΘjklJ(Θ)

        • 对所有的m个样本执行上述训练过程
      5. Gradient Checking to compare ∂∂ΘjklJ(Θ)\frac{\partial}{\partial\Theta_{jk}^l}J(\Theta)ΘjklJ(Θ) ,确定二者接近后,关闭Checking

      6. 使用优化算法结合BP计算出所有偏导数项,继而将cost FunctionJ(Θ)J(\Theta)J(Θ)最小化

        • 对于neural Network,J并非一个凸函数,理论上是可能停留在局部最小的,不过通常此影响不大,即便不是全局最小值也会得到一个很小的局部最小值

三、Application of Neural Networks

Autonomous Driving

四、编程作业

BP算法写出,注意除以m的时候不要误写

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值