6

Estoy tratando de implementar "Stochastic gradient descent" en MATLAB. Seguí el algoritmo exactamente, pero obtengo un MU MUY MUY grande (coffients) para la función de predicción/ajuste. ¿Tengo un error en el algoritmo?Gradiente estocástico Implementación de pendiente - MATLAB

El Algoritmo: enter image description here

x = 0:0.1:2*pi  // X-axis 
    n = size(x,2);  
    r = -0.2+(0.4).*rand(n,1); //generating random noise to be added to the sin(x) function 

    t=zeros(1,n); 
    y=zeros(1,n); 



    for i=1:n 
     t(i)=sin(x(i))+r(i);   // adding the noise 
     y(i)=sin(x(i));    // the function without noise 
    end 

    f = round(1+rand(20,1)*n);  //generating random indexes 

    h = x(f);       //choosing random x points 
    k = t(f);       //chossing random y points 

    m=size(h,2);      // length of the h vector 

    scatter(h,k,'Red');    // drawing the training points (with noise) 
    %scatter(x,t,2); 
    hold on; 
    plot(x,sin(x));     // plotting the Sin function 


    w = [0.3 1 0.5];     // starting point of w 
    a=0.05;       // learning rate "alpha" 

// ---------------- ALGORITHM ---------------------// 
    for i=1:20 
     v = [1 h(i) h(i).^2];      // X vector 
     e = ((w*v') - k(i)).*v;   // prediction - observation 
     w = w - a*e;      // updating w 
    end 

    hold on; 

    l = 0:1:6; 
    g = w(1)+w(2)*l+w(3)*(l.^2); 
    plot(l,g,'Yellow');      // drawing the prediction function 

Respuesta

7

Si utiliza una tasa de aprendizaje demasiado grande, es probable que el SGD diverja.
La tasa de aprendizaje debe converger a cero.

3

normalmente, si w terminado con valores demasiado grandes, se sobreajuste. Realmente no miré tu código cuidadosamente. Pero creo que lo que le falta a su código es un término de regularización adecuado, que impide que el entrenamiento se sobreajuste. Además, aquí:

e = ((w*v') - k(i)).*v; 

La v aquí no es el gradiente del valor predicho, ¿no? De acuerdo con el algoritmo, debes reemplazarlo. Veamos cómo será después de hacer esto.

Cuestiones relacionadas