• TensorFlow-谷歌深度学习库 性能优化防拟合


    Stochatic Gradient Descent (S.G.D)

    思想:每次从数据集中随机抽取子样本(1 ~ 1000),在子样本中应用梯度下降。

    假设每次的子样本都可以很好的代表整体,假设每次猜到的梯度下降的方向是对的,迭代操作直到我们得到结果。

    批量梯度下降算法每次都会使用全部训练样本,因此这些计算是冗余的,因为每次都使用完全相同的样本集。而随机梯度下降算法每次只随机选择一个样本来更新模型参数,因此每次的学习是非常快速的,并且可以进行在线更新。

    因为计算得到的并不是准确的一个梯度,对于最优化问题,凸问题,虽然不是每次迭代得到的损失函数都向着全局最优方向, 但是大的整体的方向是向全局最优解的,最终的结果往往是在全局最优解附近。但是相比于批量梯度,这样的方法更快,更快收敛,虽然不是全局最优,但很多时候是我们可以接受的
    作者:Evan链接:https://www.zhihu.com/question/264189719/answer/291167114来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    让每一次的计算变得很便宜很迅速,不过要以迭代更多次为代价。

    非线性方程 | 激励函数ReLu

    神经网络

    在中间加入激活函数使原先的线性方程转变为非线性方程

    如果不用激励函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合。
    如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。

    ReLu激活函数

    Rectified Linear Unit(ReLU) - 用于隐层神经元输出

    多层神经网络的back propagation算法

     它就是复合函数的链式法则!

    BP算法正是用来求解这种多层复合函数的所有变量的偏导数的利器。

    需要找到从q节点到p节点的所有路径,并且对每条路径,求得该路径上的所有偏导数之乘积,然后将所有路径的 “乘积” 累加起来才能得到frac{partial p}{partial q}的值。

    使用regularization去避免overfiting的问题

    early termination:在性能达到最优时停止训练。即在模型对训练数据集迭代收敛之前停止迭代来防止过拟合。 

    l2正规化:每个参数的平方

    l1正规化:每个参数的绝对值

    新的loss为原有loss加上一个惩罚度, 过度依赖的 W , 也就是训练参数的数值会很大, l1, l2会惩罚这些大的 

    l2_loss(t, name=None)
    loss += reg * (tf.nn.l2_loss(weights) + tf.nn.l2_loss(weights2)) #两层layer的正规化

    dropout

    我们随机忽略掉一些神经元和神经联结 , 是这个神经网络变得”不完整”. 用一个不完整的神经网络训练一次.

    到第二次再随机忽略另一些, 变成另一个不完整的神经网络.

    Dropout 的做法是从根本上让神经网络没机会过度依赖某个w。

     
    dropout(x, keep_prob, noise_shape=None, seed=None, name=None)
  • 相关阅读:
    C++多线程chap3 多线程异步和通信1
    C++多线程chap2多线程通信和同步9
    C++多线程chap2多线程通信和同步5
    C++多线程chap3 多线程异步和通信2
    C++多线程chap2多线程通信和同步6
    taro实现多语言切换
    git常用命令
    pytorch hook 钩子
    MySQL 学习笔记(六)character 与 collation
    Python 学习笔记(七)socket
  • 原文地址:https://www.cnblogs.com/duwenlu/p/8621244.html
Copyright © 2020-2023  润新知