> For the complete documentation index, see [llms.txt](https://windmising.gitbook.io/nielsen-nndl/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://windmising.gitbook.io/nielsen-nndl/introduction-2/guo-ni-he-he-zheng-ze-hua/1.md).

# 过拟合

参数太多而样本数不够容易发生过拟合。

## 过拟合的表现

1. 训练样本的Cost持续下降，而测试样本的Cost下降到一定程度开始反弹。 &#x20;

   ![](http://neuralnetworksanddeeplearning.com/images/overfitting1.png)

   ![](http://neuralnetworksanddeeplearning.com/images/overfitting3.png) &#x20;
2. 训练样本的准确率达到100%，而测试样本的准确率与训练样本有较大差距。 &#x20;

   ![](http://neuralnetworksanddeeplearning.com/images/overfitting4.png)

   ![](http://neuralnetworksanddeeplearning.com/images/overfitting2.png) &#x20;
3. 未发生过拟合的情况下，训练样本的结果与测试样本的结果应该趋势相同，差别不大。 &#x20;

   ![](http://neuralnetworksanddeeplearning.com/images/overfitting_full.png)

## 怎样解决过拟合

1. 验证数据集 + early stopping策略 &#x20;

   具体方法是： &#x20;

   （1）选择一组超参数 &#x20;

   （2）使用训练数据集训练模型 &#x20;

   （3）每训练完一个迭代，就用验证数据集计算cost，观察是否“饱和”。 &#x20;

   （4）如果未饱和，重复步骤2-3。如果已饱和，针对这组超参数的训练结束。重新选择一组超参数进行2-3步。 &#x20;

   （5）选择效果最好的一组超参数训练出的模型，用测试数据测试模型的效果。 &#x20;

   验证数据集的作用： &#x20;

   （1）用于early stopping策略 &#x20;

   （2）选择超参数 &#x20;

   （3）防止模型在测试数据上过拟合 &#x20;
2. 增大训练数据集 &#x20;

   缺点：训练数据需要成本 &#x20;
3. 减小网络大小 &#x20;

   缺点：更大的网络更powerful &#x20;
4. 正则化
