目标函数是什么?模型训练时要最小化或最大化的那个函数
目标函数(Objective Function)是优化问题中我们希望让它取得最大值或最小值的那个函数。在机器学习中,训练模型的过程,就是不断调整模型的参数,让目标函数达到最优。可以说,目标函数定义了“什么样的模型才算好”。
它和损失函数的关系
人们常常把目标函数、损失函数和代价函数混用,但严格来说它们略有区别:损失函数衡量的是单个样本上预测值与真实值之间的差距;代价函数是整个训练集上损失的平均值;目标函数则是最终要优化的整个函数,它通常由代价函数加上正则化项组成。正则化项用来惩罚过于复杂的模型,比如 L2 正则化惩罚过大的权重,L1 正则化鼓励权重变得稀疏,从而防止过拟合。于是,目标函数可以写成“训练误差加上一个系数乘以模型复杂度”,这个系数控制着两者之间的权衡。
最小化还是最大化
目标函数既可能需要最小化,也可能需要最大化。最小化的情况很常见,比如最小化预测误差、最小化成本。最大化的情况也不少:比如最大似然估计要最大化观测数据出现的概率;强化学习要最大化累计的奖励;支持向量机要最大化分类的间隔。最大化一个函数等价于最小化它的相反数,所以两者在数学上可以相互转换,很多优化工具默认只做最小化。
凸和非凸
目标函数的形状决定了优化的难易程度。如果目标函数是凸函数,就像一个碗,只有一个最低点,那么用梯度下降等方法一定能找到全局最优解,线性回归、逻辑回归、支持向量机的目标函数都属于这一类。而深度神经网络的目标函数是高度非凸的,有许多局部的低谷、鞍点和平坦的区域,无法保证找到全局最优,但实践表明,随机梯度下降找到的解通常已经足够好。
选错目标的风险
目标函数决定了模型会“努力”去做什么,选择不当可能让模型学到我们并不想要的东西。比如推荐系统如果只以点击率为目标,可能会推荐标题夸张的内容;大语言模型如果过度优化某个奖励模型给出的分数,可能会学会讨好评分而不是真正给出好的回答。因此,设计目标函数时需要尽量让它与真实的目标保持一致,并配合多种评价指标来检查模型的实际表现。