一、拟合Fitting,中文翻译成拟合这个翻译还是比较贴切的。怎么理解拟合呢其实非常好理解如果接受过九年义务教育基本都有极限或微积分的概念。有没有想起过积分中用高低不等的小矩形来拼凑出曲线面的面积那个过程其实就是一个拟合的过程。对于学过傅立叶变换的来说就更容易理解了。其实在深度学习中傅立叶变换更能直观的体现拟合这个概念。通过上面的引入介绍就可以明白什么是拟合了。它一般指模型通过训练过程学习数据中的模式与关系即找到其内在的规律以期可以对输入数据做出预测或映射。拟合的好坏直接影响模型的泛化能力。那么如何才能拟合出最接近期望的值呢在实际的深度学习应用中会提供不同的拟合函数来进行处理。比如常见的线性函数、ReLU、Sigmoid等。这不是本文的重点不展开分析。二、欠拟合underfitting所谓欠拟合用普通话来说就是“缺了把火”以偏代全了。没有真正学习到训练数据中的规律这有可能是模型简单当然也有可能是数据不够充分。导致其在训练数据集和测试数据庥中的体验都不好无法达到相关的需求。从现在来看出现欠拟合的情况还是比较少见的。解决欠拟合的方法现在已经很成熟了主要有增强模型的宽度和深度或使用更好的模型增加训练时长和迭代次数使用更好更全的训练数据集一般来说通过上述的完善都可以明显的改善欠拟合。三、过拟合Overfitting。过拟合一般是指学习到了训练数据集中的规律但由于训练过度把一些噪声和异常值也给当成了规律。它的结果是导致了泛化能力差。这个也好理解假如一个男人大眼睛高鼻梁就认为是帅可由于当天某个帅哥脸上落了一点灰反而更显得帅于是就认为有灰也是帅的标准。这就是过拟合了。其实就是模型过于复杂参数太多把许多不应该学习的数据也学习总结成了一个“规律”。它往往会让人产生一种误解认为过拟合的模型很好。因为这种过拟合等于是把训练集的数据吃得太透了理解的太深刻了。所以在训练集上表现的非常好但在测试集上表现的很差。这和某些军校的学生成绩特别好但打起仗来啥都不是一个道理。解决过拟合的方法也有不少主要有增加有效的训练数据用来稀释相关的噪声、异常值正则化其实是就是对模型复杂增加惩罚度限制权重大小。一般可用L1/L2适当降低模型的复杂度主动处理并减少无关或冗余的特征及时终止相关训练Dropout随机丢弃一些神经元数据强迫学习一些强的特征过拟合是一种用力过度的表现把过多的细节当成了特征。这也是没做好常说的“抓大放小”控制的粒度不够。四、合适的拟合Good Fit,这才是一种最希望看到的结果。即真正的把数据的规律摸透找到其内含的通用的规律。表现为训练集和测试集上都有良好的体现。需要说明的是合适的拟合不是一个静态的点而是一个动态的平衡点它控制在欠拟合到过拟合之间的状态区。提供了非常好的泛化的能力。拟合的本质是不是需要模型把相关的训练集的数据死记住而要学习其内在的普遍的规律最终可以在所有的待分析数据中也能得出准确的分析结果。可以理解为达到了‌优化与泛化的平衡。就如人类学习认识物体一样只要看到一匹马就可以准确的认出后面没见过的马。人就是通过对马的泛化认知来掌握了马的特点。如何判断欠拟合比较简单但如何判断过拟合稍显麻烦。一般来说可以实时查看训练集与验证集损失曲线‌如果二者都很高并且在增加次数等方式下其下降不明显或基本不变则说明欠拟合。而如果验证集损失曲线先下降到一个最低点后又开始上升而训练庥损失曲线持续下降并趋近于零说明出现过拟合。另外一定不要在测试集上调参‌否则可能导致“测试集过拟合。明白了欠拟合和过拟合的时机那么就知道了什么时候是合适的拟合即当验证曲线误差降到最低并且与训练集曲线误差不大时就可以考虑是合适的拟合了。五、总结其实大模型的学习本身就是一个动态的过程大家不要认为必须怎么做才会达到某个目标。不同的场景和不同的应用下可能会对大模型有各种微调其实就是这个道理。