在机器学习领域,模型的泛化能力指的是其对新数据进行分类或预测的能力。当在数据集上训练模型,并在模型未见过的新数据上进行测试时,如果模型表现良好,称其具有泛化能力。这种能力使得模型不仅限于处理训练集中的数据类型,而是能够处理相似领域或数据集中的数据。
两个模型可能分别从两个不同的问题领域独立学习,同时使用相同的变量和约束行为。最初,泛化可能是由于模型构建中的疏忽或纯粹的巧合而产生的。在当今的模型中,泛化被视为一种优势,应该被最大化和控制。一个泛化的模型可以通过避免从头开始重新训练新模型来节省生产成本。如果一个模型能够进行预测,那么它就是为了高效地完成这一任务而开发的;能够预测另一个问题是任何人都希望拥有的优势。使模型泛化应该是每个工程师和研究人员都要考虑的事情。
了解未见数据的概念非常重要。未见数据是指对模型来说是新的,未包含在训练集中的数据。模型在它们之前见过的观测上表现更好。为了获得更多的利益,应该尝试拥有即使在未见数据上也能表现良好的模型。
有时泛化可以是一个提高性能的过程。在深度学习中,模型可以分析和理解数据集中存在的模式。它们也容易过拟合。使用泛化技术,可以管理这种过拟合,使模型不会过于严格。它可以帮助深度学习预测以前未见过的模式。泛化代表了模型在训练集上训练后,如何对新数据进行正确预测。
由于泛化更多是一种优势,有必要看看一些在模型设计周期中可能影响它的因素。所有模型都有不同的行为。它们处理数据的方式以及优化性能的方式是不同的。决策树是非参数的,使它们容易过拟合。为了解决模型中的泛化问题,应该有意考虑算法的性质。有时模型的表现伴随着高复杂性。当它们复杂时,过拟合变得容易。可以通过模型正则化来创建平衡,以实现泛化并避免过拟合。对于深度网络,通过减少权重或网络参数的数量,即权重的值,来改变网络结构可能会奏效。
另一方面是用于训练的数据集。有时数据集太过统一。它们彼此之间几乎没有差异。自行车的数据集可能太过统一,以至于不能用于检测摩托车。为了实现泛化的机器学习模型,数据集应该包含多样性。应该添加不同可能的样本以提供广泛的范围。这有助于模型以最佳泛化进行训练。在训练期间,可以使用交叉验证技术,例如K折。这对于即使在目标泛化时也能看到模型的意义是必要的。
可以看到,模型不需要泛化。模型应该只做它们严格预期要做的事情。这可能或可能不是最好的。可能希望模型在摩托车图像上训练后能够识别所有类似的车辆,包括自行车甚至轮椅。这可能非常健壮。在另一个应用中,这可能不好。可能希望模型在摩托车上训练后严格识别摩托车。它不应该识别自行车。也许想要在停车场计算摩托车的数量,而不是自行车。
非泛化与过拟合条件最为密切。当一个模型是非泛化的,它可能与过拟合有关。如果解决了过拟合,泛化就更容易实现。不想要一个过拟合的模型。一个过拟合的模型学习了训练数据集,对其他事情一无所知。它在训练数据集上表现良好,但在新输入上表现不佳。另一个情况是欠拟合模型。这是一个不理解问题并且在训练数据集上表现不佳的模型,并且在新输入上也不表现。也不想要这个。另一种情况是好拟合模型。这就像机器学习中的一个正常图表。模型适当地学习了训练数据集,并且将其泛化到新输入上。