如何获得复函数的导数,包括整形、最大运算?

3次查看(最近30天)
鹅neuralnet
鹅neuralnet 2021年1月28日
编辑: 鹅neuralnet2021年2月1日
我有一个函数名 我想优化 为了最小化这个函数
我想提供函数的梯度 加速优化。
定义
函数[F] =F(x)
% size(x) = [a*b, 1]
Z=重塑(x[a,b]);%尺寸(Z)=[a,b]
% size(A) = [c, A]
B = a * z;% size(B) = [c, B]
%尺寸(C)=[C,b]
D=总和(B.*C,2);% (c, 1)
E=绝对值(D)。^2;% (c, 1)
F=最大值(E);%标量,我的目标
终止
我想用链式法则,但我有以下几个问题:
  1. 我找不到一个简单的方法来求雅可比矩阵,即重塑功能。
  2. 的雅可比矩阵
  3. 的雅可比矩阵作用
谢谢你的帮助!!

接受的答案

马特J
马特J 2021年1月28日
编辑:马特J 2021年1月29日
B(x)的雅可比矩阵是
J1=克朗(speye(b),A);
D(B)的雅可比矩阵是,
J2 = kron ((1 b), speye (c));
J2(逻辑(J2)) = C;
max(E)函数不是处处可微的,因此不清楚它有多好 铁铬镍铁合金 将处理这个问题,但在可微的点上,雅可比矩阵是,
N=长度(E);
e = 0 (1, N);
[~,idx]=max(E);
e (idx) = 1;
J3 = spdiags (e (:), 0, N, N);
8评论
马特J
马特J 2021年1月29日
非常感谢!!!我已经准备好了。
我很高兴,但我觉得我的另一个答案更好。就像你看到的,它得到了一个更紧凑,更有效的最终梯度表达式。
可以验证其他雅可比矩阵的答案我自己推导了J1。你能给我提供一些资料吗?
我在前面的评论中已经说过了。这只是一个基本的克罗内克乘积定理,我给了你们一个维基链接。
虽然我的目标 F 和变量 x 是真实的,但中间结果可能很复杂。如果有复数,怎么计算雅可比矩阵呢?
caclulus取决于表达式。

登录以发表评论。

更多答案(1)

马特J
马特J 2021年1月29日
编辑:马特J 2021年1月29日
另一种计算方法是,如果
[F,i]=最大值(E)
然后,假设我们处于差异性, F 在本地由 F=D(i)^2
ai =(我:)。”;
ci=C(i,:);
F = (ai。‘* Z * ci) ^ 2
因为这在Z的局部邻域中是满足的,所以我们可以很容易地在右边取表达式的梯度。当形状为[a,b]矩阵时,结果是,
Fgradient = 2 * (ai。' ai * Z * ci) * * ci”。
3评论
鹅neuralnet
鹅neuralnet 2021年2月1日
对不起,我又回来求助了。
我使用fmincon选项:“CheckGradients”,true。matlab告诉我我的grad是错误的。但我已经检查了好几次,无法找出问题所在。
我在代码中解释了我的解决方案,非常感谢!
函数[F,Jacob]=F(x)
% size(x) = [a*b, 1]
Z=重塑(x[a,b]);%尺寸(Z)=[a,b]
% size(A) = [c, A]
B = a * z;% size(B) = [c, B]
%尺寸(C)=[C,b]
D=总和(B.*C,2);% (c, 1)
E = abs (D);% (c, 1)
[F, I] = -min(E);%标量,我的目标
%J1 = Kron(Speye(B),a);
% J2 = kron ((1 b), speye (c));
% J2(逻辑(J2)) = C;
%假设当前点的F=E(I)
% E(I) =根号(D(I))^ 2 +图像放大(D (I)) ^ 2);
%abs_平方=1/模(E(I));
e(i)的%jacobian w.r.t to Real(d(i))是2 * Real(D(i))* abs_square
E(I) w.r.t到imag(D(I))的雅可比矩阵为2*imag(D(I))*abs_square
%D=diag(A*Z*C.)
% d (i) = a (i,:) * z * c (i,:)
%real(D(I))=real(ai*Z*ci.)%my-ai,ci是行向量,很抱歉造成混淆
%imag(D(I))=imag(ai*Z*ci.)
%我保证我的Z=重塑(x,[a,b])是一个实矩阵,因此
%real(D(I))=real(ai)*Z*real(ci.)-imag(ai)*Z*imag(ci.)
%图像放大(D (I)) =实际(ai) * Z *图像放大(ci。”)+图像放大(ai) * Z * (ci。”)
%因此,
%实(D(I))w.r.t到x的雅可比矩阵是kron(实(ci),实(ai))-kron(imag(ci),imag(ai));
%图像(D(I))w.r.t到x的雅可比矩阵是kron(real(ci),imag(ai))+kron(imag(ci),real(ai));
如果nargout>1%所需梯度
ai=tdlmat(I,:);%尺寸(ai)=[1,J]
ci = A_theta(我);% size(ci) = [1, M]
J_real=kron(real(ci),real(ai))-kron(imag(ci),imag(ai));
J_imag=kron(real(ci),imag(ai))+kron(imag(ci),real(ai));
abs_平方=1/模(E(I));
J_real = 2* ab_square *J_real + 2*imag(E(I))* ab_square * j_image;
雅各=雅各。”;
终止
终止

登录以发表评论。

社区寻宝

在MATLAB Central中查找宝藏,了解社区如何帮助您!

开始狩猎!