Este documento presenta una introducción a la inteligencia artificial. Explica conceptos básicos como clasificación, regresión y agrupamiento. Describe cómo implementar técnicas de IA existentes usando aprendizaje supervisado y no supervisado. También introduce el aprendizaje profundo y redes neuronales convolucionales, y recomienda frameworks y lenguajes de programación para comenzar a trabajar con IA.
3. De qué hablaremos
La idea de esta charla es lograr un nivel de entendimiento suficiente de la IA
para poder proponer soluciones viables.
● Introducción al estado actual de la IA
● Explicaremos cómo empezar en la Inteligencia Artificial
● Tecnologías actualmente usadas
● Cómo plantear un proyecto que use IA
● Cómo emprender negocios basados en IA
● Como emplearse en empresas que usen IA
● Consejos para adentrarse en este mundo
NOTA: Los conceptos no serán explicados de forma rigurosa.
5. ¿Qué es la inteligencia artificial?
La inteligencia artificial (Artificial Intelligence, o AI) es la simulación de procesos
de inteligencia humana por parte de máquinas, especialmente sistemas
informáticos. Estos procesos incluyen el aprendizaje (la adquisición de
información y reglas para el uso de la información), el razonamiento (usando las
reglas para llegar a conclusiones aproximadas o definitivas) y la autocorrección.
6.
7. Algunos ejemplos de aplicación de IA
La inteligencia artificial se ha implementado prácticamente en todas las áreas,
veamos algunos ejemplos
9. Predicciones de la copa del mundo
No suelen ser muy precisas ya que hay muchos
factores en juego.
10. Es capaz de entendernos
Aunque creemos
conceptos muy
básicos, la AI puede
crear conceptos más
complejos.
11. Crear videos controlando a una persona
Se ha logrado que se creen videos
suplantando la identidad de
alguien.
12. Canciones compuestas por IA
Canción compuesta de inicio a fin,
el sistema fue entrenada con
canciones de los Beatles.
13.
14.
15. No nos perdamos
El problema de hablar de inteligencia artificial es que siempre se fantasea
mucho y se aborda de una forma poco objetiva, en esta charla trataremos de
aterrizarla en términos prácticos.
16.
17. 1958
La computadora será el primer
dispositivo en pensar cómo el
cerebro humano. Podrá entender su
entorno, reconocerte hablarte por tu
nombre y traducir en tiempo real.
Es posible construir cerebros que
puedan multiplicarse una línea de
producción y ser conscientes.
Rosenblatt murio en un accidente
20. Dato curioso acerca de George Boole
Geoffrey Hinton es tatara-tatara-tataranieto de George
Boole.
Cambió el mundo de la era industrial mecánica a la era
digital.
21. IA es también del interés de gobiernos
Actualmente Geoffrey Hinton reside en
Canadá y el gobierno está invirtiendo
en ser un referente en temas de AI.
24. ¿Por dónde empiezo?
Lo primero que debes saber es que en la actualidad puedes incorporarte a este
mundo como implementador de técnicas existentes o como creador de nuevas
técnicas.
25. Creador de nuevas técnicas (Ciencias)
Para proponer nuevos algoritmos se requiere un conocimiento profundo en
varias áreas, incluyendo:
● Algebra lineal
● Estadística
● Sistemas de ecuaciones
● Calculo
● Computo paralelo
● Estructuras de datos
● Lenguajes de programación (usualmente C o Python)
… Entre otras áreas
26. Implementador de técnicas existentes (Ingeniería)
Como implementador solo necesitas conocer en qué se diferencia cada técnica
de otra y saber cuál emplear según el problema. El proceso de implementar solo
implica adecuar las entradas a las que requiere cada algoritmo, sin necesidad
de programar un algoritmo nuevo. Para ello se requiere:
● Procesamiento de datos
● Lenguajes de programación (usualmente C o Python)
● Computo paralelo
Entre otros
27. Esta charla la enfocaremos en cómo implementar
Si bien es cierto que los grandes descubrimientos provienen de la generación de
nuevos algoritmos, llegar a un nivel suficiente de entendimiento de las bases
de la inteligencia aartififcial.es tardado y usualmente requiere estudios de
posgrado.
Como implementador eventualmente serás capaz de mejorar técnicas
existentes.
28. La evolución de los métodos
Una forma sencilla de entender cómo implementar la IA es comparado con un
método convencional de programación. Un método es una pieza de código que
se ejecuta y regresa un resultado, ejemplo:
precio_casa = obten_precio( ubicacion_casa )
El resultado puede ser buscado en una base de datos o calculado en base una
fórmula existente.
29. La evolución de los métodos
Cuando implementamos una técnica de IA, se implementa de una forma similar a
un método, pero no hay una formula definida para obtener el resultado, y esta
devuelve 2 valores, un valor predicho y el porcentaje de certeza.
precio_casa, porcentaje_certeza = predice_precio( ubicacion_casa )
El resultado es inferido en base a datos previos. No hay una fórmula exacta, se
estima siempre en base a datos semejantes.
30. Todo es análisis de datos
Para tu ser capaz de obtener una respuesta debiste de haber contado con datos
suficientes y estructurados. Es una habilidad fundamental la administración
de datos en todo ingeniero de IA.
31. Para comenzar un ejemplo clásico es el Hot Dog y No Hot Dog. Para eso se
colectan cientos de fotos de Hot Dogs y cientos de fotos de cualquier otra
cosa. Con eso muchas de las técnicas detectar de forma precisa si hay un Hot
Dog. Así se vería la función
clase_detectada, porcentaje_certeza = hay_un_hot_dog( imagen )
Donde clase_detectada vale “Hot Dog”
Y porcentaje_certeza varía entre 0 y 1
Si el porcentaje es mayor a un valor definido (ej 0.8)
entonces si es Hot Dog)
El ejemplo más básico: Hot dog / Not Hot Dog
32.
33. El ejemplo más básico: Hot dog / Not Hot Dog
Como en la serie de SIlicon
Valley
34. Detectar gatos y perros
En este caso necesitamos 3 sets de datos, cientos de fotos de
perros, cientos de gatos y cientos de cualquier otra cosa.
clases_detectadas, porcentajes_certezas = cat_or_dog( imagen )
Debido a que son más de una categoría, la función regresa un
arreglo de datos, donde:
clases_detectadas[0] vale “perro” y porcentajes_certezas[0] vale
por ejemplo 0.4
clases_detectadas[1] vale “gato” y porcentajes_certezas[1] vale
por ejemplo 0.9
Entonces es más probable que sea un gato.
35. Self driving cars, suenan muy lejos, pero es lo mismo
Un auto que se maneja solo, aunque suene muy complejo, es solo la
implementación de varias funciones de IA, este es un ejemplo muy burdo:
clases_detectadas, porcentajes_certezas = vision_sensor_1( imagen_camara )
SI clases_detectadas[0] == ‘Otro coche detectado’ and porcentajes_certezas[0] < .1
Y clases_detectadas[1] == ‘Peaton detectado’ and porcentajes_certezas[1] < .1
Entonces CAMBIAR_DE_CARRIL()
36. Los ingenieros de autos autónomos usan maquetas
Dedicarse a hacer autos autónomos es algo muy alcanzable para cualquier
persona, ya que la gran mayoría de las pruebas se hacen en maquetas y no en
autos reales. Una vez que es 100% eficiente en maquetas se hacen pruebas en
coches. Se puede armar un laboratorio de autos autónomos a un costo muy bajo.
37. Clasificación y Regresión
Ya aprendimos estos conceptos con
ejemplos:
Regresión es predecir un valor, como el
caso de la casa, una casa más cercana a
un centro comercial y vías principales,
regresa un valor en precio más grande,
ejemplo 1,000,000
Clasificación es predecir una categoría,
en los ejemplos se regresa las “clases” o
categorías a buscar y en base a eso nos
regresa si es “perro” o “gato”.
38. Pero hay un caso extra (Clustering)
Cuando no sabemos los datos que son y necesitamos que la
computadora agrupe los que se parecen entre sí, para
posteriormente darles un nombre:
clase_asignada, porcentaje_certeza = asigna_categoria( dato[0] )
clase_asignada, porcentaje_certeza = asigna_categoria( dato[1] )
clase_asignada, porcentaje_certeza = asigna_categoria( dato[2] )
A este caso se le llama Clustering. Un ejemplo puede ser dar
imagenes de letras dibujadas, el resultado debería ser que las
agrupe por letras separadas.
39. Aprendizaje supervisado y no supervisado
Cuando asignamos las posibles categorías como en el caso de la clasificación,
entonces se llama aprendizaje supervisado. Aprendizaje supervisado también
incluye regresión, donde se calculan cifras en base a cifras previas.
Cuando nosotros no asignamos la categoría, sino dejamos que la computadora
las decidiera como en el caso del clustering, entonces se conoce como
aprendizaje no supervisado.
40. Listo ya saben lo básico
Con lo aprendido es suficiente para plantear un problema y resolverlo usando
distintas tipos de aprendizaje, ahora a continuación veremos qué técnicas
existen y cuando se emplea cada una.
42. Primero aprendamos a elegir que usaremos
Con unas sencillas preguntas podemos saber si es aprendizaje
supervisado o no supervisado y si es clasificación, regresión o
clustering.
¿Necesitas regresar un valor numérico pronosticado? Es aprendizaje
supervisado y usarás regresión.
¿Necesitas regresar de qué tipo es y sabes qué tipos puede haber?
Es aprendizaje supervisado y usarás Clasificación.
¿Necesitas regresar de qué tipo es pero no sabes qué tipos puede
haber? Es aprendizaje no supervisado y usarás Clustering.
43. Ok y ¿Donde entra Machine Learning?
Machine Learning es el concepto en general de cómo una computadora puede
aprender. El aprendizaje proviene de recibir información novedosa y adecuar sus
parámetros para identificar correctamente nuevos casos. Para esto requiere
mucha información, pero también necesita saber que parámetros (“features”)
analizar.
44. ¿Features?
Sí, necesitamos encontrar en
base a qué parámetros
diferenciar uno de otro, por
ejemplo hay especies de peces
muy similares.
En qué características se fijarían
ustedes para identificarlos.
¿Color, tamaño, número de
aletas?
45. El siguiente paso es “anotar” (labeling)
Ya que tenemos cada registro de cada espécimen ahora manualmente hay que
especificar que “clase” es, por ejemplo:
Para cuando llegue uno nuevo tratar de predecir que es:
Color Tamaño Aletas CLASS
Dorado 20 5 Tilapia
Plateado 10 6 Atún
Plateado 30 6 Salmón
Color Tamaño Aletas CLASS
Plateado 20 6 ???
46. Con las Classes y los Features podemos comenzar
Listo ahora si podemos nutrir cualquier algoritmo para generar un resultado.
Los más usados son:
● kNN
● Bayes
● Support Vector Machines
● Neural Networks
● Decision Trees
● Random Forest
Entre muchos otros
47. Ahora hay que entrenar el modelo
Una vez que tenemos las Classes, los
Features y elegimos un algoritmo. Lo
dejamos entrenando y creando un
archivo llamado Modelo con las reglas
para poder clasificar datos no vistos
anteriormente.
48. Pero sin buenos Features, no será preciso, pero ...
Como vimos en el ejemplo:
Para predecir
Las features no son suficientes, y si encontramos exponencialmente las
features para ser más precisos, eso hará un procesamiento exhaustivo. Pero
existe una técnica que nos ayuda a este proceso.
Color Tamaño Aletas CLASS
Dorado 20 5 Tilapia
Plateado 10 6 Atún
Plateado 30 6 Salmón
Color Tamaño Aletas CLASS
Plateado 20 6 ???
49. Deep Learning
Deep Learning se beneficia de la extracción automática de features, lo que nos
ayuda a no preocuparnos por escoger las mejores, y además se ayuda del gran
poder de cómputo actual habilitando Convolutional Neural Networks.
Deep Learning es una caja negra, no se sabe cómo se llega al resultado para
poder revisarlo.
50. Neural Networks
Las redes neuronales son un modelo para encontrar esa combinación de
parámetros y aplicarla al mismo tiempo. En el lenguaje propio, encontrar la
combinación que mejor se ajusta es "entrenar" la red neuronal. Una red ya
entrenada se puede usar luego para hacer predicciones o clasificaciones, es
decir, para "aplicar" la combinación.
51. Dimensionality Reduction
Una técnica de aprendizaje no supervisado que nos permite representar datos
con poca información relevante, por ejemplo:
● En vez de analizar pixeles, analizar bordes y esquinas
● Cuando un plano 2D es más valioso que un plano 3D, ejemplo cuando
colocamos bancas en un salón.
52. Convolutional Neural Networks
Implica crear varias capas o niveles de procesamiento. Así como vimos en las
redes neuronales que son combinaciones. Estas son combinaciones de
combinaciones en múltiples capas, lo que logra modelos muy complejos y
precisos.
53. Veamos que necesitamos para Deep Learning
Lo único que necesitamos para entrenar un modelo de predicción usando Deep
Learning es:
● Necesitamos datos “anotados” (clasificados) por lo general más de 100,
pero depende el caso
● Un Framework que soporte Deep Learning (sklearn, Keras, Tensorflow,
Caffe2, PyTorch, etc)
● Lenguaje de programación: Python, Python o C.
Nos ahorramos el paso de elegir las features, e incluso podemos no definir las
capas convolutivas.
54. ¿Y si aún no se Python?
Es uno de los lenguajes más sencillos y poderosos. Lo aprenderás y
dominarás en un par de semanas. Te dejo algunos tutoriales.
https://www.learnpython.org/
https://docs.python.org/3/tutorial/index.html
https://www.tutorialspoint.com/python/index.htm
55. ¿Y qué framework nos recomiendas?
Algunos de ellos son sencillos y algunos más complejos. Yo les recomendaría
estos 3 en el siguiente orden:
1) Keras : Es un framework de frameworks es decir, es capaz de en pocas
líneas de código generar código para Frameworks más complejos como
Tensorflow, Theano y CNTK.
2) Sklearn / TFlearn : Ambos frameworks framework son sumamente sencillos
con muchos ejemplos de código hechos. Ideales para hacer pruebas de
forma veloz.
3) Tensorflow : Fue creado por Google, es de los más completos y
poderosos, pero es más complejo.
56. Y con qué ejemplo comienzo
Empiecen con el clásico ejemplo de detectar perritos y
gatitos. Las cosas con gatitos siempre son mejores
El código para keras: https://jkjung-avt.github.io/keras-
tutorial/
El código para sklearn / tflearn :
http://www.subsubroutine.com/sub-
subroutine/2016/9/30/cats-and-dogs-and-
convolutional-neural-networks
El código para Tensorflow:
https://medium.com/@curiousily/tensorflow-for-
57. ¿Y solo son para imágenes?
Con lo que aprendas en estos tutoriales ya serás
capaz de hacer cualquier clasificador. Los
mismos frameworks también funcionan para texto,
audio y video.
Gracias a técnicas como Natural Language
Processing podrás hacer análisis complejos de
texto. En la actualidad se utilizan Word Vectors
para entender el contexto del texto.
Una herramienta muy efectiva es spaCy que
incorpora Deep Learning para el análisis de textos,
les dejo un tutorial:
https://spacy.io/usage/training
58. ¿Y qué hay de los bots de videojuegos?
En la actualidad un bot es capaz de acabar
videojuegos o derrotar adversarios en
competencias de videojuegos.
Estos bots utilizan otra técnica, de aprendizaje
no supervisado llamada Reinforcement
Learning.
59. (Deep) Reinforcement Learning
Es un área del aprendizaje automático inspirada en la psicología conductista,
cuya ocupación es determinar qué acciones debe escoger un agente de software
en un entorno dado con el fin de maximizar alguna noción de "recompensa" o
premio acumulado.
Funcionan a modo de prueba y error, es decir, si por serie de combinaciones (en
el caso de los juegos, mover la palanca y apretar botones) recibe un premio en el
futuro, entonces aprende a encontrar de forma más rápida (en menos
movimientos) esa recompensa.
Una técnica muy usada es la Deep Q-network (DQN)
60. Se basa en tablas de recompensas. En los estados
en que es posible recibir una recompensa, es fácil
decidir cuál es la mejor acción: la que obtiene la
mayor recompensa a presente y a futuro.
(Double) Deep Q Learning
61. Les dejo un ejemplo y un tutorial para que lo hagan
Ambiente:
https://gym.openai.com/envs/Breakout-
v0/
Solución:
https://github.com/vy007vikas/OpenAI-
Gym-
Solutions/blob/master/Atari/breakout.py
62. Ya me piqué, y después qué sigue ...
Tan solo con las técnicas que hemos visto, serán capaces de:
● Componer música
● Crear obras de arte
● Hacer que un robot aprenda a caminar
● Hacer que un robot aprenda a jugar futbol
● Saber que enfermedad tienes en base a tus síntomas
● Saber que va a comprar un cliente en base a su comportamiento
Y mucho mucho más
Les dejo código de algunas ...
63. Generative Artificial Intelligence
Es capaz de crear contenido, por
ejemplo cambiarle la cara a 2
personas. Adversarial Neural Networks
Código:
https://github.com/deepfakes/faceswap
64. Generative Artificial Intelligence
Puedes también crear videos de otra
persona diciendo algo.
Aquí esta el paper donde dicen como
hacerlo:
http://grail.cs.washington.edu/projects/A
udioToObama/
65. EL bot que hace llamadas de Google
Recuerdan la llamada casi real
donde entendía perfectamente y
respondía a personas reales.
Aquí les dejo la liga del artículo
que explica como funciona:
https://ai.googleblog.com/2018/05/d
uplex-ai-system-for-natural-
conversation.html
66. AutoML
Hacer que la máquina se entrene,
pruebe y mejore sola. Ella se encarga
de ajustarse hasta lograr porcentajes de
Accuracy.
Dejo un ejemplo del código necesario
para que la computadora haga todo por
ti: http://automl.github.io/auto-
sklearn/stable/
67. ¿Donde me entero de lo nuevo que va saliendo?
El canal de Siraj Raval:
https://www.youtube.com/channel/UCWN3xxRkmTPmbKwht9FuE5A
Wired: https://www.wired.com/tag/artificial-intelligence/
El blog de Google: https://ai.googleblog.com/
El blog de Facebook: https://research.fb.com/blog/
MIT: http://news.mit.edu/topic/artificial-intelligence2
Arxiv: http://www.arxiv-sanity.com/
Google Alerts: https://www.google.com/alerts
70. Vayan armando una computadora poco a poco
Lo único que importa al armar una computadora para Machine Learning es la
tarjeta de video, ya que esta cuenta con GPUs que son bastante más rápidos
que los CPUs. Empiecen con al menos una tarjeta de video NVIDIA que soporte
CUDA con al menos 1024 GPU cores.
73. Hagamos cuentas
De acuerdo con el New York Times, solo hay 10,000 expertos en IA en el
mundo.
De las universidades más prestigiosas se gradúan alrededor de 250 alumnos al
año. Si tomamos las top 10 universidades tendríamos 2,500 egresados.
Es decir que en 2 años tendríamos 15,000 expertos y aún faltarían
2,285,000 puestos de trabajo por cubrir …
¿Quiénes serán ellos?
USTEDES
74. Y a quienes están contratando actualmente
Qué les parece si vamos a Linkedin, el sitio con la mayor cantidad de
profesionistas registrados y buscamos por plazas como Artificial Intelligence
Engineer, Machine Learning Engineer, Deep Learning Engineer, etc.
Estos son los resultados:
77. Muchos llegaron solo por cursos en línea
Es importante tomen cursos
en línea sobre todo los cursos
que vean que más gente que
ya labora tomó.
Hay incluso algunos que te
contratan al terminar el
curso.
79. Y creanme que vale la pena el esfuerzo
Un egresado que trabaja en inteligencia
artificial gana
$11,250 USD al mes en promedio
Muchos “Buenos sueldos” en
Latinoamérica ganan eso al año.
80. Está de moda el Early Retirement
Con los sueldos de la industria
tecnológica, basta con ahorrar el 75%
de tu sueldo por 6 años para vivir el
resto de tu vida sin trabajar. Esto es
real y hay muchas guías en internet
para lograrlo:
http://earlyretirementextreme.com/
https://www.mrmoneymustache.com/
81. Suena bien, que hago para que me contraten
El proceso de contratación no es nada sencillo, debes ser experto primero en:
● Estructuras de datos
● Algoritmos
● Manipulación de bits
● Análisis de algoritmos (complejidad espacio tiempo)
En temas de datos suelen preguntar
● Métodos de Machine Learning (proponerlo, justificarlo y explicarlo)
● SQL y Exploratory Data Analysis
● Explicar la teoría de los métodos de ML, los parámetros como se ajustan.
● Explica alguno de tus proyectos que usen conceptos complejos de ML.
82. Crea un CV con ayuda de la IA
Utiliza los beneficios de la IA para generar un CV impactante
http://rezscore.com/
83. Trabaja en línea
Es una buena forma de ganar experiencia, la mejor plataforma con mayor
cantidad de trabajo es http://www.upwork.com . La ventaja es que no necesitas
permiso de trabajo para trabajar para otros países.
Si quieres comenzar con facilidades, pidan a su primer empleador que los
contrate por esa plataforma, de esa forma tendrás algo que demostrar para que
otros empleadores confíen en tu trabajo.
84. No es fácil, es mejor hacer experiencia primero
En Latinoamérica múltiples empresas están implementando algoritmos de
inteligencia artificial, por lo que hay muchas oportunidades actualmente para
hacer experiencia.
Otra opción es emprender, crear tu propio negocio de Inteligencia Artificial.
87. Inicia tu negocio (Startup)
● Piensa en un problema que se pueda beneficiar de mucho al analizar datos.
● Los gobiernos ya tienen sus datos abiertos, por ejemplo:
○ https://datos.gob.mx/
○ https://data.worldbank.org/
○ http://data.un.org/
● Existen grandes repositorios con toda la información de algunas plataformas
○ https://cloud.google.com/bigquery/public-data/
○ https://www.kaggle.com/datasets
● Crea tu base de datos creando tu aplicación y recolectando información con la
que en un futuro puedas ofrecer servicios inteligentes.
88. Obtén fondos para arrancar tu negocio
Puedes aplicar a distintas fuentes de inversión como:
● Fondos de inversión
○ 500
○ Y Combinator
○ NXTP Labs
○ Entre muchas otras
● Crowdfunding
○ Indiegogo
○ Kickstarter
○ Play Business
● Procura ver todas las opciones posibles antes de
pedir un préstamo.
89. Pero no todo es emplearse o emprender
También existe la investigación que es muy bonita, ya que es donde se crean las
nuevas técnicas ya que existe presupuesto para probar conceptos que después
serán implementados en la industria.
90. Áreas de Investigación
Algoritmos: Consiste en crear algoritmos más eficientes, se publican tanto
nuevos algoritmos para casos generales o específicos, así como mejoras
incrementales a algoritmos existentes.
HCI (Human Computer Interaction): Consiste en implementar tecnología y
estudiar el impacto en los humanos. En el caso de la inteligencia artificial, no
siempre implica el crear nuevos algoritmos, sino se enfoca en implementarlos en
distintos aspectos de la vida diaria y estudiar la experiencia del usuario.
91. Asistan a eventos y unanse a comunidades
Una forma de conocer personas activas en la comunidad, de posicionarse y
hacerse conocer en su entorno es acudiendo a eventos.
https://www.facebook.com/groups/botsLATAM/
92. ● Ahora que conocen los principios básicos y las
aplicaciones de cada tecnología es momento de pensar
en ideas concretas y estructurarlas en términos de
tecnologías y herramientas necesarias.
● No importa si tu perfil no es técnico, es importante
conocer los alcances y requerimientos para poder
implementar un componente de inteligencia artificial en
un proyecto.
● Si tu perfil es técnico, ahora es un muy buen momento
para subirse a la ola de avances en ésta área, por lo que
te recomiendo hacer proyectos en cada área aquí
vista.
● Generemos lo próximos grandes avances en el área.
Conclusiones