Modelo simplificado de una
neurona biológica
La suma neta:𝑛 = 𝑤11 𝑝1 + 𝑤12 𝑝2 + ⋯ + 𝑤1𝑅 𝑝𝑅 + 𝑏
Forma matricial: 𝑛 = 𝐖𝐩 + 𝑏
La salida de la neurona se calcula como: 𝑎 = 𝑓 𝐖𝐩 + 𝑏
Red Neuronal Artificial Múlticapa
Machine Learning
𝐿𝑜𝑐𝑎𝑙 𝑅𝑒𝑔𝑖ó𝑛 𝑑𝑒 𝐻𝑖𝑠𝑡𝑜𝑔𝑟𝑎𝑚𝑎 𝐻𝑖𝑠𝑡𝑜𝑔𝑟𝑎𝑚𝑎 𝐴𝑁𝑁
𝑅𝑜𝑠𝑡𝑟𝑜 𝐵𝑖𝑛𝑎𝑟𝑦 𝑃𝑎𝑡𝑡𝑒𝑟𝑛 𝑐𝑢𝑎𝑑𝑟í𝑐𝑢𝑙𝑎𝑠 𝑐𝑎𝑑𝑎 𝑟𝑒𝑔𝑖ó𝑛 𝑐𝑜𝑛𝑐𝑎𝑡𝑒𝑛𝑎𝑑𝑜 𝑡𝑜𝑡𝑎𝑙𝑚𝑒𝑛𝑡𝑒 𝑐𝑜𝑛𝑒𝑐𝑡𝑎𝑑𝑎𝑠
Rostro
𝐸𝑛𝑡𝑟𝑎𝑑𝑎 𝐸𝑥𝑡𝑟𝑎𝑐𝑐𝑖ó𝑛 𝑑𝑒 𝑐𝑎𝑟𝑎𝑐𝑡𝑒𝑟í𝑠𝑡𝑖𝑐𝑎𝑠 𝐶𝑙𝑎𝑠𝑖𝑓𝑖𝑐𝑎𝑠𝑖ó𝑛 Salida
Deep Learning
𝐴𝑁𝑁
𝑅𝑜𝑠𝑡𝑟𝑜 𝑅𝑒𝑑𝑒𝑠 𝑐𝑜𝑛𝑣𝑜𝑙𝑢𝑐𝑖𝑜𝑛𝑎𝑙𝑒𝑠 + 𝑅𝐸𝐿𝑈 + 𝑀𝑎𝑥 𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑡𝑜𝑡𝑎𝑙𝑚𝑒𝑛𝑡𝑒 𝑐𝑜𝑛𝑒𝑐𝑡𝑎𝑑𝑎𝑠
Rostro
𝐸𝑛𝑡𝑟𝑎𝑑𝑎 𝐸𝑥𝑡𝑟𝑎𝑐𝑐𝑖ó𝑛 𝑑𝑒 𝑐𝑎𝑟𝑎𝑐𝑡𝑒𝑟í𝑠𝑡𝑖𝑐𝑎𝑠 + 𝐶𝑙𝑎𝑠𝑖𝑓𝑖𝑐𝑎𝑠𝑖ó𝑛 Salida
Instalación Python y
módulos necesarios
[Link]
Instalación Python y
módulos necesarios
[Link]
Instalación Python y
módulos necesarios
[Link]
Instalación Python
Instalación Python
Instalación Python
Instalación Python
Instalación Numpy
[Link]
Instalación Numpy
pip install numpy
Instalación tensorflow
[Link]
Instalación tensorflow
[Link]
Instalación tensorflow
pip install tensorflow
Instalación tensorflow
pip install tensorflow
Instalación tensorflow
Instalación Pillow
[Link]
Instalación Pillow
pip install Pillow
Instalación pyserial
[Link]
Instalación pyserial
pip install pyserial
Instalación Matplotlib
[Link]
Instalación Matplotlib
pip install matplotlib
Componentes de un red neuronal artificial
La red neuronal artificial se compone por:
1. Entradas (p): Es la información que recibe la red.
2. Pesos (w) : Son valores numéricos que se encargan de establecer la influencia de una
entrada en la salida deseada.
.
Componentes de un red neuronal artificial
La red neuronal artificial se compone por:
3. Bías (b): Es muy parecido a un peso, excepto a que esta asociado a una entrada
constante 1. El modelo se volverá más flexible.
4. Función de activación o transferencia (f) : Las funciones de activación se utilizan para
introducir la no linealidad en las redes neuronales.
Modelo simplificado de una neurona
en Arduino
𝑅=3
𝑝1 = 0.51 𝑤11 = 0.57 𝑝1 𝐖 = 𝑤11 𝑤12 𝑤13
𝐩 = 𝑝2
𝑝2 = 0.59 𝑤12 = −0.79 𝑝3 𝐛 = 0.8
𝑝3 = −0.15 𝑤13 = 0.75
𝑏 = 0.8 𝑎 = 𝑓 𝐖𝐩 + 𝑏
La suma neta:𝑛 = 0.57 × 0.51 + −0.79 × 0.59 + 0.75 × −0.15 + 0.8
𝑛 = 0.2907 − 0.4661 − 0.1125 + 0.8
𝑛 = 0.5121
La salida de la neurona se calcula como:
𝑎 = 𝑓 0.5121
Funciones de Activación
Nombre Relación Entrada/Salida Función
Escalón
Escalón Simétrico
Lineal
Logsig
Tansig
No linealidad en redes neuronales
(Función de activación)
Ejemplo: Temperatura en una galleta recién horneada.
Cuando la galleta recién sale del horno la tempera es muy alta, por lo tanto, no la
puedes tocar o te quemarás, sin embargo, no toma mucho tiempo para que se
enfríe lo suficiente para que la puedas comer, luego se mantienen templadas por
mucho tiempo y no se enfrían más que la temperatura ambiente. Si dibujamos
una gráfica del enfriamiento de una galleta, se vería más o menos así.
Función de activación Escalón
• La función de activación escalón, establece la salida de la neurona en 0 si el
argumento de la función es menor que 0, o 1 si su argumento es mayor o igual
que 0.
• Esta función se utiliza para clasificar las entradas en dos categorías distintas.
• La salida de la neurona es discreta.
Función de activación Escalón Simétrico
• La función de activación escalón, establece la salida de la neurona en -1 si el
argumento de la función es menor que 0, o 1 si su argumento es mayor o igual
que 0.
• Esta función se utiliza para clasificar las entradas en dos categorías distintas.
• La salida de la neurona es bipolar.
Función de activación Lineal
• La función de activación es la función identidad, es decir, la salida es igual a su
entrada.
• Esta función se utiliza para aproximadores de funciones.
• La salida de la neurona es continua.
Función de activación sigmoidal
• Esta función de activación toma la entrada (que puede tener cualquier valor
entre más y menos infinito) y reduce la salida en el rango de 0 a 1.
• Se usa comúnmente en redes multicapa que se entrenan con el algoritmo de
retropropagación y en la capa final de un clasificador binario.
• La salida de la neurona es simétrica.
Función de activación tangente
hiperbólica
• Esta función de activación, no es más que una versión bipolar de la función
sigmoidal, según algunos autores, funciona mejor que la función logística al
parecerse más a la función 𝑛 lineal para valores de cercanos a cero, es decir,
puede facilitar el entrenamiento de la red neuronal.
• Se usa comúnmente en redes multicapa que se entrenan con el algoritmo de
retropropagación y en la capa final de un clasificador binario.
• La salida de la neurona es simétrica y bipolar.
Función de activación lineal rectificada
Relu
• Esta función de activación es extremadamente eficiente, no requiere de operaciones
de tipo aritmético, su derivada es muy simple.
• Se usa comúnmente en redes multicapa que se entrenan con el algoritmo de
retropropagación.
• La salida de la neurona es rectificada continua .
Función de activación Softmax
• La función Softmax transforma las salidas a una representación en forma de
probabilidades, de tal manera que el sumatorio de todas las probabilidades de
las salidas de 1.
• Se usa en la capa final de redes multicapa para clasificadores de múltiples
clases.
• La salida de la neurona es la probabilidad de que una entrada pertenezca a una
clase.
Etapas de una red neuronal artificial
1. Entrenamiento
Es el proceso de aprendizaje en una red neuronal (Mayor costo
computacional)
2. Validación
Es el proceso de comprobar si la red neuronal puede resolver
nuevos problemas para los que ha sido entrenada.
3. Predicción o inferencia.
Luego de entrenar y validar la red neural, ésta se implementa para
que ejecute la inferencia, es decir, predecir nuevas entradas.
Pasos para el entrenamiento de una
red neuronal artificial
Entrenamiento
1. Importar o generar conjuntos de datos
2. Preprocesamiento de datos.
3. Dividir el conjuntos de datos en conjuntos de entrenamiento y
prueba.
4. Establecer hiperparámetros de algoritmo (tasa de aprendizaje,
épocas).
5. Definir la arquitectura de la red neuronal.
6. Inicializar variables. (Pesos y bias).
7. Declara las funciones de pérdida y optimizador.
Importar - generar conjuntos de datos
• Todos nuestros algoritmos de aprendizaje automático
dependerán de los conjuntos de datos.
Sensor MPU-6050
Este módulo está basado en el sensor MPU6050 y contiene todo lo
necesario medir movimiento en 6 grados de libertad, combinando un
giroscopio de 3 ejes y un acelerómetro de 3 ejes en un mismo chip.
Funcionamiento:
1. Para manejar módulos con sistemas MPU6050, puede descargar la
librería desde el repositorio de Git :
[Link]
PinOut
VCC: Voltaje de alimentación VDC: 2.375-3.46V.
GND: 0V Tierra.
SCL : Se utiliza para proporcionar pulso de reloj para la comunicación I2C.
SDA : Se usa para transferir datos a través de la comunicación I2C.
XDA : Datos seriales auxiliares, se puede utilizar para conectar otros módulos I2C con
MPU6050.
XCL : Reloj serial auxiliar, se puede utilizar para conectar otros módulos I2C con
MPU6050.
AD0: Si se usa más de una MPU6050 en una sola MCU, entonces este pin puede usarse
para variar la dirección
Diagrama de conexión
Enviar datos de Arduino a Python
Preprocesamiento de datos
• El objetivo principal de la etapa de preprocesamiento de datos es facilitar la capacitación de
la red.
• El preprocesamiento de datos consta de pasos tales como:
Normalización
Transformaciones no lineales
Extracción de características
Codificación de entradas y salidas
Manejo de datos faltantes, etc.
Normalización
• Se recomienda normalizar los datos que usan escalas e intervalos
diferentes.
• El modelo con datos sin normalización podría adaptarse automáticamente
a datos tan heterogéneos, pero pueden ralentizar o dificultar el
aprendizaje.
• Aquí vamos a usar StandardScaler de Scikit-learn
• Para cada característica reste la media y escale los datos con desviación
estándar 1.
• [Link]
𝐩𝑛 = 𝐩 − 𝐩𝑚𝑒𝑎𝑛 .Τ 𝐩𝑣𝑎𝑟 = 𝐩 − 𝐩𝑚𝑒𝑎𝑛 .Τ𝐩𝑠𝑡𝑑
Normalización
Para normalizar los datos en el rango [-1,1] se utiliza la siguiente fórmula.
Para normalizar los datos en el rango [0,1] se utiliza la siguiente fórmula.
Instalación Scikit-learn
Codificación de salidas
a[0] a[1] Etiqueta
0 0 adelante
0 1 derecha
1 0 izquierda
1 1 atrás
Si tenemos n salidas en la capa final de la red neuronal, obtenemos 2𝑛 clases.
Codificación binaria
• Una etiqueta toma el valor de 1 y la otra 0.
• Se utiliza para problemas de clasificación binaria.
Movimiento Codificación
(Texto) (Numérico)
derecha 0
izquierda 1
Codificación mediante enteros
• A cada etiqueta se le asigna un valor entero.
• Es fácilmente reversible y podemos obtener la etiqueta a partir del
número.
• Este tipo de codificación solo es apropiado si existe una relación de
orden entre las categorías, como “ primero “, “ segundo ” y “ tercero “.
Este tipo de datos categóricos se conoce como ordinal.
Codificación categórica One Hot Encoding
• Se llama one-hot porque solo un bit es "hot" o 1 en cualquier momento, esta
técnica es comúnmente utilizada para trabajar con características categóricas
(Multi-class Classification Problem).
• La idea es asignar 0 a toda las clases, excepto para la clase a la que pertenecen
los datos, este caso asignamos un 1.
• Aqui vamos a utilizar [Link].to_categorical para la codificación One-Hot.
• Para implementar esta herramienta los datos deben estar codificados mediantes
enteros
One Hot Encoding
Etiqueta ID
Rosa Lirio Girasol
Rosa 0 1 0 0
Lirio 1 0 1 0
Girasol 2 0 0 1
Dividir el conjuntos de datos en
conjuntos de entrenamiento y prueba.
• Un modelo de aprendizaje automático tiene como objetivo realizar buenas
predicciones sobre datos nuevos nunca antes vistos.
• Pero, si desarrollas un modelo a partir de todo el conjunto de datos, ¿cómo
obtendrías los datos nunca antes vistos?.
• Una forma es dividir el conjunto de datos en dos subconjuntos, que por lo
general se divide en “80-20” y se toman muestras aleatorias (no en secuencia, si
no, mezclado).
Conjunto de entrenamiento: Un subconjunto para entrenar un modelo.
Conjunto de prueba: Un subconjunto para probar el modelo.
Separar datos de entrenamiento y
prueba en Python
• P_train, P_test, T_train, T_test = train_test_split(P,T,
test_size=0.20,shuffle=True, random_state=42)
• test_size
• Si es float, debe estar entre 0.0 y 1.0 y representa el porcentaje del conjunto de datos a
incluir en el conjunto de prueba.
• Si es int, representa el número absoluto de muestras de prueba a usar.
• Si es None, el valor se establece como complemento de train_size. Si train_size
también es None, se establecerá en 0.25.
• shuffle
• Si es True se mezclan los datos antes de dividirlos.
• random_state=42
• Garantiza que se genere la misma secuencia de números aleatorios cada vez que
ejecute el código.
Establecer parámetros de algoritmo
(hiperparámetros):
• Existen un conjunto de parámetros que por lo general mantenemos
constantes durante todo el entrenamiento. Por ejemplo, puede ser el número
de iteraciones, la tasa de aprendizaje.
Tasa de aprendizaje
• La tasa de aprendizaje sirve para regular la velocidad con la que se
realizan modificaciones incrementales de los pesos del modelo.
• En general, se emplea siempre que utilicemos una función de error
o pérdida diferenciable y utilicemos el gradiente de esa función de
error para corregir los pesos del modelo.
Épocas
• Es un criterio para detener el proceso de entrenamiento de una red
neuronal.
• Podemos evaluar el error cometido en cada época del aprendizaje
y detener el entrenamiento cuando disminuya por debajo de un
error que consideremos aceptable.
• Ejecutar varias épocas consecutivas en las que el error ha dejado
de disminuir.
• En cualquier caso, siempre debemos mantener un criterio de
parada estricto.
• El criterio para detener el entrenamiento más simple es después de un
número fijo de iteraciones.
Cantidad de neuronas ocultas
• Si utilizamos redes neuronales pequeñas, éstas tendrán menos
parámetros que ajustar, por lo que su entrenamiento será más
sencillo desde el punto de vista computacional. No obstante, un
número reducido de parámetros puede inducir un sesgo en
nuestro modelo, haciéndolo propenso al sub-aprendizaje
[underfitting], es decir, el número de parámetros no es suficiente
para modelar la complejidad del problema.
• Si, por el contrario, optamos por construir una red neuronal grande,
ésta incluirá un número elevado de parámetros, lo que hará mucho
más costoso computacionalmente su entrenamiento. Además,
cuantos más parámetros tenga la red, más propensa será al sobre-
aprendizaje [overfitting].
Definir la arquitectura de la red neuronal.
• El tipo básico de arquitectura de red está determinado por el tipo de
problema que deseamos resolver.
Definir la arquitectura de la red neuronal.
Red neuronal de entradas múltiples
Definir la arquitectura de la red neuronal.
Red neuronal de múltiples entradas y neuronas
Definir la arquitectura de la red neuronal.
Múltiples capas de neuronas
Definir la arquitectura de la red neuronal.
Múltiples capas de neuronas
Inicializar pesos y sesgos
• Es importante inicializar correctamente los parámetros de las red
antes de comenzar el proceso de entrenamiento: los pesos W y sesgos
b.
• Un error de principiante muy habitual consiste en inicializar todos los
pesos a cero.
• Lo más habitual consiste en inicializar los pesos de la red de forma
aleatoria
𝑤 = 2 × (𝑟𝑎𝑛𝑑𝑜𝑚 − 0.5) × 𝑠𝑐𝑎𝑙e
Declarar la función de pérdida.
• Las funciones de pérdida miden el error entre la salida del modelo y el
valor objetivo.
• El modelo se actualiza de tal forma que la función de pérdida se
minimiza progresivamente.
• La elección de la función de pérdida depende del problema a resolver.
Declarar la función de pérdida.
• Funciones de pérdida de regresión
• Pérdida de error medio cuadrático
• Pérdida de error medio absoluto
• Pérdida de error cuadrático medio logarítmico
• Funciones de pérdida de clasificación binaria
• Entropía cruzada binaria
• Funciones de pérdida de clasificación de clase múltiple
• Entropía cruzada multiclase
Error medio cuadrático
𝑁
1 2
loss=‘mean_squared_error’ 𝐿 𝑦, 𝑦ො = 𝑦 − 𝑦ො
𝑁
𝑖=1
• La pérdida de error cuadrático medio, o MSE, es la pérdida predeterminada que
se usa para problemas de regresión.
• Los errores más grandes resultan significativamente (cuadráticamente) más
penalizados que los errores más pequeños
Valor objetivo Valor predicho MSE
20 10 100
200 100 10000
Error cuadrático medio logarítmico
loss='mean_squared_logarithmic_error‘
• Use MSLE cuando no desee que los errores grandes sean
significativamente más penalizados que los pequeños.
Valor objetivo Valor predicho MSE MSLE
20 10 100 0.0789
200 100 10000 0.0893
• MSLE también penaliza más la sub-estimación que la sobre-estimación
Valor objetivo Valor predicho MSE MSLE
20 10 100 0.0789
20 30 100 0.0286
Error medio absoluto
loss='mean_absolute_error'
• MAE no es sensible a los valores atípicos
• Utilice MAE cuando realice una regresión y no desee que los valores atípicos
jueguen un papel importante.
Entropía cruzada binaria
𝑁
1
loss=‘binary_crossentropy’ 𝐿 𝑦, 𝑦ො = − 𝑦 × log 𝑦ො𝑖 + 1 − 𝑦 × log 1 − 𝑦ො𝑖
𝑁
𝑖=1
• La función de pérdida de entropía cruzada binaria se utiliza en las decisiones
si/no, donde el modelo intenta decidir si la o las entradas pertenecen o no a una
clase.
Entropía cruzada categórica
𝑀 𝑁
1
loss=‘categorical_crossentropy‘ 𝐿 𝑦, 𝑦ො = − 𝑦𝑖𝑗 ∗ log 𝑦ො𝑖𝑗
𝑁
𝑗=1 𝑖=1
• La entropía cruzada categórica es la función de pérdida predeterminada para
problemas de clasificación de varias clases.
• La función requiere que la capa de salida esté configurada con n neuronas (uno
para cada clase), y una función de activación softmax para predecir la
probabilidad de cada clase.
Optimizadores
• Los optimizadores son algoritmos o métodos que se utilizan para
cambiar los atributos de su red neuronal, como los pesos y la tasa de
aprendizaje con el objetivo para reducir la pérdida (error).
• La elección del algoritmo de optimización para su modelo de
aprendizaje puede significar la diferencia entre buenos resultados en
minutos u horas.
Gradiente descendente estocástico
(SGD)
• Es el algoritmo es probablemente el más popular y ampliamente
utilizado de todos los optimizadores.
• La simplicidad de SGD lo convierte en una buena opción para redes
poco profundas.
• Sin embargo, el SGD converge significativamente más lentamente que
otros algoritmos más avanzados.
optimizer = ‘sgd’
[Link](learning_rate=lr)
RMSprop
• La tasa de aprendizaje es adaptativo.
• Es un optimizador muy robusto
• Como recomendación es dejar los hiperparámetros de algoritmo en su
configuración predeterminada.
optimizer = ‘rmsprop’
Adam
• Adam es un optimizador mejorado.
• Adam proporciona tanto una tasa de aprendizaje adaptiva como la
estimación adaptativa de momentos de primer y segundo orden.
• Adam es un algoritmo popular en el campo del aprendizaje profundo
porque logra buenos resultados rápidamente.
• Como recomendación es dejar los hiperparámetros de algoritmo en su
configuración predeterminada.
optimizer = ‘adam’
Evaluar el modelo
• Una vez que hemos construido y entrenado el modelo,
debemos evaluar el modelo observando qué tan bien lo hace
con los nuevos datos.
• Las métricas son similares a las funciones de perdida, con la
única diferencia de que no se utilizan para entrenar un modelo,
sino solo para evaluarlo.
Matriz de confusión
• Verdaderos positivos [TP: True Positive]: Los ejemplos de la clase positiva
que nuestro clasificador es capaz de clasificar correctamente.
• Falsos positivos [FP: False Positive]: Los ejemplos que, aun no siendo de
la clase positiva, nuestro clasificador predice que sí lo son.
Predicción
P N
Clase real
P TP FN
N FP TN
Matriz de confusión
• Falsos negativos [FN: False Negative]: Los errores que comete nuestro
clasificador en sentido contrario, diciéndonos que no son de la clase
positiva cuando en realidad sí que lo son.
• Verdaderos negativos [TN: True Negative]: Los ejemplos de la clase
negativa que nuestro clasificador clasifica correctamente.
Predicción
P N
Clase real
P TP FN
N FP TN
Métrica de Exactitud
• La métrica más utilizada para resumir el rendimiento de un
modelo de clasificación, sin duda, su exactitud [accuracy].
• La exactitud nos indica la proporción de ejemplos que un
clasificador es capaz de clasificar correctamente, indicada
habitualmente en porcentaje.
• metrics=[‘accuracy’]
Métricas de regresión
• Error medio cuadrático: A medida que tomamos el cuadrado del error, el
efecto de errores más grandes se vuelve más pronunciado que el error más
pequeño
• metrics=[‘mse’]
• Error medio absoluto: Nos da la medida de qué tan lejos
estaban las predicciones del resultado real. Sin embargo, no nos
dan ninguna idea de la dirección del error, es decir, si estamos
prediciendo los datos por debajo de lo previsto o por encima de
ellos.
• metrics=[‘mae’]
Overfitting
• EL modelo sólo se ajustará a aprender los casos particulares que
le enseñamos y será incapaz de reconocer nuevos datos.
• Si el modelo entrenado con el conjunto de train tiene un 90% de
aciertos y con el conjunto de test tiene un porcentaje muy bajo,
esto señala claramente un problema de overfitting.
Solución Overfitting
• Reducir las capas ocultas.
• Cantidad excesiva de características.
• Ajuste de Parámetros.
• Cantidad mínima de muestras.
• Clases equilibradas en cantidad.
Implementar / predecir nuevos resultados
• Para la predicción vamos extraer los pesos, bias, media, desviación
estándar y la estructura de la red neuronal mediante un modulo
llamado arduinoKeras.
Aplicaciones de redes neuronales
artificiales
Las redes neuronales se pueden usar para una amplia variedad de
aplicaciones.
Aquí revisaremos las más importantes y aplicables en Arduino.
Reconocimiento de patrones (también conocido como
clasificación de patrones)
Aproximación de funciones (también conocida como regresión
no lineal)
Predicción (también conocido como análisis de series de tiempo,
identificación de sistemas o modelado dinámico).
Reconocimiento de patrones
El reconocimiento de patrones (clasificación de patrones) consiste en clasificar las
entradas de red en sus clases correspondientes.
Aquí hay algunos ejemplos de problemas de reconocimiento de patrones:
Reconocimiento de códigos postales escritos a mano
Reconocimiento de palabras habladas
Reconocimiento de enfermedades de una lista de síntomas
Reconocimiento de huellas digitales
Clasificación de glóbulos blancos
Definir la arquitectura de la red
neuronal.
La figura muestra la arquitectura de red. Hemos utilizado la
función de transferencia tangente hiperbólica sigmoide tanto en
la capa oculta como en la capa de salida.
El número de neuronas en la capa oculta dependerá de la
función que se aproximará, generalmente no se puede saber
antes del entrenamiento.
Entrenar el modelo
Retropropagación (Backpropagation)
Entrenar el modelo
Derivada de funciones de activación.
Compuerta lógica AND y OR
I0 I1 AND OR
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 1
Preprocesamiento de datos
Codificación
I0 I1 AND
0 - FALSE 0 - FALSE 0
0 - FALSE 1 - TRUE 0
1 - TRUE 0 - FALSE 0
1 - TRUE 1 - TRUE 1
Definir la arquitectura de la
red neuronal Perceptrón.
Los perceptrones de una capa pueden clasificar correctamente los conjuntos
de datos que son linealmente separables.
Entrenar el modelo.
Perceptrón regla de aprendizaje
Problema del operador lógico
XOR por uso del perceptrón
• De acuerdo con la lógica booleana existen operadores como AND, OR, XOR y NOT
donde sólo el operador XOR y XNOR son linealmente indivisibles.
Aproximación de funciones
La regresión no lineal genera una modelo para describir la relación
no lineal entre una variable de respuesta continua (dependiente) y
una o más variables de entrada (independiente) y puede aproximar
nuevas observaciones.
Se utiliza cuando no pueda modelar adecuadamente la relación con
parámetros lineales.
Preprocesamiento de los datos
Los datos fueron escalados usando la siguiente ecuación, de modo que tanto las
entradas como los objetivos estaban en el rango [-1,1].
Los datos medidos y escalados resultantes se muestran en la figura
Arquitectura de red neuronal
• La figura muestra la arquitectura de red. Hemos utilizado la función de
transferencia tangente hiperbólica sigmoide en la capa oculta y una capa de
salida la función de transferencia lineal.
• Esta es la red estándar para la aproximación de funciones. Hay casos en los
que se usan dos capas ocultas, pero normalmente intentamos primero con
una capa oculta.
• El número de neuronas en la capa oculta dependerá de la función que se
aproximará, generalmente no se puede saber antes del entrenamiento.
Salida de la red neuronal
Para convertir la salida de red neuronal nuevamente en unidades de distancia,
se aplica el inverso de la función de preprocesamiento.
Predicción
La predicción es un tipo de filtrado dinámico, en el que se utilizan
valores pasados de una o más series de tiempo para predecir
valores futuros.
A diferencia de los estudios de caso anteriores, la entrada a estas
dinámicas redes es una secuencia de tiempo
Arquitectura de red neuronal
• Existen muchas arquitecturas de red dinámicas que se pueden usar para la
predicción.
• Una arquitectura popular es la red autorregresiva no lineal (NARX)
La ecuación definitoria para el modelo NARX es
Salida de la red neuronal
Para convertir la salida de red neuronal nuevamente en unidades de distancia,
se aplica el inverso de la función de preprocesamiento.
Series Temporales
• Una serie temporal se define como una colección de observaciones de una
variable recogidas secuencialmente en el tiempo.
• Estas observaciones se suelen recoger en instantes de tiempo equi-
espaciados, o bien acumular los valores sobre intervalos de tiempo.
Extracción de Características
• Esta etapa consiste en extraer la información más relevante de la sección de
un patrón.
• Minimizar la complejidad de la implementación.
• Reducir el costo computacional del procesamiento de la
información.
Valor medio absoluto (MAV)
• Es el promedio de los valores absolutos de las N muestras tomadas.
• El MAV mide el nivel de contracción de las señales EMG.
𝑁
1
𝑀𝐴𝑉 = 𝑝𝑘
𝑁
𝑘=1
Valor eficaz (RMS)
• Es un valor escalar, correspondiente a la media cuadrática.
• Es usado porque ayuda a obtener la amplitud de la señal en el movimiento
muscular (EMG).
𝑁
1
𝑅𝑀𝑆 = 𝑝𝑘 2
𝑁
𝑘=1
Longitud de forma de onda (WL)
• Es una variación acumulativa que puede indicar el grado variaciones de las
señales.
𝑊𝐿 = 𝑝𝑘 − 𝑝𝑘−1
𝑘=1