大致思想
机器学习中的线性回归算法最基本的思想:根据数据集(feature+label)模拟出一条近似的曲线,使得每个点的落点都在曲线上或者是曲线的周围不远的地方。
实现方法
1.回归模型
首先设该线性回归函数为y=∑ipropertywix+by=\sum ^{property}_{i}w_{i}x+by=∑ipropertywix+b (w是权重,b是偏置值,x是输入的数据,y表示预测值)。
2.损失函数
损失函数表示预测的值和lable值的差距,这里取平方和的意义在于“放大”预测值和真实值的差距(这里的放大有两种含义:差距大于1平方后会放大差距,差距小于1平方后会缩小差距)。
损失函数:Losslable=12num∑n=1num(y^n−yn)2Loss_{lable}=\dfrac{1}{2num}\sum ^{num}_{n=1}\left( \widehat{y}_{n}-y_{n}\right) ^{2}Losslable=2num1∑n=1num(yn−yn)2
其中num表示数据的规模,y^n\widehat{y}_{n}yn表示真是值,yny_{n}yn表示预测值。这里用欧式距离计算的损失值是平均损失,乘1/2为了的后面求导将系数变为1方便计算
关于过拟合问题:
为了防止过拟合我们应该加入regulation项,因为b是个常数,只需要考虑w就好了。
通常regulation项这么定义:Lossregulation=12∑i=1propertywi2Loss_{regulation}=\dfrac{1}{2}\sum ^{property}_{i=1}w^{2}_{i}Lossregulation=21∑i=1propertywi2
综上损失函数:
Loss=Losslable+Lossregulation=12[1num∑n=1num(y^n−yn)2+β∑i=1propertywi2]Loss=Loss_{lable}+Loss_{regulation}=\dfrac{1}{2}\left[ \dfrac{1}{num}\sum ^{num}_{n=1}\left ( \widehat{y}_{n}-y_{n}\right) ^{2}+\beta \sum ^{property}_{i=1}w_{i}^{2}\right]Loss=Losslable+Lossregulation=21[num1∑n=1num(yn−yn)2+β∑i=1propertywi2](β\betaβ为正则系数)
3.梯度更新
我们的目标就是使得Loss尽可能的减小,所以所要优化的参数就是权重w和偏置值b,所以我们要求得Loss在w和b上的偏微分。
∂Loss∂wi=1num∑n=1num(y^n−∑i=1propertywixi−b)(−xi)+β∑i=1propertywi\dfrac{\partial Loss}{\partial w_{i}}=\dfrac{1}{num}\sum ^{{num}}_{n=1}\left( \widehat{y}_{n}-\sum ^{property}_{i=1}w_{i}x_{i}-b\right) \left( -x_{i}\right) +\beta \sum ^{property}_{i=1}w_{i}∂wi∂Loss=num1∑n=1num(yn−∑i=1propertywixi−b)(−xi)+β∑i=1propertywi
∂Loss∂b=1num∑n=1num(y^n−∑i=1propertywixi−b)(−1)\dfrac{\partial Loss}{\partial b}=\dfrac{1}{num}\sum ^{{num}}_{n=1}\left( \widehat{y}_{n}-\sum ^{property}_{i=1}w_{i}x_{i}-b\right) \left( -1\right)∂b∂Loss=num1∑n=1num(yn−∑i=1propertywixi−b)(−1)
进行梯度更新:
wnewi=wi−ηw∂Loss∂ωiw_{newi}=w_{i}-\eta _{w}\dfrac{\partial Loss}{\partial \omega _{i}}wnewi=wi−ηw∂ωi∂Loss
wnewb=b−ηb∂Loss∂bw_{newb}=b-\eta _{b}\dfrac{\partial Loss}{\partial b}wnewb=b−ηb∂b∂Loss
其中ηw\eta _{w}ηw为权重w的学习率,ηb\eta _{b}ηb是偏置值b的学习率。
3.学习率的更新:
这里我们使用比较经典的adagrad(中心思想:刚开始我们更新的时候要让∂Loss∂wi\dfrac{\partial Loss}{\partial w_{i}}∂wi∂Loss的值比重较大进而其更新的幅度就较大,当更新一定的次数之后,曲线就越来越接近理想曲线,这时我们希望更新的幅度变小,这样才更容易拟合曲线。我们就要每次训练不断的减小学习率的值)
学习率更新公式:ηn=ηn−1∑i=1n−1gradi2‾\eta _{n}=\dfrac{\eta _{n-1}}{\sqrt{\overline{\sum ^{n-1}_{i=1}grad^{2}_{i}}}}ηn=∑i=1n−1gradi2ηn−1
5444



被折叠的 条评论
为什么被折叠?



