El perceptrón + Ejemplo simple en MatLab con código

 Perceptron - Data Science Consulting

 Introducción

El perceptrón es la forma más simple de representar una red neuronal, es ampliamente utilizado para la clasificación de patrones linealmente separables, o sea, que se localizan en lados opuestos en un híperplano, o en otras palabras, que puedan ser seccionados por una línea de manera limpia, sin llegar a invadir un lado u otro.


    • Un hiperplano es un objeto de dimensión n-1 que actúa en un espacio de dimensión n


El perceptrón como modelo matemático consiste en una sola neurona con pesos ajustables y un umbral. Cabe mencionar que este modelo solo puede devolvernos dos resultados, uno correcto y uno incorrecto en caso de que la clasificación no sea linealmente separable, esto se traduce como activación o no activación. 

 

Código en Matlab

Cuando buscamos representar este modelo de neurona clasificadora en MatLab utilizamos el comando “net”, agregamos el valor de los pesos en una matriz y los comandos para graficar la clasificación de la forma:

 

 %Perceptron  
 %Redes Neuronales Artificiales  
 %Pesos  
 x =[-0.5 -0.5 0.3 -0.1; -0.5 0.5 -0.5 1]  
 d = [1 1 0 0]  
 plotpv(x,d);  
 %newp new perceptron  
 net = newp(minmax(x),1); %new perceptron  
 y = sim(net,x)  
 net = train(net,x,d); %entrenamiento de la neurona  
 Y = sim(net,x);  
 x1 = x + rand(2,4) %%Ruido  
 y1 = sim(net,x1);  
 plotpc(net.IW{1},net.b{1}); %Hiperplano  
 x2 = x + 0.01 * rand(2,4);  
 %Agrupaciones  
 %Grupo 1 (0.1,1.2),(0.8),(0.1,1.2) = 1 1  
 %Grupo 2 (0.8 0.6), ()  
 %Grupo 3 ()  

 


 

 Fig. 1) Las agrupaciones de las dos clasificaciones fueron correctamente separadas por un hiperplano.




Fig. 2) Durante el proceso hubo que realizar 3 iteraciones durante 1 época para lograr la clasificación.

 

 


Fig. 3) Resultados en consola de la función ingresada al perceptrón donde x1 = x + rand(2,4) %%Ruido

 Referencias

1)  González Penedo, M. F. (s. f.). Adaline y Perceptron - Sistemas Conexionistas. Varpa Research Group. Recuperado 13 de julio de 2022, de http://www.varpa.org/~mgpenedo/cursos/scx/archivospdf/Tema3-0.pdf

 2)  Barrios, C. L. (s. f.). Clasificación de fallas con redes neuronales para grupos electrógenos. SciELO Cuba. Recuperado 13 de julio de 2022, de http://scielo.sld.cu/scielo.php?pid=S1815-59012013000200006&script=sci_arttext

Análisis y caracterización de las diferencias entre el sistema cognitivo humano y los sistemas artificiales en una función cognitiva concreta

 Computing Machine Consciousness Stock Illustration - Illustration of  cyberspace, awareness: 96593207

Introducción

La función cognitiva que hemos decidido abordar es una función característica y probablemente la más privada del ser humano: la conciencia. Es una característica difícil de abordar dada su naturaleza, no es sencillo replicarla por completo. Se podría replicar algunas de sus características determinadas. Para comprender en lo global las ramas científicas que se dedican al estudio de la consciencia hemos revisado el artículo “El estudio de la conciencia: estado actual de la revista Salud Mental, vol. 25, núm. 5, octubre, 2002, pp. 1-9. “. En donde se menciona que la conciencia ha sido estudiada desde diversas aproximaciones filosóficas, psicológicas, médicas, psiquiátricas y neurofisiológicas, así como sus subramas y convergencias, llegando a comprender ciertos rasgos de los cuales se compone, mas no ha habido aún un consenso respecto a cómo se podría replicar en un escenario artificial o computacional por las diferentes disciplinas que lo estudian cada una desde su perspectiva. Llegando incluso John Watson en 1913, en su manifiesto “Por una psicología científica” (2) a argumentar que la conciencia y los estados subjetivos deberían ser eliminados de la discusión científica y reemplazados por aspectos conductuales replicables. En el cerebro ubicamos esta característica como una frecuencia medible (Alfa y Beta) (3). En cuanto a las ondas delta (0 a 3 Hrtz) son incompatibles con funciones conscientes como el aprendizaje o la memoria. Las cosas inanimadas no pueden tener conciencia, porque sólo los seres conscientes pueden ser inconscientes. (3)

Inspiración biológica en el área computacional

El interés por considerar la posibilidad de que las máquinas puedan pensar como un ser humano fue publicado en 1950 por Alan Turing en la revista “Mind” un trabajo en el que planteó la cuestión ¿pueden pensar las máquinas? y propuso lo que hoy se conoce como la prueba de Turing. (Ramón de la, 2002, p.8) Un buen punto de partida para investigaciones más profundas e introspectivas hacia lo que representa la experiencia consciente del ser humano. Cabe mencionar que hasta la actualidad (2022) ningún programador ha conseguido con éxito superar satisfactoriamente esta prueba. Lo que tenemos en la actualidad es un gran auge de inteligencia artificial, computación cognitiva y tecnología de gran difusión para solventar casi cualquier problemática que conlleva una secuencia lógica o estadística. Las computadoras son capaces de resolver problemas matemáticos con gran agilidad y esta capacidad ha avanzado de forma exponencial a través de las décadas. El cerebro compensa esta relativa lentitud en parte usando simultáneamente muchas neuronas conectadas en paralelo y arreglando el sistema de manera jerárquica. (Ramón de la, 2002, p.8) Mucho de esto llega a replicar ciertos comportamientos y capacidades humanas y de otros seres vivientes como: procesamiento de lenguaje natural, visión artificial, resolución de problemas aritméticos, control de movimientos y reacción a estímulos, entre otros. Pero específicamente, retomando los aspectos de la conciencia, pareciera que es un tema que no es popular abordar desde una perspectiva artificial.

Algunas características de la conciencia, y de los seres conscientes, son:

  • Estado de alerta: Estado contemplativo, también llamado en inglés “awareness”. Comprensión del entorno, espacio y tiempo.

  • Autoconciencia: Ser consciente del propio ser, del “yo” y como el entorno afecta los aspectos de la personalidad.

  • Meta-autoconciencia: Ser consciente de lo que afecta al propio ser, sentimientos o sensaciones positivas o negativas, desde un panorama de observación.

Principales Conclusiones

Se puede simular ciertas características de los seres vivos computacionalmente, pero como humanidad no hemos logrado llegar a tener una consciencia artificial. La consciencia es una característica que se desarrolla en primer plano, desde la mente del observador. Esta característica está grandemente vinculada a las interacciones que el sujeto tiene a lo largo de su vida con su entorno, lo cual causa trabajo de auto reflexión para poder llegar a procesar los estímulos externos de una forma interna, única y desde su propia perspectiva, lo cual llega a construir una forma de ser y de dirigirse a sus semejantes y a los elementos con los cuales interacciona. Para lograr generar una comportamiento semejante de forma artificial en una computadora se requiere de un diseño de una serie de experimentos muy especial en la cual intervengan especialistas de diferentes ramas, los cuales puedan aportar un porcentaje significativo de conocimientos sobre los estudios de la consciencia que generen experimentos replicables. No nos referimos a características como simple visión computacional o movimientos mecánicos, sino comportamientos auto reflexivos, posiblemente en una especie de micro sociedad de algoritmos computacionales, los cuales después de muchas iteraciones-experiencias puedan llegar a demostrar ciertas capacidades de conciencia y awareness.


Referencias y Bibliografía

  1. Ramón de La, El estudio de la conciencia: estado actual Salud Mental, vol. 25, núm. 5, octubre, 2002, pp. 1-9 Instituto Nacional de Psiquiatría Ramón de la Fuente Muñiz Distrito Federal, México

  2. Watson J: Psychology as the behaviorist views it. Psychol Rev, 20:158-177, 1913.

  3. Armstrong, D.M. (1968). A Material Theory of Mind. Londres Routlidge Kijan Paul.

Eliminación de anomalías de la imagen

 Noisy 'Lena' image. The noise is AWGN with standard deviation 35. |  Download Scientific Diagram

 

Resumen ejecutivo
El presente documento expone la aproximación de la investigación respecto a la aplicación, detección y eliminación de anomalías en imágenes. En este caso, desde una perspectiva práctica y directa, utilizando el lenguaje de programación Python y Jupyter Notebooks.
 

El tipo de anomalía para la cual implementamos las técnicas de tratamiento es el
ruido blanco, el cual consta de una técnica aleatoria de aplicación de píxeles
blancos sobre las imágenes. Y para su eliminación implementamos la técnica de
aplicación de media.

Introducción
El ruido en una imagen es la alteración arbitraria de sus valores en brillo y color que
distorsiona la percepción visual de la misma. Esto puede ocurrir en distintos niveles,
desde un leve ‘polvo’, ‘rayado’, ‘oscilado’ u otro efecto de daño el cual puede dejar
irreconocible el concepto que la imagen proyectaba originalmente.
Las técnicas de eliminación de anomalías, en este sentido, pretenden corregir el
ruido que se presente en dichas imágenes con apoyo de tecnología digital.
 

Implementación
La implementación de la solución incorpora dos funciones generales: agregar_ruido
y medianizar_imagen. La función de agregar_ruido aplica ruido blanco
aleatoriamente en la imagen procesada, y la función medianizar_imagen aplica la
media en bloques de 3x3 píxeles para intentar eliminar el efecto del ruido. Los otros
bloques de código consumen estas funciones para generar la salida en imágenes.

Librería

Descripción de uso

Random

Acceso a funciones aleatorias para aplicación de ruido

cv2

Acceso a funciones propias para tratamiento de imágenes

numpy

Acceso a funciones y tipos de datos para manipular arreglos

matplotlib

Proyección -ploteo- de resultados

Tab. 1) Librerías utilizadas en la solución 

Código


 import random   
 import cv2   
 import numpy as np  
 from matplotlib import pyplot as plt  
 import os  
 #Función de ruido blanco  
 #en esta función aplicamos aleatoriamente pixeles blancos  
 #sobre toda la superficie de la imagen. Esto lo definimos como "ruido".  
 def agregar_ruido(img, cant_pixels):  
   #Obtenemos las dimensiones de la imagen  
   row , col = img.shape  
   #Aplicamos el ruido -blanco- a la cantidad de pixels deseada  
   for i in range(cant_pixels):      
     # Elegimos una coordenada al azar en Y  
     y_coord=random.randint(0, row - 1)       
     # Elegimos una coordenada al azar en X  
     x_coord=random.randint(0, col - 1)       
     # Aplicamos el ruido en la posición encontrada  
     img[y_coord][x_coord] = 255  
   return img  
 #Función en la que aplicamos la media a la imagen  
 #para difuminar defectos o anomalías  
 def medianizar_imagen(img_conruido):  
   #Obtenemos la composición de la imagen  
   #interpretada en un array de renglones y columnas  
   row, col = img_conruido.shape  
   #Se recorre la imágen, para cada area de 3x3  
   #buscamos la media en pixels y se reemplaza el pixel   
   #central con la media.  
   img_nueva = np.zeros([row, col])  
   for i in range(1, row-1):  
     for j in range(1, col-1):  
       temp = [img_conruido[i-1, j-1],  
           img_conruido[i-1, j],  
           img_conruido[i-1, j + 1],  
           img_conruido[i, j-1],  
           img_conruido[i, j],  
           img_conruido[i, j + 1],  
           img_conruido[i + 1, j-1],  
           img_conruido[i + 1, j],  
           img_conruido[i + 1, j + 1]]  
       temp = sorted(temp)  
       img_nueva[i, j]= temp[4]  
   return img_nueva.astype(np.uint8)  
 #Sección de manejo de imágenes  
 #Utilizamos variables auxiliares para almacenar los valores de las imágenes  
 #desde la inicial original, continuamos por la adición de ruido pasando a escala  
 #de grises y medianizamos. El filtro salt-and-pepper solo puede aplicarse a  
 #imagenes en escala de grises, por ello primero transformamos la imagen.  
 img = cv2.imread('diente.jpg')  
 imgGray = cv2.imread('diente.jpg', cv2.IMREAD_GRAYSCALE)   
 cv2.imwrite('noise.jpg', agregar_ruido(imgGray,3000))  
 imgRuido = cv2.imread('noise.jpg', 0)   
 imgMedian = medianizar_imagen(imgRuido)  
 #Imprimimos la comparativa con matplotlib  
 #En este caso nos apoyamos con cv2.cvtColor especificando que estamos usando  
 #escala de grises para proyectar de nuevo la imagen  
 plt.figure(figsize=(18,18))  
 plt.subplot(231),plt.imshow(img),plt.title('Original')  
 plt.xticks([]), plt.yticks([])  
 plt.subplot(232),plt.imshow(cv2.cvtColor(imgRuido, cv2.IMREAD_GRAYSCALE)),plt.title('Ruido')  
 plt.xticks([]), plt.yticks([])  
 plt.subplot(233),plt.imshow(cv2.cvtColor(imgMedian, cv2.IMREAD_GRAYSCALE)),plt.title('Medianizado')  
 plt.xticks([]), plt.yticks([])  
 plt.show()  


Principales conclusiones
La aplicación de media para la eliminación de este tipo de anomalía en imágenes ha resultado ser suficientemente efectiva, pero debemos tener siempre en cuenta que el resultado final es una imagen totalmente distinta a lo que hubiera sido su original. Por esto diferentes técnicas de eliminación podrían ayudar a asimilar más el efecto de un original que la presente en casos de fotografías más detalladas o con mayores dimensiones, lo cual también implica mayor capacidad de procesamiento para abarcar todo el lienzo de la imagen. 



Fig. 1) Proyección de resultados en original, con ruido y aplicada la media




Referencias y bibliografía
 
Median Filter Implementation In Python. (2018, 13 abril). Code Review Stack Exchange. Recuperado 22 de enero de 2022, de https://codereview.stackexchange.com/questions/191974/median-filter-implementation-in-python


GeeksforGeeks. (2021, 27 octubre). Add a «salt and pepper» noise to an image with Python. Recuperado 22 de enero de 2022, de https://www.geeksforgeeks.org/add-a-salt-and-pepper-noise-to-an-image-with-python/


Technologies, I., & Technologies, M. P. B. I. (2019, 26 junio). Image Processing Series #3 : Noise Removal From Image Using Python OpenCV – Instrovate. Instrovate Technologies. Recuperado 22 de enero de 2022, de https://instrovate.com/2019/06/26/image-processing-series-3-noise-removal-from-image-using-python-opencv/


GeeksforGeeks. (2021b, noviembre 9). Spatial Filters - Averaging filter and Median filter in Image Processing. Recuperado 22 de enero de 2022, de https://www.geeksforgeeks.org/spatial-filters-averaging-filter-and-median-filter-in-image-processing/