线性回归、逻辑回归、神经网络一般用梯度下降更新权值,原理基本一样,所以放到一起
分类加上sign函数即可
线性回归
loss=1/2*pow(y-fx,2) ,如果数据正态发布,符合最大似然估计概率
bgd:zetaj=zetaj+a/m*sum(y-h(x))*xj 收敛慢
最小二乘:zeta=(xT*x)-1*xT*y x需要列满秩,矩阵逆难求
逻辑回归
牛顿法:??
bgd: fx=1/(1+exp(-z))
最大似然估计=mul(pow(fx,y)*pow(1-fx,1-y))
j=1/2m*sum(ylogfx+(1-y)log(1-fx))
zeta=zeta-a*j的偏导
j偏导=1/m*sum(y/fx+(y-1)/(1-fx))fx'=1/m*sum(y/fx+(y-1)/(1-fx))*-xi*exp(-z)/pow(1+exp(-z),2)
=1/m*sum(y/fx+(y-1)/(1-fx))*fx*(1-fx)*xi=1/m*sum(y*(1-fx)+(y-1)fx)*-xi
=1/m*sum(fx-y)xi
BP神经网络
sgd:
Ek=1/2*sum(y-y')*(y-y')
以隐含层第h个神经元的权值为例:Whj=Whj-a*e'/Whj
l-1层:e'/whj=-sum(oy-y)f'|x=netk(l)*whjk*f'|x=netk(l-1)
=-sum(whj*errorL*fx(l)'*fx(l-1)'*h(l-2))
一层一层求出误差*权重更新当前的权值