SlideShare ist ein Scribd-Unternehmen logo
1 von 19
Sistemas NeuroDifusos
The ART Gallery

xx/10/2002
THE ART GALLERY
DESARROLLADO POR: Lars Liden
Contenido

       Introducción

1      Descripción de archivos
       1.1     Archivos UNIX
       1.2     Archivos DOS
       1.3     Simulador de muestra para Windows
       1.4     Reporte de Fallas
2      Descripción de Art Gallery Networks
       2.1     Repaso de la Red
               2.1.1 Tipos de red
               2.1.2 Red tipo ART (Teoría de Resonancia Adaptativa)
               2.1.3 Red tipo ARTMAP
               2.1.4 Componentes tipo ART
       2.2     Datos de entrada de la red
               2.2.1     "Estilos" de datos
       2.3     Activación de la red
               2.3.1 Inicializando una red
               2.3.2 Acceder a estructuras de información de la red
               2.3.3 Entrenando la red
               2.3.4 Pruebas de la red
               2.3.5 Guardar y Leer redes
               2.3.6 Liberando espacio de la red
       2.4     Conjuntos de patrones
               2.4.1     Crear un conjunto patrones
               2.4.2     Datos Tipo
               2.4.3     Examinando parámetros de un patrón y datos
               2.4.4     Guardar y leer un conjunto patrones
               2.4.5     Combinando conjuntos de patrones
               2.4.6     Liberar espacio de un conjunto de patrones
       2.5     Anotando errores de chequeo e inicialización de variables
       2.6     Complementar código y estabilidad de la red
3      Compilar The Art Gallery como una DLL
       3.1     Usar The Art Gallery en Visual Basic
4      Simuladores de ejemplo
       4.1     Simulador en modo texto para Unix y DOS
       4.2     Simulador en Windows de Art Gallery
5      Entrenando y probando archivos
       5.1     Conjunto de entrenamiento para una red de Ejemplo
       5.2     Datos de ejemplo para crear una red
6      Constantes
7      Sumario de funciones de ART GALLERY
8      Referencias
INTRODUCCION


        The Art Gallery es una serie de procedimientos que pueden ser utilizados con otro lenguaje para
implementar muchas de las redes neuronales de tipo ART.
        Actualmente The Art Gallery soporta llamadas a procedimientos en C, en las plataformas Unix y
DOS, así como la compilación como una librería dinámica ligada (dll) para usarse con aplicaciones Windows
(como Visual Basic).
        Dos simuladores de prueba se proveen con el código. Uno corre una versión modo texto bajo Unix y
DOS, el otro, en una versión con interfaz gráfica para Windows.
        Las estructuras de datos de las redes ART y conjuntos de patrones están diseñadas de tal manera
que el usuario no necesita acceder a las estructuras directamente, pero puede llamarlas en otros
procedimientos si necesita información.
1       Descripción de archivos


Los siguientes archivos deben ser incluidos con Art Gallery:

         README.TXT - Información acerca de archivos de compilación
         /UNIX  - Subdirectorio con archivos para plataforma Unix
         /DOS   - Subdirectorio con archivos para plataforma DOS
         /WIN   - Subdirectorio con archivos de instalación para simulador de Windows

1.1     Archivos UNIX

VER_1.0- Numero de Versión, información acerca de cambio de códigos
       Art_Doc.txt   - ayuda con Art Library
       Art_Gal.h     - Archivo de encabezado general
       Art_Def.h     - Constantes, red y definicion del conjunto de patrones
       Art_Ext.c     - Librería de procedimientos externos
       Art_Ext.h     - Archivo de encabezado para procedimientos externos
       Art_Int.c     - Librería de procedimientos internos
       Art_Int.h     - Archivo de encabezado para procedimientos internos
       Makefile      - Makefile para GCC
       Art_Sim.c     - Ejemplo de simulador de texto
       train.pat     - Ejemplo de archivo de entrenamiento
       test.pat      - Ejemplo de archivo de prueba
       analog.dat    - Ejemplo de datos para crear conjuntos (Makeset)
       binary.dat    - Ejemplo de datos para crear conjuntos (Makeset)

1.2     Archivos DOS:

Los archivos vienen compresos con PKZIP como “dos_gal.zip”.
VER_1.0-Numero de Versión, información acerca de cambio de códigos
Art_Doc.txt      - Ayuda
        Art_Gal.h        - Archivo de encabezado general
        Art_Def.h        - Constantes, red y definiciones de conjunto de patrones
        Art_Ext.c        - Librería de procedimientos externos
        Art_Ext.h        - Archivo de Encabezado de archivo para procedimientos externos
        Art_Int.c        - Librería de procedimientos internos
        Art_Int.h        - Archivo de encabezado para procedimientos internos
        Art_Sim.mak - Makefile para Borland C++
        Art_Sim.cfg      - Archivo de configuración para Borland C++
        Art_Gal.mak      - Makefile para Borland C++;
        Art_Gal.cfg      - Archivo de configuración para Borland C++
        Art_DLL.c        - Código DLL
        Art_Gal.def      - Código DLL
        Art_Sim.c        - Ejemplo de simulador de texto
        train.pat        - Ejemplo de archivo de entrenamiento
        test.pat         - Ejemplo de archivo de prueba
        analog.dat       - Ejemplo de datos para crear conjuntos (Makeset)
        binary.dat       - Ejemplo de datos para crear conjuntos(Makeset)
        Default.bas      - Ejemplo de como declarar la DLL en visual Basic


1.3     Simulador de muestra para Windows
Los archivos vienen compresos con PKZIP como “win_gal.zip”.

Reporte de Fallas
Todos los reportes de fallas, comentarios y sugerencias podrían ser enviadas laliden@cns.bu.edu
2       Descripción de Art Gallery Networks


2.1     Repaso de la red

        The Art Gallery soporta los paradigmas de aprendizaje supervisado y no supervisado.
        La red consiste en conjuntos con pesos aprendidos, así como especificaciones acerca del tipo de red
que será utilizada. Los datos son almacenados en una estructura de datos del tipo "netTYPE" y puede estar
señalado por un puntero tipo "netPTR" cada uno de los cuales está definido en Art_Gal.h.
        Los datos de la red pueden (y deben) ser accesados sin referencia a partes de la estructura de
datos en si misma. Las funciones han sido provistas para un acceso fácil a la información de la red.

2.1.1   Tipos de red

        Las redes pueden ser de dos tipos, ART(Teoría de Resonancia Adaptativa), para aprendizaje no
supervisado y las redes ARTMAP para aprendizaje supervisado. Ambas redes son hechas con componentes
ART, cada uno pueden tomar diferentes formas incluyendo ART1 y FUZZYART.
        Un tipo de red puede ser verificado usando GetNetType.

2.1.2   Tipos de red ART

        El tipo de red neuronal ART es utilizado para aprendizaje no supervisado. Consiste en un
componente ART, llamado “ART”, y toma como entradas a un conjunto de patrones.
        La red aprende a agrupar las entradas hacia categorías de salidas que subsecuentemente son
examinadas como nuevos patrones de entrada.
        El componente ART puede ser de tipo ART1, para patrones de entradas binarios o tipo FUZZYART
para patrones de entrada analógicos.

2.1.3   Tipo de red ARTMAP

        El tipo de red ARTMAP es utilizado para aprendizaje supervisado. Consiste en dos componentes, una
red de entrada ART, llamada “ARTA”, y una red de salida ART, llamada “ARTB”, y toma los patrones de
entrada y salida. Los dos componentes están conectados por un mapa de campo o Mapfield.
        La red de entrada ART, ARTA, agrupa los patrones de entrada basados en retroalimentación del
Mapfield. El componente ARTA puede ser de tipo ART1 para entradas binarias, o FUZZYART para entradas
analógicas.
        La red de salida ART, ARTB, agrupa los patrones de salidas deseadas y envía activaciones
categóricas a los Mapfield. El componente ARTB puede ser de tipo ART1, para salidas Binarias, o
FUZZYART, para salidas analógicas, o de tipo NONE.
        Cuando la salida ARTB, es de tipo NONE, el valor de salida deseada se envía directamente al
Mapfield antes de ser agrupada por ARTB.
        Note que la entrada a la red ARTB , es actualmente el patrón de salida de la red.

2.1.4   Tipos de componentes Art.

        Actualmente se soportan dos tipos de componentes ART, ART1 y FUZZYART. ART1 aprende a
agrupar patrones de entrada binarios mientras que FUZZYART aprende a agrupar ambos patrones de
entrada, binario y analógico.
        Adicionalmente, el componente ARTB del tipo de red ARTMAP puede llegar a ser del tipo NONE, si
no se desea un componente ARTB.
        El tipo de un componente puede ser verificado utilizando GetArtType.

2.2     Datos de entrada a la red
Las redes de tipo ART (usando aprendizaje no supervisado) solamente toman datos de entrada, que
son presentados en el componente ART. de la red.
         Las redes de tipo ARTMAP (usando aprendizaje supervisado) toman un conjunto de entrada y
salida. Los datos de entrada son presentados como entradas al componente ARTA y la salida es presentada
como entrada en el componente ARTB

2.2.1   Estilo de datos

        Cada componente ART utiliza uno de los dos estilos de datos, NONE o COMPLIMENT
        Cuando el tipo de dato tiene el valor COMPLIMENT, la entrada ART es completamente codificada
antes de ser presentada a la red.
        Cuando es tipo NONE, la codificación completa no es utilizada.
        Los estilos de entrada de los componentes de red pueden ser verificados utilizando GetArtStyle.

2.3     Activación de la red

2.3.1   Inicializando la red

        Para crear una nueva red se debe utilizar el procedimiento InitNet. Se le debe de pasar un puntero
a una estructura del tipo "netTYPE". Esta estructura es definida en Art_Def.h.
        InitNet debe pasar la siguiente información:
                 El tipo de red (ART o ARTMAP)
        Cuando el tipo ART es usado:
                 El tipo de componente ART a utilizar (ART1 o FUZZYART)
                 El estilo de entradas (NONE o COMPLIMENT)
                 El número de entradas al componente ART
        Cuando el tipo ARTMAP es usado:
                 El tipo de componente ARTA a utilizar (ART1 o FUZZYART)
                 El estilo de entradas (NONE o COMPLIMENT)
                 El número de entradas al componente ARTA
                 El tipo de componente ARTB a utilizar (ART1 o FUZZYART o NONE)
                 El estilo de entradas (NONE o COMPLIMENT)
                 El número de entradas a el componente ARTB (igual al número de salidas de la red)
        Cuando el estilo COMPLIMENT es elegido por un componente, el número de entradas para ese
componente debe ser el doble de tamaño del patrón de entrada contenido en el archivo de patrones.
        Para inicializar una red que ya ha sido cargada, FreeNet debe ser llamado primero para borrar el
contenido de la red.

2.3.2   Acceder a la información de la estructura de la red

        Para conseguir información acerca de una red que ha sido ya creada se puede utiliza lo siguiente:
                Para obtener el tipo de red, utilizar GetNetType.
                Para obtener el tipo de componentes, utilizar GetArtType
                Para obtener el estilo de componentes, utilizar GetArtStyle.
                Para ver el tamaño de entrada, utilizar GetNetInSize
                Para ver el tamaño de salida, utilizar GetNetOutSize




2.3.3   Entrenando a la red
La red es entrenada utilizando el procedimiento , TrainSet. A TrainSet se le deben pasar: un
apuntador para inicializar una red de tipo "netTYPE",un puntero para un conjunto de patrones de
entrenamiento del tipo "setTYPE", y un número máximo de épocas de entrenamiento
         Antes de llamar a TrainSet, los niveles de vigilancia y rangos de respuesta pueden ser utilizados
mediante SetArtVigil, SetArtBeta y SetMapVigil.
         Este procedimiento continuara entrenando a la red hasta estabilizar el aprendizaje que ha sido
archivado o cuando el máximo número de iteraciones se ha cumplido.
         Después de cada época de entrenamiento, TrainSet actualiza la información acerca del número de
reinicios y continuaciones que ocurren durante la época de entrenamiento. Esta información puede ser
accedida utilizando GetArtResets y GetNetMismatch.
         Adicionalmente, TrainSet nota cuando la red ha alcanzado una estabilización de su aprendizaje. Esto
puede ser verificado utilizando GetNetDone, que regresa TRUE cuando la red ha estabilizada su aprendizaje
o un FALSE de otra manera.

2.3.4   Probar la red

         La actividad de la red puede ser verificada usando TESTNET la cual regresara información acerca
del numero de ARTA y ARTB sin respuestas, el numero de entradas correctamente clasificadas y el número
incorrectamente clasificado. Note que para la red ART no existe una cosa tal como incorrectamente
clasificado una entrada como el aprendizaje de clasificación es no supervisada. La red puede únicamente
cometer un error pero no contestarlo(por ejemplo, si no conoce el nivel de vigilancia).
         Alternativamente, la red puede ser probada usando un SHOWPAR, el cual presenta un solo patrón a
la red del conjunto de patrones. Para acceder a las activaciones del resultado de la red use lo siguiente:
GetArtWinner que regresa la categoría ganadora para un componente ART y GetMap regresa el mapa de
campo de activaciones.

2.3.5   Guardar y Leer redes

       Todas las redes son almacenadas en archivos con extensión ".net". Esta extensión es
automáticamente añadida a el nombre de archivo, cuando los archivos son salvados y cargados.
       Para cargar o salvar una red use LoadNet y SaveNet sin el ".net"

2.3.6   Liberando espacio de la red

        Cuando una red ya no va a ser utilizada es una buena idea liberar memoria utilizada por la red antes
de cargarla o inicializar una nueva red. Esto puede ser hecho utilizando: FreeNet.
        Pueden ocurrir fallas si falta memoria

2.4     Conjuntos de patrones

        Un conjunto de patrones consiste en una lista de patrones de entrada (en algunos casos salidas)
para ser introducidos a la red así como las especificaciones sobre el tipo de datos contenidos en el conjunto
de patrones. Ellos son almacenados en una estructura de datos de tipo "setTYPE", y pueden ser apuntadas
por un apuntador de tipo "setPTR" ambos están definidos en Art_Lib.h.

2.4.1   Creando un conjunto de patrones

       Los conjuntos de patrones son creados utilizando MakeSet. MakeSet crea un nuevo conjunto dando
el número deseado de patrones de entradas y salidas, para el conjunto de patrones, así como el tipo de
patrones y 2 archivos que contienen los datos de entrada y salida.
Los patrones de entrada y salida pueden ser de tipo analógico o binario. Los patrones de salida
pueden también ser de tipo NONE si el conjunto va a contener únicamente patrones de entrada.
        Los dos archivos de datos que contienen los datos de entrada y salida suelen consistir de un
número por línea, sin líneas en blanco entre patrones. Dos ejemplos de archivos son "analog.dat" y
"binary.dat" han sido provistos para demostrar como deben ser hechos.
        Los patrones pueden ser añadidos utilizando la función AddPattern.

2.4.2   Tipos de datos

        Los datos de entrada y salida vienen en tres tipos NONE, BINARY y ANALOG.
        Los patrones Binarios pueden ser 0 o 1 y pueden ser utilizados con cualquier componente ART1 o
FUZZYART.
        Los patrones de entrada Analógicos oscilaran entre 0 y 1, pueden ser únicamente utilizados con
componentes FUZZYART .
        El tipo de red ART no utiliza patrones de salida pero las salidas pueden ser de cualquier tipo
incluyendo NONE.

2.4.3   Examinando parámetros de conjuntos de patrones y datos

        Los datos en un conjuntos de patrones pueden ( y deben ) ser accesados sin referencia a parte de
los datos de la estructura misma. Un número de funciones ha sido provisto para acceso fácil a la
información de el conjunto de patrones.
        El tamaño y tipo de los patrones de entrada para un conjunto de patrones puede ser verificado
usando las funciones GetSetInSize, GetSetOutSize, GetSetInType, y GetSetOutType.
        Patrones particulares de datos de entrada y salida pueden ser regresados usando las funciones
GetSetInput y GetSetOutput.
        Para encontrar el numero de patrones en el conjunto se puede utilizar: GetNumPatterns.

2.4.4   Salvando y cargando conjuntos de patrones

        Todos los conjuntos de patrones son almacenados en archivos con extensión ".set". Esta extensión
es automáticamente añadida a el nombre de archivo cuando los archivos son cargados o salvados.
        Los conjuntos de patrones pueden ser cargados o salvados utilizando SaveSet y LoadSet sin la
extensión ".set"

2.4.5   Combinando conjuntos de patrones

        Dos conjuntos de patrones pueden ser mezclados utilizando MargeSets.

2.4.6   Liberando espacio de conjuntos de patrones

       Cuando el conjunto de patrones ya no será utilizado por un buen tiempo seria buena idea liberar la
memoria usada por el conjunto de patrones antes de cargar o inicializar un nuevo conjunto de patrones.
Esto puede ser hecho utilizando FreeSet.
       Se podrían presentar resultados erróneos si se ejecutan sin memoria.

2.5 Verificando errores de chequeo e inicialización de variables

        Los procedimientos en The Art Gallery ... con todas las variables son casi siempre la inicialización
antes de ser usadas.
        GetNetInit y GetSetInit pueden ser utilizadas para verificar el estado de inicialización del conjunto de
patrones o de la red.
Note, que de cualquier manera siempre existe una pequeña posibilidad de que el área de memoria
elegida para la inicialización pueda contener(accidentalmente) el valor de TRUE. Esto es especialmente
cierto en la plataforma PC. En este caso la verificación inicial fallara y las funciones GetNetInit y GetSetInit
regresaran valores incorrectos. El único camino para asegurarnos al 100% de que el procedimiento
regresara un valor esperado es llamándolos únicamente con conjuntos de patrones y de red inicializadores.

2.6     Compliment Coding y estabilidad de la red

        Es recomendable utilizar la herramienta compliment coding cuando se crea una red para asegurar
que el aprendizaje se estabilizara en algún momento. Sin esta herramienta establecida las categorización de
la red puede falla, esto es especialmente importante cuando el tipo NONE es seleccionado de un red ARTB.
        Cuando compliment coding es utilizado el tamaño de las entradas de la red debe ser el doble del
tamaño de las entradas en el conjunto de patrones. Los valores del compliment coding son
automáticamente calculados por el programa.
        Cuando la red utiliza compliment coding, una copia 'negative' de las entrada también es presentada
en la red. Así, por ejemplo, si un patrón de entrada consiste en 5 valores y compliment coding se está
usado, la red debe tener un tamaño de entrada de 10:

        El conjunto de patrones de entrada en el archivo de patrones:
                0.2 0.3 0.5 0.7 0.1
        Entradas presentadas a la red cuando el estilo COMPLIMENT es elegido:
                0.2 0.3 0.5 0.7 0.1 0.8 0.7 0.5 0.3 0.9
3       Compilar The Art Gallery como una Librería Dinámica (DLL)


        The Art Gallery puede ser compilado como una DLL utilizando Borland C++. Esto permite que las
funciones de ART Gallery sean llamadas de otras aplicaciones de Windows.

La dll se puede crear tecleando lo siguiente en el prompt:   'make -f art_gal'
El resultado del archivo dll puede ser llamado:              'Art_Gal.dll'

3.1     Usando la DLL The Art Gallery en Visual Basic

        Una vez que The Art Gallery ha sido compilada como una DLL, y declarada en Visual Basic, las
funciones de The Art Gallery pueden ser llamadas de Visual Basic.
        El archivo 'Default.bas' contiene un modulo demostrativo de cómo la DLL The Art Gallery debe ser
declarada en Visual Basic
4       Simuladores de ejemplo


4.1     Simulador en modo texto para Unix y DOS

       El Archivo “Art_Sim.c” se incluye con The Art Gallery. Este contiene un ejemplo de como se deberá
usar The Art Gallery para crear una simulación simple en modo texto para una red neuronal.
       Un ejemplo de entrenamiento y prueba se incluye.

        En UNIX:
        Art_Sim.c puede ser compilado incluyendo el Makefile usando el comando “make” en el prompt de
UNIX.

        En DOS:( Usando Borland C++)
        Art_Sim.c puede ser compilado desde el prompt del DOS con: “make –f art_sim”

4.2 Sample Windows ART Gallery Simulator

         El archivo “win_gal.zip” contiene el programa de instalación para correr una versión grafica de The
Art Gallery, “Art_Gal.exe” fue creado usando las funciones compiladas como DLL de The Art Gallery.
5      Entrenando y probando archivos


        Un archivo de ejemplo de entrenamiento y conjunto de patrones de prueba (train.pat y test.pat)
viene incluido con la librería de The Art Gallery.
        Cada uno consiste de 11 vectores de entrada análogos y 6 vectores de salida binarios.

5.1    Conjunto de entrenamiento para una red de Ejemplo

       Este conjunto de datos puede ser usado por varios tipos de redes. A continuación mostramos unos
ejemplos:

Aprendizaje No Supervisado (Vectores de salida sin usar)
       Tipo de red:    ART
       Art Type:       FuzzyArt *
       Tamaño de entrada: 11
       Estilo de Entrada: Ninguno

Aprendizaje Supervisado con Modulo ArtB y Compliment Coding
       Tipo de red:    ARTMAP
       ArtA Type:      FuzzyART *
       Tamaño de Entrada:     11 **
       Estilo de Entrada:     COMPLIMENT
       ArtB Type:      ART1     ***
       Tamaño de Entrada:     6
       Estilo de Entrada:     Ninguno


Aprendizaje Supervisado sin Modulo de entrenamiento ArtB
       Tipo de red:    ARTMAP
       ArtA Type:      FuzzyART *
       Tamaño de Entrada:     11 **
       Estilo de Entrada:     Ninguno
       ArtB Type:      Ninguno
       Tamaño de Entrada:     6 ****

       Network Type: ARTMAP
       ArtA Type: FuzzyART *
       Input Size: 11
       Input Style: NONE
       ArtB Type: NONE
       Input Size: 6     ****

* - La entrada debe ser tipo FuzzyART donde las entradas sean analogas.
** - Con compliment coding el tamaño de la entrada es del doble del tamaño del vector de entrada en el
conjunto de patrones.
*** - El tipo de entrada para la red ARTB puede ser tanto FuzzyART como ART1, donde ambos pueden
tomar patrones binarios.
**** - El tamaño de entrada ARTB es el tamaño de el vector de entrada (no zero) siempre y cuando no sea
utilizado el entrenamiento ARTB.
5.2    Datos de ejemplo para crear una red

       Los archivos “analog.dat" y "binary.dat" contienen datos aleatorios análogos y binarios para crear
un nuevo conjunto de patrones.
6      Constantes


        Las siguientes constantes están definidas en Art_Gal.h y pueden ser usadas en las llamadas a
funciones:

Tipos de red:
        ART           0
        ARTMAP        1

Componentes:
      ART             0
      ARTA            1
      ARTB            2

Tipo de Componentes:
        NONE         0
        ART1         1
        FUZZYART     2

Valores Booleanos:
        FALSE        0
        TRUE         5571

Tipos de Datos:
        NONE          0
        BINARY        1
        ANALOG        2

Estilo de Datos:
         NONE       0
         COMPLIMENT 1
7         Sumario de funciones de ART GALLERY


NOTA: Los argumentos dentro de los paréntesis solo se requieren cuando se usa la red ARTMAP.

int      AddPattern       (setPTR set, int num_inputs, float *input,int num_outputs, float *output)
int      FreeNet          (netPTR net)
int      FreeSet          (setPTR set)
int      GetArtBeta       (netPTR net, int component, float *beta)
int      GetArtResets     (netPTR net, int component)
int      GetArtSize       (netPTR net, int component)
int      GetArtType       (netPTR net, int component)
int      GetArtStyle      (netPTR net, int component)
int      GetArtVigil      (netPTR net, int component, float *vigil)
int      GetArtWinner     (netPTR net, int component)
int      GetBaseVigil     (netPTR net, float *vigil)
int      GetMap           (netPTR net, float *list)
int      GetMapMismatch (netPTR net)
int      GetMapSize       (netPTR net)
int      GetMapVigil      (netPTR net, float *vigil)
int      GetNetDone       (netPTR net)
int      GetNetInit       (netPTR net)
int      GetNetInSize     (netPTR net)
int      GetNetOutSize (netPTR net)
int      GetNetType       (netPTR net)
int      GetNumPatterns (setPTR set)
int      GetSetInit       (setPTR set)
int      GetSetInput      (setPTR set, int pat_num, float *list)
int      GetSetInSize     (setPTR set)
int      GetSetInType     (setPTR set)
int      GetSetOutput     (setPTR set, int pat_num, float *list)
int      GetSetOutSize (setPTR set)
int      GetSetOutType (setPTR set)
int      InitNet          (netPTR net, int net_type, int components, int styleA, int num_inputs,
                           int componentB, int styleB, int num_outputs)
int      InitSet          (setPTR set, int num_inputs, int type_inputs, int num_outputs, int type_outputs)
int      LoadNet          (netPTR net, char *file_prefix)
int      LoadSet          (setPTR set, char *file_prefix)
int      MakeSet          (setPTR set, char *infile_name,int num_inputs, int type_inputs, char *outfile_name,
int   num_outputs, int type_outputs)
int      MergeSets        (char *file1_prefix, char *file2_prefix, char *save_prefix)
int      SaveNet          (netPTR net, char *file_prefix)
int      SaveSet          (setPTR set, char *file_prefix)
int      SetArtBeta       (netPTR net, int component, float beta)
int      SetArtVigil      (netPTR net, int component, float vigil)
int      SetBaseVigil     (netPTR net, float base_vigil)
int      SetMapVigil      (netPTR net, float map_vigil)
int      ShowPat          (netPTR net, setPTR set, int pat_num)
int      TrainSet         (netPTR net, setPTR set, int max_epoch)
8      Descripción de las funciones de THE ART GALLERY


AddPattern
      Dado un apuntador a un conjunto de patrones y un patrón de datos, adiciona el patrón al conjunto.

       Argumentos:
               set              - Apuntador al conjunto de patrones de tipo setTYPE
               num_inputs       - Número de patrones de entrada (integer)
               *input           - Apuntador a la lista de entradas num_inputs long (float)
               num_outputs - Número de patrones de salida (integer)
               *output          - Apuntador a la lista de salidas num_outputs long (float)
       Valores de Retorno:
               0       - Finalizó exitosamente
               1       - Cuando el tamaño de la entrada o salida es incompatible
               2       - Cuando datos ANALOG fueron datos para tipos BINARY
               3       - Cuando patrones de datos ANALOG no han sido redondeados correctamente [0 1]
               4       - Cuando el vector de entrada o salida solo contenga valores de cero
               5       - Cuando a ocurrido un error de memoria (sin memoria)
               6       - Cuando set no ha sido inicializado o sea NULL

FreeNet
      Dado un apuntador a una red, libera la memoria utilizada por la red y la señala como no inicializada.
      Preacaución: Esto borra esencialmente la red.

       Argumentos:
               net    - Apuntador a una red inicializada de tipo netTYPE
       Valores de Retorno:
               0      - Finalizo exitosamente
               1      - Cuando la red no fue inicializada o sea NULL

FreeSet
       Dado un apuntador a un conjunto, libera la memoria asignada al conjunto y señala el conjunto de
patrones como no inicializado.
       Precaución: Esto borra el conjunto de patrones.

       Argumentos:
               set    - Apuntador al conjunto de patrones de tipo setTYPE
       Valores de Retorno:
               0      - Finalizó exitosamente
               1      - Cuando set no fue inicializada o sea NULL

GetArtBeta
       Dado un apuntador a una red, a un componente de la red, y un apuntador a float, asigna el
apuntador a float al valor actual del indice recodificado del componente.

       Argumentos:
             net       - Apuntador a una red inicializada de tipo netTYPE component - ART, ARTA, ARTB
             beta      - Apuntador a float

       Valores de Retorno:
               0      - Finalizó exitosamente
               1      - Red no inicializada o NULL
2       - Componente y tipo dado incompatible
               3       - Tipo de componente dado invalido

GetArtResets
       Dado un apuntador a una red, y a un componente, regresa el número de resets durante la última
época de entrenamiento para ese componente.

       Argumentos:
               net    - Apuntador a una red inicializada de tipo netTYPE component - ART, ARTA, ARTB
       Valores de Retorno:
               Cuando finalizó exitozamente: El número de Resets
               Cuando la red ni se inicializo: NULL o tipo de red invalido -1

GetArtSize
      Dado un apuntador a una red, y a un tipo de componente, regresa el tamaño actual del
componente ART.

       Argumentos:
               net    - Apuntador a una red inicializada de tipo netTYPE component - ART, ARTA, ARTB
       Valores de Retorno:
               Cuando finalizó exitozamente: El tamaño del componente ART
               Cuando el tipo de red es incompatible: red sin inicializar o NULL -1

GetArtStyle
      Dado un apuntador a una red, y a un componente, regresa el estilo del componente.

       Argumentos:
               net    - Apuntador a una red inicializada de tipo netTYPE component - ART, ARTA, ARTB
       Valores de Retorno:
               NONE - Cuando el componente una entradas normales
               COMPLIMENT- Cuando el componente usa compliment coding
               -1     - Cuando no se inicializo, NULL o es un tipo de red invalido

GetArtType
      Dado un apuntador a una red, y a un componente, regresa el tipo de componente.

       Argumentos:
               net    - Apuntador a una red inicializada de tipo netTYPE component - ART, ARTA, ARTB
       Valores de Retorno:
               NONE - Cuando el componente es del tipo NONE
               ART1 - Cuando el componente es del tipo ART1
               FUZZYART - Cuando el componente es del tipo FUZZYART
               -1     - Cuando no se inicializo, NULL o es un tipo de red invalido

GetArtVigil
         Dado un apuntador a una red, un componente de red y un apuntador a float, asigna el apuntador a
float al valor del nivel de vigilancia del componente.

       Argumentos:
               net     - Apuntador a una red inicializada de tipo netTYPE component - ART, ARTA, ARTB
               vigil   - Apuntador a float
       Valores de retorno:
               0       - Finalizó exitosamente
1       -   Red no inicializada o NULL
               2       -   Componente ARTMAP dado para el tipo de red ART
               3       -   Componente ART dado para el tipo de red ARTMAP
               4       -   Nombre de componente dado invalido

8      Referencias


Carpenter, G., Grossberg, S. (1987) "A Massively Parallel Architecture
       For A Self-Organizing Neural Pattern Recognition Machine."
       Computer Vision, Graphics, and Image Processing, 37, pp. 54-115.

Carpenter, G., Grossberg, S., & Reynolds, J. (1991) "ARTMAP: Supervised
       Real-Time Learning and Classification of Nonstationary Date by a
       Self-Organizing Neural Network." Neural Networks, 4, pp. 565-588.

Carpenter, G., Grossberg, S., & Rosen, D. (1991) "Fuzzy ART: Fast Stable
       Learning and Categorization of Analog Patterns by an Adaptive
       Resonance System." Neural Networks, 4, pp. 759-771.

Carpenter, G., Grossberg, S., Markuzon, N., Reynolds, J. & Rosen, D. (1992)
       "Fuzzy ARTMAP: A Neural Network Architecture for Incremental
       Supervised Learning of Analog Multidimensional Maps." IEEE
       Transactions on Neural Networks, 5, pp. 698-713.

Weitere ähnliche Inhalte

Ähnlich wie Documentacion The Art Gallery

Electrónica digital: Practicas spartan 3E
Electrónica digital: Practicas spartan 3EElectrónica digital: Practicas spartan 3E
Electrónica digital: Practicas spartan 3ESANTIAGO PABLO ALBERTO
 
Capa De Enlace De Datos
Capa De Enlace De DatosCapa De Enlace De Datos
Capa De Enlace De Datosmaricela soto
 
Capa De Enlace De Datos R E D E S
Capa De Enlace De Datos  R E D E SCapa De Enlace De Datos  R E D E S
Capa De Enlace De Datos R E D E Smaricela soto
 
Capa De Enlace De Datos
Capa De Enlace De DatosCapa De Enlace De Datos
Capa De Enlace De Datosmaricela soto
 
Diapocitivas Iris Aracely Vazquez Alvarez
Diapocitivas Iris Aracely Vazquez AlvarezDiapocitivas Iris Aracely Vazquez Alvarez
Diapocitivas Iris Aracely Vazquez Alvarezcarlos
 
Diapositivas Iris Aracely Vazquez Alvarez
Diapositivas Iris Aracely Vazquez AlvarezDiapositivas Iris Aracely Vazquez Alvarez
Diapositivas Iris Aracely Vazquez Alvarezunaed
 
Diapocitivas Iris Aracely Vazquez Alvarez
Diapocitivas Iris Aracely Vazquez AlvarezDiapocitivas Iris Aracely Vazquez Alvarez
Diapocitivas Iris Aracely Vazquez Alvarezcarlos
 
Diapocitivas Iris Aracely Vazquez Alvarez
Diapocitivas Iris Aracely Vazquez AlvarezDiapocitivas Iris Aracely Vazquez Alvarez
Diapocitivas Iris Aracely Vazquez Alvarezcarlos
 
PresentacióN Jahaira Rodriguez 2
PresentacióN Jahaira Rodriguez 2PresentacióN Jahaira Rodriguez 2
PresentacióN Jahaira Rodriguez 2miguel cruz
 
Presentación J A H A I R A R O D R I G U E Z 2
Presentación  J A H A I R A  R O D R I G U E Z 2Presentación  J A H A I R A  R O D R I G U E Z 2
Presentación J A H A I R A R O D R I G U E Z 2jahairaanahi
 
Presentación J A H A I R A R O D R I G U E Z 2
Presentación  J A H A I R A  R O D R I G U E Z 2Presentación  J A H A I R A  R O D R I G U E Z 2
Presentación J A H A I R A R O D R I G U E Z 2jahairaanahi
 
PresentacióN Jahaira Rodriguez 2
PresentacióN Jahaira Rodriguez 2PresentacióN Jahaira Rodriguez 2
PresentacióN Jahaira Rodriguez 2jahairaanahi
 
Configuracion de Firewalls e Pasarelas
Configuracion de Firewalls e PasarelasConfiguracion de Firewalls e Pasarelas
Configuracion de Firewalls e PasarelasMiguel Morales
 
Capa De Enlace De Datos Redes[1]
Capa De Enlace De Datos Redes[1]Capa De Enlace De Datos Redes[1]
Capa De Enlace De Datos Redes[1]jazmin12345
 
Sockets y Threads en Java
Sockets y Threads en JavaSockets y Threads en Java
Sockets y Threads en JavaJose Jordan
 

Ähnlich wie Documentacion The Art Gallery (20)

Electrónica digital: Practicas spartan 3E
Electrónica digital: Practicas spartan 3EElectrónica digital: Practicas spartan 3E
Electrónica digital: Practicas spartan 3E
 
Uso de modelos en capas
Uso de modelos en capasUso de modelos en capas
Uso de modelos en capas
 
Actividad 3 unidad 3
Actividad  3 unidad 3Actividad  3 unidad 3
Actividad 3 unidad 3
 
Conceptos
ConceptosConceptos
Conceptos
 
E:\Conceptos
E:\Conceptos    E:\Conceptos
E:\Conceptos
 
Capa De Enlace De Datos
Capa De Enlace De DatosCapa De Enlace De Datos
Capa De Enlace De Datos
 
Capa De Enlace De Datos R E D E S
Capa De Enlace De Datos  R E D E SCapa De Enlace De Datos  R E D E S
Capa De Enlace De Datos R E D E S
 
Capa De Enlace De Datos
Capa De Enlace De DatosCapa De Enlace De Datos
Capa De Enlace De Datos
 
Diapocitivas Iris Aracely Vazquez Alvarez
Diapocitivas Iris Aracely Vazquez AlvarezDiapocitivas Iris Aracely Vazquez Alvarez
Diapocitivas Iris Aracely Vazquez Alvarez
 
Diapositivas Iris Aracely Vazquez Alvarez
Diapositivas Iris Aracely Vazquez AlvarezDiapositivas Iris Aracely Vazquez Alvarez
Diapositivas Iris Aracely Vazquez Alvarez
 
Diapocitivas Iris Aracely Vazquez Alvarez
Diapocitivas Iris Aracely Vazquez AlvarezDiapocitivas Iris Aracely Vazquez Alvarez
Diapocitivas Iris Aracely Vazquez Alvarez
 
Diapocitivas Iris Aracely Vazquez Alvarez
Diapocitivas Iris Aracely Vazquez AlvarezDiapocitivas Iris Aracely Vazquez Alvarez
Diapocitivas Iris Aracely Vazquez Alvarez
 
PresentacióN Jahaira Rodriguez 2
PresentacióN Jahaira Rodriguez 2PresentacióN Jahaira Rodriguez 2
PresentacióN Jahaira Rodriguez 2
 
Presentación J A H A I R A R O D R I G U E Z 2
Presentación  J A H A I R A  R O D R I G U E Z 2Presentación  J A H A I R A  R O D R I G U E Z 2
Presentación J A H A I R A R O D R I G U E Z 2
 
Presentación J A H A I R A R O D R I G U E Z 2
Presentación  J A H A I R A  R O D R I G U E Z 2Presentación  J A H A I R A  R O D R I G U E Z 2
Presentación J A H A I R A R O D R I G U E Z 2
 
PresentacióN Jahaira Rodriguez 2
PresentacióN Jahaira Rodriguez 2PresentacióN Jahaira Rodriguez 2
PresentacióN Jahaira Rodriguez 2
 
Configuracion de Firewalls e Pasarelas
Configuracion de Firewalls e PasarelasConfiguracion de Firewalls e Pasarelas
Configuracion de Firewalls e Pasarelas
 
Capa De Enlace De Datos Redes[1]
Capa De Enlace De Datos Redes[1]Capa De Enlace De Datos Redes[1]
Capa De Enlace De Datos Redes[1]
 
Redes deber1
Redes deber1Redes deber1
Redes deber1
 
Sockets y Threads en Java
Sockets y Threads en JavaSockets y Threads en Java
Sockets y Threads en Java
 

Mehr von ESCOM

redes neuronales tipo Som
redes neuronales tipo Somredes neuronales tipo Som
redes neuronales tipo SomESCOM
 
redes neuronales Som
redes neuronales Somredes neuronales Som
redes neuronales SomESCOM
 
redes neuronales Som Slides
redes neuronales Som Slidesredes neuronales Som Slides
redes neuronales Som SlidesESCOM
 
red neuronal Som Net
red neuronal Som Netred neuronal Som Net
red neuronal Som NetESCOM
 
Self Organinising neural networks
Self Organinising  neural networksSelf Organinising  neural networks
Self Organinising neural networksESCOM
 
redes neuronales Kohonen
redes neuronales Kohonenredes neuronales Kohonen
redes neuronales KohonenESCOM
 
Teoria Resonancia Adaptativa
Teoria Resonancia AdaptativaTeoria Resonancia Adaptativa
Teoria Resonancia AdaptativaESCOM
 
ejemplo red neuronal Art1
ejemplo red neuronal Art1ejemplo red neuronal Art1
ejemplo red neuronal Art1ESCOM
 
redes neuronales tipo Art3
redes neuronales tipo Art3redes neuronales tipo Art3
redes neuronales tipo Art3ESCOM
 
Art2
Art2Art2
Art2ESCOM
 
Redes neuronales tipo Art
Redes neuronales tipo ArtRedes neuronales tipo Art
Redes neuronales tipo ArtESCOM
 
Neocognitron
NeocognitronNeocognitron
NeocognitronESCOM
 
Neocognitron
NeocognitronNeocognitron
NeocognitronESCOM
 
Neocognitron
NeocognitronNeocognitron
NeocognitronESCOM
 
Fukushima Cognitron
Fukushima CognitronFukushima Cognitron
Fukushima CognitronESCOM
 
Counterpropagation NETWORK
Counterpropagation NETWORKCounterpropagation NETWORK
Counterpropagation NETWORKESCOM
 
Counterpropagation NETWORK
Counterpropagation NETWORKCounterpropagation NETWORK
Counterpropagation NETWORKESCOM
 
Counterpropagation
CounterpropagationCounterpropagation
CounterpropagationESCOM
 
Teoría de Resonancia Adaptativa Art2 ARTMAP
Teoría de Resonancia Adaptativa Art2 ARTMAPTeoría de Resonancia Adaptativa Art2 ARTMAP
Teoría de Resonancia Adaptativa Art2 ARTMAPESCOM
 
Teoría de Resonancia Adaptativa ART1
Teoría de Resonancia Adaptativa ART1Teoría de Resonancia Adaptativa ART1
Teoría de Resonancia Adaptativa ART1ESCOM
 

Mehr von ESCOM (20)

redes neuronales tipo Som
redes neuronales tipo Somredes neuronales tipo Som
redes neuronales tipo Som
 
redes neuronales Som
redes neuronales Somredes neuronales Som
redes neuronales Som
 
redes neuronales Som Slides
redes neuronales Som Slidesredes neuronales Som Slides
redes neuronales Som Slides
 
red neuronal Som Net
red neuronal Som Netred neuronal Som Net
red neuronal Som Net
 
Self Organinising neural networks
Self Organinising  neural networksSelf Organinising  neural networks
Self Organinising neural networks
 
redes neuronales Kohonen
redes neuronales Kohonenredes neuronales Kohonen
redes neuronales Kohonen
 
Teoria Resonancia Adaptativa
Teoria Resonancia AdaptativaTeoria Resonancia Adaptativa
Teoria Resonancia Adaptativa
 
ejemplo red neuronal Art1
ejemplo red neuronal Art1ejemplo red neuronal Art1
ejemplo red neuronal Art1
 
redes neuronales tipo Art3
redes neuronales tipo Art3redes neuronales tipo Art3
redes neuronales tipo Art3
 
Art2
Art2Art2
Art2
 
Redes neuronales tipo Art
Redes neuronales tipo ArtRedes neuronales tipo Art
Redes neuronales tipo Art
 
Neocognitron
NeocognitronNeocognitron
Neocognitron
 
Neocognitron
NeocognitronNeocognitron
Neocognitron
 
Neocognitron
NeocognitronNeocognitron
Neocognitron
 
Fukushima Cognitron
Fukushima CognitronFukushima Cognitron
Fukushima Cognitron
 
Counterpropagation NETWORK
Counterpropagation NETWORKCounterpropagation NETWORK
Counterpropagation NETWORK
 
Counterpropagation NETWORK
Counterpropagation NETWORKCounterpropagation NETWORK
Counterpropagation NETWORK
 
Counterpropagation
CounterpropagationCounterpropagation
Counterpropagation
 
Teoría de Resonancia Adaptativa Art2 ARTMAP
Teoría de Resonancia Adaptativa Art2 ARTMAPTeoría de Resonancia Adaptativa Art2 ARTMAP
Teoría de Resonancia Adaptativa Art2 ARTMAP
 
Teoría de Resonancia Adaptativa ART1
Teoría de Resonancia Adaptativa ART1Teoría de Resonancia Adaptativa ART1
Teoría de Resonancia Adaptativa ART1
 

Documentacion The Art Gallery

  • 1. Sistemas NeuroDifusos The ART Gallery xx/10/2002 THE ART GALLERY DESARROLLADO POR: Lars Liden
  • 2. Contenido Introducción 1 Descripción de archivos 1.1 Archivos UNIX 1.2 Archivos DOS 1.3 Simulador de muestra para Windows 1.4 Reporte de Fallas 2 Descripción de Art Gallery Networks 2.1 Repaso de la Red 2.1.1 Tipos de red 2.1.2 Red tipo ART (Teoría de Resonancia Adaptativa) 2.1.3 Red tipo ARTMAP 2.1.4 Componentes tipo ART 2.2 Datos de entrada de la red 2.2.1 "Estilos" de datos 2.3 Activación de la red 2.3.1 Inicializando una red 2.3.2 Acceder a estructuras de información de la red 2.3.3 Entrenando la red 2.3.4 Pruebas de la red 2.3.5 Guardar y Leer redes 2.3.6 Liberando espacio de la red 2.4 Conjuntos de patrones 2.4.1 Crear un conjunto patrones 2.4.2 Datos Tipo 2.4.3 Examinando parámetros de un patrón y datos 2.4.4 Guardar y leer un conjunto patrones 2.4.5 Combinando conjuntos de patrones 2.4.6 Liberar espacio de un conjunto de patrones 2.5 Anotando errores de chequeo e inicialización de variables 2.6 Complementar código y estabilidad de la red 3 Compilar The Art Gallery como una DLL 3.1 Usar The Art Gallery en Visual Basic 4 Simuladores de ejemplo 4.1 Simulador en modo texto para Unix y DOS 4.2 Simulador en Windows de Art Gallery 5 Entrenando y probando archivos 5.1 Conjunto de entrenamiento para una red de Ejemplo 5.2 Datos de ejemplo para crear una red 6 Constantes 7 Sumario de funciones de ART GALLERY 8 Referencias
  • 3. INTRODUCCION The Art Gallery es una serie de procedimientos que pueden ser utilizados con otro lenguaje para implementar muchas de las redes neuronales de tipo ART. Actualmente The Art Gallery soporta llamadas a procedimientos en C, en las plataformas Unix y DOS, así como la compilación como una librería dinámica ligada (dll) para usarse con aplicaciones Windows (como Visual Basic). Dos simuladores de prueba se proveen con el código. Uno corre una versión modo texto bajo Unix y DOS, el otro, en una versión con interfaz gráfica para Windows. Las estructuras de datos de las redes ART y conjuntos de patrones están diseñadas de tal manera que el usuario no necesita acceder a las estructuras directamente, pero puede llamarlas en otros procedimientos si necesita información.
  • 4. 1 Descripción de archivos Los siguientes archivos deben ser incluidos con Art Gallery: README.TXT - Información acerca de archivos de compilación /UNIX - Subdirectorio con archivos para plataforma Unix /DOS - Subdirectorio con archivos para plataforma DOS /WIN - Subdirectorio con archivos de instalación para simulador de Windows 1.1 Archivos UNIX VER_1.0- Numero de Versión, información acerca de cambio de códigos Art_Doc.txt - ayuda con Art Library Art_Gal.h - Archivo de encabezado general Art_Def.h - Constantes, red y definicion del conjunto de patrones Art_Ext.c - Librería de procedimientos externos Art_Ext.h - Archivo de encabezado para procedimientos externos Art_Int.c - Librería de procedimientos internos Art_Int.h - Archivo de encabezado para procedimientos internos Makefile - Makefile para GCC Art_Sim.c - Ejemplo de simulador de texto train.pat - Ejemplo de archivo de entrenamiento test.pat - Ejemplo de archivo de prueba analog.dat - Ejemplo de datos para crear conjuntos (Makeset) binary.dat - Ejemplo de datos para crear conjuntos (Makeset) 1.2 Archivos DOS: Los archivos vienen compresos con PKZIP como “dos_gal.zip”. VER_1.0-Numero de Versión, información acerca de cambio de códigos Art_Doc.txt - Ayuda Art_Gal.h - Archivo de encabezado general Art_Def.h - Constantes, red y definiciones de conjunto de patrones Art_Ext.c - Librería de procedimientos externos Art_Ext.h - Archivo de Encabezado de archivo para procedimientos externos Art_Int.c - Librería de procedimientos internos Art_Int.h - Archivo de encabezado para procedimientos internos Art_Sim.mak - Makefile para Borland C++ Art_Sim.cfg - Archivo de configuración para Borland C++ Art_Gal.mak - Makefile para Borland C++; Art_Gal.cfg - Archivo de configuración para Borland C++ Art_DLL.c - Código DLL Art_Gal.def - Código DLL Art_Sim.c - Ejemplo de simulador de texto train.pat - Ejemplo de archivo de entrenamiento test.pat - Ejemplo de archivo de prueba analog.dat - Ejemplo de datos para crear conjuntos (Makeset) binary.dat - Ejemplo de datos para crear conjuntos(Makeset) Default.bas - Ejemplo de como declarar la DLL en visual Basic 1.3 Simulador de muestra para Windows
  • 5. Los archivos vienen compresos con PKZIP como “win_gal.zip”. Reporte de Fallas Todos los reportes de fallas, comentarios y sugerencias podrían ser enviadas laliden@cns.bu.edu
  • 6. 2 Descripción de Art Gallery Networks 2.1 Repaso de la red The Art Gallery soporta los paradigmas de aprendizaje supervisado y no supervisado. La red consiste en conjuntos con pesos aprendidos, así como especificaciones acerca del tipo de red que será utilizada. Los datos son almacenados en una estructura de datos del tipo "netTYPE" y puede estar señalado por un puntero tipo "netPTR" cada uno de los cuales está definido en Art_Gal.h. Los datos de la red pueden (y deben) ser accesados sin referencia a partes de la estructura de datos en si misma. Las funciones han sido provistas para un acceso fácil a la información de la red. 2.1.1 Tipos de red Las redes pueden ser de dos tipos, ART(Teoría de Resonancia Adaptativa), para aprendizaje no supervisado y las redes ARTMAP para aprendizaje supervisado. Ambas redes son hechas con componentes ART, cada uno pueden tomar diferentes formas incluyendo ART1 y FUZZYART. Un tipo de red puede ser verificado usando GetNetType. 2.1.2 Tipos de red ART El tipo de red neuronal ART es utilizado para aprendizaje no supervisado. Consiste en un componente ART, llamado “ART”, y toma como entradas a un conjunto de patrones. La red aprende a agrupar las entradas hacia categorías de salidas que subsecuentemente son examinadas como nuevos patrones de entrada. El componente ART puede ser de tipo ART1, para patrones de entradas binarios o tipo FUZZYART para patrones de entrada analógicos. 2.1.3 Tipo de red ARTMAP El tipo de red ARTMAP es utilizado para aprendizaje supervisado. Consiste en dos componentes, una red de entrada ART, llamada “ARTA”, y una red de salida ART, llamada “ARTB”, y toma los patrones de entrada y salida. Los dos componentes están conectados por un mapa de campo o Mapfield. La red de entrada ART, ARTA, agrupa los patrones de entrada basados en retroalimentación del Mapfield. El componente ARTA puede ser de tipo ART1 para entradas binarias, o FUZZYART para entradas analógicas. La red de salida ART, ARTB, agrupa los patrones de salidas deseadas y envía activaciones categóricas a los Mapfield. El componente ARTB puede ser de tipo ART1, para salidas Binarias, o FUZZYART, para salidas analógicas, o de tipo NONE. Cuando la salida ARTB, es de tipo NONE, el valor de salida deseada se envía directamente al Mapfield antes de ser agrupada por ARTB. Note que la entrada a la red ARTB , es actualmente el patrón de salida de la red. 2.1.4 Tipos de componentes Art. Actualmente se soportan dos tipos de componentes ART, ART1 y FUZZYART. ART1 aprende a agrupar patrones de entrada binarios mientras que FUZZYART aprende a agrupar ambos patrones de entrada, binario y analógico. Adicionalmente, el componente ARTB del tipo de red ARTMAP puede llegar a ser del tipo NONE, si no se desea un componente ARTB. El tipo de un componente puede ser verificado utilizando GetArtType. 2.2 Datos de entrada a la red
  • 7. Las redes de tipo ART (usando aprendizaje no supervisado) solamente toman datos de entrada, que son presentados en el componente ART. de la red. Las redes de tipo ARTMAP (usando aprendizaje supervisado) toman un conjunto de entrada y salida. Los datos de entrada son presentados como entradas al componente ARTA y la salida es presentada como entrada en el componente ARTB 2.2.1 Estilo de datos Cada componente ART utiliza uno de los dos estilos de datos, NONE o COMPLIMENT Cuando el tipo de dato tiene el valor COMPLIMENT, la entrada ART es completamente codificada antes de ser presentada a la red. Cuando es tipo NONE, la codificación completa no es utilizada. Los estilos de entrada de los componentes de red pueden ser verificados utilizando GetArtStyle. 2.3 Activación de la red 2.3.1 Inicializando la red Para crear una nueva red se debe utilizar el procedimiento InitNet. Se le debe de pasar un puntero a una estructura del tipo "netTYPE". Esta estructura es definida en Art_Def.h. InitNet debe pasar la siguiente información:  El tipo de red (ART o ARTMAP) Cuando el tipo ART es usado:  El tipo de componente ART a utilizar (ART1 o FUZZYART)  El estilo de entradas (NONE o COMPLIMENT)  El número de entradas al componente ART Cuando el tipo ARTMAP es usado:  El tipo de componente ARTA a utilizar (ART1 o FUZZYART)  El estilo de entradas (NONE o COMPLIMENT)  El número de entradas al componente ARTA  El tipo de componente ARTB a utilizar (ART1 o FUZZYART o NONE)  El estilo de entradas (NONE o COMPLIMENT)  El número de entradas a el componente ARTB (igual al número de salidas de la red) Cuando el estilo COMPLIMENT es elegido por un componente, el número de entradas para ese componente debe ser el doble de tamaño del patrón de entrada contenido en el archivo de patrones. Para inicializar una red que ya ha sido cargada, FreeNet debe ser llamado primero para borrar el contenido de la red. 2.3.2 Acceder a la información de la estructura de la red Para conseguir información acerca de una red que ha sido ya creada se puede utiliza lo siguiente:  Para obtener el tipo de red, utilizar GetNetType.  Para obtener el tipo de componentes, utilizar GetArtType  Para obtener el estilo de componentes, utilizar GetArtStyle.  Para ver el tamaño de entrada, utilizar GetNetInSize  Para ver el tamaño de salida, utilizar GetNetOutSize 2.3.3 Entrenando a la red
  • 8. La red es entrenada utilizando el procedimiento , TrainSet. A TrainSet se le deben pasar: un apuntador para inicializar una red de tipo "netTYPE",un puntero para un conjunto de patrones de entrenamiento del tipo "setTYPE", y un número máximo de épocas de entrenamiento Antes de llamar a TrainSet, los niveles de vigilancia y rangos de respuesta pueden ser utilizados mediante SetArtVigil, SetArtBeta y SetMapVigil. Este procedimiento continuara entrenando a la red hasta estabilizar el aprendizaje que ha sido archivado o cuando el máximo número de iteraciones se ha cumplido. Después de cada época de entrenamiento, TrainSet actualiza la información acerca del número de reinicios y continuaciones que ocurren durante la época de entrenamiento. Esta información puede ser accedida utilizando GetArtResets y GetNetMismatch. Adicionalmente, TrainSet nota cuando la red ha alcanzado una estabilización de su aprendizaje. Esto puede ser verificado utilizando GetNetDone, que regresa TRUE cuando la red ha estabilizada su aprendizaje o un FALSE de otra manera. 2.3.4 Probar la red La actividad de la red puede ser verificada usando TESTNET la cual regresara información acerca del numero de ARTA y ARTB sin respuestas, el numero de entradas correctamente clasificadas y el número incorrectamente clasificado. Note que para la red ART no existe una cosa tal como incorrectamente clasificado una entrada como el aprendizaje de clasificación es no supervisada. La red puede únicamente cometer un error pero no contestarlo(por ejemplo, si no conoce el nivel de vigilancia). Alternativamente, la red puede ser probada usando un SHOWPAR, el cual presenta un solo patrón a la red del conjunto de patrones. Para acceder a las activaciones del resultado de la red use lo siguiente: GetArtWinner que regresa la categoría ganadora para un componente ART y GetMap regresa el mapa de campo de activaciones. 2.3.5 Guardar y Leer redes Todas las redes son almacenadas en archivos con extensión ".net". Esta extensión es automáticamente añadida a el nombre de archivo, cuando los archivos son salvados y cargados. Para cargar o salvar una red use LoadNet y SaveNet sin el ".net" 2.3.6 Liberando espacio de la red Cuando una red ya no va a ser utilizada es una buena idea liberar memoria utilizada por la red antes de cargarla o inicializar una nueva red. Esto puede ser hecho utilizando: FreeNet. Pueden ocurrir fallas si falta memoria 2.4 Conjuntos de patrones Un conjunto de patrones consiste en una lista de patrones de entrada (en algunos casos salidas) para ser introducidos a la red así como las especificaciones sobre el tipo de datos contenidos en el conjunto de patrones. Ellos son almacenados en una estructura de datos de tipo "setTYPE", y pueden ser apuntadas por un apuntador de tipo "setPTR" ambos están definidos en Art_Lib.h. 2.4.1 Creando un conjunto de patrones Los conjuntos de patrones son creados utilizando MakeSet. MakeSet crea un nuevo conjunto dando el número deseado de patrones de entradas y salidas, para el conjunto de patrones, así como el tipo de patrones y 2 archivos que contienen los datos de entrada y salida.
  • 9. Los patrones de entrada y salida pueden ser de tipo analógico o binario. Los patrones de salida pueden también ser de tipo NONE si el conjunto va a contener únicamente patrones de entrada. Los dos archivos de datos que contienen los datos de entrada y salida suelen consistir de un número por línea, sin líneas en blanco entre patrones. Dos ejemplos de archivos son "analog.dat" y "binary.dat" han sido provistos para demostrar como deben ser hechos. Los patrones pueden ser añadidos utilizando la función AddPattern. 2.4.2 Tipos de datos Los datos de entrada y salida vienen en tres tipos NONE, BINARY y ANALOG. Los patrones Binarios pueden ser 0 o 1 y pueden ser utilizados con cualquier componente ART1 o FUZZYART. Los patrones de entrada Analógicos oscilaran entre 0 y 1, pueden ser únicamente utilizados con componentes FUZZYART . El tipo de red ART no utiliza patrones de salida pero las salidas pueden ser de cualquier tipo incluyendo NONE. 2.4.3 Examinando parámetros de conjuntos de patrones y datos Los datos en un conjuntos de patrones pueden ( y deben ) ser accesados sin referencia a parte de los datos de la estructura misma. Un número de funciones ha sido provisto para acceso fácil a la información de el conjunto de patrones. El tamaño y tipo de los patrones de entrada para un conjunto de patrones puede ser verificado usando las funciones GetSetInSize, GetSetOutSize, GetSetInType, y GetSetOutType. Patrones particulares de datos de entrada y salida pueden ser regresados usando las funciones GetSetInput y GetSetOutput. Para encontrar el numero de patrones en el conjunto se puede utilizar: GetNumPatterns. 2.4.4 Salvando y cargando conjuntos de patrones Todos los conjuntos de patrones son almacenados en archivos con extensión ".set". Esta extensión es automáticamente añadida a el nombre de archivo cuando los archivos son cargados o salvados. Los conjuntos de patrones pueden ser cargados o salvados utilizando SaveSet y LoadSet sin la extensión ".set" 2.4.5 Combinando conjuntos de patrones Dos conjuntos de patrones pueden ser mezclados utilizando MargeSets. 2.4.6 Liberando espacio de conjuntos de patrones Cuando el conjunto de patrones ya no será utilizado por un buen tiempo seria buena idea liberar la memoria usada por el conjunto de patrones antes de cargar o inicializar un nuevo conjunto de patrones. Esto puede ser hecho utilizando FreeSet. Se podrían presentar resultados erróneos si se ejecutan sin memoria. 2.5 Verificando errores de chequeo e inicialización de variables Los procedimientos en The Art Gallery ... con todas las variables son casi siempre la inicialización antes de ser usadas. GetNetInit y GetSetInit pueden ser utilizadas para verificar el estado de inicialización del conjunto de patrones o de la red.
  • 10. Note, que de cualquier manera siempre existe una pequeña posibilidad de que el área de memoria elegida para la inicialización pueda contener(accidentalmente) el valor de TRUE. Esto es especialmente cierto en la plataforma PC. En este caso la verificación inicial fallara y las funciones GetNetInit y GetSetInit regresaran valores incorrectos. El único camino para asegurarnos al 100% de que el procedimiento regresara un valor esperado es llamándolos únicamente con conjuntos de patrones y de red inicializadores. 2.6 Compliment Coding y estabilidad de la red Es recomendable utilizar la herramienta compliment coding cuando se crea una red para asegurar que el aprendizaje se estabilizara en algún momento. Sin esta herramienta establecida las categorización de la red puede falla, esto es especialmente importante cuando el tipo NONE es seleccionado de un red ARTB. Cuando compliment coding es utilizado el tamaño de las entradas de la red debe ser el doble del tamaño de las entradas en el conjunto de patrones. Los valores del compliment coding son automáticamente calculados por el programa. Cuando la red utiliza compliment coding, una copia 'negative' de las entrada también es presentada en la red. Así, por ejemplo, si un patrón de entrada consiste en 5 valores y compliment coding se está usado, la red debe tener un tamaño de entrada de 10: El conjunto de patrones de entrada en el archivo de patrones: 0.2 0.3 0.5 0.7 0.1 Entradas presentadas a la red cuando el estilo COMPLIMENT es elegido: 0.2 0.3 0.5 0.7 0.1 0.8 0.7 0.5 0.3 0.9
  • 11. 3 Compilar The Art Gallery como una Librería Dinámica (DLL) The Art Gallery puede ser compilado como una DLL utilizando Borland C++. Esto permite que las funciones de ART Gallery sean llamadas de otras aplicaciones de Windows. La dll se puede crear tecleando lo siguiente en el prompt: 'make -f art_gal' El resultado del archivo dll puede ser llamado: 'Art_Gal.dll' 3.1 Usando la DLL The Art Gallery en Visual Basic Una vez que The Art Gallery ha sido compilada como una DLL, y declarada en Visual Basic, las funciones de The Art Gallery pueden ser llamadas de Visual Basic. El archivo 'Default.bas' contiene un modulo demostrativo de cómo la DLL The Art Gallery debe ser declarada en Visual Basic
  • 12. 4 Simuladores de ejemplo 4.1 Simulador en modo texto para Unix y DOS El Archivo “Art_Sim.c” se incluye con The Art Gallery. Este contiene un ejemplo de como se deberá usar The Art Gallery para crear una simulación simple en modo texto para una red neuronal. Un ejemplo de entrenamiento y prueba se incluye. En UNIX: Art_Sim.c puede ser compilado incluyendo el Makefile usando el comando “make” en el prompt de UNIX. En DOS:( Usando Borland C++) Art_Sim.c puede ser compilado desde el prompt del DOS con: “make –f art_sim” 4.2 Sample Windows ART Gallery Simulator El archivo “win_gal.zip” contiene el programa de instalación para correr una versión grafica de The Art Gallery, “Art_Gal.exe” fue creado usando las funciones compiladas como DLL de The Art Gallery.
  • 13. 5 Entrenando y probando archivos Un archivo de ejemplo de entrenamiento y conjunto de patrones de prueba (train.pat y test.pat) viene incluido con la librería de The Art Gallery. Cada uno consiste de 11 vectores de entrada análogos y 6 vectores de salida binarios. 5.1 Conjunto de entrenamiento para una red de Ejemplo Este conjunto de datos puede ser usado por varios tipos de redes. A continuación mostramos unos ejemplos: Aprendizaje No Supervisado (Vectores de salida sin usar) Tipo de red: ART Art Type: FuzzyArt * Tamaño de entrada: 11 Estilo de Entrada: Ninguno Aprendizaje Supervisado con Modulo ArtB y Compliment Coding Tipo de red: ARTMAP ArtA Type: FuzzyART * Tamaño de Entrada: 11 ** Estilo de Entrada: COMPLIMENT ArtB Type: ART1 *** Tamaño de Entrada: 6 Estilo de Entrada: Ninguno Aprendizaje Supervisado sin Modulo de entrenamiento ArtB Tipo de red: ARTMAP ArtA Type: FuzzyART * Tamaño de Entrada: 11 ** Estilo de Entrada: Ninguno ArtB Type: Ninguno Tamaño de Entrada: 6 **** Network Type: ARTMAP ArtA Type: FuzzyART * Input Size: 11 Input Style: NONE ArtB Type: NONE Input Size: 6 **** * - La entrada debe ser tipo FuzzyART donde las entradas sean analogas. ** - Con compliment coding el tamaño de la entrada es del doble del tamaño del vector de entrada en el conjunto de patrones. *** - El tipo de entrada para la red ARTB puede ser tanto FuzzyART como ART1, donde ambos pueden tomar patrones binarios. **** - El tamaño de entrada ARTB es el tamaño de el vector de entrada (no zero) siempre y cuando no sea utilizado el entrenamiento ARTB.
  • 14. 5.2 Datos de ejemplo para crear una red Los archivos “analog.dat" y "binary.dat" contienen datos aleatorios análogos y binarios para crear un nuevo conjunto de patrones.
  • 15. 6 Constantes Las siguientes constantes están definidas en Art_Gal.h y pueden ser usadas en las llamadas a funciones: Tipos de red: ART 0 ARTMAP 1 Componentes: ART 0 ARTA 1 ARTB 2 Tipo de Componentes: NONE 0 ART1 1 FUZZYART 2 Valores Booleanos: FALSE 0 TRUE 5571 Tipos de Datos: NONE 0 BINARY 1 ANALOG 2 Estilo de Datos: NONE 0 COMPLIMENT 1
  • 16. 7 Sumario de funciones de ART GALLERY NOTA: Los argumentos dentro de los paréntesis solo se requieren cuando se usa la red ARTMAP. int AddPattern (setPTR set, int num_inputs, float *input,int num_outputs, float *output) int FreeNet (netPTR net) int FreeSet (setPTR set) int GetArtBeta (netPTR net, int component, float *beta) int GetArtResets (netPTR net, int component) int GetArtSize (netPTR net, int component) int GetArtType (netPTR net, int component) int GetArtStyle (netPTR net, int component) int GetArtVigil (netPTR net, int component, float *vigil) int GetArtWinner (netPTR net, int component) int GetBaseVigil (netPTR net, float *vigil) int GetMap (netPTR net, float *list) int GetMapMismatch (netPTR net) int GetMapSize (netPTR net) int GetMapVigil (netPTR net, float *vigil) int GetNetDone (netPTR net) int GetNetInit (netPTR net) int GetNetInSize (netPTR net) int GetNetOutSize (netPTR net) int GetNetType (netPTR net) int GetNumPatterns (setPTR set) int GetSetInit (setPTR set) int GetSetInput (setPTR set, int pat_num, float *list) int GetSetInSize (setPTR set) int GetSetInType (setPTR set) int GetSetOutput (setPTR set, int pat_num, float *list) int GetSetOutSize (setPTR set) int GetSetOutType (setPTR set) int InitNet (netPTR net, int net_type, int components, int styleA, int num_inputs, int componentB, int styleB, int num_outputs) int InitSet (setPTR set, int num_inputs, int type_inputs, int num_outputs, int type_outputs) int LoadNet (netPTR net, char *file_prefix) int LoadSet (setPTR set, char *file_prefix) int MakeSet (setPTR set, char *infile_name,int num_inputs, int type_inputs, char *outfile_name, int num_outputs, int type_outputs) int MergeSets (char *file1_prefix, char *file2_prefix, char *save_prefix) int SaveNet (netPTR net, char *file_prefix) int SaveSet (setPTR set, char *file_prefix) int SetArtBeta (netPTR net, int component, float beta) int SetArtVigil (netPTR net, int component, float vigil) int SetBaseVigil (netPTR net, float base_vigil) int SetMapVigil (netPTR net, float map_vigil) int ShowPat (netPTR net, setPTR set, int pat_num) int TrainSet (netPTR net, setPTR set, int max_epoch)
  • 17. 8 Descripción de las funciones de THE ART GALLERY AddPattern Dado un apuntador a un conjunto de patrones y un patrón de datos, adiciona el patrón al conjunto. Argumentos: set - Apuntador al conjunto de patrones de tipo setTYPE num_inputs - Número de patrones de entrada (integer) *input - Apuntador a la lista de entradas num_inputs long (float) num_outputs - Número de patrones de salida (integer) *output - Apuntador a la lista de salidas num_outputs long (float) Valores de Retorno: 0 - Finalizó exitosamente 1 - Cuando el tamaño de la entrada o salida es incompatible 2 - Cuando datos ANALOG fueron datos para tipos BINARY 3 - Cuando patrones de datos ANALOG no han sido redondeados correctamente [0 1] 4 - Cuando el vector de entrada o salida solo contenga valores de cero 5 - Cuando a ocurrido un error de memoria (sin memoria) 6 - Cuando set no ha sido inicializado o sea NULL FreeNet Dado un apuntador a una red, libera la memoria utilizada por la red y la señala como no inicializada. Preacaución: Esto borra esencialmente la red. Argumentos: net - Apuntador a una red inicializada de tipo netTYPE Valores de Retorno: 0 - Finalizo exitosamente 1 - Cuando la red no fue inicializada o sea NULL FreeSet Dado un apuntador a un conjunto, libera la memoria asignada al conjunto y señala el conjunto de patrones como no inicializado. Precaución: Esto borra el conjunto de patrones. Argumentos: set - Apuntador al conjunto de patrones de tipo setTYPE Valores de Retorno: 0 - Finalizó exitosamente 1 - Cuando set no fue inicializada o sea NULL GetArtBeta Dado un apuntador a una red, a un componente de la red, y un apuntador a float, asigna el apuntador a float al valor actual del indice recodificado del componente. Argumentos: net - Apuntador a una red inicializada de tipo netTYPE component - ART, ARTA, ARTB beta - Apuntador a float Valores de Retorno: 0 - Finalizó exitosamente 1 - Red no inicializada o NULL
  • 18. 2 - Componente y tipo dado incompatible 3 - Tipo de componente dado invalido GetArtResets Dado un apuntador a una red, y a un componente, regresa el número de resets durante la última época de entrenamiento para ese componente. Argumentos: net - Apuntador a una red inicializada de tipo netTYPE component - ART, ARTA, ARTB Valores de Retorno: Cuando finalizó exitozamente: El número de Resets Cuando la red ni se inicializo: NULL o tipo de red invalido -1 GetArtSize Dado un apuntador a una red, y a un tipo de componente, regresa el tamaño actual del componente ART. Argumentos: net - Apuntador a una red inicializada de tipo netTYPE component - ART, ARTA, ARTB Valores de Retorno: Cuando finalizó exitozamente: El tamaño del componente ART Cuando el tipo de red es incompatible: red sin inicializar o NULL -1 GetArtStyle Dado un apuntador a una red, y a un componente, regresa el estilo del componente. Argumentos: net - Apuntador a una red inicializada de tipo netTYPE component - ART, ARTA, ARTB Valores de Retorno: NONE - Cuando el componente una entradas normales COMPLIMENT- Cuando el componente usa compliment coding -1 - Cuando no se inicializo, NULL o es un tipo de red invalido GetArtType Dado un apuntador a una red, y a un componente, regresa el tipo de componente. Argumentos: net - Apuntador a una red inicializada de tipo netTYPE component - ART, ARTA, ARTB Valores de Retorno: NONE - Cuando el componente es del tipo NONE ART1 - Cuando el componente es del tipo ART1 FUZZYART - Cuando el componente es del tipo FUZZYART -1 - Cuando no se inicializo, NULL o es un tipo de red invalido GetArtVigil Dado un apuntador a una red, un componente de red y un apuntador a float, asigna el apuntador a float al valor del nivel de vigilancia del componente. Argumentos: net - Apuntador a una red inicializada de tipo netTYPE component - ART, ARTA, ARTB vigil - Apuntador a float Valores de retorno: 0 - Finalizó exitosamente
  • 19. 1 - Red no inicializada o NULL 2 - Componente ARTMAP dado para el tipo de red ART 3 - Componente ART dado para el tipo de red ARTMAP 4 - Nombre de componente dado invalido 8 Referencias Carpenter, G., Grossberg, S. (1987) "A Massively Parallel Architecture For A Self-Organizing Neural Pattern Recognition Machine." Computer Vision, Graphics, and Image Processing, 37, pp. 54-115. Carpenter, G., Grossberg, S., & Reynolds, J. (1991) "ARTMAP: Supervised Real-Time Learning and Classification of Nonstationary Date by a Self-Organizing Neural Network." Neural Networks, 4, pp. 565-588. Carpenter, G., Grossberg, S., & Rosen, D. (1991) "Fuzzy ART: Fast Stable Learning and Categorization of Analog Patterns by an Adaptive Resonance System." Neural Networks, 4, pp. 759-771. Carpenter, G., Grossberg, S., Markuzon, N., Reynolds, J. & Rosen, D. (1992) "Fuzzy ARTMAP: A Neural Network Architecture for Incremental Supervised Learning of Analog Multidimensional Maps." IEEE Transactions on Neural Networks, 5, pp. 698-713.