美文网首页
2019-04-30 Day9

2019-04-30 Day9

作者: BA蓬莱传说 | 来源:发表于2019-04-30 21:34 被阅读0次

    Day 9

    6.1 参数的更新

    import numpy as np
    
    
    class SGD(object):
        def __init__(self, lr=0.01):
            self.lr = lr
    
        def update(self, params, grads):
            for key in params.keys():
                params[key] -= self.lr * grads[key]
    
    
    class Momentum(object):
        def __init__(self, lr=0.01, momentum=0.9):
            self.lr = lr
            self.momentum = momentum
            self.v = None
    
        def update(self, params, grads):
            if self.v is None:
                self.v = {}
                for key, val in params.items():
                    self.v[key] = np.zeros_like(val)
    
            for key in params.keys():
                self.v[key] = self.momentum * self.v[key] - self.lr * grads[key]
                params[key] += self.v[key]
    
    
    class AdaGrad(object):
        def __init__(self, lr=0.01):
            self.lr = lr
            self.h = None
    
        def update(self, params, grads):
            if self.h is None:
                self.h = {}
                for key, val in params.items():
                    self.h[key] = np.zeros_like(val)
    
            for key in params.keys():
                self.h[key] += grads[key] ** 2
                params[key] -= self.lr * grads[key] / (np.sqrt(self.h[key]) + 1e-7)
    

    6.2 权重初始值

    6.2.1 权重初始化为0?

    权值衰减是一种通过减小权重参数的值来抑制过拟合的方法。

    不能将权重初始化为0,或者其他一样的值,因为这样会使权重具有对称结构,降低神经网络的表达能力。

    6.2.2 隐藏层的激活值的分布

    梯度消失:偏向0和1的数据分布会造成反向传播过程中梯度的值不断变小。

    激活值的分布有所偏向,会降低神经网络的表达能力。

    Xavier初始值:前一层的节点数为n,则初始值使用标准差为\frac{1}{\sqrt{n}}的分布。

    6.2.3 ReLU的权重初始值

    He初始值:两倍,即\frac{2}{\sqrt{n}}(何恺明牛逼!!!!!)

    6.3 Batch Normalization

    Batch Norm 将数据正规化,均值为0,方差为1

    \mu_{b} := \frac{1}{m}\sum_{i=1}^{m}{x_{i}}
    \sigma_{B}^{2} := \frac{1}{m}\sum_{i=1}^{m}{(x_i-\mu_b)}^2
    x_i^{\hat{}} := \frac{x_i-\mu_B}{\sqrt{\sigma_B^2+\epsilon}}

    将Batch Norm层插入到激活函数的前面或后面,减小数据分布的偏向。

    然后Batch Norm层再对数据进行仿射变换(缩放和平移):
    y_i := \gamma x_i^{\hat{}} + \beta

    相关文章

      网友评论

          本文标题:2019-04-30 Day9

          本文链接:https://www.haomeiwen.com/subject/lrebnqtx.html