Answers:
编辑:一位同事告诉我,下面的方法是以下论文中通用方法的一个实例,当专门用于熵函数时,
欧弗顿,迈克尔·L和罗伯特·S·沃默斯利。“用于优化对称矩阵特征值的二阶导数。” SIAM矩阵分析和应用杂志16.3(1995):697-718。http://ftp.cs.nyu.edu/cs/faculty/overton/papers/pdffiles/eighess.pdf
总览
在这篇文章中,我证明了优化问题的存在性,并且不等式约束在解中不起作用,然后计算了熵函数的一阶和二阶Frechet导数,然后针对消除了等式约束的问题提出了牛顿法。最后,给出了Matlab代码和数值结果。
优化问题的适切性
首先,正定矩阵的总和是正定的,因此对于,秩1矩阵的总和 是正定的。如果的集合是最高秩,则特征值是正的,因此可以采用特征值的对数。因此,目标函数在可行集的内部得到了很好的定义。A (c ):= N ∑ i = 1 c i v i v T i v i A
其次,由于任何,失去排名,所以最小特征值变为零。即作为。由于的导数以爆炸,因此不能有一系列接连不断逼近可行点边界的点。因此,问题被明确定义,并且不等式约束是无效的。阿甲σ 米我Ñ(甲(Ç ))→ 0 Ç 我 → 0 - σ 日志(σ )σ → 0 Ç 我 ≥ 0
熵函数的Frechet导数
在可行区域的内部,熵函数在任何地方都是Frechet可微的,而在没有重复特征值的地方,熵函数是Frechet可微的。要执行牛顿法,我们需要计算矩阵熵的导数,该导数取决于矩阵的特征值。这就需要计算矩阵的特征值分解相对于矩阵变化的敏感性。
回想一下,对于一个矩阵与本征值分解甲= û Λ ù Ť,该衍生物的特征值矩阵相对于变化在原始矩阵是, d Λ = 我∘ (û Ť d 甲ù ), 和该衍生物的特征向量矩阵是 其中是Hadamard乘积,系数矩阵
这样的公式是通过微分特征值方程得出的,只要特征值不同,该公式就成立。当存在重复的特征值时,的公式具有可移动的不连续性,只要仔细选择非唯一特征向量,就可以扩展该不连续性。有关此的详细信息,请参见以下演示文稿和论文。d Λ
然后通过再次微分来找到二阶导数
虽然可以使特征值矩阵的一阶导数在重复的特征值上连续,但由于取决于(取决于,因此二阶导数不能,因为特征值朝彼此退化时爆炸。但是,只要真正的解决方案没有重复的特征值,那就可以了。数值实验表明,通用就是这种情况,尽管我目前没有证据。理解这一点非常重要,因为如果可能的话,最大化熵通常会试图使特征值更接近在一起。
消除平等约束
通过仅处理前系数并将最后一个系数设置为 我们可以消除约束
总体而言,经过约4页矩阵计算,目标函数相对于前系数的变化的一阶和二阶导数的下式为: 其中
消除约束后的牛顿法
由于不等式约束处于非活动状态,因此我们仅从可行集开始,然后运行信任区域或线搜索不精确的Newton-CG,以二次收敛到内部最大值。
方法如下(不包括信任区域/行搜索详细信息)
结果
对于随机,通过linesearch查找步长,该方法收敛很快。例如,以下结果为(100)是典型的-该方法二次收敛。 Ñ = 100 v 我
>> N = 100; >> V = randn(N,N); >>对于k = 1:NV(:,k)= V(:,k)/ norm(V(:,k)); 结束 >> maxEntropyMatrix(V); 牛顿迭代= 1,范数(grad f)= 0.67748 牛顿迭代= 2,范数(grad f)= 0.03644 牛顿迭代= 3,范数(grad f)= 0.0012167 牛顿迭代= 4,范数(grad f)= 1.3239e-06 牛顿迭代= 5,范数(grad f)= 7.7114e-13
为了看到计算出的最优点实际上是最大,这里是一个图表,说明了当随机扰动最优点时熵如何变化。所有的扰动都会使熵降低。
Matlab代码
1合1函数可最大程度地减少熵(新添加到此帖子中):https : //github.com/NickAlger/various_scripts/blob/master/maxEntropyMatrix.m