Simplemente simulé un modelo de segundo orden autorregresivo alimentado por ruido blanco y calculé los parámetros con filtros normalizados de mínimos cuadrados cuadrados de los pedidos 1-4.
Como el filtro de primer orden sub-modela el sistema, por supuesto, las estimaciones son raras. El filtro de segundo orden encuentra buenas estimaciones, aunque tiene un par de saltos bruscos. Esto es de esperar por la naturaleza de los filtros NLMS.
Lo que me confunde son los filtros de tercer y cuarto orden. Parecen eliminar los saltos bruscos, como se ve en la figura a continuación. No puedo ver lo que agregarían, ya que el filtro de segundo orden es suficiente para modelar el sistema. Los parámetros redundantes rondan alrededor de todos modos.
¿Podría alguien explicarme este fenómeno cualitativamente? ¿Qué lo causa y es deseable?
Utilicé el tamaño de paso , muestras, y el modelo AR donde es blanco ruido con varianza 1.10 4 x ( t ) = e ( t ) - 0.9 x ( t - 1 ) - 0.2 x ( t - 2 ) e ( t )
El código MATLAB, para referencia:
% ar_nlms.m
function th=ar_nlms(y,order,mu)
N=length(y);
th=zeros(order,N); % estimated parameters
for t=na+1:N
phi = -y( t-1:-1:t-na, : );
residue = phi*( y(t)-phi'*th(:,t-1) );
th(:,t) = th(:,t-1) + (mu/(phi'*phi+eps)) * residue;
end
% main.m
y = filter( [1], [1 0.9 0.2], randn(1,10000) )';
plot( ar_nlms( y, 2, 0.01 )' );
Respuestas:
Lo que parece estar sucediendo es que, a medida que comienza a modelar en exceso, la señal de error se vuelve cada vez menos blanca.
Modifiqué su código para devolver la señal de error (parte del
residue
término).Este gráfico muestra los coeficientes de retardo fuera de cero
xcorr
del error del orden = 2 (azul), 3 (rojo) y 4 (verde). Como puede ver, los términos de retraso cercanos a cero son cada vez mayores en magnitud.Si observamos el FFT (espectro) del
xcorr
error, entonces vemos que los términos de frecuencia más baja (que causan las grandes desviaciones) son cada vez más pequeños (el error contiene más frecuencias altas).Entonces, parece que el efecto del sobremodelado en este caso es filtrar el error de paso alto, lo que (para este ejemplo) es beneficioso.
fuente