Programación estadística en aprendizaje automático: contraste entre Pyro y TFP

Publicado: 2021-01-29

En el aprendizaje automático, la programación estadística o probabilística se realiza utilizando 2 lenguajes de programación, como se muestra a continuación. Dando una breve introducción, en palabras simples, la programación probabilística es una herramienta para el modelado estadístico. Básicamente significa resolver problemas utilizando un lenguaje mediante el cual podemos hacer y diseñar modelos estadísticos como solución.

Se trata de aplicar los conceptos de estadística utilizando lenguajes de programación informática. Usando modelos probabilísticos, uno puede inferir cómo nuestras creencias sobre los hiperparámetros del modelo pueden cambiar la salida.

Tabla de contenido

Famosos lenguajes de programación probabilística

1. Piro

Pyro es un lenguaje de programación probabilístico (PPL) que está escrito en Python y es compatible con Pytorch en el backend. Con Pyro, tenemos acceso a modelos probabilísticos profundos, modelos bayesianos y combinamos lo mejor de los algoritmos modernos de aprendizaje profundo. Se puede instalar de la siguiente manera:

pip3 Instalar Pyro-ppl

o para instalarlo desde la fuente use los siguientes comandos:

clon de git https://github.com/pyro-ppl/pyro.git

CD piro

pip instalar .[extras]

Importe Pyro usando una simple línea de código:

importación piro

2. Probabilidad de flujo tensorial (TFP)

TFP es una biblioteca de Python construida sobre TensorFlow que hace posible la combinación de modelos probabilísticos y modelos de aprendizaje profundo en GPU y TPU. Puede ser utilizado por cualquier persona que desee incorporar conocimientos de dominio para comprender y hacer predicciones relevantes. Para instalar TFP, escriba el siguiente comando en su línea de comando o anaconda.

instalación de pip: actualización de la probabilidad de flujo de tensor

TFP se puede usar en código usando la siguiente línea de comando:

importar tensorflow_probability como tfp

Únase al curso de inteligencia artificial en línea de las mejores universidades del mundo: maestrías, programas ejecutivos de posgrado y programa de certificado avanzado en ML e IA para acelerar su carrera.

El contraste entre Pyro y TFP

1. Documentación

La documentación para Pyro y TFP es excelente y abundante, mientras que es menor sobre la explicación de TFP desde la perspectiva de las redes neuronales. En pyro, el módulo pyro.nn presenta implementaciones de módulos de redes neuronales que son útiles en el contexto de la programación probabilística profunda. En TFP, tfp.layers representa capas de redes neuronales con incertidumbre sobre las funciones que representan, extendiendo TensorFlow Layers.

2. Idioma

Los usuarios de TFP y Pyro escriben en python. Sin embargo, la API involucrada en el caso de TFP es extremadamente detallada. Con eso quiero decir que a veces tenemos que escribir más líneas de código para llegar a una solución. Eso puede ser bueno a veces porque tenemos más control sobre todo el programa y malo cuando está disponible en una forma más corta dentro de Pyro.

3. Tiempo de aceleración

Con Pyro, la ejecución del código es más rápida y eficiente, y no necesitará aprender nuevos conceptos. TFP, por otro lado, requiere conceptos como marcadores de posición, alcance variable y sesiones, por lo que lleva más tiempo ejecutarlo.

4. Despliegue

Tanto TFP como Pyro se pueden implementar fácilmente en un lado del servidor a pequeña escala. Para implementaciones móviles y de microcomputadoras o integradas, TensorFlow funciona de manera eficiente, a diferencia de Pytorch. Se requiere un esfuerzo menor para la implementación de TensorFlow en Android e IOS, en comparación con Pytorch.

5. Gráficos

Tensorflow tiene mejores visualizaciones gráficas computacionales, que son autóctonas en comparación con otras bibliotecas como Torch y Theano. Edward se basa en TensorFlow y habilita funciones como gráficos computacionales, capacitación distribuida, integración de CPU/GPU, diferenciación automática y visualización con TensorBoard. Pyro, sin embargo, no proporciona ninguna funcionalidad demostrativa o de visualización.

Interferencia de Edward con TensorBoard, Fuente: Edward

6. Cadena de Markov Montecarlo

TFP implementa una tonelada de algoritmos de cadena de Markov Monte Carlo (MCMC) (como Metropolis, Gibbs, Hamiltonian) cuyo uso es muestrear una distribución de probabilidad y algunos algoritmos de iteración de valor en TensorFlow. Hasta 2018, Pyro no realizó la cadena de Markov Monte Carlo. Se ha actualizado y tiene soporte completo para MCMC, HMC y NUTS.

7. Optimizadores

Al igual que TFP implementa varios optimizadores de TensorFlow, incluidos Nelder-Mead, BFGS y L-BFGS (para determinar problemas de optimización no lineal sin restricciones), Pyro implementa los optimizadores que están presentes en PyTorch. El módulo pyro.optim brinda soporte para la optimización en Pyro . Se puede decir que los dos PPL dependen de sus módulos básicos (TensorFlow y PyTorch).

Fuente

8. Biyectores

En TFP, los biyectores incluyen el cambio de variables para una densidad de probabilidad. Cuando mapeamos de un espacio a otro, también influimos en un mapa de densidades de probabilidad en el espacio inicial a densidades en el espacio de destino.

Pero como estamos mapeando a un espacio diferente, necesitamos rastrear estas cuentas de mapeo en el cálculo de la densidad de probabilidad en el último espacio. Por lo tanto, los biyectores se utilizan para un mapeo suave. En pyro, la documentación no menciona nada sobre los biyectores, así que asumo que no los tienen.

9. Serie temporal

El módulo pyro.contrib.timeseries proporciona una colección de modelos de series de tiempo bayesianos útiles para aplicaciones de pronóstico. Esto se puede lograr haciendo uso del objeto Forecaster existente en Pyro. Después de proporcionar datos de entrada al modelo, simplemente le decimos cómo hacer una predicción informada.

Es así de fácil, solo datos y un marco probabilístico. Sin embargo, TFP utiliza los modelos de series temporales de Tensorflow, como CNN y RNN, junto con su marco para modelos de series temporales estructurales bayesianos (tfp.sts). La serie temporal estructural bayesiana es una interfaz de alto nivel para ajustar modelos de series temporales que aún no se ha lanzado.

Fuente

10. Distribuciones

Es una clase base para construir y organizar propiedades (p. ej., media, varianza) de variables aleatorias (p. ej., Bernoulli, Gaussiana). Un ejemplo puede ser una distribución normal. La mayoría de las distribuciones en Pyro son envolturas delgadas alrededor de las distribuciones de PyTorch. Para obtener detalles sobre la interfaz de distribución de PyTorch, puede consultar torch.distributions.distribution.Distribution. Sin embargo, TFP tiene su módulo tfp.distributions.

Fuente

Fuente

11. Modelos lineales generalizados (GLM)

En estadística, el modelo lineal generalizado es una generalización flexible de la regresión lineal ordinaria que permite variables de respuesta que tienen modelos de distribución de errores distintos de una distribución normal. En TFP, el módulo tfp.glm contiene una interfaz de alto nivel para ajustar modelos de regresión de efectos mixtos. Pyro, sin embargo, no tiene dicho módulo para GLM.

Fuente

Conclusión

Usando estos factores, es seguro concluir que Pyro no difiere tanto de TFP. Ambos están basados ​​en el lenguaje de programación Python. Las API de Python están bien documentadas. Sin embargo, Pytorch tiene un buen tiempo de aceleración y, por lo tanto, es mucho más rápido que TensorFlow. Decidir entre estos dos marcos dependerá de qué tan accesible encuentre el método de aprendizaje para cada uno de ellos. Su selección también dependerá de los requisitos de su organización.

Si está interesado en obtener más información sobre el aprendizaje automático, consulte el Programa PG Ejecutivo en Aprendizaje Automático e IA de IIIT-B y upGrad, que está diseñado para profesionales que trabajan y ofrece más de 450 horas de capacitación rigurosa, más de 30 estudios de casos y asignaciones, IIIT -Estado de exalumno B, más de 5 proyectos prácticos finales prácticos y asistencia laboral con las mejores empresas.

Referencias

Primeros pasos: documentación de Pyro

Módulo: tfp | Probabilidad de TensorFlow

¿Cómo se conecta el aprendizaje automático con las estadísticas y viceversa?

La estadística se utiliza para construir un modelo estadístico con el fin de representar los datos y sacar conclusiones o inferencias de ellos. Mientras que el aprendizaje automático hace uso de este modelo estadístico para obtener una comprensión de los datos y hacer predicciones precisas. Por lo tanto, las estadísticas se utilizan en la construcción de modelos estadísticos para ayudar a llevar a cabo el aprendizaje automático de manera adecuada y sencilla.

¿Puedo conocer el aprendizaje automático sin el conocimiento de las estadísticas?

Las estadísticas y el aprendizaje automático están interconectados. Si conoce las estadísticas, puede representar datos en forma de un modelo estadístico y luego analizar y hacer predicciones con el aprendizaje automático. Por lo tanto, conocer las estadísticas antes del aprendizaje automático será de gran ayuda. Entonces, si solo conoce los conceptos básicos de las estadísticas, está listo para comenzar. No es necesario ser un profesional en estadística para obtener buenos resultados en el aprendizaje automático.

¿TensorFlow es fácil de aprender para un principiante?

TensorFlow es una plataforma de aprendizaje automático de código abierto que se ejecuta de principio a fin. TensorFlow simplifica la creación de modelos de aprendizaje automático tanto para principiantes como para profesionales. Deberá pasar entre seis y doce meses estudiando y perfeccionando sus habilidades de TensorFlow si desea trabajar en el aprendizaje automático. Sin embargo, si conoce los fundamentos de los lenguajes de programación como R y Python, no tendrá demasiados problemas.