深度学习入门--使用numpy实现多元回归

😁大家好,我是CuddleSabe,目前大四在读,深圳准入职算法工程师,研究主要方向为多模态(VQA、ImageCaptioning等),欢迎各位佬来讨论!
🍭我最近在有序地计划整理CV入门实战系列NLP入门实战系列。在这两个专栏中,我将会带领大家一步步进行经典网络算法的实现,欢迎各位读者(da lao)订阅🍀

给定点集points(x,y),假定我们要求的回归方程为形如f(x) = w*x+b的一元一次方程形式,那么在w及b确定的情况下每一个x会对应一个估计值f(x),线性回归即为求出最合适的w和b,使得可以根据求出来的回归方程预测函数走势。

先捋一下思路:
假设一个变量为LOSS(损失的意思),LOSS=f(x)-y=w*x+b-y 。那么LOSS的含义便是在你求出来的回归方程下与真实方程的区别。LOSS越小,则回归方程越接近真实方程。
思路分为大体两步:
1.求出每一对w,b下的LOSS的值
2.求出来LOSS值最小的w0,b0

此时的w0,b0便是回归方程的最合适的w,b

我们现在已经知道如何在已知w和b的情况下求出来LOSS,故第一步已经解决,接下来便是如何求出来什么时候LOSS最小。

这时候不得不介绍梯度的概念,梯度意为指向函数升高的方向
如果我们取反梯度,那么便可找到最小值
如下图
在这里插入图片描述
图中这些红色的点的梯度指向旁边下降的方向
那么如果利用梯度来找到最小值呢?
假如上图是y关于x的函数
那么我们知道,如果f '(x)<0,就让x向右,如果f '(x)>0,就让x向左
这样便能找到y=f(x)的最小值

同理,如果我们要找到LOSS关于w,b的最小值
那么就分别对w和对b求导
导数分别为∂LOSS/∂w和∂LOSS/∂b
其中∂LOSS/∂w = ∑2(wxi+b-yi)xi
∂LOSS/∂b = ∑2(w
xi+b-yi)

并使w和b进行如下运算便可使w和b向LOSS最小的方向移动
w’ = w - (∂LOSS/∂w)
b’ = b - (∂LOSS/∂b)

但此时还有一个问题,那便是w和b再进行如上运算时有可能变化范围会很大,那样的话很有可能会使得方程很不准确。
以此,我们便将方程变化为如下格式:
w’ = w - lr * (∂LOSS/∂w)
b’ = b - lr * (∂LOSS/∂b)

其中lr的含义为**(learn rate)学习比例**,一般初始设为0.001或者0.005,之后自己调试看怎么样将LOSS下降到满意的数值为止。

代码如下:在这里插入图片描述
最后输出结果为在这里插入图片描述
其中第一次输出为假设w和b都为0的初始的LOSS值为5565
第二次输出为回归之后的w为0.7037和b为37的LOSS的大小
此时LOSS已经由5565下降到147左右,偏差值缩小了40倍!

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CuddleSabe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值