¿Qué es TensorFlow?
TensorFlow es una biblioteca de software de código abierto para el aprendizaje automático en el sistema de inteligencia artificial. Fue desarrollado por Google para el Aprendizaje en Máquinas. TensorFlow permite a los investigadores y desarrolladores de software crear y entrenar modelos de aprendizaje automático a gran escala. Se utiliza ampliamente en la investigación y la producción en una variedad de industrias, incluyendo la salud, la automoción, la banca y la tecnología.
En este artículo se profundizará en algunos de los algoritmos más relevantes que se pueden usar en TensorFlow, ya sean por su simplicidad, buen funcionamiento, popularidad o particularidades.
1. REGRESIÓN LINEAL.
Este es un tipo de algoritmo muy simple y se usa para predecir la relación entre variables independientes y dependientes.
Las variables independientes son las que no se ven afectadas por el cambio de las otras variables.
Las variables dependientes son las que cambian en función de la variabilidad de las independientes.
Este algoritmo posiciona las variables en un gráfico bidimensional dónde la “y” es la dependiente y la “x” la o las independientes. Luego dibuja una línea representando la relación entre variables y a través de la ecuación de la recta hace las predicciones.
Ventajas y áreas de mejora.
Ventajas:
La regresión lineal es muy simple y se puede implementar con mucha facilidad con buenos resultados además de que no requiere para su entrenamiento una potencia computacional elevada. Además, sus ecuaciones y cálculos son muy fáciles de entender e interpretar. Por lo tanto, su mayor ventaja es la sencillez.
Áreas de mejora:
Entre sus contras más importantes destaca el riesgo de recaer en “underfitting”, situación que surge cuando el modelo no es capaz de ajustarse correctamente a los datos, sobre todo si estos son complejos ya que es muy difícil hacer que una línea recta se ajuste correctamente a los datos. Debido a ello estos modelos muchas veces tienen poca precisión.
Uso del algoritmo.
Estos algoritmos funcionan muy bien en casos dónde las variables se ajustan muy bien, es decir, variables que tengan una relación lineal. En casos prácticos se puede usar para múltiples aplicaciones como:
Determinar un componente en una disolución, por ejemplo, si se quiere saber cuánto calcio hay en un vaso de leche, se puede realizar un sistema de regresión lineal con datos patrón, es decir, vasos de leche con diferentes concentraciones de calcio y a partir de esos datos se estima el calcio presente en el vaso a estudiar.
También en casos como los litros de gasolina que consumirá un coche en función de su peso, cilindrada y potencia, a partir de datos de otros coches.
Predecir el precio de una vivienda en base a ciertos parámetros, teniendo en cuenta el precio de otras viviendas.
En definitiva, este algoritmo se usa para un amplio rango de predicciones, pero si se desea que estas predicciones sean precisas los datos deben tener una buena correlación lineal.
2. REGRESIÓN LOGíSTICA.
Es un algoritmo muy simple al igual de el de regresión lineal pero que se usa en el caso de que la variable dependiente/s sean binarias, es decir que solo pueda tomar dos valores.
Para poder trabajar con variables binarias este algoritmo usa una función logística o sigmoidea cuyo valor puede se encuentra entre cero y uno, de esa forma se puede predecir la probabilidad de un suceso determinado entre esos dos valores.
Ventajas y áreas de mejora.
Ventajas:
- La regresión logística es fácil de implementar, interpretar y muy eficiente de entrenar.
- No solo proporciona una medida de cuán apropiado es un predictor (tamaño del coeficiente), sino también su dirección de asociación (positiva o negativa).
- Es muy rápido en la clasificación de registros desconocidos.
- Buena precisión para muchos conjuntos de datos simples y funciona bien cuando el conjunto de datos es linealmente separable.
Áreas de mejora:
- Si el número de observaciones es menor que el número de características, no se debe utilizar la regresión logística, de lo contrario, puede provocar un sobreajuste.
- La principal limitación de la regresión logística es la suposición de linealidad entre la variable dependiente y las variables independientes.
- Solo se puede usar para predecir funciones discretas. Por lo tanto, la variable dependiente de la regresión logística está ligada al conjunto de números discretos.
- Es difícil obtener relaciones complejas utilizando la regresión logística. Los algoritmos más potentes y compactos, como las redes neuronales, pueden superar fácilmente a este algoritmo.
Uso del algoritmo.
El algoritmo es muy eficiente en casos donde los datos son linealmente separables. En la vida real puede tener múltiples aplicaciones.
- Predecir si un cliente cumplirá o no con un préstamo de un banco.
- Predecir las condiciones climáticas de un lugar determinado (soleado, lluvioso, …)
- Establecer la probabilidad de que un comprador compre o no un determinado producto.
- Predecir por parte de las empresas si el siguiente trimestre, mes o año ganarán o perderán dinero, en base a su rendimiento actual.
3. ÁRBOLES DE DECISIÓN.
Se basa en árboles de decisiones y se utiliza para predecir la salida de una variable objetivo, este tipo de aprendizaje usa datos etiquetados (con variables conocidas) para hacer las predicciones, los datos se van distribuyendo por los nodos o “ramas” del árbol según sus parámetros hasta alcanzar un nodo terminal, cuando se introduce un nuevo dato este hará el recorrido correspondiente hasta alcanzar su nodo terminal correspondiente, según en que nodo haya caído el dato por similitud con los otros datos del mismo nodo se hace la predicción.
Ventajas y áreas de mejora.
Ventajas:
- Los árboles de decisión son fáciles de entender, interpretar y visualizar
- Pueden manejar de manera efectiva tanto datos numéricos como categóricos.
- Los árboles de decisión requieren poca preparación y normalización de datos
- Funcionan bien, incluso si el modelo real viola los supuestos.
Áreas de mejora:
- La capacidad predictiva de los modelos basados en un único árbol es bastante inferior a la conseguida con otros modelos. Esto es debido a su tendencia al overfitting y alta varianza. Sin embargo, existen técnicas más complejas que, haciendo uso de la combinación de múltiples árboles (bagging, random forest, boosting), consiguen mejorar en gran medida este problema.
- Son sensibles a datos de entrenamiento desbalanceados (una de las clases domina sobre las demás).
- No son capaces de extrapolar fuera del rango de los predictores observado en los datos de entrenamiento.
Uso del algoritmo.
Este algoritmo se usa para resolver problemas de clasificación y regresión y funciona muy bien y con alta precisión en la mayoría de los casos si los datos son de calidad. Algún ejemplo de sus aplicaciones son los siguientes:
Determinar la probabilidad de que un individuo desarrolle una enfermedad específica en función de una serie de parámetros de riesgo como obesidad, consumo de tabaco, colesterol, tensión, etc …
Predecir si es probable que un comprador con una serie de características compre un producto determinado.
Permite saber a qué especie pertenece un animal o planta descubierto ya que en base a sus características busca coincidencias con las características de las diferentes especies.
Predecir el rendimiento de un cultivo en base a los datos anteriores de otros cultivos.
4. BOSQUE ALEATORIO.
Es un algoritmo que ensambla múltiples árboles de decisión para hacer las predicciones, crea varios árboles de decisión en paralelo dónde cada árbol se entrena con un subconjunto aleatorio de características y registros de entrenamiento y luego hace una combinación de los resultados obtenidos por cada uno de ellos para tomar una decisión final, se utiliza la técnica de votación para obtener una predicción más precisa y robusta.
Ventajas y áreas de mejora.
Ventajas:
- Al combinar varios árboles de decisión estos son más resistentes a la variabilidad de los datos y al sobreajuste que los árboles de decisión simples.
- Pude proporcionar mayor nivel de precisión en la predicción de los resultados con respecto al árbol de decisión.
- Puede manejar grandes conjuntos de datos de manera eficiente.
Áreas de mejora:
- Es más difícil de interpretar el cómo se hacen las predicciones ya que involucra muchos árboles de decisión y no es tan fácil de visualizar como un árbol de decisión sólo.
- Consume más tiempo de entrenamiento que el árbol de decisión al ser más complejo.
- Se requieren más recursos computacionales ya que el cálculo es más complejo.
Uso del algoritmo.
Los usos de los árboles de decisión y de los bosques aleatorios son básicamente los mismos, con la diferencia de que en unos casos u otros uno obtiene mejores resultados que otro, en general los bosques aleatorios suelen dar mejores resultados ya que combinan varios árboles de decisión y no son tan propensos al sobreajuste, aun así, depende del problema al cual se está enfrentando, es por ello que es de vital importancia evaluar ambos modelos antes de escoger uno u otro. Algunos ejemplos de aplicaciones en el mundo real de este modelo son los siguientes:
- Aplicaciones médicas: se pueden usar bosques aleatorios para diagnosticar pacientes en base a su historial médico previo. Incluso se revisan registros médicos anteriores para establecer las dosis adecuadas para cada paciente.
- Se usa en bolsa para identificar mercados potenciales para las acciones.
- Comercio electrónico: con este algoritmo se puede predecir las preferencias de los clientes en base a datos de consumo previos.
5. SUPPORT VECTOR MACHINE (SVM).
Este algoritmo tiene como objetivo encontrar un hiperplano dentro de un espacio de características multi-dimensionales que separa clases de datos. Por ejemplo, si se tienen dos clases de datos en un espacio multidimensional, el algortimo localizará a los vectores de soporte que son los puntos más cercanos entre las dos clases y trazará el plano de forma que tenga el mayor margen o distancia entre los vectores, una vez hecho esto, dependiendo de qué lado del plano esté el nuevo dato que se quiere predecir se podrá saber a qué clase pertenece.
Ventajas y áreas de mejora.
Ventajas:
- SVM funciona relativamente bien cuando hay un claro margen de separación entre clases.
- SVM es más efectivo en espacios de alta dimensión.
- SVM es eficaz en los casos en que el número de dimensiones es mayor que el número de muestras.
- SVM es relativamente eficiente en memoria
Áreas de mejora:
- El algoritmo SVM no es adecuado para grandes conjuntos de datos.
- SVM no funciona muy bien cuando el conjunto de datos tiene mucho ruido, es decir, las clases objetivo se superponen.
- En los casos en que la cantidad de características para cada punto de datos exceda la cantidad de muestras de datos de entrenamiento, el SVM tendrá un rendimiento inferior.
- Como el clasificador de vectores de soporte funciona colocando puntos de datos, por encima y por debajo del hiperplano de clasificación, no hay una explicación probabilística para la clasificación.
Uso del algoritmo.
SVM funciona muy bien en trabajos de clasificación, este algoritmo es muy poderoso en aplicaciones en la vida real como las siguientes:
- Dispositivos de detección de rostros: usando imágenes como entrenamiento, SVM clasifica píxeles en imágenes como una cara o no cara.
- Clasificación de texto: se usan datos para categorizar distintos tipos de documentos como, por ejemplo, distinguir artículos de política, deportes, entretenimiento, etc …
- Clasificador de imágenes.
- Aplicaciones médicas: los algortimos SVM has servido para aumentar la precisión en la clasificación de cáncer, clasificación de genes entre otras muchas cosas.
6. REDES NEURONALES CONVOLUCIONALES (CNN)
Este algoritmo consta de las siguientes capas:
Capa de convolución: los datos (por ejemplo, una imagen) se divide en píxeles, cada uno se tratará como un valor (dependiendo de sus características) dentro de una matriz, luego una matriz de filtro de 3×3 se mueve sobre la matriz principal calculando el producto escalar obteniendo el mapa de características.
Capa ReLU: rectifica el mapa de características.
Capa de agrupación: Esta capa reduce la dimensionalidad generando un mapa de características agrupadas. Luego convierte las matrices en un vector lineal.
Capa completamente conectada: el vector se alimenta como entrada a la red neuronal que clasifica e identifica las imágenes.1
Ventajas y áreas de mejora.
Ventajas:
- Las CNN no requieren supervisión humana para la tarea de identificar características importantes.
- Son muy precisos en el reconocimiento y clasificación de imágenes.
- Las redes neuronales convolucionales minimizan el cálculo en comparación con una red neuronal normal.
- Las CNN utilizan el mismo conocimiento en todas las ubicaciones de las imágenes.
Áreas de mejora:
- No logran codificar la posición y orientación de los objetos. Les cuesta clasificar imágenes con diferentes posiciones.
- Se necesitan muchos datos de entrenamiento para que la CNN sea efectiva.
- Las CNN tienden a ser mucho más lentas debido a operaciones como maxpool.
- En caso de que la red neuronal convolucional esté compuesta por múltiples capas, el proceso de entrenamiento podría llevar mucho tiempo si la computadora no tiene una buena GPU.
- Las redes neuronales convolucionales reconocerán la imagen como grupos de píxeles que se organizan en patrones distintos. No los entienden como componentes presentes en la imagen.
Uso del algoritmo.
Este algoritmo es ampliamente usado y aporta muy buenos resultados en el campo de detección de imágenes, teniendo esto en cuenta a continuación se plantean algunos ejemplos prácticos del uso de este algoritmo:
- Procesamiento de imágenes médicas: este algoritmo se ha mostrado muy útil a la hora de procesar este tipo de imágenes, detectando enfermedades en radiografías y resonancias incluso mejor que el propio personal médico ya que estas redes son capaces de detectar con mayor precisión cada aspecto de la imagen.
- Detección de objetos, personas, animales, etc … lo cual tiene una aplicación muy útil en los coches autónomos que deben ser capaces de detectar cualquier obstáculo presente en la carretera y detenerse en caso de que fuera necesario.
- Otro caso de aplicación de la detección de objetos es el famoso robot limpiador de playas o BeachBot, un caso de éxito en Inteligencia artificial que reconoce la basura presente en la arena y a través de una pinza la recoge dejando la playa libre de residuos.
- Subtitulado de imágenes: se puede usar este algoritmo para subtitular o describir imágenes, muy útil para personas con discapacidad tanto auditiva como visual.
7. REDES NEURONALES RECURRENTES (RNN)
Este algoritmo permite manejar datos secuenciales de la siguiente manera:
Los datos entran en la capa de entrada, la procesa y pasa a la capa intermedia que luego de aplicar los cálculos correspondientes tendrá dos caminos posibles, uno es el nodo de salida y el otro es la realización del ciclo de retroalimentación, donde la salida se alimenta a la entrada del estado actual, gracias a ello se pueden procesar datos que se vayan introduciendo en la red y así tener en cuenta los datos que se introducen y los ya introducidos previamente para realizar las predicciones correspondientes.
Ventajas y áreas de mejora.
Ventajas:
- RNN puede procesar entradas de cualquier longitud.
- Se modela un modelo RNN para recordar cada información a lo largo del tiempo, lo cual es muy útil en cualquier predictor de series temporales.
- Incluso si el tamaño de entrada es mayor, el tamaño del modelo no aumenta.
Áreas de mejora:
- Debido a su naturaleza recurrente, el cómputo es lento.
- El entrenamiento de modelos RNN puede ser difícil.
- Si ese está usando relu o tanh como funciones de activación, se vuelve muy difícil procesar secuencias muy largas.
- Propenso a problemas como explosión y desaparición de gradientes.
Uso del algoritmo.
Este algoritmo funciona muy bien en casos de manejo de datos secuenciales, cuándo se quiere predecir el valor de algo en el día de mañana a partir de los datos de hoy y días anteriores. Algunos casos de aplicaciones prácticas de esta red son los siguientes:
- Como ya se ha citado anteriormente la predicción de series temporales es una de sus mejores funcionalidades, esto se puede aplicar en la predicción del precio de una acción en un momento concreto, en la predicción del precio de una vivienda en un momento determinado, etc …
- También es útil para el procesamiento natural del lenguaje en temas como identificar reseñas positivas o negativas de algún producto.
- Se puede usar como máquina traductora, dado una entrada en un idioma concreto, este algoritmo puede traducir la entrada al idioma que se desee y tenga configurado como salida.
8. REDES DE MEMORIA A LARGO PLAZO (LSTM)
Es un tipo de red neuronal recurrente (RNN) que tiene la capacidad de aprender y memorizar información pasada durante largos períodos, por lo tanto, son útiles para la predicción de series de tiempo ya que recuerdan entradas introducidas anteriormente.
Estas redes funcionan de tal forma que olvidan partes irrelevantes del estado anterior, actualizan los valores del estado de la celda y finalmente dan una salida.
Ventajas y áreas de mejora.
Ventajas:
- Son muy buenos en el manejo de dependencias a largo plazo. Esto se debe a su capacidad para recordar información durante largos períodos de tiempo.
- Los LSTM son poco susceptibles al problema del gradiente de desaparición. Esto se debe a que utilizan un tipo diferente de función de activación, conocida como celda LSTM, que ayuda a preservar la información en secuencias largas.
- Finalmente, los LSTM son muy eficientes en el modelado de datos secuenciales complejos. Esto se debe a que pueden aprender representaciones de alto nivel que capturan la estructura de los datos.
Áreas de mejora:
- Son más complicados que los RNN tradicionales y requieren más datos de entrenamiento para aprender de manera efectiva.
- Pueden ser lentos para entrenar en grandes conjuntos de datos. Esto se debe al hecho de que deben aprender los parámetros de las celdas LSTM, que pueden ser computacionalmente intensivos.
- Finalmente, los LSTM pueden no ser apropiados para todos los tipos de datos. Por ejemplo, es posible que no funcionen bien con datos altamente no lineales o con mucho ruido.
8.3. Uso del algoritmo.
Este algoritmo se podría definir como una versión mejorada de los RNN en el aspecto de poseer más memoria y por lo tanto manejar dependencias a muy largo plazo, los casos de aplicación práctica de este algoritmo se detallan a continuación:
- Modelado del lenguaje: este algoritmo es capaz de asignar una probabilidad a una secuencia de palabras, de esa forma puede predecir cual será la siguiente palabra en una oración dada.
- Traducción automática: este algoritmo es muy efectivo en esta tarea ya que puede aprender las dependencias a largo plazo que se requieren para que las traducciones sean lo más precisas posibles.
- Reconocimiento de escritura a mano: consigue reconocer texto escrito a mano a partir de imágenes o documentos escaneados y gracias a que puede recordar dependencias a largo plazo puede reconocer la escritura, aunque esta varíe en estilo, calidad, etc …
- En resumen, cualquier tarea que implique recordar dependencias a largo plazo puede ser resuelta con LSTM, por lo tanto, se pueden agregar a la lista tareas como generadores de respuestas a preguntas, conversión de video a texto o predicción de la estructura secundaria en proteínas.
9. REDES ADVERSARIAS GENERATIVAS (GAN)
Es un algoritmo que funciona a través de la creación de datos falsos que se asemejan a los datos reales y aprende a distinguirlos. Esto lo consigue gracias a sus dos elementos, el generador que genera datos falsos e intentará engañar al discriminador y un discriminador que intentará no ser engañado por el generador.
Durante el entrenamiento inicial, el generador produce datos falsos y el discriminador aprende rápidamente a distinguirlos de los reales, luego la GAN envía los resultados al generador y al discriminador para actualizar el modelo.
Ventajas y áreas de mejora.
Ventajas:
- Las GAN generan datos que se parecen a los datos originales. Si le das una imagen a GAN, generará una nueva versión de la imagen que se verá similar a la imagen original. De igual forma, puede generar diferentes versiones del texto, video, audio.
- Los GAN entran en detalles de los datos y pueden interpretarse fácilmente en diferentes versiones, por lo que es útil para realizar el trabajo de aprendizaje automático.
- Mediante el uso de GAN y el aprendizaje automático, se pueden reconocer fácilmente árboles, calles, ciclistas, personas y automóviles estacionados, y también se puede calcular la distancia entre diferentes objetos.
Áreas de mejora:
- Más difícil de entrenar: debe proporcionar diferentes tipos de datos continuamente para verificar si funciona con precisión o no.
- Generar resultados a partir de texto o voz es muy complejo
Uso del algoritmo.
Este algoritmo se aplica sobre todo por la capacidad del generador para generar imágenes, como, por ejemplo:
- Mejora de las texturas 2D de baja resolución en videojuegos para recrearlos en 4K.
- Mejora de imágenes astronómicas a través de la generación de imágenes mejoradas con respecto a las observaciones reales.
- Generación de imágenes realistas de personajes de dibujos animados para una mejor calidad de visualización.
- Creación de rostros realistas a partir del entrenamiento del algoritmo con rostros reales.
- Creación de imágenes realistas a partir de descripciones textuales.
10. CODIFICADOR AUTOMÁTICO.
Consta de tres componentes, el codificador, el código y el decodificador.
Este algoritmo recibe una entrada como puede ser una imagen que no es claramente visible, faltan partes o está pixelada.
Primero el codificador codifica la imagen y reduce el tamaño de la entrada a una representación más pequeña.
Para terminar, se decodifica la imagen para generar una imagen reconstruida.
Ventajas y áreas de mejora.
Ventajas:
Los codificadores automáticos proporcionan una forma útil de reducir en gran medida el ruido de los datos de entrada, lo que hace que la creación de modelos de aprendizaje profundo sea mucho más eficiente. Se pueden usar para detectar anomalías, abordar problemas de aprendizaje no supervisados y eliminar la complejidad dentro de los conjuntos de datos.
Áreas de mejora:
Los codificadores automáticos no son tan eficientes en comparación con las redes adversas generativas (GAN) en la reconstrucción de una imagen. A medida que aumenta la complejidad de las imágenes, los codificadores automáticos luchan por mantenerse al día y las imágenes comienzan a volverse borrosas.
Uso del algoritmo.
Los codificadores automáticos funcionan bien en casos de recuperación de información a partir de fragmentos o de la misma información distorsionada o con presencia de ruido.
Se describen a continuación algún caso de uso práctico:
- Los codificadores pueden ayudar a limpiar imágenes o archivos de audio ruidosos.
- Repintado de imágenes: se pueden usar estos algoritmos para rellenar espacios de imágenes aprendiendo a reconstruir los píxeles que faltan en función de los píxeles circundantes.
- Detección de anomalías en los datos: a través de la función de pérdida de este algoritmo se puede detectar casos de anomalías en los mercados financieros, transacciones fraudulentas, etc …