背景
计算梯度是机器学习问题很重要的部分,对于常见的梯度计算方法,我们要达到脱口而出的程度,本篇文章主要对
常见的梯度计算方法进行总结。
回归问题
回归问题的loss一般是平方loss,即:
loss=12∑n(f(xn)−ˆyn)2
y=fw,b(x)=∑iwixi+b
∂losswi=∑n(f(xn)−ˆyn)∗xni
注:这里的n表示第几个样本,xni表示第n个样本的第i个特征, 上标表示第几个样本,下标表示第几个特征
分类问题
二分类(LR举例说明)
label使用0和1
交叉熵loss
loss=∑n−[^ynln(f(xn))+(1−^yn)ln(1−f(xn))]
∂losswi=∑n(f(xn)−ˆyn)∗xni
和上面的梯度是一模一样的,即预测值减去label值,再乘以xni
label使用1和-1
当label使用1和-1的时候,就成了逻辑斯蒂损失函数
loss=∑nlog(1+e−^yn(fw,b(xn)))
∂losswi=−∑n11+e−^ynfw,b(xn)e−^ynfw,b(xn)^ynxni
看起来比0 和1作为标签要复杂一些
多分类
多分类使用softmax对y进行归一化生成z,然后做crossEntroy,先计算loss对y的梯度,然后计算y对最终参数的梯度,具体可以参考之前博客
总结
其他算法比如FM/DNN也都是类似的方法来计算梯度,根据具体应用,比如分类和回归,选择合适的loss函数,
这样才能根据自己的业务需求,快速设计相应的模型。