CGBP Algoritmo del Gradiente  Conjugado
Algoritmo de Gradiente Conjugado (CGBP) CGBP converge a un mínimo de una función cuadrática en un numero finito de iteraciones. El procedimiento general para localizar un mínimo de una función en una dirección requiere: Localizar el intervalo donde se encuentra Reducir el intervalo
Algoritmo de Gradiente  Conjugado
1. La primera dirección de búsqueda es el gradiente descendente 2. Tomar un paso y escoger una razón de aprendizaje para  minimizar la función a lo largo de la dirección búsqueda.
3. Seleccione la siguiente  dirección de búsqueda de acuerdo a: Donde:
Si el algoritmo no ha convergido regrese al paso 2.
Ejemplos  Método del Gradiente  Conjugado
Ejemplo: 1 Aplique el algoritmo de Gradiente Conjugado  a la siguiente función. Los valores iniciales son: A) Realice 2 iteraciones. B) Dibuje la superficie de error en 2D. C) Grafique los punto obtenidos.
Solución
Método de Gradiente conjugado para la solución de Ecuaciones Normales 1.- Inicialice los componentes del vector de pesos con valores arbitrarios pequeños. 2.- Ajustar k=0, Calcular la dirección inicial del conjugado  d 0  y el vector de ganancia  g 0.
3.- Determine el coeficiente del vector conjugado.  Donde 4.- Actualice el vector de pesos.
5.- Determine el nuevo vector de ganancia. 6.- Determine la nueva dirección del gradiente conjugado.
Ajuste : y pruebe la condición de salida. Si  ,  ir al paso 3, de otra forma detener
Inconvenientes del CGBP . El algoritmo GC nos puede aplicar directamente al entrenamiento de RNA, dado que el índice de desempeño de las mismas no es cuadrático. No se puede usar   k  para minimizar la función a lo largo de una línea. No se alcanzara un mínimo exacto en un numero finito de iteraciones.
Para localizar un mínimo de una función en una dirección especificada se requiere: a) Localización del intervalo. b) Reducción del intervalo. El propósito del paso de localización del intervalo es encontrar un intervalo inicial que contenga un mínimo local.
El paso de la reducción del intervalo, reduce el tamaño del intervalo hasta que el mínimo es localizado en la precisión deseada. Para lo anterior se propuso: “El método de búsqueda de la Sección de Oro”
A) Localización del Intervalo Búsqueda de la sección de oro
B) Reducción del  Intervalo
Búsqueda de la  sección de oro  =0.618 Set c 1  =  a 1  + (1-  )( b 1 - a 1 ),  F c = F ( c 1 ) d 1  =  b 1  - (1-  )( b 1 - a 1 ),  F d = F ( d 1 ) For  k =1,2, ... repeat If  F c   <  F d  then Set   a k +1  =  a k  ;  b k +1  =  d k  ;  d k +1  =  c k   c  k +1  =  a  k +1  + (1-  )( b  k +1  - a  k +1  )   F d =  F c ;  F c = F ( c  k +1  ) else Set   a k +1  =  c k  ;  b k +1  =  b k  ;  c k +1  =  d k   d  k +1  =  b  k +1  - (1-  )( b  k +1  - a  k +1  )   F c =  F d ;  F d = F ( d  k +1  ) end end until  b k +1  -  a k +1  <  tol
Ejemplo: 2 Realice una iteración del algoritmo de Gradiente Conjugado para la función: Para la minimización lineal use la localización del intervalo  mediante la evaluación de la función F(x); y para la reducción del intervalo por medio de Búsqueda de la Sección de Oro.
Algoritmo CGBP Pasos Intermedios w 1 1,1 w 2 1,1
Trayectoria Completa w 1 1,1 w 2 1,1
Algoritmo de Gradiente Conjugado para entrenar MLP NN Paso 1. Inicializar los pesos de la red con valores aleatorios pequeños. Paso 2. Propague el q-esimo patrón de entrenamiento, a través de la red calculando la salida en cada nodo. Paso 3. Calcule el error local en cada nodo de la red. Para los nodos de salida el error local se calcula por:
Donde g(.) es la derivada de la funcion de activación f(.). Para cada nodo de  la capa oculta el error se calcula  como:
Paso 4. Cada combinador lineal estima la salida deseada,  dado por: donde Paso 5. Actualice el estimado de la matriz de covarianza en cada capa. Actualice el estimado del vector de correlación cruzado para cada nodo.
Donde k es el índice de presentación del patrón. Paso 6.Actualice el vector de pesos para cada nodo en la red, como sigue. (a) En cada nodo calcule sino, Si  ,no actualice el vector de pesos para el nodo y vaya al paso 7; sino realice los siguientes pasos.
(b) Encuentre la direccion  d (k).  Si el numero de iteración es un entero múltiplo del numero de pesos en el nodo , entonces: sino donde
(c) Calcule el tamaño del paso (d) Modifique el vector de pesos de acuerdo a Paso 7. Si la red no ha convergido vaya  al paso 2.
Simulación en  Matlab / NNT
Algoritmos de Gradiente Conjugado Fletcher-Reeves  (traincgf). Tiene los requerimientos mas pequeños de almacenaje de todos los algoritmos de Gradiente conjugado. Polak-Riviére  (traincgp). Tiene los requerimientos de almacenaje ligeramente mas grandes que el de Fletcher-Reeves. Tiene una mayor velocidad de convergencia en algunos problemas
Algoritmos de Gradiente Conjugado (2) Powell-Beale  (traincgb). Tiene los requerimientos de almacenaje ligeramente mas grandes que el de Polak-Riviére. Tiene generalmente una mayor velocidad de convergencia. Gradiente Conjugado Escalado  (trainscg). Es el único algoritmo de este tipo que no requiere línea de búsqueda. Es un algoritmo de entrenamiento de propósito general muy bueno.
trainscg Es una funcion que entrena redes multicapa con retropropagación, actualizando W y b de acuerdo al método de gradiente conjugado escalado. Sintaxis [net, tr]  = trainscg (net, P,T,A,Q,Ts,VV) Algoritmo de BP con  Gradiente Conjugado Escalado (SCGBP)
Donde: net = Define la red neuronal net = netff([0 5 ], [3  1] ,{´tansig´, ´logsig ´},  trainscg ) P  patrones de entrada T  valores objetivo Ai  Condiciones iniciales Q  Tamaño del lote Ts  Tamaño del paso VV Matriz vacía o vectores de validación
Valores por omisión net.trainParam.epochs=  100 net. trainParam.show=  25 net.trainParam.goal=  0 net. trainParam.time=  inf  net.trainParam.min_grad=  1e-6
Valores por omisión (2) net.trainParam.max_fail=  5 net.trainParam.sigma=  5e-5 net. trainParam.lambda=  5e-7
traincgf Es una funcion que entrena redes multicapa con retropropagación, actualizando W y b de acuerdo al método de gradiente conjugado de  Fletcher-Reeves   . Sintaxis [net, tr]  = traincgf (net, P,T,Ai,Q,Ts,VV) Algoritmo de BP con  Gradiente Conjugado .  Fletcher-Reeves
Donde: net = Define la red neuronal net = netff([0 5 ], [3  1] ,{´tansig´, ´logsig ´},  traincgf ) P  patrones de entrada T  valores objetivo Ai  Condiciones iniciales Q  Tamaño del lote Ts  Tamaño del paso VV Matriz vacía o vectores de validación
Valores por omisión net.trainParam.epochs=  100 net. trainParam.show=  25 net.trainParam.goal=  0 net. trainParam.time=  inf  net.trainParam.min_grad=  1e-6
Valores por omisión (2) net.trainParam.max_fail=  5 net.trainParam.searchFcn=  Nombre de la rutina de linea de busqueda usar ´srchcha´.
traincgp Es una funcion que entrena redes multicapa con retropropagación, actualizando W y b de acuerdo al método de gradiente conjugado de  Polak-Ribiére   . Sintaxis [net, tr]  = traincgp (net, P,T,A,Q,Ts,VV,TV) Algoritmo de BP con  Gradiente Conjugado  Polak-Ribiére
Donde: net = Define la red neuronal net = netff([0 5 ], [3  1] ,{´tansig´, ´logsig ´},  traincgp ) P  patrones de entrada T  valores objetivo Ai  Condiciones iniciales Q  Tamaño del lote Ts  Tamaño del paso VV Matriz vacía o vectores de validación TV  Matriz vacía o vectores de prueba
Valores por omisión net.trainParam.epochs=  100 net. trainParam.show=  25 net.trainParam.goal=  0 net. trainParam.time=  inf  net.trainParam.min_grad=  1e-6
Valores por omisión (2) net.trainParam.max_fail=  5 net.trainParam.searchFcn=  Nombre de la rutina de linea de busqueda usar ´srchcha´.
traincgb Es una funcion que entrena redes multicapa con retropropagación, actualizando W y b de acuerdo al método de gradiente conjugado de  Powell-Beale. Sintaxis [net, tr]  = traincgb (net, P,T,A,Q,Ts,VV,TV) Algoritmo de BP con  Gradiente Conjugado  Powell-Beale
Donde: net = Define la red neuronal net = netff([0 5 ], [3  1] ,{´tansig´, ´logsig´},  traincgb ) P  patrones de entrada T  valores objetivo Ai  Condiciones iniciales Q  Tamaño del lote Ts  Tamaño del paso VV Matriz vacía o vectores de validación TV  Matriz vacía o vectores de prueba
Valores por omisión net.trainParam.epochs=  100 net. trainParam.show=  25 net.trainParam.goal=  0 net. trainParam.time=  inf  net.trainParam.min_grad=  1e-6
Valores por omisión (2) net.trainParam.max_fail=  5 net.trainParam.searchFcn=  Nombre de la rutina de linea de busqueda usar ´srchcha´.
Dudas ???
Hasta la próxima !!!

Algoritmo de Gradiente Conjugado CGBP

  • 1.
    CGBP Algoritmo delGradiente Conjugado
  • 2.
    Algoritmo de GradienteConjugado (CGBP) CGBP converge a un mínimo de una función cuadrática en un numero finito de iteraciones. El procedimiento general para localizar un mínimo de una función en una dirección requiere: Localizar el intervalo donde se encuentra Reducir el intervalo
  • 3.
  • 4.
    1. La primeradirección de búsqueda es el gradiente descendente 2. Tomar un paso y escoger una razón de aprendizaje para minimizar la función a lo largo de la dirección búsqueda.
  • 5.
    3. Seleccione lasiguiente dirección de búsqueda de acuerdo a: Donde:
  • 6.
    Si el algoritmono ha convergido regrese al paso 2.
  • 7.
    Ejemplos Métododel Gradiente Conjugado
  • 8.
    Ejemplo: 1 Apliqueel algoritmo de Gradiente Conjugado a la siguiente función. Los valores iniciales son: A) Realice 2 iteraciones. B) Dibuje la superficie de error en 2D. C) Grafique los punto obtenidos.
  • 9.
  • 10.
    Método de Gradienteconjugado para la solución de Ecuaciones Normales 1.- Inicialice los componentes del vector de pesos con valores arbitrarios pequeños. 2.- Ajustar k=0, Calcular la dirección inicial del conjugado d 0 y el vector de ganancia g 0.
  • 11.
    3.- Determine elcoeficiente del vector conjugado. Donde 4.- Actualice el vector de pesos.
  • 12.
    5.- Determine elnuevo vector de ganancia. 6.- Determine la nueva dirección del gradiente conjugado.
  • 13.
    Ajuste : ypruebe la condición de salida. Si , ir al paso 3, de otra forma detener
  • 14.
    Inconvenientes del CGBP. El algoritmo GC nos puede aplicar directamente al entrenamiento de RNA, dado que el índice de desempeño de las mismas no es cuadrático. No se puede usar  k para minimizar la función a lo largo de una línea. No se alcanzara un mínimo exacto en un numero finito de iteraciones.
  • 15.
    Para localizar unmínimo de una función en una dirección especificada se requiere: a) Localización del intervalo. b) Reducción del intervalo. El propósito del paso de localización del intervalo es encontrar un intervalo inicial que contenga un mínimo local.
  • 16.
    El paso dela reducción del intervalo, reduce el tamaño del intervalo hasta que el mínimo es localizado en la precisión deseada. Para lo anterior se propuso: “El método de búsqueda de la Sección de Oro”
  • 17.
    A) Localización delIntervalo Búsqueda de la sección de oro
  • 18.
  • 19.
    Búsqueda de la sección de oro  =0.618 Set c 1 = a 1 + (1-  )( b 1 - a 1 ), F c = F ( c 1 ) d 1 = b 1 - (1-  )( b 1 - a 1 ), F d = F ( d 1 ) For k =1,2, ... repeat If F c < F d then Set a k +1 = a k ; b k +1 = d k ; d k +1 = c k c k +1 = a k +1 + (1-  )( b k +1 - a k +1 ) F d = F c ; F c = F ( c k +1 ) else Set a k +1 = c k ; b k +1 = b k ; c k +1 = d k d k +1 = b k +1 - (1-  )( b k +1 - a k +1 ) F c = F d ; F d = F ( d k +1 ) end end until b k +1 - a k +1 < tol
  • 20.
    Ejemplo: 2 Realiceuna iteración del algoritmo de Gradiente Conjugado para la función: Para la minimización lineal use la localización del intervalo mediante la evaluación de la función F(x); y para la reducción del intervalo por medio de Búsqueda de la Sección de Oro.
  • 21.
    Algoritmo CGBP PasosIntermedios w 1 1,1 w 2 1,1
  • 22.
  • 23.
    Algoritmo de GradienteConjugado para entrenar MLP NN Paso 1. Inicializar los pesos de la red con valores aleatorios pequeños. Paso 2. Propague el q-esimo patrón de entrenamiento, a través de la red calculando la salida en cada nodo. Paso 3. Calcule el error local en cada nodo de la red. Para los nodos de salida el error local se calcula por:
  • 24.
    Donde g(.) esla derivada de la funcion de activación f(.). Para cada nodo de la capa oculta el error se calcula como:
  • 25.
    Paso 4. Cadacombinador lineal estima la salida deseada, dado por: donde Paso 5. Actualice el estimado de la matriz de covarianza en cada capa. Actualice el estimado del vector de correlación cruzado para cada nodo.
  • 26.
    Donde k esel índice de presentación del patrón. Paso 6.Actualice el vector de pesos para cada nodo en la red, como sigue. (a) En cada nodo calcule sino, Si ,no actualice el vector de pesos para el nodo y vaya al paso 7; sino realice los siguientes pasos.
  • 27.
    (b) Encuentre ladireccion d (k). Si el numero de iteración es un entero múltiplo del numero de pesos en el nodo , entonces: sino donde
  • 28.
    (c) Calcule eltamaño del paso (d) Modifique el vector de pesos de acuerdo a Paso 7. Si la red no ha convergido vaya al paso 2.
  • 29.
    Simulación en Matlab / NNT
  • 30.
    Algoritmos de GradienteConjugado Fletcher-Reeves (traincgf). Tiene los requerimientos mas pequeños de almacenaje de todos los algoritmos de Gradiente conjugado. Polak-Riviére (traincgp). Tiene los requerimientos de almacenaje ligeramente mas grandes que el de Fletcher-Reeves. Tiene una mayor velocidad de convergencia en algunos problemas
  • 31.
    Algoritmos de GradienteConjugado (2) Powell-Beale (traincgb). Tiene los requerimientos de almacenaje ligeramente mas grandes que el de Polak-Riviére. Tiene generalmente una mayor velocidad de convergencia. Gradiente Conjugado Escalado (trainscg). Es el único algoritmo de este tipo que no requiere línea de búsqueda. Es un algoritmo de entrenamiento de propósito general muy bueno.
  • 32.
    trainscg Es unafuncion que entrena redes multicapa con retropropagación, actualizando W y b de acuerdo al método de gradiente conjugado escalado. Sintaxis [net, tr] = trainscg (net, P,T,A,Q,Ts,VV) Algoritmo de BP con Gradiente Conjugado Escalado (SCGBP)
  • 33.
    Donde: net =Define la red neuronal net = netff([0 5 ], [3 1] ,{´tansig´, ´logsig ´}, trainscg ) P patrones de entrada T valores objetivo Ai Condiciones iniciales Q Tamaño del lote Ts Tamaño del paso VV Matriz vacía o vectores de validación
  • 34.
    Valores por omisiónnet.trainParam.epochs= 100 net. trainParam.show= 25 net.trainParam.goal= 0 net. trainParam.time= inf net.trainParam.min_grad= 1e-6
  • 35.
    Valores por omisión(2) net.trainParam.max_fail= 5 net.trainParam.sigma= 5e-5 net. trainParam.lambda= 5e-7
  • 36.
    traincgf Es unafuncion que entrena redes multicapa con retropropagación, actualizando W y b de acuerdo al método de gradiente conjugado de Fletcher-Reeves . Sintaxis [net, tr] = traincgf (net, P,T,Ai,Q,Ts,VV) Algoritmo de BP con Gradiente Conjugado . Fletcher-Reeves
  • 37.
    Donde: net =Define la red neuronal net = netff([0 5 ], [3 1] ,{´tansig´, ´logsig ´}, traincgf ) P patrones de entrada T valores objetivo Ai Condiciones iniciales Q Tamaño del lote Ts Tamaño del paso VV Matriz vacía o vectores de validación
  • 38.
    Valores por omisiónnet.trainParam.epochs= 100 net. trainParam.show= 25 net.trainParam.goal= 0 net. trainParam.time= inf net.trainParam.min_grad= 1e-6
  • 39.
    Valores por omisión(2) net.trainParam.max_fail= 5 net.trainParam.searchFcn= Nombre de la rutina de linea de busqueda usar ´srchcha´.
  • 40.
    traincgp Es unafuncion que entrena redes multicapa con retropropagación, actualizando W y b de acuerdo al método de gradiente conjugado de Polak-Ribiére . Sintaxis [net, tr] = traincgp (net, P,T,A,Q,Ts,VV,TV) Algoritmo de BP con Gradiente Conjugado Polak-Ribiére
  • 41.
    Donde: net =Define la red neuronal net = netff([0 5 ], [3 1] ,{´tansig´, ´logsig ´}, traincgp ) P patrones de entrada T valores objetivo Ai Condiciones iniciales Q Tamaño del lote Ts Tamaño del paso VV Matriz vacía o vectores de validación TV Matriz vacía o vectores de prueba
  • 42.
    Valores por omisiónnet.trainParam.epochs= 100 net. trainParam.show= 25 net.trainParam.goal= 0 net. trainParam.time= inf net.trainParam.min_grad= 1e-6
  • 43.
    Valores por omisión(2) net.trainParam.max_fail= 5 net.trainParam.searchFcn= Nombre de la rutina de linea de busqueda usar ´srchcha´.
  • 44.
    traincgb Es unafuncion que entrena redes multicapa con retropropagación, actualizando W y b de acuerdo al método de gradiente conjugado de Powell-Beale. Sintaxis [net, tr] = traincgb (net, P,T,A,Q,Ts,VV,TV) Algoritmo de BP con Gradiente Conjugado Powell-Beale
  • 45.
    Donde: net =Define la red neuronal net = netff([0 5 ], [3 1] ,{´tansig´, ´logsig´}, traincgb ) P patrones de entrada T valores objetivo Ai Condiciones iniciales Q Tamaño del lote Ts Tamaño del paso VV Matriz vacía o vectores de validación TV Matriz vacía o vectores de prueba
  • 46.
    Valores por omisiónnet.trainParam.epochs= 100 net. trainParam.show= 25 net.trainParam.goal= 0 net. trainParam.time= inf net.trainParam.min_grad= 1e-6
  • 47.
    Valores por omisión(2) net.trainParam.max_fail= 5 net.trainParam.searchFcn= Nombre de la rutina de linea de busqueda usar ´srchcha´.
  • 48.
  • 49.