zoukankan      html  css  js  c++  java
  • 【9】归一化输入与标准化

    提高训练速度的方法:归一化输入

    假设数据集的每一个训练样本只有两个特征x1、x2,那么训练集:
    X=egin{bmatrix} x_{1}^{(1)} & x_{1}^{(2)} & ... & x_{1}^{(m)} \ x_{2}^{(1)} & x_{2}^{(2)}& ... & x_{2}^{(m)} end{bmatrix}

    原始数据集

    绘制出的图形如图所示,要对其进行标准化分为两步:

    1、对训练集进行零均值化处理,顾名思义,也就是处理后的数据集的均值为零。
    2、归一化方差。即使方差变为1。

    分步讲解:

    1、怎样来使均值变为0呢?首先我们需要算出数据集的平均值:

    mu =sum_{i=1}^{m}left ( X^{i} 
ight )

    求得的均值是一个向量,这里的x1是所有训练样本x1的均值。x2同理:

    mu =egin{bmatrix}x_{1}\ x_{2}end{bmatrix}

    然后用数据集的每一项减去这个均值就可以使整个数据集的均值为0了。

    X=X-mu
    所得X如下所示:
    X=egin{bmatrix} x_{1}^{(1)}-x_{1} & x_{1}^{(2)}-x_{1} & ... & x_{1}^{(m)}-x_{1} \ x_{2}^{(1)}-x_{2} & x_{2}^{(2)}-x_{2}& ... & x_{2}^{(m)}-x_{2} end{bmatrix}

     
    去均值化后的数据集

    2、要使方差为1,方差也就是数据偏离均值的程度,观察图(1)第二张图,这是经过零均值化处理后的数据集,现在x1和x2的均值都为0,我们看x1偏离原点(即均值)的程度是不是要大于x2。我们要对其处理以使x1、x2方差都为1。我们首先算出数据集的方差。然后用数据集除以方差即可。
    sigma ^{2}=frac{1}{m}sum_{i=1}^{m}left ( X^{i} 
ight )^{2}
     

    X=frac{X}{sigma ^{2}}
     
     
    归一化方差后的数据集

    总结:

    对数据集进行标准化处理,就是让数据集的均值为0,方差为1。把数据集映射到(-1,1)之间。

    总公式:X=frac{X-mu }{sigma ^{2}}

    标准化步骤

    2. 为什么标准化可以加快训练

    左图是进行归一化之前的J与w、b的图像,可以看出代价函数非常细长狭窄,在一些情况下需要很多次的迭代过程从而使效率底下,而归一化后的就变为了右图,可以看出代价函数非常平均,无论从哪个位置开始迭代,都会很快到达极小值点,从而提高了效率。
     

     

  • 相关阅读:
    设备接入项目杂记
    用lucene替代mysql读库的尝试
    node(ActiveMq)
    mysql集群(双主)
    mysql集群(主从)
    DoraCMS 源码知识点备注
    Flex使用Scroller组件实现以鼠标为中心的缩放
    JQuery Mobile Popup窗口定位
    Flex Builder 不能Profile的另一个原因:不能使用中文用户名
    STM32407入门笔记
  • 原文地址:https://www.cnblogs.com/lau1997/p/12361250.html
Copyright © 2011-2022 走看看