Beruflich Dokumente
Kultur Dokumente
10 comentarios
Sin duda Machine Learning es uno de los términos de moda hoy en día en el
mundo de la tecnología. Los algoritmos de Machine Learning tratan de
aprender de los datos, y cuantos más datos haya disponibles para aprender
y más ricos y completos sea el algoritmo, funcionará mejor. En este post
vamos a profundizar en el funcionamiento de algunos de los algoritmos más
usados.
Lo ideal es que los datos de entrenamiento (In) los tengamos etiquetados (0n).
Por ejemplo, imaginemos que queremos disponer de un algoritmo que detecte
si un tumor es benigno o maligno en base a ciertas características del mismo.
Algunas de estas características podrían ser el tamaño del tumor, la densidad,
el color u otros datos clínicos. Supongamos que tenemos un historial con las
características de múltiples tumores que hemos estudiado en el pasado, esto
sería (In), y ya sabemos si cada uno de estos tumores era maligno o benigno,
esto sería (0n).
En primer lugar, lo que haríamos es proporcionar a nuestro algoritmo
todos estos datos para “entrenarlo” y que aprenda de patrones,
relaciones y circunstancias del pasado. De esta manera conseguiremos un
modelo entrenado.
Una vez tengamos este modelo entrenado, podremos pedirle que haga una
predicción al darle las características de un nuevo tumor (I), del cual no
sabemos si es benigno o maligno. El modelo será capaz de darnos una
predicción (P) en base al conocimiento que extrajo de los datos de
entrenamiento.
Lo que define a un “buen” o “mal” algoritmo es la precisión con la que
haga las predicciones en un dominio y contexto dado, y en base a unos
datos de entrenamiento disponibles. Precisamente la principal labor de los
científicos de datos es “tunear” y ajustar los algoritmos para adecuarlos a cada
problema y, por otro lado, limpiar y preparar los datos para que el algoritmo
puede aprender lo máximo posible de ellos.
A continuación vamos a comentar las características de algunos de los
algoritmos más extendidos y cómo son capaces de aprender de los datos.
Regresión lineal
La regresión lineal es uno de los algoritmos clásicos más extendidos y fáciles
de entender. Lo que se pretende hacer es modelar la relación que existe
entre una variable dependiente “y” y una o más variables
independientes “x”.
Intuitivamente, podemos imaginar que se trata de hallar la línea roja que
mejor “encaje” con el conjunto de puntos azules dados. Para esto podremos
usar métodos como el de los “mínimos cuadrados” que busca minimizar la
distancia vertical de todos los puntos azules a la línea roja.
Una vez obtenida esta “línea roja”, seremos capaces de hacer predicciones
hipotéticas sobre cuál sería el valor de “y” dado “x”. Es muy posible que
cometamos siempre cierto error en la predicción.
La regresión lineal es un método guiado, en el sentido de que necesitamos
un conjunto inicial suficientemente representativo de “puntos azules” para
“aprender” de ellos y poder hacer buenas predicciones.
Algunas aplicaciones interesantes de la regresión lineal son el estudio de la
evolución de precios o de mercados. Un ejemplo clásico es la predicción del
precio de la vivienda donde las variables “x”serían las características de una
vivienda: tamaño, número de habitaciones, altura, materiales… y la “y” sería
el precio de esa vivienda. Si pudiéramos analizar las características y el precio
de un conjunto suficiente de viviendas, podríamos predecir cuál sería el precio
de una nueva vivienda en base a sus características.
Regresión logística
La regresión logística tiene ciertas similitudes en su planteamiento con la
regresión lineal, pero está orientada a resolver problemas de
clasificación y no de predicción.
Una vez hallado este hiperplano podemos usarlo para clasificar nuevos
puntos.
SVM tiene múltiples aplicaciones, por ejemplo para reconocimiento de
imágenes, clasificación de texto o aplicaciones en el área de la
biotecnología.
Random forest
Random Forest es uno de los algoritmos más potentes y usados hoy
en día. Consiste en una combinación de múltiples árboles de decisión que
juntos conforman un “bosque”.
Un árbol de decisión es una metáfora de un árbol real, ya que, gráficamente,
las partes de un árbol de decisión tienen cierto parecido a las ramas de un
árbol. Dado un valor de entrada lo clasificaremos diciendo que va a una rama
u otra en base a una condición. Los árboles de decisión pueden ser más o
menos profundos y complejos y la dificultad está en definirlos de forma
correcta para que nos clasifiquen correctamente los datos de nuestro
problema.
Random Forest hace uso de un conjunto de árboles de decisión y a cada uno le
asigna una porción de los datos de ejemplo o entrenamiento. El resultado final
será la combinación del criterio de todos los árboles que formen el bosque.
Este enfoque es ideal para repartir y paralelizar el trabajo de computación, lo
que permite que podamos ejecutarlo de forma muy rápida usando varios
procesadores.
6 comentarios
Durante décadas se ha hablado del concepto de la “Inteligencia Artificial”
(IA) y el impacto que tendría en nuestras vidas. El cine y la literatura han
fantaseado con las posibilidades y los dilemas que se plantean desde HAL
9000 hasta Skynet. Sin embargo la realidad estaba siempre muy lejos de la
ficción.
En los últimos años se han dado una serie de condiciones y cambios
tecnológicos que han propiciado el resurgimiento de la IA y su aplicación en
nuevas áreas, nos referimos a Big Data,Cloud, IoT, Mobility… una verdadera
nueva revolución industrial.
Las empresas se están posicionando en este nuevo escenario y, sin duda,
Google es uno de los referentes en Inteligencia Artificial desde sus orígenes.
En este artículo vamos a hablar deTensorFlow, el framework liberado por
Google para desarrollar algoritmos inteligentes que está en el corazón de
muchos de sus productos.
Los orígenes
TensorFlow es un software de computación numérica, creado por Google,
orientado a problemas de Deep Learning. Deep Learning es un área específica
de Machine Learning que está tomando gran relevancia dentro del mundo de
la Inteligencia Artificial y que está detrás de algunos de las novedades
tecnológicas más sorprendentes de los últimos años.
El origen de TensorFlow está en años de experiencia de Google en el campo
de la Inteligencia Artificial. TensorFlow nace del trabajo de Google Brain, un
grupo de investigadores e ingenieros de Google dedicado a investigar en el
área de la IA, que desarrollaron en 2011 DistBelief, el predecesor cerrado de
TensorFlow.
En febrero de 2017, Google liberó la versión 1.0, que incorpora multitud de
mejoras. Algunas de las más reseñables son mejoras de rendimiento que
permiten acelerar hasta 58 veces los tiempos de ejecución de algunos
algoritmos y aprovechar las ventajas de ejecutar sobre GPUs. Además, se han
mejorado y facilitado las integraciones con otras bibliotecas del ecosistema
como Keras.
El impacto que ha logrado Google liberando esta tecnología es espectacular y
la comunidad ha respondido. A fecha de mayo de 2017 existen más de 11.000
repositorios de código donde se referencia TensorFlow.
Google lleva usando esta tecnología desde hace varios años aplicándola a
muchos de sus productos y servicios como por ejemplo Gmail, donde se usa
en el componente Smart Reply para generación de respuestas automáticas, o
en Google Translation donde es usado para realizarmillones de
traducciones todos los días entre multitud de idiomas.
Otro buen ejemplo es esta página, donde Google nos muestra de forma muy
visual cómo funciona TensorFlow y podemos configurar y ver en tiempo real
cómo aprende nuestra red de neuronas, sin necesidad de programar una sola
línea de código, merece la pena probarlo.
Uno de los aspectos que hacen más interesante a TensorFlow es que Google
decidió liberarlocomo software libre bajo licencia Apache 2 a finales de 2015.
Desde entonces, el impacto de TensorFlow en la comunidad ha sido enorme,
convirtiéndose en la piedra angular de multitud de nuevos productos
innovadores que se apoyan en esta tecnología de Google sin coste adicional.
Desde startups de Silicon Valley hasta grandes corporaciones están usando
TensorFlow en sus proyectos. Algunos ejemplos son Uber, Airbnb,
Twitter, Airbus o IBM.
Las aplicaciones de TensorFlow son inimaginables. Además de en
tecnología, las ventajas de este software también revierten en otros campos,
como la medicina o las artes. Por ejemplo, se está usando en la detección de
diabetes a través de retinopatías, también en el mundo de la creación artística
para la composición musical, incluso en detección y combinación de estilos
artísticos en la pintura.
¿Por qué TensorFlow?
¿Por qué se eligió TensorFlow como nombre para esta potente herramienta?
Es una de las primeras dudas que surgen. El motivo es que la principal
estructura de datos que se maneja en TensorFlow son los “tensores”, con un
“tensor” nos referimos a un conjunto de valores primitivos, por ejemplo
números flotantes o enteros, organizados en un array de 1 o N dimensiones, el
rango del “tensor” sería el número de dimensiones, por ejemplo:
3: un único número sería un tensor de rango 0.
[1. ,2., 3.]: un array sencillo sería un tensor de rango 1.
[[1., 2., 3.], [4., 5., 6.]]: una matriz de 2×3 sería un tensor de rango 2.
[[[1., 2., 3.]], [[7., 8., 9.]]]: este sería un ejemplo de un tensor de rango 3 con
dimensiones 2x1x3.
Usando tensores representaremos la información de nuestro problema, y sobre
estas estructuras de datos aplicaremos algoritmos que harán “fluir” estos datos
aplicando diferentes operaciones y transformaciones sucesivamente, como por
ejemplo en las diferentes capas de una red neuronal como veremos más
adelante, hasta conseguir el resultado esperado.
Un ejemplo aplicado
Vamos a ver un ejemplo aplicado de cómo podríamos usar una red neuronal
profunda con TensorFlow en un problema de clasificación. Para ello usaremos
un problema clásico, definido en 1936 por el biólogo y estadístico Ronald
Fisher: la clasificación de la flor Iris.
Fisher recopiló en igualdad de condiciones datos morfológicos de tres
variantes de flor iris:
Iris setosa.
Iris virginica.
Iris versicolor.
Las diferencias morfológicas entre cada una de las especies son pequeñas, por
lo que no es trivial distinguir una especie de otra. Lo que pretendemos es
entrenar nuestra red neuronal con esta información, para que aprenda
automáticamente de estos datos y que nos clasifique de forma correcta nuevas
observaciones de flores diciéndonos de qué especie son.
En el siguiente notebook, generado con Jupyter, tenemos el código completo
necesario para ejecutar esta red neuronal: tensorflow-iris.ipynb. Una vez
clonado el repositorio podríamos ejecutarlo en Jupyter de la siguiente forma:
1 $ jupyter notebook tensorflow-iris.ipynb
# Visualizamos los 10 primeros elementos del array “data” que contienen las
medidas de cada flor para las siguientes características: Largo de sépalo,
Ancho de sépalo, Largo de pétalo, Ancho de pétalo.
1 [In] data = iris.data
2 [In] print(data[:10])
14
17 [In] print(target)
18
[Out]
1
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
9
, 0, 0,
2 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0 , 0, 0, 0, 0,
2 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
1 , 1, 1, 1, 1,
2 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
2 , 1, 1, 1, 1,
2 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
3 , 2, 2, 2, 2,
2 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
4 , 2, 2, 2, 2,
25 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])
Partir el dataset
A continuación vamos a dividir el dataset en dos conjuntos, usaremos el 80%
de los datos etiquetados para entrenar la red neuronal mientras que
reservaremos el 20% para chequear cómo de bien se comporta el algoritmo
contrastando el resultado de clasificación que nos dé la red neuronal con el
resultado correcto que tenemos en el array target.
De esta manera podremos obtener una estimación de la precisión del
algoritmo, o lo que es lo mismo: el número de veces que acierta.
Por simplicidad denominaremos “x” a los datos que describen las propiedades
de las flores y llamaremos “y” a la etiqueta que describe la pertenencia de una
flor a una especie u otra.
Para partir el dataset haremos uso de la función “train_test_split” que nos
simplifica la tarea:
# partimos el dataset en dos conjuntos, el de entrenamiento y el de
1
test
[In] x_train, x_test, y_train,
2 y_test = model_selection.train_test_split(data, target,
test_size=0.2, random_state=42)
Así obtenemos (x_train, y_train) con los datos de entrenamiento y por otro
lado (x_test, y_test) con los datos que reservaremos para validar nuestro
modelo.
Entrenar el modelo
Una vez tenemos los datos preparados, estamos en condiciones de construir
nuestra red de neuronas y entrenarla para que aprenda de los datos de
entrenamiento. En esta ocasión vamos a construir una red neuronal usando la
clase DNNClassifier, que nos ofrece una red neuronal profunda (Deep Neural
Network) que usaremos para clasificar.
La estructuraremos en 3 capas, con 10, 20 y 10 neuronas respectivamente, una
configuración de capas y neuronas que empíricamente se ha visto que encaja
bien para obtener una buena precisión en este problema.
En este enlace podemos encontrar más información sobre técnicas y consejos
para configurar una red de neuronas. Por último, indicaremos que el número
de clases es 3, es decir, sabemos que existen 3 subespecies de flor entre las
que podemos clasificar cada flor.
1 [In]
feature_columns = tf.contrib.learn.infer_real_valued_columns_from_inpu
t(x_train)
[In]
2 classifier = tf.contrib.learn.DNNClassifier(feature_columns=feature_co
lumns,
hidden_units=[10, 20
3
, 10],
4 n_classes=3)
Realizar un clasificación
2 [Out] [1]
Por ejemplo, en este caso, hemos pedido a nuestro modelo que haga una
predicción para la flor con características: (6.1, 2.8, 4.7, 1.2) y nos la ha
clasificado como de clase “1”, es decir, de la familia versicolor.
Comprobar la precisión
3 [Out] 0.966667
En este ejemplo hemos obtenido una precisión de 0.966667, lo que significa
que el algoritmo ha acertado en la clasificación de casi todas las flores del
conjunto de test.
Conclusión
Google ha sido pionero desde su nacimiento en el mundo de la Inteligencia
Artificial, impulsando la investigación y el desarrollo en este campo. Con
TensorFlow han dado sin duda un pasito más, impulsando como siempre la
innovación y abriendo el conocimiento a multitud de empresas, universidades,
ingenieros y científicos que basándose en tecnologías abiertas como
TensorFlow conseguirán logros fascinantes en los próximos años.
Inteligencia Artificial
sin comentarios
¿Por qué todo el mundo habla de Inteligencia Artificial? ¿Qué posibilidades
nos ofrece la inteligencia de datos? ¿Cómo está afectando ya a nuestro día a
día? A todas estas preguntas (y algunas más) respondimos en nuestro
tercer TechBrunch: Inteligencia Artificial, el futuro está llegando ya está
aquí.
Después de ver en los anteriores encuentros cuál es el camino hacia la
transformación digital ycuáles son los gigantes digitales que no debemos
perder de vista, creíamos que el siguiente paso era ir más allá y poner foco en
lo realmente importante: el cliente, y hacernos la pregunta de cómo la
Inteligencia Artificial puede enriquecer las relaciones comerciales.
José Ruiz, director de Desarrollo de Negocio de Paradigma Digital, haciendo una demo sobre APIs
de Machine Learning
1 comentario
En los últimos tiempos se está oyendo hablar cada vez más sobre inteligencia artificial,
dispuesta a quedarse ya en nuestras vidas.
La encontramos en nuestras casas, al alcance de la mano, en televisores, domótica,
apps… las empresas cada vez la usan más en diferentes campos como la atención al
cliente o el estudio del comportamiento de los mismos.
Algunos hablan ya de una nueva revolución industrial, pero ¿cómo hemos llegado a este
punto?,¿cuál ha sido la historia de la evolución de la Inteligencia Artificial? ¿qué
acontecimiento y tecnologías han hecho posible que estemos finalmente en la época
dorada de la IA?
Orígenes
El origen de la Inteligencia Artificial como disciplina data de 1956 durante un workshop
que tuvo lugar en Dartmouth College. En esta cita se reunieron durante varias semanas
algunos de los matemáticos y científicos más relevantes del momento, como Marvin
Minsky o John McCarthy(inventor del lenguaje Lisp), que pusieron en común sus ideas
y acuñaron por primera vez el término “Inteligencia Artificial”.
Algunos de los asistentes celebrando el 50 aniversario de la conferencia de Darmouth en 2006.
Inviernos y primaveras
A raíz de la conferencia de Dartmouth se disparó el interés en la investigación en
inteligencia artificial. Algunos de los primeros resultados fueron impresionantes, como
los avances en procesamiento del lenguaje natural o los sistemas de resolución
de problemas basados en heurísticas. Las expectativas eran muy altas y la
inversión se multiplicó, agencias como DARPAinvirtieron millones de dólares de la
época en este campo.
Sin embargo, los resultados no fueron los esperados. Aunque se hicieron grandes
avances académicos y se sentaron las bases de lo que vendría después, las expectativas
estaban demasiado altas y no se valoró adecuadamente la dificultad de los retos que
había por delante.
La tecnología estaba inmadura en muchos aspectos. Así que, a principios de los 70,
llegó una crisis conocida como “el primer invierno de la inteligencia artificial”, donde
la inversión cayó notablemente y los avances se ralentizaron. La mayoría de
proyectos de inteligencia artificial no pasaban de ser “juguetes” o pruebas de
concepto.
Fotograma de la película ‘2001: una odisea del espacio’ (año 1968).
Conclusiones y futuro
Parece que por fin la inteligencia artificial ha llegado su punto de madurez. Cada
día que pasa surgen nuevas aplicaciones fascinantes, pero también nuevos temores e
incertidumbres. ¿Hasta dónde llegará la inteligencia de las máquinas?, ¿en el futuro los
trabajos serán realizados por máquinas inteligentes o surgirán nuevos trabajos para las
personas gracias a la inteligencia artificial?, ¿podría ser un peligro para el ser humano la
inteligencia artificial?
Mucho se ha especulado en la literatura o el cine sobre estos temas durante el siglo XX,
pero la diferencia hoy en día es que el debate no es ciencia ficción, sino que está en la
calle. Un buen ejemplo son los diferentes puntos de vista y la discusión que
mantienen Mark Zuckerberg, fundador de Facebook y Elon Musk, fundador
de Tesla y SpaceX, sobre el tema en las redes sociales.
Otras personalidades relevantes como Bill Gates y Steven Hawking se han unido a este
debate público. Sin duda hay aspectos éticos que debemos tener en cuenta en el debate y
riesgos que no podemos obviar.
Manuel Zaforas
Comentarios
1. Un cóctel explosivo
4 julio, 2018 a las 01:37
Quiero hacer una reflexión. Una máquina que se comporte como un humano, es
inteligente? Voy más allá. Una máquina que se comporte dentro de los parámetros
que podemos llamar “inteligente”, lo es?
Un sistema de reglas sencillas que asocien un país con su capital puede llamarse
sistema inteligente. No crees? O sino cuando tu sobrino de 3 años escucha a su
hermano recitando los países de Europa y sus capitales, y se queda con todos
ellos para después soltartelos a ti uno a uno, dirías…que inteligente es mi chico!!!
Con solo 3 añitos y se ha aprendido todas esas capitales y sus países!!! Eso
mismo lo puedes programar en una máquina.
Pero la realidad es que la inteligencia artificial, como se está tiende hoy, no tiene
sentido si no incorporas el aspecto de “aprender” porque solo así aseguras que el
sistema se adapta a un escenario que realmente es cambiante. Solo así te
aseguras que “no se te olvidó ningún caso en el conjunto de las mil reglas que
programaste”, porque realmente las reglas las infiere el sistema de manera
automática. Es decir, un sistema púede parecer inteligente aún usando 4 reglas
como hace 40 años. Pero no valdrá más que para el caso de uso que fue
programado. Pero para poder extenderse a cosas mucho más complejas, ahí la IA
no tiene mucho sentido sin alguna de las variantes de Machine Learning que hay.
Incluso el swarm computing tiene cierto aspecto de aprendizaje para lograr la
convergencia en ese alineamiento que necesita la red de individuos. Aprendizaje,
esa es la palabra clave.
Hoy por hoy, la IA no es lo que era cuando Turing creó su test, por lo tanto no es
suficiente esa asociación que se hace con lo sofisticado del lenguaje para decidir si
detrás del biombo hay un hombre o una maquina.