sp2.3 Hyperparameter tuning, Batch Normalization and Programming Frameworks

1调试参数 重要性 红黄紫
指导原则:alpha学习速率 β是动量里那个 adam里β1、2 Σ一般不用调试
以前参数少时候 比如俩参数 就网格一样 每个依次试一试
现在深度学习 参数太多 也不知道哪个重要 就随机试 比如左边的两个轴分别是α和Σ
在左图中可能按顺序试验最左侧列5个值 结果可能都一样 因为Σ用处不大 但是右图都是随机的α 更容易出结果
可能是很多维的
 
 
可能发现一个点 或者这一小区域的点效果比较好 就放大这一区域 更精细的取值
但有时候往往不是在一个小区域里
选取适当的范围
比如选取隐藏单元数和层数:单元数50-100 层数2-4
速率比如0.0001到1 随机均匀取值 0.1-1取值范围都沾到90%不够准 可以对数来取值更容易取到合适的值
 
 
用不同的缩放
比如0.0001-1 可能百分之90的落在0.1-1 不应该用均匀线性的一段数
用log对数尺度log scale的分段
分别取对数 得到a b这两个整数边界 然后在10的这些幂内取值
 
 
对于β:0.9-0.9005变化影响不大 但是在 接近1时候0.999-0.9995影响大
 
关于调参的两大学派 :
pandas 式:一天天慢慢调试 看他的表现 比如改下速率 β 什么的
第二种caviar鱼子式: 同时试验很多种模型
如果有很多电脑资源啥的还是鱼子酱式的比较好 容易找到
 
 
批量归一化 让参数搜索更快
输入值特征归一化,但是对于多层的 每层做完WX+B后
再做个归一化或者激活后再做个归一化
 
也有争论 是归一化a还是z 一般是z
计算每层的平均值 计算方差 然后规范化 减去平均值 除以方差 Σ来稳定数值 防止方差为0等
z帽这里又加入两个新参数γ和β 也会不断更新 意味着可以随意让你设置z的平均值 不
让他停留在激活函数接近0 靠近线性方程那一段 更好利用非线性那段
这里β和动量里那个不一样
这β也是要更新 可以用之前梯度下降的方法或者之前介绍的优化方法来更新
 
通常和minibatch方法一起使用更佳 和w、b一样 每次更新一次那两个参数
但是现在后面的b没用了 因为每次要算Z平均值 所以每次都会被减去 让新的这个参数当 右下角
 
 
 
为什么有效:他使得权重比你的网络更滞后或者更深层,改变了训练集数据的分布
比如原本分布如图左边的黑猫 训练出来 可能对右边别的颜色的猫就不太适用
其实还是训练集 测试集数据分布不同 协变量问题
 
假设已经学好了w3 b3
减少了隐藏值分布的变化 正则化z11 z12这一列(保证方差1 均值0不变 )
限制了前层参数的更新 减少了前一层输入的改变 使得改变的更加稳定
在minibatch上均值和方差都会产生噪声,因为比较小 归一化可以减少噪音 有正则化的作用
可以换dropout结合一起使用
用更大的minibatch可以减少噪声 比如512
bitch norm每次只能处理一个minibatch数据
这里m指的是minbatch训练样本数
在测试集用指数加权 单独来算平均来算方差和均值
但在测试 时候需要每个样本逐个来
逻辑回归的一般形式 对于多个物体分类
 
softmax激活 多分类 输出值是4*1向量 每个值代表是这个物体的概率
这个激活函数特别之处在于要最后4*1向量最后再输出4*1的 之前激活函数都是单个数值
 
 
 
当两类时候 softmax就变成了逻辑回归 原本是输出1或0 现在就是概率
硬概率就是 一个1 其余0 hardmax
softmax是 逻辑回归从二分类到多分类的推广
 
损失函数:对于单个样本而已 代价函数对于整体而言
这里算损失就剩下一项了 就是使得对应那一项概率越大 这也是最大似然估计
矢量化计算是个稀疏矩阵 one-hot标签值是个(4,m)的 预测也是个(4,m)
 
 
框架:
 
 
 
 
 
 
 
 
placeholder就是站位 每次训练他都要变
 
核心就是计算代价函数 cost那一行
 
 

猜你喜欢

转载自www.cnblogs.com/hellodantong/p/9965222.html