机器学习的所有资源链接和经验教训(七)Tensorflow / Deep Nets

Tensorflow / Deep Nets

  • 始终确保您的模型能够适应一些训练数据。一旦您知道网络正确学习并且能够过度拟合,那么您就可以构建更通用的模型。
  • 评估Tensorflow图仅在运行时进行。您的工作是首先定义变量和占位符以及操作(它们共同构成图形),然后您可以在会话(执行环境)中执行此图形,您可以在其中将值输入到占位符中。
  • 正规化对于深网来说是非常重要的。
    • 重量衰减
    • 退出
      • 认真。用它。它太简单了,但是它非常适合帮助防止过度拟合,从而在大多数情况下提高测试精度。
    • 数据扩充
    • 提前停止
      • 真有效。基本上,只要在验证错误停止减少时停止训练。因为如果你再训练一下,你只需要更多地适应训练数据集,这对你的测试集准确性无法提供帮助。老实说,这种正规化方法非常容易实现。
    • 批量标准化(主要目的不一定是规范化,但有轻微的正规化效应)
      • 根据我的经验,批量规范对深网很有帮助。直觉是它有助于减少网络内部的协变量变化。简单来说,让我们考虑一下网络第3层的激活。这些激活是前两层和输入的权重的函数。第三层权重的工作是采取那些激活并应用另一个变换,使得结果输出接近预测值。现在,因为激活是前两层的权重矩阵的函数(它们正在改变很多b / c梯度下降),所以这些激活的分布可以随着网络的训练而变化很大。直观地说,这使得第三层的权重很难弄清楚如何正确设置自己。批量规范有助于缓解确保保持激活的均值和方差相同的问题(均值和方差的精确值不一定是0和1,而是2个可学习参数β和伽玛的函数)。这导致激活分布变化很少,这意味着第三层的权重更容易调整到最佳值,从而导致更快的训练时间。
      • 伟大的博客文章由罗汉瓦玛
    • 标签平滑
    • 模型平均
    • Regularizers被认为是有益的网络的泛化能力,但不是主要的原因,深网推广这么好。这个想法是你没有使用上述所有内容,但如果你有过度拟合的问题,你应该使用其中一些来解决这些问题。
  • 话虽这么说,模态架构和层的结构有时被认为更重要。
  • 始终始终做对照实验。通过这种方式,我的意思是在您尝试调整模型时,一次只更改一个变量。您可以更改令人难以置信的超参数和设计决策。这里有一些例子。
    • 网络架构
      • CNN中的卷积层数
      • RNN中的LSTM单元数
    • 选择优化器
    • 学习率
    • 正则
    • 数据增加
    • 数据预处理
    • 批量大小如果您尝试一次更改过多的上述变量,您将无法跟踪哪些更改确实影响最大。对变量进行更改后,请始终跟踪对整体准确性或您正在使用的其他指标的影响。

猜你喜欢

转载自blog.csdn.net/vickv/article/details/81094933
今日推荐