Tecnicas de Busqueda Practica 1,2
Tecnicas de Busqueda Practica 1,2
Tecnicas de Busqueda Practica 1,2
Tecnicas de Busqueda
OBJETIVOS G ENERALES DE LA ASIGNATURA
Al finalizar el curso, el alumno conocerá y aplicará los conceptos fundamentales de las redes
neuronales y utilizará estos elementos para planear y diseñar una red neuronal artificial
empleando sistemas digitales (Hardware) y programación (Software) para resolver una
aplicación específica.
Aprender a generar interacciones entre hardware y software para crear redes neuronales
alimentadas con datos de dispositivos electrónicos.
Aprender el comportamiento de una red neuronal de forma experimental.
Aprender a diseñar sistemas basados en redes neuronales desde una perspectiva de
ingeniería.
Utilizar bases de datos existentes para el desarrollo de nuevas tecnologías
Tecnicas de Busqueda
CRITERIOS DE EVALUACIÓN
INSTALACIÓN DE MATLAB
Para el desarrollo de las prácticas de este manual es necesario la descarga y uso de Matlab
INTRODUCCIÓN
Las redes neuronales artificiales, pertenecen al área de desarrollo de la inteligencia artificial, estas
han tomado gran relevancia en los últimos años, debido a la cantidad de problemas que pueden
resolver.
Las redes neuronales, son utilizadas cuando se tiene un problema que procesos matemáticos
estándar no pueden modelar (al menos no con los conocimientos existentes). Algunas de las
aplicaciones más comunes pueden encontrarse en el reconocimiento de imágenes, tales como el
reconocimiento de rostros y facciones, o el reconocimiento de objetos; la clasificación de
elementos, tales como la clasificación de frutos podridos y frutos sanos, la clasificación de tipos de
flores, la clasificación de personalidades; la predicción de eventos, tales como predicción del clima,
predicción de movimientos económicos, predicción de comportamiento de consumo; entre otras
aplicaciones.
Tecnicas de Busqueda
Aunque existen aplicaciones particulares, como las ya mencionadas, la verdad es que estos
esquemas se han ido posicionando prácticamente en cualquier área de conocimiento, colocándose
como centro de cálculo de sistemas electrónicos, químicos, financieros, biológicos, etc. Esto debido
a sus características primordiales.
Algunas de las características más importantes de estos esquemas es que pueden ejecutarse
inherentemente de forma paralela, es decir, pueden realizar cálculos de forma más rápida que otro
tipo de esquemas computacionales. Estos esquemas presentan gran tolerancia a fallos, por lo que
pueden ser alimentados con información falsa, y aun así lograran llegar al resultado correcto,
obviamente cuando la información falsa no eclipse a la información verdadera. Pueden adaptarse a
una gran cantidad de problemas, sin modificar su estructura base, es decir, basta con que ellas sean
alimentadas con los datos de una determinada área o problemática para que puedan llegar a la
solución esperada.
En ingeniería, estos sistemas han cobrado mucha relevancia, ya que son las encargadas de procesar
los datos que diferentes dispositivos electrónicos adquieren, y de esta manera lograr que los
dispositivos se puedan comportar como nodos activos en esquemas tecnológicos tales como el
internet de las cosas o la industria 4.0.
BIBLIOGRAFÍA
1. Mandic, D. P., & Chambers, J. (2001). Recurrent neural networks for prediction: learning
algorithms, architectures and stability. John Wiley & Sons, Inc.
2. Luo, F. L., & Unbehauen, R. (1998). Applied neural networks for signal processing. Cambridge
university press.
3. Simon Haykin (2008). Neural Networks and Learning Machines, 3d Edition. Pearson.
Tecnicas de Busqueda
Práctica 1
Introducción: Matlab
TEMAS
OBJETIVOS
INTRODUCCIÓN
Actualmente, existe una gran cantidad de herramientas computacionales que permiten realizar
procesos relacionados a inteligencia artificial, en general y redes neuronales, en particular. Se
pueden encontrar diferentes herramientas libres, de cobro, especializadas, no especializadas, etc.
Para el caso de este laboratorio, se ha optado por utilizar la herramienta Matlab, si bien es cierto
que Matlab no es una herramienta especializada en inteligencia artificial, también es cierto que en
los últimos años ha generado una gran cantidad de paqueterías enfocadas a las diferentes ramas de
esta área de conocimiento, por lo que es posible encontrar prácticamente cualquier concepto
relacionado al área en este software. Por otro lado, Matlab es una herramienta comercial que
implica gasto (actualmente la comunidad UNAM cuenta con cuentas gratuitas), sin embargo, la
ventaja que se considera que pueden tener los alumnos, es que es una herramienta utilizada
ampliamente no solo en el sector académico, sino también en el sector profesional y comercial, es
decir, no es una herramienta que se utilice sólo en las escuelas y posteriormente puede ser de
utilidad del alumnado en su vida laboral.
En esta práctica, se busca que los alumnos tengan un acercamiento a esta herramienta, y a través
de ella gestionar diferentes tipos de datos por medio de elementos electrónicos de entrada y salida.
Esta práctica se ha considerado, con la intención de que los alumnos verifiquen el control de sus
herramientas y que ellas están trabajando adecuadamente, para posteriormente entrar en las
aplicaciones y en la adquisición y procesamiento de datos de mayor tamaño y relevancia.
Adicionalmente, se dará gran relevancia al uso de estructuras computacionales tales como vectores
y matrices, ya que serán estructuras que posteriormente serán ampliamente utilizadas.
Tecnicas de Busqueda
ACTIVIDADES PREVIAS A LA PRÁCTICA
MATERIAL Y EQUIPO
PROCEDIMIENTO EXPERIMENTAL
En este proceso, se realizarán pequeñas prácticas para verificar que se tiene el control adecuado de
Matlab y de su comunicación con la Tarjeta Arduino. Se hace hincapié en que dependiendo de la
tarjeta Arduino utilizada, original o genérica, la computadora podrá identificar diferentes tipos de
puertos, siendo los puertos COM 1 y COM 3 los más comunes.
1. Se armará el sistema tal cual se puede observar en la figura 1. Este ejercicio es el más
simple y sólo está destinado a verificar la correcta comunicación entre hardware y
software.
Tecnicas de Busqueda
Fig. 1.- Primer sistema para probar la conexión entre Matlab y Arduino.
3. Es posible observar que este sistema sólo prende y apaga un LED, por lo que el alumno
modificará este primer script para que esa secuencia se realice 10 veces, utilizar el ciclo
“for” para esta actividad, mostrar el correcto funcionamiento a su profesor.
6. Girar el potenciómetro de un lado a otro lentamente y observar que sucede con el LED.
Verificar el comportamiento con lo definido en el script.
Fig. 2.- Segundo ejemplo de aplicación, control de un LED por medio de un potenciómetro.
Tecnicas de Busqueda
8. Una vez concluida esta parte, es necesario iniciar con el comportamiento de las
estructuras tales como vectores y matrices. Para tal fin, el alumno debe armar el circuito
como se muestra en la figura 3.
10. Una vez en ejecución, hay que girar lentamente el potenciómetro, haciendo cambios a
razón de un segundo. Este pequeño sistema generara el llenado de un vector. Es
importante mencionar, que el alumno definirá la cantidad de registros que tenga el
vector.
11. Ver que el vector resultante, son los datos que el alumno ingreso por medio del
potenciómetro.
12. El alumno debe diseñar un script que llene una matriz, con elementos provenientes del
potenciómetro. Mostrar el correcto funcionamiento al profesor.
13. Generar un script que ingrese dos vectores por medio del potenciometro, y estos los
convierta posteriormente en una sola matriz.
CUESTIONARIO
1.- Escribir un script que ingrese un escalar utilizando un potenciómetro, que genere una
matriz con valores aleatorios, y posteriormente obtenga la multiplicación del escalar
por la matriz.
3.- Escribir un script que ingrese un vector utilizando un potenciómetro, y que muestre el
recorrido de tal vector, encendiendo un LED si el valor almacenado es mayor a 2.5.
Tecnicas de Busqueda
CONCLUSIONES
BIBLIOGRAFÍA
Tecnicas de Busqueda
Práctica 2
Clasificación con redes neuronales
TEMAS
OBJETIVOS
INTRODUCCIÓN
Las redes neuronales artificiales, también llamadas sistemas conexionistas, son modelos
computacionales que se componen de diferentes neuronas artificiales conectadas entre sí. Estos
esquemas tratan de emular la forma en la que los cerebros biológicos se encuentran constituidos, y
como a partir de tal construcción, se logra el aprendizaje. Un esquema básico de una red neuronal,
se puede visualizar en la figura 1 de esta práctica.
Una red neuronal artificial busca “aprender” patrones a partir de conjuntos de datos que sirven
como entrada a la red y que se presentan como punto de “observación” del fenómeno a analizar.
Partiendo de una cantidad elevada de información (datos), una red neuronal irá encontrando
patrones dentro de tales conjuntos de información, hasta lograr un aprendizaje con el cual es
posible clasificar comportamientos particulares dentro de un problema o fenómeno general.
Las redes neuronales tienen una gran cantidad de aplicaciones, sin embargo, las más comunes se
encuentran en la clasificación de datos y en la búsqueda de patrones de información. En el caso de
esta práctica, se utilizan para clasificar el comportamiento de elementos resistivos que se conectan
en serie o en paralelo. Se consideran circuitos que contienen tres resistencias, y se calcula la
resistencia equivalente, serie o paralela, según sea el caso.
Tecnicas de Busqueda
Fig. 1.- Esquema básico de una red neuronal, se ve una red con tres neuronas de entrada, dos neuronas de salida, y
cuatro neuronas en su capa oculta. Imagen recuperada de file:///C:/Users/Vegueta/Downloads/Tesis-
LinoFranciscoManjarrezMontao.pdf
MATERIAL Y EQUIPO
PROCEDIMIENTO EXPERIMENTAL
Tecnicas de Busqueda
El segundo script, genera matrices completas de combinaciones de resistencias en serie y de
combinaciones en paralelo; estas matrices son utilizadas para probar la red neuronal ya entrenada.
Cada muestra corresponde a las tres resistencias aleatorias y un resultado de si se tiene un circuito
serie o uno paralelo, obteniendo que cada vector de entrada posea 4 columnas. Las matrices
representan esquemas como los mostrados en la figura 2.
Fig. 2.- Circuitos en serie y paralelo, constituidos con tres resistencias, con las cuales se obtiene una resistencia
equivalente.
2. El alumno debe ejecutar ambos scripts, teniendo cuidado de que cuando el script solicite el
número de muestras, estas sean la misma cantidad de muestras en ambas ejecuciones, ya
que si no se coloca la misma cantidad de muestras, existirán errores de no compatibilidad
de datos. El número de muestras debe de ser un valor par.
3. Para este punto, se debe de seleccionar una cantidad de muestras igual a 10.
4. Una vez realizado esto, el alumno podrá observar en el workspace cada una de las matrices
generadas. Las de entrenamiento y las de prueba.
nnstart
6. Se desplegara una ventana denominada “neural network start”, en ella hay que seleccionar
la opción “pattern recognition app”. Lo que nos enviara hacía la configuración de una red
neuronal de reconocimiento de patrones.
8. Presionar next, hasta que se nos despliegue el número de neuronas que la red debe tener
en la capa intermedia, en este caso, las neuronas por default son adecuadas, 10.
Tecnicas de Busqueda
10. Una vez finalizado el entrenamiento, hay que dar tres “Next” hasta llegar a la pantalla “Save
results”. Esta página es muy importante, ya que aquí se puede guardar la red neuronal
creada, así como su proceso de entrenamiento como un script. Para guardar tal script,
selecciona el botón "Simple Script".
11. En el cuestionario, el alumno debe dar nombre a la red neuronal realizada y a los datos que
se quieran exportar al workspace, para fines de esta práctica basta con enviar al workspace
el objeto con la red neuronal llamándola “resistencia”. El alumno debe presionar "save
network to MATLAB network object named:", y podrá ver en el workspace los nuevos
elementos.
13. En este punto, ya se tiene una red neuronal definida y entrenada, por lo que es posible hacer
pruebas para verificar su funcionamiento.
view(resistencia)
15. La primera prueba es realizar la verificación de los valores de entrada con respecto al Target,
por medio del siguiente comando, que simula la red neuronal “resistencia” con los valores
de entrada “matrizEntrenamiento”.
salidaEntrenamiento=sim(resistencia, matrizEntrenamiento)
plotconfusion(TargetResistencia,salidaEntrenamiento)
plotroc(TargetResistencia,salidaEntrenamiento)
19. Ya probado el funcionamiento de la red neuronal, hay que hacer pruebas con las matrices
de resultados en serie y en paralelo, por medio de:
salidaPruebas=sim(resistencia, matrizSerie)
salidaPruebas=sim(resistencia, matrizParalelo)
20. Comprobar sus resultados con lo aprendido por la red, ¿Clasificó adecuadamente las
muestras?, es decir, ¿A los resultados en paralelo los clasificó como 1, y a los resultados en
serie como 0? Mostrar al profesor.
21. Ahora el alumno debe de ingresar vectores que representen muestras de forma aleatoria
para verificar la correcta clasificación de la red, obviando que estas muestras tengan
Tecnicas de Busqueda
resultados correctos, manteniendo el orden de los vectores, tal que se componen en la
siguiente manera:
22. Si se ingresa un valor correcto de resultado en paralelo, la red debe de arrojar un valor 1; si
se ingresa un valor correcto de resultado en serie, la red debe arrojar un valor 0. ¿Está
correctamente clasificado?
23. El alumno debe ingresar ahora vectores aleatorios, pero con resultados incorrectos, ya no
se debe de calcular el valor en serie o en paralelo correcto. ¿Qué sucede con los resultados
de la clasificación?
24. Ingresar la siguiente secuencia de consultas de verificación, y observar que sucede con la
salida de la red neuronal:
26. El alumno debe volver a ejecutar los scripts uno y dos, pero en esta ocasión va a seleccionar
100 muestras.
28. En este momento ya se tiene una red neuronal entrenada pero con 100 muestras de
entrenamiento.
29. El alumno debe de ejecutar los pasos 15 a 25 nuevamente, ingresando la misma secuencia
de entradas mostrada en el paso 24. Observe que es lo que sucede con la clasificación, y
anote los resultados. Mostrar a su profesor.
30. El alumno debe volver a ejecutar los scripts uno y dos, pero en esta ocasión va a seleccionar
1000 muestras.
31. El alumno debe de ejecutar los pasos 15 a 25 nuevamente, ingresando la misma secuencia
de entradas mostrada en el paso 24. Observe que es lo que sucede con la clasificación, y
anote los resultados. Mostrar a su profesor.
Tecnicas de Busqueda
33. En este momento ya se tiene una red neuronal entrenada pero con 1000 muestras de
entrenamiento.
34. El alumno debe de ejecutar los pasos 15 a 25 nuevamente, ingresando la misma secuencia
de entradas mostrada en el paso 24. Observe que es lo que sucede con la clasificación, y
anote los resultados. Mostrar a su profesor.
CUESTIONARIO
CONCLUSIONES
BIBLIOGRAFÍA
Tecnicas de Busqueda
Bibliografía
1. Kim, P. (2017). Matlab deep learning. With machine learning, neural networks and
artificial intelligence, 130(21). Springer
2. Paluszek, M., & Thomas, S. (2020). Practical Matlab deep learning. A Project-
Based Approach, Michael Paluszek and Stephanie Thomas. Springer
3. Paluszek, M., & Thomas, S. (2016). MATLAB machine learning. Apress.
4. Ciaburro, G. (2017). MATLAB for machine learning. Packt Publishing Ltd.
5. Jiménez, E. C. (2021). Introducción al Machine Learning con MATLAB.
Marcombo.
Tecnicas de Busqueda