Datawhale X 李宏毅深度学习入门 第五期

Hello各位小伙伴们,好久不见。上一次我们大致讲了一下如何调试数据模型,让我们机器预测的数据更加符合实际情况。然而,在实际生活中,我们进行模型调试时往往还会遇到许多问题,今天我们就来聊聊实际应用时数据模型可能会出现哪些问题吧~

我们现在先来回顾一下上一篇文章,我们在上一篇中讲到调试模型时我们会引入许多参数,为了简化表达,我们直接用θ来统设所有的参数。接下来我们来定义损失,损失函数就变成了L(θ)。我们的目的是让损失L最小,所以我们现在要找出让L达到最小值的θ。

现在,我们假设让L最小的θ是θ*,即:

相信很多小伙伴肯定对上一篇笔记的内容还有印象,在拟合中我们经常用的函数叫做Sigmoid函数和ReLU函数(感兴趣的小伙伴可以自己搜搜看)。我们把Sigmoid函数和ReLU函数称作神经元,很多神经元称作神经网络。每一排神经元是一层,我们称为隐藏层。神经网络可以是一层,也可以是多层,叠得越多层,隐藏层就深。我们把这套技术称为深度学习。

深度学习的结构,如下图:

下面我们来看一组数据,如下图:

观察这些数据,我们可以发现从1层到4层,我们在训练集上的损失不断变小(2017-2020),但在测试集上的损失却先变小后变大。转折点出现在了第3层,第4层在测试集上的损失比第3层大,我们将这种情况称为过拟合

模型偏差

模型偏差可能会影响模型训练。举个例子,假设模型过于简单,一个有未知参数的函数代
θ 1 得到一个函数 f θ 1 (x),同理可得到另一个函数 f θ 2 (x ),把所有的函数集合起来得到一个函
数的集合。但是该函数的集合太小了,没有包含任何一个函数,可以让损失变低的函数不在模
型可以描述的范围内。比如说我们想用线性模型去拟合一个二次函数,无论怎么拟合,我们都无法得到一个很符合数据的模型,即使L值到达了最小,我们得到的θ*也不是最优解。
在这种情况下,就算找出了一个 θ * ,虽然它是这些蓝色的函数里面最好的一个,但损失还是不够低。
这时,我们应该给模型更大的灵活性,比如可以增加多个特征值,设一个更大的模型,或者利用深度学习增加模型的灵活性。

优化问题

我们通常采用梯度下降的方式进行优化,但其中可能会有很多问题。比如卡在局部最小值的地方,无法找到一个可以真正让损失很低的参数。

训练数据的损失不够低的时候,到底是模型偏差,还是优化的问题呢,我们又应该怎么判断呢?
我们可以采用多层神经网络进行比较的方式来判定,我们用同一个测试集,分别给一个20层的网络和一个56层的网络进行测试。结果56层的损失比20层的损失还大。按理来说,层次越深,损失越小,20层都可以做到小损失56层却做不到,这就可以说明是优化的问题,而不是模型偏差。

这里有个小Tips:  

如果训练损失大,可以先判断是模型偏差还是优化。如果是模型偏差,就把模型变大。假设经
过努力可以让训练数据的损失变小,接下来可以来看测试数据损失;如果测试数据损失也小,
比这个较强的基线模型还要小,就结束了。但如果训练数据上的损失小,测试数据上的损失大,可能真的就是过拟合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值