【机器学习】DNN训练中的问题与方法
2017-11-27 10:45
183 查看
感谢中国人民大学的胡鹤老师,人工智能课程讲的很有深度,与时俱进
由于深度神经网络(DNN)层数很多,每次训练都是逐层由后至前传递。传递项<1,梯度可能变得非常小趋于0,以此来训练网络几乎不会有什么变化,即vanishing gradients problem;或者>1梯度非常大,以此修正网络会不断震荡,无法形成一个收敛网络。因而DNN的训练中可以形成很多tricks。。
1、初始化权重
起初采用正态分布随机化初始权重,会使得原本单位的variance逐渐变得非常大。例如下图的sigmoid函数,靠近0点的梯度近似线性很敏感,但到了,即很强烈的输入产生木讷的输出。
View Code
e. Date Augmentation
[b] 深度学习网络是一个数据饥渴模型,需要很多的数据。扩大数据集,例如图片左右镜像翻转,随机截取,倾斜随机角度,变换敏感度,改变色调等方法,扩大数据量,减少overfit可能性
10、default DNN configuration
由于深度神经网络(DNN)层数很多,每次训练都是逐层由后至前传递。传递项<1,梯度可能变得非常小趋于0,以此来训练网络几乎不会有什么变化,即vanishing gradients problem;或者>1梯度非常大,以此修正网络会不断震荡,无法形成一个收敛网络。因而DNN的训练中可以形成很多tricks。。
1、初始化权重
起初采用正态分布随机化初始权重,会使得原本单位的variance逐渐变得非常大。例如下图的sigmoid函数,靠近0点的梯度近似线性很敏感,但到了,即很强烈的输入产生木讷的输出。
def max_norm_regularizer(threshold, axes=1, name="max_norm", collection="max_norm"): def max_norm(weights): clipped = tf.clip_by_norm(weights, clip_norm=threshold, axes=axes) clip_weights = tf.assign(weights, clipped, name=name) tf.add_to_collection(collection, clip_weights) return None # there is no regularization loss term return max_norm max_norm_reg = max_norm_regularizer(threshold=1.0) hidden1 = fully_connected(X, n_hidden1, scope="hidden1", weights_regularizer=max_norm_reg)
View Code
e. Date Augmentation
[b] 深度学习网络是一个数据饥渴模型,需要很多的数据。扩大数据集,例如图片左右镜像翻转,随机截取,倾斜随机角度,变换敏感度,改变色调等方法,扩大数据量,减少overfit可能性
10、default DNN configuration
相关文章推荐
- 机器学习问题方法总结
- 机器学习问题方法总结
- 机器学习问题方法总结
- 机器学习问题方法总结
- 机器学习问题方法总结
- 机器学习问题方法总结
- 使用DotNetNuke(DNN) Startkit 4.7(及以上版本)安装无法完成问题的解决方法
- 机器学习问题方法总结
- 为什么统计学家、机器学习专家解决同一问题的方法差别那么大?
- 关于tesseract字符训练遇到的问题及解决方法
- 第二十六篇:很实用的opencv训练问题解决方法
- 机器学习问题方法总结
- 机器学习问题方法总结
- 机器学习问题方法总结
- 机器学习问题方法总结
- 机器学习问题方法总结
- 机器学习问题方法总结
- 机器学习问题方法总结
- 机器学习问题方法总结
- 机器学习问题方法总结