
首先矩阵求导(向量是其中一个特例而已)的东西很多都会有让人产生错觉的,如果要想要好好深入研究就要从矩阵代数(matrix alegbra)下手, 比如
Gentle, James E. Matrix algebra: theory, computations, and applications in statistics. Springer Science & Business Media, 2007.
不过作为应用来讲的话,其实你需要只是一个cookbook,比如
http://www2.imm.dtu.dk/pubdb/views/edoc_download.php/3274/pdf/imm3274.pdf
说说个人的想法
1。矩阵求导比较麻烦,所以尽量不要使用最基本的公式,要找公式就找具体的,形式完全一致的公式,直接带入(比如cookbook中就有各种具体形式的求导公式),除非你熟悉从头开始的各种的推倒原理以及各种符号意义。
2。d(UV) = d(U)V + Ud(V),这种公式不是没有用,只是相对来讲在矩阵代数中,更重要的是看清对谁求导,所以 或者 这一类的公式更实用,而且不容易带入出错,若是要用d(UV) = d(U)V + Ud(V)的也必须要带着dx啊。另外,这里之所以说要明确分母部分的内容,不光是为了确定这个变量是x,而不是y,更重要的是明确求导的变量的类型,因为各种情况差别巨大
回到题主的问题哈,其实已经有不少人有了解答,这里就不重复了。这里就举个广为使用的例子,就是linear least square的多维情况,所考虑的最优化问题的对应函数
,事实上其实也就是题主那个式子,只不过变量看的不一样,其中y是n*1的向量,X是n*m的矩阵,b是m*1的参数向量, 则
这里需要用到的是上面说的cookbook中的公式:
这里观察这个size,我们可以发现最后求导的结果是(m*n) *(n*1) + (m*n)*(n*m)*(m*1)还是 m*1的哦!但是倘若对此再求一次导数,则相当于一个向量对向量求导数,即结果是一个矩阵,
观察size,(m*n)*(n*m) = m*m,即这是一个矩阵。
