如何矢量化方程?

oor*_*ort 9 math regression machine-learning glm

我正在尝试实施Softmax回归算法,以便在观看Andrew Ng教授关于GLM的讲座后解决K分类器问题.我以为我理解了他所说的一切,直到它最终编写代码来实现Softmax回归的成本函数,如下所示:

具有重量衰减的Softmax回归的成本函数

我遇到的问题是试图想出一种方法来对此进行矢量化.我再一次认为我理解如何对这样的方程进行矢量化,因为我能够进行线性和逻辑回归,但在查看该公式之后,我被卡住了.

虽然我想为此找出一个矢量化解决方案(我意识到已经发布了类似的问题:Softmax回归的矢量化实现),我更感兴趣的是你们中是否有人可以告诉我某种方式(你的方式)要有条不紊地转换这样的公式为矢量形式.例如,对于那些在ML中是专家或经验丰富的退伍军人的人来说,当你第一次阅读文献中的新算法,并看到它们用与上面的等式相似的符号编写时,你如何将它们转换为矢量化形式?

我意识到我可能会像正在问莫扎特的学生那样离开,"你怎么这么好地弹钢琴?" 但我的问题仅仅是出于对这种材料变得更好的渴望,并假设不是每个人都知道如何对方程进行矢量化,所以有人必须设计出自己的系统,如果有,请分享!提前谢谢了!

干杯

Vla*_*lad 2

这看起来很难矢量化,因为你在求和中进行指数运算。我假设你正在将 e 提高到任意幂。您可以向量化的是表达式 \sum \sum theta ^2 的第二项,只需确保在 matlab 中使用 .* 运算符,在此处输入 计算机 \theta ^2 的链接描述

对于对数的比率的内项也是如此。\theta ' x^(i) 是可向量化表达式。

您还可能受益于记忆或动态编程技术,并尝试重用 e^\theta' x^(i) 的计算结果。

一般来说,根据我的经验,矢量化的方法首先是让非矢量化实现工作。然后尝试对计算中最明显的部分进行矢量化。在每一步中,对您的函数进行很少的调整,并始终检查是否获得与非矢量化计算相同的结果。此外,拥有多个测试用例也非常有帮助。