lunes, 30 de noviembre de 2020

Inteligencia Artificial (IA)


Si bien todavía existen controversias respecto a una adecuada definición de la palabra “Inteligencia”, la Inteligencia Artificial suele referirse a máquinas (o computadoras) que simulan funciones “cognitivas” propias de los humanos, como aprender y resolver problemas. El Diccionario Oxford define la Inteligencia Artificial como la “teoría y desarrollo de sistemas de cómputo capaces de llevar a cabo tareas que normalmente requerirían inteligencia humana, como la percepción visual, el reconocimiento de voz, la toma de decisiones y la traducción de idiomas”.

Breve semblanza de la IA

La historia de la Inteligencia Artificial es legendaria. Ya desde películas de ciencia ficción como Metrópolis de 1927 se veía a un robot (que en la película se llamó Maschinenmensch, o persona-máquina) que ilustraba comportamientos inteligentes a través de un ente mecanizado. Hasta el hombre de hojalata del Mago de Oz podría tomarse como una máquina con inteligencia. Con todo, hasta antes de 1949, las computadoras carecían de un requisito exigido por la inteligencia: no podían almacenar comandos ni datos, sólo ejecutarlos. Así, se podía decir qué hacer a las máquinas, pero éstas no podían recordar lo que hicieron. Otro aspecto limitante era que el cómputo era extremadamente costoso (la renta de una computadora a principios de la década de los años 50 costaba hasta USD$200,000 al mes). Se necesitaba una enorme capacidad de convencimiento para ocupar un recurso tan costoso para investigación de un aspecto tan vago como la Inteligencia Artificial.

Para 1950, el célebre matemático británico, Alan Turing, publicó un documento respecto a la maquinaria e inteligencia de cómputo. En él se preguntaba si las máquinas podían pensar. Generó una heurística sencilla para probar su hipótesis, misma que se conoció como la “Prueba de Turing”. En ella una computadora ofrecía respuestas a preguntas de una manera conversacional de forma que una persona llegue a pensar que está conversando con otra inteligencia. Esa prueba todavía se utiliza en la actualidad. Ese mismo año, también surgió la inquietud de Claude Shannon quien propuso la creación de una máquina a la que se le enseñara a jugar ajedrez. Esto involucra el “entrenamiento” a la máquina para que aprendiera a través de fuerza bruta o del análisis de un subconjunto de movimientos estratégicos. Todo seguía siendo hipotético.

Para 1955, los Dres. Allen Newell, Cliff Shaw y Herbert Simon generaron el Teórico de la Lógica (The Logic Theorist). Éste era un programa que fue diseñado para imitar la capacidad de resolución de problemas propia de una persona y su desarrollo fue financiado por la Corporación de Investigación y Desarrollo (RAND). Se considera que éste fue el primer programa de inteligencia artificial, mismo que fue presentado en el Programa de Investigación de Verano de Dartmouth acerca de Inteligencia Artificial (DSRPAI), mismo que fue organizado por los Dres. John McCarthy y Marvin Minsky en 1956. Fue durante ese evento que se acuñó el término de Inteligencia Artificial. Sin embargo, a pesar de las expectativas, no hubo mucho eco de la asistencia y, aunque hubo cierto consenso respecto a su importancia, en realidad poco y nada se avanzó en la época conocida como el “Invierno de la IA”. Con todo, no puede mirarse de soslayo la importancia de este evento como catalizador de la IA en los próximos años.

El impasse de la AI tuvo breves impulsos a través de declaraciones de los Arthur Clarke y Steve Kubrik quienes aseveraron en 1968 que “para el año 2001 tendremos máquinas con inteligencia equiparable o superior a la humana”. Otra aseveración, más aventurada, emitida en el año 1970 por Marvin Minsky, aseveraba a la revista Life que “en unos 3 a 8 años contarían con una máquina con la inteligencia general propia de un ser humano”.

Fue hasta la llegada de 1980 en que se avivó la llama de la inteligencia artificial de manera significativa. Claro está, todo ese tiempo la ciencia ficción no dejó de hacer presente la posibilidad de dotar de inteligencia a máquinas de todo tipo: computadoras y robots (como HAL en la película “2001: Odisea del Espacio”, el Robot de “Perdidos en el espacio” o los robots de “La guerra de las galaxias”), hasta automóviles como el de la serie ochentera de “El auto increíble”. Fue en esta década de los años 1980 que la IA encontró un nuevo impulso en dos circunstancias: 1) la expansión de las herramientas algorítmicas y 2) el aumento de la inversión en este campo. Para estos días, tanto John Hopfield como David Rumelhart se encargaron de popularizar las técnicas de “aprendizaje profundo” (Deep learning) que permitían a las computadoras a aprender a través de la experiencia. A su vez, Edward Feigenbaum presentó el concepto de sistemas expertos, que se fundamentaban en simular el proceso de toma de decisiones propia de una persona experta. Japón también se subió a este tren con su Proyecto de Computadora de Quinta Generación (FGCP), que cumpliría tareas de sistemas expertos y otras funcionalidades propias de la IA. Con todo, el avance no fue significativo.

La IA tuvo un momento de prosperidad a partir de la década de los años 1990. Gran parte de los objetivos de la IA se lograron durante esta década. Una de las mayores manifestaciones de la IA fue instanciada por Deep Blue de IBM, la computadora de ajedrez que venció a Gary Kasparov en 1997. Otro desplante importante fue el software de reconocimiento de voz desarrollado por Dragon Systems que se usó por sí mismo y, luego, se implementó en OS/2 Warp 4. Poco después, también fue implementado en Windows. Hasta se emularon emociones humanas por un robot llamado Kismet que fue desarrollado por Cynthia Breazeal.

La IA en la actualidad

Hoy vivimos en la era de los Grandes Datos (Big Data) en que podemos recolectar una enorme cantidad de datos, demasiado engorrosos para que sean recordados por una persona. Con ello se ha podido aprovechar la funcionalidad propia de la inteligencia artificial para volverla muy fructífera en diversas industrias como la tecnológica, la bancaria, la comercialización y el entretenimiento. Es evidente que, incluso si los algoritmos no han tenido significativas mejoras, los grandes datos y el cómputo masivo permiten que la IA aprenda a partir de la fuerza bruta.

La mayor parte de la IA que se ha generado hasta ahora es la que se conoce como débil. Este tipo de IA implementa una parte limitada de un conocimiento. Es decir, se trata de una estructura racional que se enfoca en una tarea bien acotada y de tamaño manejable. La IA en este ámbito se concentra en la automatización de ciertas tareas repetitivas que solían ser realizadas por personas, pero que por su aparente simplicidad es posible que una máquina la sustituya. Algunos de estos ejemplos son Apple Siri, Google Assistant, Amazon Alexa, entre muchos otros.

El otro tipo de IA que se conoce es el fuerte o general. Se trata de un tipo de inteligencia hipotética donde una máquina tiene la capacidad de aprender y, en su caso, comprender respecto a cualquier tarea intelectual que también pueda realizar una persona. En este tipo de inteligencia se pretende que el autómata realice su propia investigación y razonamiento general, mismo que ha sido el punto central de diversos temas de ciencia ficción.

Cabe destacar que una de las finalidades primordiales de la IA, sin importar de qué rama se trate, es la de coadyuvar con la toma de decisiones: En los sistemas expertos sugiere decisiones de acuerdo con las “experiencias” recopiladas. Las redes neuronales analizan una serie de aspectos cercana o lejanamente vinculados para llevar a cabo una toma de decisión. Así, cuando vea las siglas IA, piense en el apoyo que le puede ofrecer para la toma de decisiones en sus actividades productivas. ¡Nos seguimos leyendo!

Fuente: http://sitn.hms.harvard.edu/flash/2017/history-artificial-intelligence/ 

lunes, 23 de noviembre de 2020

APU (Unidad de Procesamiento Acelerada)



Para muchos, una APU es un procesador con gráficos integrados. Si lo vemos desde un punto simplista podría parecer que es así; sin embargo, ese solo detalle no sería una justificante para cambiarle el nombre a un recurso de procesamiento tan importante como lo es el procesador. Veremos algunos aspectos que justifican el cambio de nombre.

Contexto histórico

Desde la aparición de las tarjetas gráficas 3D a mediados de la década de los años 90, los científicos y los ingenieros encontraron en este tipo de procesadores un medio para agilizar el cómputo matemático (principal motor de una computadora). Ello se debe a que un procesador "gráfico" tiene una mayor potencia de cómputo que una CPU (pongo gráfico entre comillas, porque se trata, en realidad, de un procesador especializado en cálculos vectoriales y matemáticos en paralelo, vitales para la agilización, entre otras cosas, del dibujo de imágenes y animaciones). Así, se utilizaron intrincados códigos para enviar cálculos matemáticos a la GPU en lugar de hacerlos en la CPU y tener tiempos de respuesta menores.

Al paso de los años, nVidia se dio cuenta de esta necesidad del cómputo moderno y científico, y generó un estándar para facilitar la comunicación con las tarjetas gráficas: CUDA. Así, con un lenguaje estandarizado, los científicos, ingenieros y usuarios podían enviar cálculos a la GPGPU (Así es, Unidades de Procesamiento Gráfico de propósito general) y agilizar significativamente (más de 10x) el cómputo.

Para la segunda mitad de la década de los años 2000, esto ya se había convertido en una tendencia y empezaron a salir propuestas para este mismo fin, en particular porque CUDA estaba específicamente diseñado para gráficos nVidia. Así, alternativas como OpenCL, RenderScript, y DirectCompute vieron la luz y ello permitió agilizar el cómputo sin tener que exigirle mucho a la CPU: una gran parte de la potencia de procesamiento se estaba yendo a la GPU. Eso lo vemos reflejado en los celulares (RenderScript), en Windows (a partir de Windows Vista, que fue la primera versión que integró 3D Shader Compute o DirectCompute en el Kernel), en GNU/Linux (a partir del Kernel 4), y ello requirió que se contara con gráficos con capacidades de cómputo matemático avanzado.

Cómputo heterogéneo

A la posibilidad de combinar la potencia de cómputo de diversos tipos de procesadores se le conoció como "Cómputo Heterogéneo" y es gracias a esto que se aumentó la potencia de procesamiento SIN aumentar el consumo de energía de los procesadores. Ésta es la razón de ser de una APU: Unidad de Procesamiento Acelerada o Avanzada. Hoy una muy potente CPU (Unidad de Procesamiento Central) es capaz de ofrecer unos ~800GFLOPS. Una APU es capaz de ofrecer una potencia de ~2TFLOPS (o 2000GFLOPS), razón por la cual una APU tiende a ser más potente por sí sola en números absolutos que una CPU. Claro está que si a una CPU se le ponen gráficos más potentes que los integrados, el cómputo heterogéneo es más eficiente y podría superar los ~10TFLOPS.

Ésa fue la razón por la que AMD adquirió a ATI, para agregar GPGPU a sus procesadores y soportar las nuevas capacidades heterogéneas de los sistemas operativos. Windows Vista funcionó como sedita con AMD, así como las siguientes versiones de Windows. Es más, DirectX 12 está diseñado sobre una buena base de la tecnología ROCm de AMD Radeon debido a la integración de estos gráficos en Xbox One.

Conclusiones

Así, no es APU sólo porque tiene gráficos integrados, sino porque se trata de procesadores de cómputo heterogéneo que cuentan con, al menos, dos tipos de procesadores: Uno de propósito general con cómputo serial (la CPU), y otro matemático con cómputo paralelo (GPU). Intel ha integrado una alternativa con su tecnología QuickSync que aprovechan algunos programas para agilizar su cómputo matemático. Sin embargo, poco puede hacer cuando se enfrenta a cómputo matemático proveniente de un procesador paralelo. ¡Nos seguimos leyendo!

miércoles, 18 de noviembre de 2020

Computadora


El primer uso conocido de la palabra "computadora" se remonta al año 1613 en el que el escritor inglés Richard Braithwaite la utilizó en un libro llamado "The Yong Mans Gleanings" (Las espigas del joven). El texto, en inglés antiguo, dice: "I haue read the truest computer of Times, and the best Arithmetician that euer breathed, and he reduceth thy dayes into a short number" (algo así como "he leído a la computadora más auténtica de todos los tiempos, y el mejor matemático que jamás haya respirado, y el es capaz de reducir tus días a un pequeño número").

Del texto se deduce que la palabra "computadora" no se refiere a un artefacto, sino a una persona. Y éste fue el uso que se le dio a esta palabra, incluso hasta la década de los años 1960, donde las personas (la mayoría de ellas, mujeres) realizaban cálculos o cómputos lo más rápidamente posible para obtener algún tipo de resultado.

Para finales del s.XIX, esta palabra se empezó a utilizar en artefactos con los que se pretendía agilizar la rapidez del cálculo. Así, "computadora" se completaba con "máquina" o "mecánica" o algún complemento que permitiera conocer a qué tipo de computadora se refería el hablante. Hoy poca falta hacen esos complementos pues se asume que una computadora se refiere a un dispositivo electrónico que hace más que sólo calcular números (aunque, en realidad, esa sea su primordial tarea).

Semblanza histórica

Existen muchos hitos en la historia de la automatización del cómputo que van desde marcar huesos o piedras en la prehistoria, hasta las modernas formas de computación electrónica capaces de calcular 2 exaflops (dos trillones en notación larga, es un dos con 18 ceros) de operaciones en un segundo en las más modernas super computadoras. Para tener una idea de esa cantidad, si toda la población mexicana actual (126 millones) se dedicara únicamente a hacer cálculos, se tardaría alrededor de 510 años en calcular lo que este tipo de super computadora calcula en un solo segundo. Claro está que las computadoras que usamos en nuestros escritorios no llegan a ese grado de potencia, pueden llegar a calcular unos 2 teraflops (2 billones en notación larga, es un dos con 12 ceros), que significaría que México necesitaría dedicarse a calcular durante casi 6 horas. Sigue siendo impresionante.

Los hitos intermedios incluyen la swan-pan, el ábaco, la pascalina y varios otros instrumentos, entre los que se incluyen el mecanismo de Anticitera. El moderno concepto de "computadora programable" provino del profesor inglés Charles Babbage, quien conceptualizó la "Máquina analítica" por allí de 1833, misma que no pudo finalizarse en esa época por las limitaciones propias de la época. Ada Byron se convirtió en su mecenas y, también, en la persona que avizoró la posibilidad programable de esta máquina y generó el primer código que calcularía los números de Bernoulli.

Computadoras modernas

Para 1936, el matemático inglés Alan Turing escribió su documento "En números computables", en el cual propuso el diseño de la computadora moderna en un dispositivo simple al que llamó "Máquina computadora universal", misma que hoy se conoce como "Máquina universal de Turing". Estas bases sirvieron para la actual revolución del cómputo programable, que empezó a tener una importante explosión desde la década de los años 1940. No fue sino hasta 1980 que las computadoras empezaron a tomar la forma que hoy conocemos y que nos facilitan diariamente la vida.

Así, las computadoras son artefactos programables que se basan en dos características fundamentales: reaccionan a un conjunto específico de instrucciones de una manera predefinida, y pueden ejecutar una secuencia preestablecida de instrucciones, también conocida como "programa". Este artefacto es un sistema, por lo que admite entradas (datos, señales, impulsos), las procesa y arroja resultados de acuerdo con el programa que se utilice.

Como datos curiosos, en la vida normal tendemos a parpadear unas 20 veces por minuto. Sin embargo, frente a una pantalla de computadora, tendemos a parpadear unas 7 veces por minuto. Esto puede resecar los ojos. Otro dato curioso es que al trabajar en una computadora todo el día, las manos se trasladan alrededor de 19km (en particular, la mano dominante). ¡Nos seguimos leyendo!

Inteligencia Artificial (IA)

Si bien todavía existen controversias respecto a una adecuada definición de la palabra “Inteligencia”, la Inteligencia Artificial suele refe...