神经网络,逻辑回归,矩阵求导

感觉一个很有意思的问题,对于逻辑回归来说,在进行gradient descent时,是可以通过矩阵求导的方式来做的,但需要注意的是,假设h_theta_X - Y(比如100*1)是一个列向量,我们感兴趣的是sigmoid(h_theta_X-Y)(也是100*1)对X的倒数,所以这里会得到一个100*100的矩阵,但仅在对角线上有值,其他均为0。

(换句话说,theta(一维,这是逻辑回归和神经网络主要区别)的梯度是可以用矩阵乘对角矩阵求出来的)


所以,当我把逻辑回归延伸到神经网络时,会觉得很奇怪,因为,对于coursera上的课后作业,由于对手写数字图像的分类使用10个LR回归classifier,所以在进行求解cost function时,我们是可以一口吃个胖子(不过需要乘一个全为1的向量用于表示求和),通过矩阵的运算和相乘,一步求出总体的cost的,所以我会试图通过矩阵求导的思想,一口吃掉weight的梯度。然后就发现吃不掉撑死了QAQ


按照传统的BP算法,求解theta的梯度时是对一个training example进行操作,求出该training example对theta矩阵(二维)的导数,然后需要把所有training example对theta导数累加起来,但是一个training example对theta的贡献已经是二维矩阵了,然后我们把许多二维矩阵相加。我的疑惑本质上就是如何构造一个更高维矩阵,然后这个更高维矩阵(我不确定这个是3维矩阵还是4维,我猜是4维,因为我需要这个原先的二维矩阵在另外一个高维度矩阵的对角线上,所以只能是4维)和另外一个更高维矩阵相乘,乘的结果是个二维矩阵。


所以,我能够非常轻松地理解mini batch gradient descent之类的算法,因为在计算整个系统的gradient时,只是选取一部分training example,而不是所有的training example,这样做带来显然会提升运算速度。


后话:我不觉得有人能看懂我这里在说什么,因为感觉很少会有人从矩阵计算的角度去思考这类问题。而我自己每次写东西时脑子里都会蹦出来新的想法,所以这个类别被我分成“脑洞大开”。


后后话:觉得这个问题我还是想多了,直接按照另外一篇博客中的矩阵求导然后求神经网络的梯度就行了,把数据组成高维没有意义。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值