Introducción a la Inteligencia Artificial
El cerebro es el órgano más increíble del cuerpo humano. Establece la
forma en que percibimos las imágenes, el sonido, los olores, los
sabores y el tacto. Nos permite almacenar recuerdos, experimentar
emociones e incluso soñar. Sin el, seríamos organismos primitivos,
incapaces de otra cosa que el más simple de los reflejos. El cerebro
es, en definitiva, lo que nos hace inteligentes. Durante décadas hemos
soñado con construir máquinas inteligentes con cerebros como los
nuestros; asistentes robotizados para limpiar nuestras casas, coches
que se conducen por sí mismos, microscopios que detecten
enfermedades automáticamente. Pero construir estas
máquinas artificialmente inteligentes nos obliga a resolver aldgunos de
los problemas computacionales más complejos que hemos tenido;
problemas que nuestros cerebros ya pueden resolver en una fracción
de segundos. La forma de atacar y resolver estos problemas, es el
campo de estudio de la Inteligencia Artificial.
¿Qué es la Inteligencia Artificial?
Definir el concepto de Inteligencia Artificial no es nada fácil. Una
definición sumamente general sería que la IA es el estudio de
la infromática centrándose en el desarrollo de software o máquinas
que exhiben una inteligencia humana.
Objetivos de la Inteligencia Artificial
Los objetivos principales de la IA incluyen la deducción y el
razonamiento, la representación del conocimiento, la planificación, el
procesamiento del lenguaje natural (NLP), el aprendizaje, la
percepción y la capacidad de manipular y mover objetos. Los objetivos
a largo plazo incluyen el logro de la Creatividad, la Inteligencia Social y
la Inteligencia General (a nivel Humano).
Cuatro enfoques distintos
Podemos distinguir cuatro enfoques distintos de abordar el problema
de la Inteligencia Artificial.
1. Sistemas que se comportan como humanos: Aquí la idea es
desarrollar máquinas capaces de realizar funciones para las cuales
se requeriría un humano inteligente. Dentro de este enfoque
podemos encontrar la famosa Prueba de Turing. Para poder
superar esta prueba, la máquina debería poseer las siguientes
capacidades:
Procesamiento de lenguaje natural, que le permita
comunicarse satisfactoriamente.
Representación del conocimiento, para almacenar lo
que se conoce o se siente.
Razonamiento automático, para utilizar la información
almacenada para responder a preguntas y extraer nuevas
conclusiones.
Aprendizaje automático, para adaptarse a nuevas
circunstancias y para detectar y extrapolar patrones.
Visión computacional, para percibir objetos.
Robótica, para manipular y mover objetos.
2. Sistemas que piensan como humanos: Aquí la idea es hacer
que las máquinas piensen como humanos en el sentido más literal;
es decir, que tengan capacidades cognitivas de toma de decisiones,
resolución de problemas, aprendizaje, etc. Dentro de este enfoque
podemos encontrar al campo interdisciplinario de la ciencia
cognitiva, en el cual convergen modelos computacionales de IA y
técnicas experimentales de psicología intentando elaborar teorías
precisas y verificables sobre el funcionamiento de la mente
humana.
3. Sistemas que piensan racionalmente: Aquí la idea es
descubrir los cálculos que hacen posible percibir, razonar y actuar;
es decir, encontrar las leyes que rigen el pensamiento racional.
Dentro de este enfoque podemos encontrar a la Lógica, que intenta
expresar las leyes que gobiernan la manera de operar de la mente.
4. Sistemas que se comportan racionalmente: Aquí la idea es
diseñar agentes inteligentes. Dentro de este enfoque un agente
racional es aquel que actúa con la intención de alcanzar el mejor
resultado o, cuando hay incertidumbre, el mejor resultado esperado.
Un elemento importante a tener en cuenta es que tarde o temprano
uno se dará cuenta de que obtener una racionalidad perfecta (hacer
siempre lo correcto) no es del todo posible en entornos complejos.
La demanda computacional que esto implica es demasiado grande,
por lo que debemos conformarnos con una racionalidad limitada.
Como lo que se busca en este enfoque es realizar inferencias
correctas, se necesitan las mismas habilidades que para la Prueba
de Turing, es decir, es necesario contar con la capacidad para
representar el conocimiento y razonar basándonos en él, porque
ello permitirá alcanzar decisiones correctas en una amplia gama de
situaciones. Es necesario ser capaz de generar sentencias
comprensibles en lenguaje natural, ya que el enunciado de tales
oraciones permite a los agentes desenvolverse en una sociedad
compleja. El aprendizaje no se lleva a cabo por erudición
exclusivamente, sino que profundizar en el conocimiento de cómo
funciona el mundo facilita la concepción de estrategias mejores
para manejarse en él.
Fundamentos de la Inteligencia artificial
Existen varias disciplinas que han contribuido con ideas, puntos de
vista y técnicas al desarrollo del campo de la Inteligencia Artificial.
Ellas son:
Filosofía
Muchas han sido las contribuciones de la Filosofía a las ciencias. En el
campo de la Inteligencia Artificial a contribuido con varios aportes
entre los que se destacan los conceptos de IA débil y IA fuerte.
La IA débil se define como la inteligencia artificial racional que se
centra típicamente en una tarea estrecha. La inteligencia de la IA
débil es limitada, no hay autoconciencia o inteligencia genuina. Siri es
un buen ejemplo de una IA débil que combina varias técnicas de IA
débil para funcionar. Siri puede hacer un montón de cosas por
nosotros, pero a medida que intentamos tener conversaciones con el
asistente virtual, nos damos cuenta de cuan limitada es.
La IA fuerte es aquella inteligencia artificial que iguala o excede la
inteligencia humana promedio. Este tipo de AI será capaz de realizar
todas las tareas que un ser humano podría hacer. Hay mucha
investigación en este campo, pero todavía no han habido grandes
avances.
Muchos son los debates filosóficos alrededor de la inteligencia
artificial, para aquellos interesados en los aspectos filosóficos les
recomiendo inscribirse en nuestro grupo de debate de IAAR
Matemáticas
Si de ciencias aplicadas se trata, no puede faltar el aporte de
las Matemáticas. Para entender y desarrollar los
principales algoritmos que se utilizan en el campo de la Inteligencia
Artificial, deberíamos tener nociones de:
Álgebra lineal
El álgebra lineal es una rama de las matemáticas que estudia
conceptos tales como vectores, matrices, tensores, sistemas de
ecuaciones lineales y en su enfoque de manera más formal, espacios
vectoriales y sus transformaciones lineales. Una buena comprensión
del álgebra lineal es esencial para entender y trabajar con muchos
algoritmos de Machine Learning, y especialmente para los algoritmos
de Deep Learning.
Cálculo
El Cálculo es el campo de la matemática que incluye el estudio de los
límites, derivadas, integrales y series infinitas, y más concretamente se
puede decir que es el estudio del cambio. Particularmente para el
campo de la Inteligencia Artificial algunos conceptos que se deberían
conocer incluyen: Cálculo Diferencial e Integral, Derivadas Parciales,
Funciones de Valores Vectoriales, y Gradientes.
Optimización matemática
La Optimización matemática es la herramienta matemática que nos
permite optimizar decisiones, es decir, seleccionar la mejor alternativa
de un conjunto de criterios disponibles. Su comprensión es
fundamental para poder entender la eficiencia computacional y la
escalabilidad de los principales algoritmos de Machine
Learning y Deep Learning, los cuales suelen trabajar con matrices
dispersas de gran tamaño.
Probabilidad y estadística
La Probabilidad y estadística es la rama de la matemática que trata
con la incertidumbre, la aleatoriedad y la inferencia. Sus conceptos
son fundamentales para cualquier algoritmo de Machine
Learning o Deep Learning.
Una buena introducción a cada uno de estos campos de las
matemáticas que son fundamentales para la Inteligencia Artificial, la
pueden encontrar en mi blog.
Lingüística
La Lingüística moderna y la Inteligencia Artificial nacieron al mismo
tiempo y maduraron juntas, solapándose en un campo híbrido llamado
lingüística computacional o procesamiento de lenguaje natural. El
entendimiento del lenguaje requiere la comprensión de la materia bajo
estudio y de su contexto, y no solamente el entendimiento de la
estructura de las sentencias; lo que lo convierte en un problema
bastante complejo de abordar.
Neurociencias
La Neurociencia es el estudio del sistema neurológico, y en especial
del cerebro. La forma exacta en la que en un cerebro se genera el
pensamiento es uno de los grandes misterios de la ciencia. El hecho
de que una colección de simples células puede llegar a generar
razonamiento, acción, y conciencia es un enigma a resolver. Cerebros
y computadores realizan tareas bastante diferentes y tienen
propiedades muy distintas. Según los cálculos de los expertos se
estima que para el 2020 las computadoras igualaran la capacidad de
procesamiento de los cerebros. Muchos modelos de IA fueron
inspirados en la estructura y el funcionamiento de nuestro cerebro.
Psicología
La Psicología trata sobre el estudio y análisis de la conducta y los
procesos mentales de los individuos y grupos humanos. La rama que
más influencia ha tenido para la Inteligencia Artificial es la de
la psicología cognitiva que se encarga del estudio de la cognición; es
decir, de los procesos mentales implicados en el conocimiento. Tiene
como objeto de estudio los mecanismos básicos y profundos por los
que se elabora el conocimiento, desde la percepción, la memoria y el
aprendizaje, hasta la formación de conceptos y razonamiento lógico.
Las teoría descritas por esta rama han sido utilizados para desarrollar
varios modelos de Inteligencia Artificial y Machine Learning
Ramas de la Inteligencia artificial
Dentro de la Inteligencia Artificial podemos encontrar distintas ramas,
entre las que se destacan:
Machine Learning
El Machine Learning es el diseño y estudio de las herramientas
informáticas que utilizan la experiencia pasada para tomar decisiones
futuras; es el estudio de programas que pueden aprenden de los
datos. El objetivo fundamental del Machine Learning es generalizar, o
inducir una regla desconocida a partir de ejemplos donde esa regla es
aplicada. El ejemplo más típico donde podemos ver el uso del Machine
Learning es en el filtrado de los correo basura o spam. Mediante la
observación de miles de correos electrónicos que han sido marcados
previamente como basura, los filtros de spam aprenden a clasificar los
mensajes nuevos.
El Machine Learning tiene una amplia gama de aplicaciones,
incluyendo motores de búsqueda, diagnósticos médicos, detección de
fraude en el uso de tarjetas de crédito, análisis del mercado de
valores, clasificación de secuencias de ADN, reconocimiento del habla
y del lenguaje escrito, juegos y robótica. Pero para poder abordar cada
uno de estos temas es crucial en primer lugar distinguir los
distintos tipos de problemas de Machine Learning con los que nos
podemos encontrar.
Aprendizaje supervisado
En los problemas de aprendizaje supervisado se enseña o entrena al
algoritmo a partir de datos que ya vienen etiquetados con la respuesta
correcta. Cuanto mayor es el conjunto de datos, el algoritmo podrá
generalizar en una forma más precisa. Una vez concluido el
entrenamiento, se le brindan nuevos datos, ya sin las etiquetas de las
respuestas correctas, y el algoritmo de aprendizaje utiliza la
experiencia pasada que adquirió durante la etapa de entrenamiento
para predecir un resultado.
Aprendizaje no supervisado
En los problemas de aprendizaje no supervisado, el algoritmo es
entrenado usando un conjunto de datos que no tiene ninguna etiqueta;
en este caso, nunca se le dice al algoritmo lo que representan los
datos. La idea es que el algoritmo pueda encontrar por si solo
patrones que ayuden a entender el conjunto de datos.
Aprendizaje por refuerzo
En los problemas de aprendizaje por refuerzo, el algoritmo aprende
observando el mundo que le rodea. Su información de entrada es el
feedback o retroalimentación que obtiene del mundo exterior como
respuesta a sus acciones. Por lo tanto, el sistema aprende a base de
ensayo-error. Un buen ejemplo de este tipo de aprendizaje lo podemos
encontrar en los juegos, donde vamos probando nuevas estrategias y
vamos seleccionando y perfeccionando aquellas que nos ayudan a
ganar el juego. A medida que vamos adquiriendo más practica, el
efecto acumulativo del refuerzo a nuestras acciones victoriosas
terminará creando una estrategia ganadora.
Deep Learning
El Deep Learning constituye un conjunto particular de algoritmos
de Machine Learning que utilizan estructuras profundas de redes
neuronales para encontrar patrones en los datos. Estos tipos de
algoritmos cuentan actualmente con un gran interés, ya que han
demostrado ser sumamente exitosos para resolver determinados tipos
de problemas; como por ejemplo, el reconocimiento de imágenes.
Muchos consideran que este tipo de modelos son los que en el futuro
nos llevaran a resolver definitivamente el problema de la Inteligencia
Artificial.
Razonamiento probabilístico
El razonamiento probabilístico se encarga de lidiar con la
incertidumbre inherente de todo proceso de aprendizaje. El problema
para crear una Inteligencia Artificial entonces se convierte en encontrar
la forma de trabajar con información ruidosa, incompleta e incluso
muchas veces contradictoria. Estos algoritmos están sumamente
ligados a la estadística bayesiana; y la principal herramienta en la que
se apoyan es en el teorema de Bayes.
Algoritmos genéticos
Los algoritmos genéticos se basan en la idea de que la madre de todo
aprendizaje es la selección natural. Si la Naturaleza pudo crearnos,
puede crear cualquier cosa; por tal motivo lo único que deberíamos
hacer para alcanzar una Inteligencia Artificial es simular sus
mecanismos en una computadora. La idea de estos algoritmos es
imitar a la Evolución; funcionan seleccionando individuos de una
población de soluciones candidatas, y luego intentando producir
nuevas generaciones de soluciones mejores que las anteriores una y
otra vez hasta aproximarse a una solución perfecta.
Aplicaciones de la Inteligencia artificial
Las técnicas de la Inteligencia Artificial pueden ser aplicadas en una
gran variedad de industrias y situaciones, como ser:
Medicina
Apoyándose en las herramientas que proporciona la Inteligencia
Artificial, los doctores podrían realizar diagnósticos más certeros y
oportunos, lo que llevaría a mejores tratamientos y más vidas
salvadas.
Autos autónomos
Utilizando Inteligencia Artificial podríamos crear autos autónomos que
aprendan de los datos y experiencias de millones de otros autos,
mejorando el tráfico y haciendo mucho más segura la conducción.
Bancos
Utilizando técnicas de Machine Learning los bancos pueden detectar
fraudes antes de que ocurran por medio de analizar los patrones de
comportamiento de gastos e identificando rápidamente actividades
sospechosas.
Agricultura
En Agricultura se podría optimizar el rendimiento de los cultivos por
medio de la utilización de las técnicas de Inteligencia Artificial para
analizar los datos del suelo y del clima en tiempo real, logrando
producir más alimentos incluso con climas perjudiciales.
Educación
En la Educación se podrían utilizar las técnicas de la Inteligencia
Artificial para diseñar programas de estudios personalizados basados
en datos que mejoren el rendimiento y el ritmo de aprendizaje de los
alumnos.
La ética y los riesgos de desarrollar una Inteligencia Artificial
Actualmente también ha surgido un debate ético alrededor de
la Inteligencia Artificial. Algunos de los pensadores más importantes
del planeta han establecido su preocupación sobre el progreso de
la IA. Entre los problemas que puede traer aparejado el desarrollo de
la Inteligencia Artificial, podemos encontrar los siguientes:
Las personas podrían perder sus trabajos por la automatización.
Las personas podrían tener demasiado (o muy poco) tiempo de
ocio.
Las personas podrían perder el sentido de ser únicos.
Las personas podrían perder algunos de sus derechos privados.
La utilización de los sistemas de IA podría llevar a la pérdida de
responsabilidad.
El éxito de la IA podría significar el fin de la raza humana.
El debate sobre los beneficios y riesgos del desarrollo de
la Inteligencia Artificial está todavía abierto.
¿Cómo iniciarse en el campo de la Inteligencia artificial?
Si luego de leer esta introducción, te has quedado fascinado por el
campo de la Inteligencia Artificial y quieres incursionar en el mismo,
aquí te dejo algunas recomendaciones para iniciarse.
IAAR
IAAR es la comunidad argentina de inteligencia artificial. Agrupa a
ingenieros, desarrolladores, emprendedores, investigadores, entidades
gubernamentales y empresas en pos del desarrollo ético y humanitario
de las tecnologías cognitivas. Para comenzar a formar parte de la
comunidad pueden inscribirse en los grupos de
facebook: IAAR, Debates, Proyectos, Capacitación; y/o en el meetup.
Programación
Para poder trabajar en problemas relacionados al campo de
la Inteligencia Artificial es necesario saber programar. Los principales
lenguajes que se utilizan son Python y R. En los repositorios
de Academia de IAAR van a poder encontrar material sobre estos
lenguajes.
Frameworks
Existen varios frameworks open source que nos facilitan el trabajar
con modelos de Deep Learning, entre los que se destacan:
TensorFlow: TensorFlow es un frameworks desarrollado por
Google. Es una librería de código libre para computación numérica
usando grafos de flujo de datos que utiliza el lenguaje Python.
PyTorch: PyTorch es un framework de Deep Learning que utiliza
el lenguaje Python y cuenta con el apoyo de Facebook.
Caffe: Caffe es un framework de Deep Learning hecho con
expresión, velocidad y modularidad en mente, el cual es
desarrollado por la universidad de Berkeley.
CNTK: CNTK es un conjunto de herramientas, desarrolladas por
Microsoft, fáciles de usar, de código abierto que entrena algoritmos
de Deep Learning para aprender como el cerebro humano.
Theano: Theano es una librería de Python que permite definir,
optimizar y evaluar expresiones matemáticas que involucran
tensores de manera eficiente.
DeepLearning4j: DeepLearning4j Es una librería open source
para trabajar con modelos de Deep Learning distribuidos utilizando
el lenguaje Java.
Bots
Una de las ramas con mayor crecimiento y que más se ha beneficiado
con el boom de la Inteligencia Artificial es la de los Bots. Generar
pequeños Bots que puedan tener conversaciones básicas con los
usuarios es bastante simple. Pueden encontrar una guía con una gran
número de herramientas en el blog de IAAR.