zoukankan      html  css  js  c++  java
  • 训练中的基础技巧(数据处理,验证集设置,参数处理)

    训练中的基础技巧(数据处理,验证集设置,参数处理)

    首先,对于数据
    我们需要统一其量纲。通用的做法是数据标准化。
    就是让一个样本内的均值为0,不同样本类内方差尽量一致
    然后就是为标签做one-hot encoding



    对于权重
    1.随机初始化
    2.均值为0,且尽量不同意义的权重间尽量有一致的方差

    这是因为初始化对最后的结果实际上很重要,如果我们有机器学习基础,我们就知道。而对于神经网络这样一个较复杂的模型,我们并不知道初始化在哪里比较合适,我们想尽量避免初始化对模型产生较大影响,就采用随机初始化的方法较为合适。
    而均值为0的道理,还记得我们之前解析神经网络中的激励函数嘛,如果采用sigmoid这样的函数,均值偏大或者偏小都会导致更新较慢。

    1.梯度方向往往受到解平面某点附近的变化趋势影响,不见得会向着目标局部极小值收敛。所以在我们训练过程中会出现错误率是螺旋式下降的。那么对于这个问题,我们可以这样子解决。让
    新的梯度方向=0.9×前一个梯度方向+0.1新的梯度方向
    得到新的梯度方向。当然这个参数是可以变的

    2.而学习速率这里我们直接上一张图
    训练中的基础技巧(数据处理,验证集设置,参数处理)

    可以看到,虽然大的学习速率比小的更快收敛,但是大的也更加快地到达了‘平原区域’
    这是因为学习速率高很可能进不去小的‘坑’,而小坑下面连接的可能是更低的谷底
    所以小的学习速率总是可以在最终收敛结果上比大的要好。但是如果一直采用小学习速率,在一开始的下降过程又太慢了。这时候我们想要学习率在step增加时逐渐减小。

    我以上说的这两点被总结起来叫做AdaGD,自适应梯度下降。tf中为我们提供的就是它,所以我们不需要关心学习速率和梯度方向的问题。当然,如果到很熟练需要定制的最优化方法时,可以去改动。但目前还用不到。

    对于训练集、验证集、测试集
    我这里的观点是,在参加竞赛之类的不需要我们自己设置测试集,而发paper时需要设置小部分测试集。

    我以上说的这两点被总结起来叫做AdaGD,自适应梯度下降。tf中为我们提供的就是它,所以我们不需要关心学习速率和梯度方向的问题。当然,如果到很熟练需要定制的最优化方法时,可以去改动。但目前还用不到。

    对于训练集、验证集、测试集
    我这里的观点是,在参加竞赛之类的不需要我们自己设置测试集,而发paper时需要设置小部分测试集。

  • 相关阅读:
    搭建kafka高级消费 (high-consumer)php7
    kafka搭建到配置borker集群(项目开发-区块链)
    快速提高谷歌浏览器(Chrome)自带下载器的网速
    利用IO和File类实现拷贝文件目录问题
    随机红包小算法
    二叉树前序中序后序层序遍历问题
    荷兰国旗问题
    二分法查找
    找出数组中最大值and索引
    数组元素反转
  • 原文地址:https://www.cnblogs.com/is-Tina/p/7724801.html
Copyright © 2011-2022 走看看