天天看点

图像水平梯度和竖直梯度代码_【强基固本】基础算法:使用numpy实现逻辑回归随机梯度下降(附代码)...

深度学习算法工程师面试,记录一道较为基础的笔试题:

输入:目标向量Y(N*1),矩阵X(N*K);输出:使用随机梯度下降求得的逻辑回归系数W(K+1)。

分析:该问题需要先列出逻辑回归的函数解析式,再选择损失函数,最后算出损失函数关于更新参数的导数,即可开始随机梯度下降。

作者:Algernon

地址:https://www.zhihu.com/people/thisiszhou

01

逻辑回归解析式

图像水平梯度和竖直梯度代码_【强基固本】基础算法:使用numpy实现逻辑回归随机梯度下降(附代码)...

其中

图像水平梯度和竖直梯度代码_【强基固本】基础算法:使用numpy实现逻辑回归随机梯度下降(附代码)...

02

Loss函数

图像水平梯度和竖直梯度代码_【强基固本】基础算法:使用numpy实现逻辑回归随机梯度下降(附代码)...

由于逻辑回归的输出值在[0, 1]之间,并且逻辑回归虽然名字为回归,但实际是分类任务,所以损失函数使用交叉熵。其中交叉熵函数解析式为:

图像水平梯度和竖直梯度代码_【强基固本】基础算法:使用numpy实现逻辑回归随机梯度下降(附代码)...

y为label,y‘为预测值,N为y的长度。

03

关于更新参数的导数

更新参数有 

图像水平梯度和竖直梯度代码_【强基固本】基础算法:使用numpy实现逻辑回归随机梯度下降(附代码)...

 ,b,Loss的解析式为:

图像水平梯度和竖直梯度代码_【强基固本】基础算法:使用numpy实现逻辑回归随机梯度下降(附代码)...

为了便于求导,我们换一种写法,其中sum函数相当于给后面的列向量乘一个都为1的行向量S:

图像水平梯度和竖直梯度代码_【强基固本】基础算法:使用numpy实现逻辑回归随机梯度下降(附代码)...

其中 

图像水平梯度和竖直梯度代码_【强基固本】基础算法:使用numpy实现逻辑回归随机梯度下降(附代码)...

 为矩阵乘法,CE和 

图像水平梯度和竖直梯度代码_【强基固本】基础算法:使用numpy实现逻辑回归随机梯度下降(附代码)...

 都是逐元素函数,则:

图像水平梯度和竖直梯度代码_【强基固本】基础算法:使用numpy实现逻辑回归随机梯度下降(附代码)...
图像水平梯度和竖直梯度代码_【强基固本】基础算法:使用numpy实现逻辑回归随机梯度下降(附代码)...

其中

图像水平梯度和竖直梯度代码_【强基固本】基础算法:使用numpy实现逻辑回归随机梯度下降(附代码)...

(其中 

图像水平梯度和竖直梯度代码_【强基固本】基础算法:使用numpy实现逻辑回归随机梯度下降(附代码)...

 为逐元素乘法,在最后的计算中,逐元素乘法优先级比矩阵乘法优先级高)

04

参数更新(梯度下降)

图像水平梯度和竖直梯度代码_【强基固本】基础算法:使用numpy实现逻辑回归随机梯度下降(附代码)...

其中 

图像水平梯度和竖直梯度代码_【强基固本】基础算法:使用numpy实现逻辑回归随机梯度下降(附代码)...

 为学习率。

05

代码实现

先封装一下涉及到的函数:

初始化参数以及输入:

前向函数:

反向求导:

grad_w数值:

使用tensorflow进行验证:

grad数值:

可见我们自己计算的导数没有问题。 使用随机梯度下降进行参数更新。随机梯度下降,一般会随机选择batch,这里为了简便,直接将所有向量进行BP: 训练过程:

输出:

之后看看forward输出:

y_label:

06

总结

BP过程相对基础,但确实不是很简单。例如,此题loss关于w的导数,是典型的标量关于向量求导。关于向量、矩阵的求导,推荐以下文章: https://zhuanlan.zhihu.com/p/24709748

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。

图像水平梯度和竖直梯度代码_【强基固本】基础算法:使用numpy实现逻辑回归随机梯度下降(附代码)...

直播预告

图像水平梯度和竖直梯度代码_【强基固本】基础算法:使用numpy实现逻辑回归随机梯度下降(附代码)...

左划查看更多

图像水平梯度和竖直梯度代码_【强基固本】基础算法:使用numpy实现逻辑回归随机梯度下降(附代码)...
图像水平梯度和竖直梯度代码_【强基固本】基础算法:使用numpy实现逻辑回归随机梯度下降(附代码)...
图像水平梯度和竖直梯度代码_【强基固本】基础算法:使用numpy实现逻辑回归随机梯度下降(附代码)...
图像水平梯度和竖直梯度代码_【强基固本】基础算法:使用numpy实现逻辑回归随机梯度下降(附代码)...

历史文章推荐

  • 【CVPR 2020 Tutorial】如何写好论文和评审(概述)

  • 如何撰写高水平的博士论文?超全论文指导!
  • 北大读博手记:怎样完成自己的博士生涯?非常具有指导性!
  • 太牛逼了!一位中国博士把整个CNN都给可视化了,每个细节看的清清楚楚!

  • Nature发表牛津博士建议:我希望在读博士之初时就能知道的20件事

  • 沈向洋、华刚:读科研论文的三个层次、四个阶段与十个问题

  • 如何看待2021年秋招算法岗灰飞烟灭?

  • 独家解读 | ExprGAN:基于强度可控的表情编辑

  • 独家解读 | 矩阵视角下的BP算法

  • 独家解读 | Capsule Network深度解读

  • 独家解读 | Fisher信息度量下的对抗攻击

  • 论文解读 | 知识图谱最新研究综述

  • 你的毕业论文过了吗?《如何撰写毕业论文?》

  • 卡尔曼滤波系列——经典卡尔曼滤波推导

分享、点赞、在看,给个三连击呗!