0
그라디언트 디센트 메서드를 사용하여 예상 할 행렬 R이 있습니다. 이 코드는 작은 치수 행렬 (예 : 100x1)에서 잘 작동하지만 크기를 늘릴 때 NaN 값을 제공합니다 (예 : 10x3). 도와주세요!다차원 행렬의 작은 값과 큰 값에 대한 그라디언트 디센트
R =[196,242,3;186,302,3;22,377,1;244,51,2;166,346,1;298,474,4;115,265,2;253,465,5;305,451,3;6,86,3];
N = length(R);
M = size(R,2);
K = 3;
P = rand(N,K);
Q = rand(M,K);
alpha = 0.002;
beta = 0.02;
for iter = 1 : 5000
e = R - P*Q';
P_new = P + 2*alpha*(e*Q-beta*P);
Q_new= Q + 2*alpha*(e'*P-beta*Q);
mse2(iter) = norm(R - P*Q')/norm(R);
P=P_new;
Q=Q_new;
end
R_est = P*Q';
사실 이것은 원래 행렬 R에 대해 누락 된 항목을 채우는 행렬 완료 문제입니다. 따라서 mse 2는 원래 R 값과 예상 R R_est 값 사이에 있습니다. –
왜 다차원 매트릭스에서 값이 커지게되는지 알아낼 수 없습니다. –
for 루프에 중단 점을 설정하고 단계별로 진행하여 변수가 어떻게 커지는 지 확인하십시오. –