A lo largo de la historia la
humanidad a buscado la respuesta a múltiples preguntas sobre su propio origen,
desglosando las leyes que rigen la naturaleza, de la misma forma busca
soluciones a problemas que se presentan en este camino, muchas veces para
resolver incógnitas y otras tantas para suplir necesidades a su cotidianidad;
de estos problemas que se han presentado a través del tiempo y a los cuales en
su mayoría se les ha dado alguna solución, estos problemas se han tornado cada
vez mas complejos, con soluciones mas costosas y en ocasiones sin una solución realmente
efectiva; en la búsqueda de la solución a estos problemas ha surgido el enfoque
de inspirarse en la naturaleza y sus procesos para intentar encontrar una
respuesta efectiva, es claro exponer que en la actualidad la mayoría de los
problemas son tratados con herramientas computacionales, lo que ayuda a modelar
el mundo real con abstracciones en la maquina y realizar simulaciones
analizando y evaluando las soluciones y sus variantes.
Empecemos por clasificar los tipos
de problemas que desde el punto de vista computacional pueden presentarse y
clasificarse dependiendo de su complejidad, pero ¿Qué es la complejidad? la complejidad
es el nivel de multiplicidad de elementos que interactúan entre si dentro de un
sistema que presenta variables con incertidumbre, mas coloquialmente un sistema
complejo puede verse como una seria de varios componentes que se relacionan
entre sí y en los cuales se presenta entropía, computacionalmente un sistema
puede tener dos tipos de complejidad que se miden en su desempeño a la hora de
solucionar un problema y los recurso que utiliza para solucionarlo; la primera se
denomina complejidad temporal y es la función T(n) que mide el número de
instrucciones realizadas por el algoritmo para procesar los n elementos de
entrada (variables). Cada instrucción tiene asociado un costo temporal en
unidades de tiempo, normalmente medidas en microsegundos, la segunda, la
complejidad espacial de los algoritmos hace referencia a la cantidad de memoria
de procesamiento requerida en tiempo de ejecución, la complejidad espacial, en
general, tiene mucho menos interés. El tiempo es un recurso mucho más valioso
que el espacio. En todos los casos independientemente del problema se busca
solucionarlo reduciendo los niveles de complejidad par que esta sea una solución
computacionalmente eficiente.
Cuando los problemas a abordados
adquieren un nivel mas alto de complejidad sus soluciones igualmente, con lo
que también se clasifican en clases que la determinan si la computación puede
darles soluciones o no en tiempos deterministas o inconclusos, estas clases
son:
- Problemas P: son problemas a los cuales se les puede dar una solución computacional y en tal solución se puede medir el tiempo de forma Polinómica con la función T(n).
- Problemas NP: son los problemas a los cuales su posible solución no puede medirse en tiempo de manera determinista o sea No Polinomial.
- Problemas NP Completos: con un subconjunto del conjunto NP y son problemas mas complicados que los NP.
En la búsqueda
de soluciones a los problemas mas complejos se encuentra una alternativa y es
analizar e implementar los métodos que utiliza la naturaleza para encontrar
soluciones viables a problemas particulares, uno de estos enfoques son las
redes neuronales artificiales (RNA), que son la emulación computacional del
funcionamiento del sistema nervioso biológico. Una (RNA) puede definirse como
un sistema de procesamiento de información compuesto por un determinado número
de elementos de procesamiento (neuronas), conectados entre sí a través de
canales de comunicación denominados sinapsis. Estas conexiones establecen una
estructura jerárquica y permiten la interacción, representando las
abstracciones del mundo real. A diferencia de la computación tradicional,
basada en algoritmos predecibles, la computación neuronal permite desarrollar
sistemas que resuelvan problemas complejos cuya formalización matemática es
sumamente difícil, esto se logra porque los sistemas que trabajan con RNA
tienen características de funcionamiento que permiten un tipo de aprendizaje de
máquina, estas características son las siguientes:
- Aprendizaje adaptativo: esta es quizás la característica más importante de las RNA, ya que pueden comportarse en función de un entrenamiento con una serie de ejemplos ilustrativos. De esta forma, no es necesario elaborar un modelo a priori, ni establecer funciones probabilísticas. Una RNA es adaptativa porque puede modificarse constantemente con el fin de adaptarse a nuevas condiciones de trabajo.
- Autoorganización: mientras que el aprendizaje es un proceso donde se modifica la información interna de la RNA, la autoorganización consiste en la modificación de toda la red completa con el fin de llevar a cabo un objetivo específico. Autoorganización significa generalización, de esta forma una red puede responder a datos o situaciones que no ha experimentado antes, pero que puede inferir en base a su entrenamiento. Esta característica es muy útil sobre todo cuando la información de entrada es poco clara o se encuentra incompleta.
- Tolerancia a fallos: en la computación tradicional la pérdida de un fragmento pequeño de información puede acarrear comúnmente la inutilización del sistema. Las RNA poseen una alta capacidad de tolerancia a fallos. La tolerancia a fallos se entiende aquí en dos sentidos: primero, las redes pueden reconocer patrones de información con ruido, distorsión o incompletos (tolerancia de fallos respecto de los datos); y segundo, pueden seguir trabajando (con cierta degradación) aunque se destruya parte de la red (tolerancia a fallos respecto de la estructura). La explicación de este fenómeno se encuentra en que, mientras la computación tradicional almacena la información en espacios únicos, localizados y direccionables, las redes neuronales lo hacen de forma distribuida y con un alto grado de redundancia.
- Operación en tiempo real: de todos los métodos existentes, la RNA son las más indicadas para el reconocimiento de patrones en tiempo real, debido a que trabajan en paralelo actualizando todas sus instancias simultáneamente.
Estructura de una RNA
Todas estas características
de las RNA la convierten en una alternativa computacional eficiente para
problemas complejos que se presentan en la actualidad sobre todo en el campo de
la tecnología y en una era basada en las comunicaciones y procesamiento de la información
las mejoras que puede ofrecer esta herramienta son variadas; como ejemplo de
esto coloco el siguiente resumen de una investigación que busca mejorar la transmisión
de información a través de una red de telecomunicaciones utilizando RNA.
- Modified Huffman based compression methodology for Deep Neural Network Implementation on Resource Constrained Mobile Platforms; “Metodología de compresión basada en una Modificación de Huffman con implementación de redes neuronales de aprendizaje profundo en plataformas móviles con restricciones de recursos”: En este trabajo se implementa un RNA particular de aprendizaje profundo (DNN) que producen alta precisión en los resultados de aplicaciones algorítmicas, sin embargo, incurren en altos costos de complejidad computacional y requisitos de memoria, la propuesta que ofrece es una estructura de la RNA trabajando en forma paralela con el algoritmo de Huffman haciendo mejoras para la ejecución en un móvil con recursos limitados llegando a una compresión de datos mejorada, no obstante se trabaja el algoritmo de Huffman independiente de la RNA
REFERENCIAS
L.
S. Cohen and T. Wendling, “Técnicas de diseño,” Técnicas de diseño, pp.
15–18, 1998.
J. M. Hurtado, “Simulación y Análisis de Algoritmos de
Compresión Empleados en un Sistema de Comunicaciones Digitales .,” vol. 2, pp.
1–10, 2015.
F. de Moya Anegón, V. Herrero Solana, and V. Guerrero Bote,
“La aplicación de Redes Neuronales Artificiales (RNA): a la recuperación de la
información,” Bibliodoc Anu. Bibl. Doc. i Inf., pp. 147–164, 2007.
C. V. Regueiro, S. Barro, E. Sánchez, and M.
Fernández-Delgado, “Modelos básicos de redes neuronales artificiales,” Computación
neuronal. pp. 181–218, 1995.
C. Pal, S. Pankaj, W. Akram, A.
Acharyya, and D. Biswas, “Modified Huffman based compression methodology for
Deep Neural Network Implementation on Resource Constrained Mobile Platforms,” 2018
IEEE Int. Symp. Circuits Syst., pp. 1–5, 2018.
No hay comentarios:
Publicar un comentario