不过SVM并不是“损失函数”、“正则化”等概念的典型例子,至少从题干中的推导过程这个角度来看不是。在任一个机器学习模型的训练过程中,被最大化或者最小化的那个函数,叫作“目标函数”(objective function)。目标函数可以有很多种,比如数据的((负)对数)似然值,比如margin的大小,比如均方误差。如果目标函数是要最小化的,它就也常常被称为“损失函数”(loss function)或“费用函数”(cost function)。使用上面这些目标函数时,有时会发生过拟合。此时常常对模型的参数做一定的限制,使得模型偏好更简单的参数,这就叫“正则化”(regularization)。最常见的正则化方法,就是(软性地)限制参数的大小。设目标函数是要最小化的,所有参数组成向量w。如果往目标函数上加上(参数向量w的L1范数),这就是L1正则化;如果往目标函数上加上(参数向量w的L2范数的平方的一半),这就是L2正则化。L1正则化的优点是优化后的参数向量往往比较稀疏;L2正则化的优点是其正则化项处处可导。先来看一个典型例子——Logistic regression。设训练数据为,它们的类别为;模型的参数向量为,对于数据点,模型认为它属于“+”类的概率是。(在此省略了bias;也可以通过给所有数据点都添加一个值为1维度来把bias包括到w中去)用负对数似然值作为目标函数:。由于它是要最小化的,所以也可以叫作损失函数。在数据线性可分的情况下,w中元素的绝对值越大,目标函数就越小(参见我的另一个回答),这时就需要加入正则化。如果加入L2正则化,则目标函数就变成了这样:,其中常数C控制了正则化的强度。现在再看题主给出的SVM的推导过程。在这个推导过程中,SVM的训练被看作一个有约束的优化问题,其目标函数是,代表了margin的大小的倒数。因为它是要最小化的,所以也是损失函数。而后面加上的反倒比较像正则化项,只不过它并不典型:一来它不是为了解决过拟合问题,而是为了容错;二来它并不是限制模型参数本身的大小,而是限制容错量的大小。不过,SVM的训练也可以从另一个角度来理解。我们不再把margin的大小作为目标函数,而是考虑分类错误所带来的代价。对于“+”类()的数据,我们希望(同样省略了bias);对于“-”类()的数据,我们希望:总之,我们希望。那么,如果实际上符号为负,或者虽然符号为正但离0不够远,具体来说是,我们就认为这个分类错误(或“不够正确”)带来了大小为的损失。于是目标函数(损失函数)就是,SVM的训练变成了这个目标函数下的无约束优化问题。在数据线性可分的情况下,会有许多w使得L = 0。为了选择一个合理的w,也需要加入正则化。加入L2正则化之后,目标函数就变成了。可以验证,这个目标函数跟题干中的目标函数是等价的。而正则化项恰巧具有物理意义;最小化正则化项,就是最大化margin。总结一下,题干中的推导过程的思路,是最大化margin(目标函数),顺便容错;而我这里给出的另一个角度,是最小化分类错误造成的损失(目标函数),顺便让margin尽可能大(正则化)。我们再来比较一下logistic regression和SVM的(第二种)目标函数:可以看出,二者的唯一区别就是对于单个数据点,计算损失的方法不同。Logistic regression中的称为log loss;而SVM中的称为hinge loss。从这个角度来看问题为我们打开了更(pan)广(duo)的(la)思(mo)路(he):原来损失函数的形式是可以随便设计的。