zoukankan      html  css  js  c++  java
  • 机器学习技法笔记-Lecture 12 Neural network

    介绍神经网络的基本概念以及Backprop的推导。

    输入为x, 首先对x做一个线性变换到s,然后对s做(通常是非线性的)变换,作为下一层的输入。如果对s也是线性的,那整个网络就是线性的,就不需要那么多层了。

    对 s 经常使用的一个是双曲余弦的变换tanh

    在离原点比较远的地方,它比较像阶梯函数,在接近原点的地方,接近线性函数。

    网络的计算过程

    可以分两步看,一个是算score,一个是做transform.

    如何学习网络中的权重呢?

    学习的最终目标仍然是让Ein最小,Ein可以看做是关于全部的w_ij的函数,使用梯度下降法对w_ij进行迭代。

    如何计算

    这里的关键一点是对s_j的偏导可以由后一层的所有s_k的偏导得来。

    所以对w_ij的更新是从后向前进行的,叫做backpropagation

    NN的最优化问题,首先不是凸优化,另外不同的初始值会让结果收敛在不同的局部最优处,对初值是比较敏感的。

    如果w_ij比较大,tanh函数就会在比较靠近+-1的地方,这时候梯度变化非常小,那么更新很缓慢。

    NN的VC维大致等于神经元乘以权重的个数.

    只要神经元个数足够多,就能拟合任何函数,当然也会overfit.

    NN的正则化

    L1正则不可微,通常选用L2正则,L2是一种weight decay的方法,通常会对大的weight进行更大的shrink,小的weight进行小的shrink。这里希望能达到L1特征稀疏的效果,就采用了一种 scaled L2,在小的weight上也进行一个中等的shrink,最后这些小的weight就会消失掉。

    另外一个正则方法是 early stopping. 进行GD的步数可以看做vc维的一个反映。可以使用validation来选择走多少步。

    所有和GD有关的算法都能使用early stopping.

  • 相关阅读:
    MVC之Ajax异步操作
    MVCHtmlHelper使用
    Xamarin.Forms初始
    .NET CORE2.0后台管理系统(一)配置API
    DDD领域驱动之干货(四)补充篇!
    基于官方驱动封装mongodb
    webApi签名验证
    在.Net下使用redis基于StackExchange.Redis
    DDD领域驱动之干货(三)完结篇!
    DDD领域驱动之干货(二)
  • 原文地址:https://www.cnblogs.com/akanecode/p/7058673.html
Copyright © 2011-2022 走看看