深度学习基础知识⑥

深度学习中的超参数调节

我们平时一直都在说“调参、调参”,但实际上,不是调“参数”,而是调“超参数”。参数(Parameter)和超参数(HyperParameter)是指什么呢?

参数是我们训练神经网络 最终要学习的目标,最基本的就是神经网络的权重 W和bias b,我们训练的目的,就是要找到一套好的模型参数,用于预测未知的结果。这些参数我们是不用调的,是模型在训练的过程中自动更新生成的。
超参数是我们控制我们模型结构、功能、效率等的 调节旋钮,具体有哪些呢?

  • learning rate
  • epochs(迭代次数,也可称为 num of iterations)
  • num of hidden layers(隐层数目)
  • num of hidden layer units(隐层的单元数/神经元数)
  • activation function(激活函数)
  • batch-size(用mini-batch SGD的时候每个批量的大小)
  • optimizer(选择什么优化器,如SGD、RMSProp、Adam)
  • 用诸如RMSProp、Adam优化器的时候涉及到的β1,β2等等

    太多了,上面是一些最常见的超参数,一般的深度学习框架就是调节这些玩意儿

网络超参数的设定

  • 卷积层参数的设定
    卷积核大小一般使用 1∗1、3∗3 或 5∗5
    使用 zero padding,可以充分利用边缘信息、使输入大小保持不变
    卷积核的个数通常设置为 2 的次幂,如 64, 128, 256, 512, 1024 等
  • 池化层参数的设定
    一般采用卷积核大小 2∗2,步长为 2
  • learning-rate 的选择
    固定学习率时,0.01,0.001 等都是比较好的选择。
    自动调整学习率时,可使用 learning rate decay 算法(step decay,exponential decay)或一些自适应优化算法(Adam,Adadelta)。
  • mini-batch 的选择
    batch size 太小会使训练速度很慢太大会加快训练速度,但同时会导致内存占用过高,并有可能降低准确率
    所以 32 至 256 是不错的初始值选择,尤其是 64 和 128,选择2的指数倍的原因是:计算机内存一般为 2 的指数倍,采用 2 进制编码。

训练技巧

迁移学习:

将从源数据集学到的知识迁移到目标数据集上例如,虽然 ImageNet 的图像⼤多跟目标数据无关,但在该数据集上训练的模型可以抽取较通用的图像特征,从而能够帮助识别 边缘、纹理、形状和物体组成等。

微调:

迁移学习中的⼀个常⽤技术,在源数据集(例如ImageNet数据集)上 预训练⼀个神经⽹络模型,即源模型***,创建⼀个新的神经⽹络模型,即目标模型*,它复制了源模型上除了输出层外的所有模型设计及其参数,为目标模型添加⼀个输出大小为 目标数据集类别个数 的输出层,并 随机初始化 该层的模型参数
在⽬标数据集上训练⽬标模型。我们将从头训练输出层,而其余层的参数基于源模型的参数微调得到
⼀般来说,微调参数层(finetune_net)会使用较小的学习率(eg:0.001)或固定不变,而从头训练输出层(scratch_net)可以使用较大 的学习率(eg:0.01)
深度学习基础知识⑥_第1张图片

你可能感兴趣的:(深度学习,深度学习,迁移学习,机器学习)