怎样构建深度学习模型?六步走,时刻小心过拟合 | 入门指南

想要训练个深度神经网络,也准备好了可以直接用的数据,要从哪里开始上手?

来自美国的Harry Khanna,精心编织了一套六步法。大家可以瞻仰一下,然后决定要不要行动。

整个过程中,过拟合的问题时时刻刻都要注意。

1. 选个损失函数

选择怎样的损失函数,取决于需要解决怎样的问题。

如果是回归问题,就可以用均方误差 (MSE)损失函数。

如果是分类问题,就用交叉熵 (Cross-Entropy)损失函数。

只有两类的话,要用二值交叉熵 (Binary Cross-Entropy)

如果遇到了不常见的问题,比如一次性学习 (One-Shot Learning) ,可能就要自行定制一个损失方程了。

2. 选个初始架构

说到结构化学习,比如预测销售情况,从全连接的隐藏层开始,是个不错的选择。

这一层的激活数 (Number of Activations) ,要在输入神经元与输出神经元的数量之间。

两者取个平均数,就可以。

像下面这样的取法,也可以。

这里写图片描述

Ni,是输入神经元数。
No,是输出神经元数。
Ns,训练集里的样本数。
a,尺度因子,在2到10之间选。

对计算机视觉领域的小伙伴来说,像ResNet这样的架构,就很友好。

3. 拟合训练集

这一步,最重要的超参数,是学习率 (Learning Rate)(α) 。

不需要试错,fast.ai的库里面,有一个 rate finder

这里写图片描述

只要写两行代码,就可以得到一个学习率的曲线。

这里写图片描述

在损失还在明显下降的区域,选取学习率——

比如,最陡部分的旁边一点点,损失仍在剧烈下降,没有到平坦的地方。

上图的话,10-4就可以。

如果,模型训练还是很慢,或者效果不好的话,可以用Adam优化,代替初始架构里的随机梯度下降 (SGD) 优化。

这时候,如果模型还是不能和训练集愉快玩耍,考虑一下学习率衰减 (Learning Rate Decay) ——

有指数衰减,离散阶梯衰减 (Discrete Staircase Decay) ,甚至还有一些手动方法,人类可以在损失不再下降的时候,自己把学习率 (α) 往下调。

其中,余弦型 (Cosine) 衰减,在一个回合 (Epoch) 开始的时候,衰减最慢,中间最快,结束时又最慢。




转自:https://mp.weixin.qq.com/s/zv8Mtch5Klm-qSgyBxI9QQ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值