Ya existe una gran cantidad de artículos que enumeran herramientas confiables de aprendizaje automático con descripciones detalladas de su funcionalidad. Nuestro objetivo, sin embargo, fue obtener la opinión de expertos de la industria.
Y es por eso que entrevistamos a profesionales de la data science: gurús, realmente - con respecto a las herramientas útiles que eligen para su proyectos.
Los especialistas que contactamos tienen diversos campos de experiencia y están trabajando en compañías como Facebook y Samsung.
Algunos de ellos representan nuevas empresas de IA (Objection Co, NEAR.AI y Respeecher), algunos enseñan en universidades (Kharkiv National University of Radioelectronics). El equipo de data science de AltexSoft también se unió a la discusión.
Los lenguajes de aprendizaje automático más populares
Estás en un restaurante étnico y no estás Familiarizados con la cultura. Probablemente le hará al camarero algunas preguntas sobre las palabras en el menú, qué significan, incluso antes de averiguar qué utensilios usará. Entonces, antes de hablar sobre las herramientas favoritas de los data scientists, averigüemos qué lenguajes de programación utilizan.
Python: un lenguaje popular con bibliotecas de aprendizaje de datos y análisis de datos de alta calidad
Python, un lenguaje de uso general preferido para Su legibilidad, buena estructura y una curva de aprendizaje relativamente suave continúan ganando popularidad.
De acuerdo con la Encuesta anual de desarrolladores realizada por Stack Overflow realizada en enero, Python puede denominarse el lenguaje de programación principal de mayor crecimiento.
Está clasificado como el séptimo idioma más popular (38.8 por ciento), y ahora está un paso por delante de C # (34.4 por ciento).
Jefe de investigación en Respeecher Grant Reaber que se especializa en Deep Learning aplicado al habla reconocimiento, usa Python como “ casi todo el mundo lo usa actualmente para Deep Learning .
Swift para TensorFlow suena como un proyecto genial, pero esperaremos hasta que sea más maduro antes de pensar en usarlo, “concluye Grant.
Co-fundador de la startup NEAR.AI que anteriormente administró un equipo en Google Research sobre Deep Learning para NLU Illia Polosukhin también se apega a Python:
“Python fue siempre un lenguaje de análisis de datos y, con el tiempo, se convirtió en un lenguaje de facto para Deep Learning con todas las bibliotecas modernas creadas para ello. “
Uno de los casos de uso de aprendizaje automático de Python es el desarrollo de modelos y en particular la creación de prototipos.
Líder competente en cdata science en AltexSoft Alexander Konduforov dice que lo usa principalmente como lenguaje para construir modelos de aprendizaje automático.
Vitaliy Bulygin el ingeniero principal de Samsung Ucrania, considera a Python como uno de los mejores idiomas para la creación rápida de prototipos.
“ Durante la creación de prototipos, encuentro la solución óptima y la reescribo en un lenguaje requerido para un proyecto, por ejemplo, C ++, “, explica el especialista.
Investigador de Facebook AI Denis Yarats observa que este lenguaje tiene un increíble conjunto de herramientas para el Deep Learning como el framework PyTorch o la biblioteca NumPy (que veremos más adelante en el artículo).
C ++: un lenguaje de nivel medio utilizado para computación paralela en CUDA
C ++ es un lenguaje flexible, orientado a objetos y de tipo estático basado en el lenguaje de programación C. El lenguaje sigue siendo popular entre los desarrolladores gracias a su confiabilidad, rendimiento y la gran cantidad de dominios de aplicaciones que admite.
C ++ tiene funciones de lenguaje de alto nivel y de bajo nivel, por lo que se considera un lenguaje de programación de nivel medio.
Otra aplicación de este lenguaje es el desarrollo de controladores y software que pueden interactuar directamente con el hardware bajo restricciones de tiempo real.
Y como C ++ es lo suficientemente limpio como para explicar conceptos básicos, se usa para investigación y enseñanza.
Los data scientists usan este lenguaje para tareas diversas pero específicas. Andrii Babii profesor titular de la Kharkiv National University of Radioelectronics (NURE), utiliza C ++ para implementaciones paralelas de algoritmos en CUDA una plataforma de cómputo Nvidia GPU, para acelerar las aplicaciones basadas en en esos algoritmos.
“ Necesito C ++ cuando escribo mis núcleos personalizados para CUDA, ” agrega Denis Yarats.
R: un lenguaje para computación estadística y gráficos
R, un idioma y el entorno para estadísticas, visualizaciones y análisis de datos, es una de las mejores opciones para los data scientists. Es otra implementación del lenguaje de programación S .
R y las bibliotecas escritas en él proporcionan numerosas técnicas gráficas y estadísticas como pruebas estadísticas clásicas, modelos lineales y no lineales, análisis de series de tiempo , clasificación, agrupación en clústeres, etc. Puede ampliar fácilmente el idioma con R paquetes de aprendizaje automático.
El lenguaje permite crear gráficos de alta calidad, incluidas fórmulas y símbolos matemáticos.
Alexander Konduforov observa que aprendizaje automático con R permite un rápido análisis de datos y visualizaciones.
Análisis de datos y herramientas de visualización
Pandas: un análisis de datos de Python análisis de mejora de bibliotecas y modelado
Es hora de hablar un poco sobre Python pandas una biblioteca gratuita con el nombre más lindo. El devoto de la data science Wes McKinney desarrolló esta biblioteca para hacer el análisis y el modelado de datos en Python. Antes de Pandas, este lenguaje de programación funcionaba bien solo para la preparación y munging de datos .
Pandas simplifica el análisis al convertir archivos de datos CSV, JSON y TSV o una base de datos SQL en un marco de datos, un objeto de Python con el aspecto de una tabla de Excel o SPSS con filas y columnas.
Más aún, los pandas se combinan con el kit de herramientas IPython y otras bibliotecas para mejorar el rendimiento y apoyar el trabajo colaborativo.
matplotlib: una biblioteca de aprendizaje automático de Python para visualizaciones de calidad
matplotlib es una biblioteca de gráficos 2D de Python. El trazado es una visualización de datos de aprendizaje automático. matplotlib se origina en MATLAB: su desarrollador John D. Hunter emuló comandos de trazado del software MATLAB de Mathworks.
Aunque está escrito principalmente en Python, la biblioteca se amplía con NumPy y otros códigos, por lo que funciona bien incluso cuando se usa para arreglos grandes.
matplotlib permite generar visualizaciones de calidad de producción con unas pocas líneas de código. El desarrollador de la biblioteca resaltó lo simple que está en uso: “ Si desea ver un histograma de sus datos, no debería necesitar instanciar objetos, métodos de llamada, establecer propiedades, etc. , simplemente debería funcionar . ”
La funcionalidad de la biblioteca se puede ampliar con paquetes de visualización de terceros como seaborn ggpl y ] HoloViews . Los especialistas también pueden agregar características adicionales utilizando Basemap y cartopy kits de herramientas de proyección y mapeo.
Los profesionales de data science notan la flexibilidad y las capacidades de integración de matplotlib. Andrii Babii, por ejemplo, prefiere usar matplotlib con marinos y ggplot2 .
Denis Yarats (Facebook AI Research) dice que elige matplotlib principalmente porque está bien integrado en el conjunto de herramientas Python y se puede usar con el NumPy biblioteca o marco de aprendizaje automático de PyTorch.
Alexander Konduforov y su equipo de AltexSoft también usan matplotlib. Además de numerosas bibliotecas de aprendizaje automático de Python como pandas, así como Plotly que soporta R y Python, el equipo elige dplyr ] tidyr y Shiny bibliotecas R.
“Estas herramientas son de uso gratuito, pero hay que saber programar al menos un poco para usarlas, y a veces toma tiempo extra”.
Cuaderno Jupyter: capacidades de trabajo colaborativo
El Jupyter Notebook es una aplicación web gratuita para computación interactiva.
Con él, los usuarios pueden crear y compartir documentos con un código en vivo, desarrollar y ejecutar código, así como presentar y discutir los resultados de las tareas.
Un documento se puede compartir a través de Dropbox, correo electrónico, GitHub y Jupyter Notebook Viewer, y puede contener gráficos y texto narrativo.
El cuaderno es rico en funcionalidad y ofrece varios escenarios de uso.
Se puede integrar con numerosos herramientas, como Apache Spark, pandas y TensorFlow. Admite más de 40 idiomas, incluidos R, Scala, Python y Julia. Además de estas capacidades, Jupyter Notebook es compatible con plataformas de contenedores - Docker y Kubernetes.
Illia Polosukhin de NEAR.AI comparte que usa Jupyter Notebook principalmente para el análisis personalizado personalizado: “ La aplicación permite hacer cualquier dato o modelo. Análisis rápido, con la capacidad de conectarse a un kernel en un servidor remoto. También puede compartir un cuaderno resultante con sus colegas. ”
Tableau: potentes capacidades de exploración de datos y visualización interactiva
Tableau es una herramienta de visualización de datos utilizada en data science e inteligencia comercial. Una serie de características específicas hacen que este software sea eficiente para resolver problemas en diversas industrias y entornos de datos.
A través de la exploración y el descubrimiento de datos, el software Tableau extrae información de los datos rápidamente y los presenta en formatos comprensibles. No requiere excelentes habilidades de programación y se puede instalar fácilmente en todo tipo de dispositivos. Si bien se debe escribir un pequeño script, la mayoría de las operaciones se realizan mediante arrastrar y soltar.
Cómo funciona el menú de arrastrar y soltar de Tableau
Tableau admite tiempo real El análisis y la integración en la nube (es decir, con AWS, Salesforce o SAP) permite combinar diferentes conjuntos de datos y administración de datos centralizada.
La simplicidad de uso y su conjunto de características son las razones por las que los data scientists eligen esta herramienta.
“Tableau tiene muchas funciones integradas y no requiere codificación. Puede realizar una gran cantidad de preprocesamiento de datos, análisis y visualización en la interfaz de usuario, lo que ahorra mucho esfuerzo. Sin embargo, tiene que comprar una licencia ya que no es un producto gratuito “, dice Alexander Konduforov.
Marcos generales para aprendizaje automático
NumPy: un paquete de extensión para computación científica con Python
Anteriormente mencionado NumPy es un paquete de extensión para realizar computación numérica con Python que reemplazó a NumArray y Numeric. Es compatible con matrices multidimensionales (tablas) y matrices. Los datos de aprendizaje automático están representados en matrices.
Y una matriz es una matriz bidimensional de números. NumPy contiene funciones de transmisión como herramientas para integrar C / C ++ y el código Fortran. Su funcionalidad también incluye la transformada de Fourier, el álgebra lineal y las capacidades de números aleatorios.
Los profesionales de data science pueden usar NumPy como un contenedor efectivo para el almacenamiento de datos genéricos multidimensionales. Gracias a la capacidad de definir tipos de datos arbitrarios, NumPy se integra fácil y rápidamente con numerosos tipos de bases de datos.
scikit-learn: marco de aprendizaje automático fácil de usar para numerosas industrias
scikit-learn es una biblioteca de código abierto de aprendizaje automático de Python construida sobre SciPy (Scientific Python), NumPy y matplotlib.
Inicialmente en 2007 por David Cournapeau como un proyecto Google Summer of Code, scikit-learn actualmente es mantenido por voluntarios. A la fecha, 1,092 personas han contribuido a ello.
La biblioteca está diseñada para uso de producción. La simplicidad, el código cualitativo, las opciones de colaboración, el rendimiento y la extensa documentación escrita en lenguaje sencillo contribuyen a su popularidad entre varios especialistas.
scikit-learn proporciona a los usuarios una serie de algoritmos bien establecidos para el aprendizaje supervisado y no supervisado. El experto en ciencias de datos Jason Brownlee de Machine Learning Mastery señala que la biblioteca se centra en los datos de modelado, pero no en su carga, manipulación y resumen. Sugiere usar NumPy y pandas para estas tres características.
Denis Yarats usa NumPy, pandas y scikit-learn para aprendizaje automático general:
“ Me gusta su simplicidad y transparencia. También ayuda que estas herramientas se hayan adoptado ampliamente y hayan sido probadas durante muchos años por muchas personas. ”
” El equipo de data science de AltexSoft utiliza principalmente bibliotecas de Python como scikit-learn y xgboost para tareas de clasificación y regresión “, observa Aleksander.
Andrii Babii prefiere usar scikit-learn con bibliotecas y paquetes de idiomas R . “ Estoy usando esta combinación porque es de código abierto, tiene funciones de gran alcance y se complementan entre sí, ” explica el data scientist.
NLTK: plataforma de procesamiento de datos en lenguaje humano basada en Python
NLTK es una plataforma para el desarrollo de programas Python para trabajar con lenguaje humano.
Aleksander Konduforov prefiere esta herramienta para las tareas de la PNL.
“NLTK es prácticamente una biblioteca estándar en Python para el procesamiento de texto que tiene muchas características útiles.
Por ejemplo, diferentes tipos de texto, procesamiento de oraciones y palabras, parte del etiquetado del habla, análisis de la estructura de la oración, reconocimiento de la entidad nombrada, clasificación del texto, análisis del sentimiento y muchos otros.
Todas estas bibliotecas son gratuitas y proporcionan suficiente funcionalidad para resolver la mayoría de nuestras tareas “, las notas del experto.
Marcos de aprendizaje automático para el modelado de redes neuronales
TensorFlow: marco flexible para aprendizaje automático a gran escala
TensorFlow es una biblioteca de software de código abierto para aprendizaje automático y la investigación de redes neuronales profundas. Desarrollada y lanzada por Google Brain Team dentro de la organización AI de Google en 2015.
Una característica importante de esta biblioteca es que los cálculos numéricos son hecho con gráficos de flujo de datos que consisten en nodos y aristas.
Los nodos representan operaciones matemáticas y los bordes son matrices de datos multidimensionales o tensores en las que se realizan estas operaciones.
Visualización del flujo de datos entre operaciones en TensorFlow
TensorFlow es flexible y se puede utilizar en varios Plataformas de computación (CPU, GPU y TPU) y dispositivos, desde equipos de escritorio a clústeres de servidores a sistemas móviles y de borde. Se ejecuta en Mac, Windows y Linux.
Otra ventaja de este marco es que funciona tanto para investigación como para tareas recurrentes de aprendizaje automático.
TensorFlow es rico en herramientas de desarrollo, especialmente para Android. El ingeniero jefe de Samsung Ucrania, Vitaliy Bulygin, sugiere: “ Si necesita implementar algo en Android, use TensorFlow “.
Curtis Boyd director general de Objection Co, proveedor de una estrategia automatizada de eliminación de revisiones erróneas para empresas, dice que su equipo eligió hacer aprendizaje automático con TensorFlow porque es de código abierto y muy fácil de integrar con.
TensorBoard: una buena herramienta para la visualización de capacitación de modelos
TensorBoard es un conjunto de herramientas para la representación gráfica de diferentes aspectos y etapas de aprendizaje automático en TensorFlow.
La herramienta TensorBoard lee los archivos de eventos de TensorFlow que contienen datos de resumen (observaciones sobre las operaciones específicas de un modelo) que se generan mientras TensorFlow se está ejecutando .
Una estructura de modelo mostrada con gráficos permite a los investigadores asegurarse de que los componentes del modelo estén ubicados donde sea necesario y estén conectados correctamente.
Representación gráfica de un modelo en TensorBoard
Con el visualizador gráfico, los usuarios pueden explorar diferentes capas de abstracción del modelo, acercando y alejando cualquier parte del esquema.
Otro beneficio importante de la visualización de TensorBoard es que los nodos de los mismos tipos y estructuras similares se pintan con los mismos colores.
Los usuarios también pueden mirar colorear por dispositivo (CPU, GPU o una combinación de ambos), resaltar un nodo específico con la función de “entradas de traza” y visualizar uno o varios gráficos a la vez.
Este enfoque de visualización hace que TensorBoard una herramienta popular para la evaluación de desempeño de modelos, especialmente para modelos de estructuras complejas como redes neuronales profundas.
Grant Reaber señala que TensorBoard facilita la supervisión del entrenamiento de modelos. Grant y su equipo también usan esta herramienta para visualizaciones personalizadas.
Illia Polosukhin también elige TensorBoard.
“ TensorBoard muestra métricas durante el desarrollo del modelo y permite tomar una decisión con respecto a un modelo. Por ejemplo, es muy cómodo monitorear cómo se comporta un modelo al ajustar sus hiperparámetros y elegir el que mejor se desempeña, “
Además de mostrar las métricas de rendimiento, TensorBoard puede mostrar a los usuarios mucha otra información como histogramas. , audio, texto, datos de imagen, distribuciones, incrustaciones y escalas.
PyTorch: herramienta fácil de usar para la investigación
PyTorch es un marco de aprendizaje automático de código fuente para redes neuronales profundas que admiten y acelera las GPUs. Desarrollada por el equipo de Facebook junto con ingenieros de Twitter, SalesForce, NRIA, ENS, ParisTech, Nvidia, Digital Reasoning e INRIA, la biblioteca se lanzó por primera vez en octubre de 2016.
PyTorch se basa en el marco de Torch, pero a diferencia del antecesor escrito en Lua, es compatible con Python de uso común.
PyTorch fue desarrollado con la idea de proporcionar una experiencia de modelado lo más rápida y flexible posible.
Vale la pena mencionar que el flujo de trabajo en PyTorch es similar al de NumPy una biblioteca de computación científica basada en Python.
Una gráfica computacional dinámica es una de las características que hacen a esta biblioteca más popular. En la mayoría de los marcos como TensorFlow, Theano, CNTK y Caffe, los modelos se construyen de una forma estática .
Un data scientist debe cambiar toda la estructura de la red neuronal - reconstruirla desde cero - para cambiar la forma en que se comporta.
PyTorch lo hace más fácil y más rápido. El marco permite cambiar el comportamiento de la red de manera arbitraria sin demora ni sobrecarga.
La capacidad de construir modelos dinámicamente (durante el tiempo de ejecución) es uno de los factores que impulsan el uso de PyTorch, concuerda Denis Yarats de Facebook AI Research .
“ Yo uso PyTorch, es lo mejor. Probé muchos marcos Deep Learning en el pasado, incluyendo TensorFlow, Torch, Keras y Theano. Ninguno de ellos es tan simple y poderoso como PyTorch. Mientras trabajo en la investigación de Deep Learning, valoro la capacidad de modificar y depurar mis modelos rápidamente . “
Illia Polosukhin y Vitaliy Bulygin también enfatizan la conveniencia y la flexibilidad de la investigación posible gracias al uso del gráfico computacional dinámico , que es la razón por la que eligen PyTorch como su herramienta de Deep Learning.
Keras: biblioteca liviana y fácil de usar para la creación rápida de prototipos
Keras es una biblioteca de Deep Learning de Python capaz de ejecutarse rematar Theano, TensorFlow o CNTK. Francois Chollet, miembro del equipo Google Brain, lo desarrolló para brindar a los data scientists la capacidad de ejecutar experimentos de aprendizaje automático.
La biblioteca puede ejecutarse en GPU y CPU y es compatible con redes recurrentes y convolucionales, así como con sus combinaciones.
La creación rápida de prototipos es posible con la ayuda de la interfaz comprensible de alto nivel de la biblioteca, la división de redes en secuencias de módulos separados que son fáciles de crear y agregar.
Según los data scientists, la velocidad de modelado es una de las Fortalezas de esta biblioteca. Vitaliy Bulygin de Samsung señala que Keras con TensorFlow permite una implementación de red neuronal muy rápida.
Él sugiere quedarse con Keras si su conjunto de herramientas es suficiente para una tarea en particular. Si no es así, es mejor hacer una investigación con PyTorch.
Caffe2: biblioteca de DeepLearning con soporte de implementación móvil
Caffe2 una versión mejorada de Caffe es una máquina abierta el marco de aprendizaje creado por Facebook para el Deep Learning y flexible de modelos complejos y la compatibilidad con la implementación móvil.
Los usuarios tienen varias opciones para organizar el cálculo con la biblioteca, que se puede instalar y ejecutar en un escritorio, en la nube, o en un centro de datos.
La biblioteca tiene API nativas de Python y C ++ que funcionan alternativamente, lo que permite a los desarrolladores crear prototipos sobre la marcha y optimizarlos más tarde.
Los modelos implementados pueden ejecutarse rápidamente en dispositivos móviles mediante la integración con Xcode, Visual Studio, y Android Studio IDE. Este marco también permite escalar hacia arriba o hacia abajo sin necesidad de refactorizar el diseño.
La creación rápida de prototipos, la investigación y el desarrollo son los beneficios de usar Caffe2.
“Lo estoy usando porque tiene una infraestructura de código clara y es fácil extenderlo para buscar nuevos métodos ” resume un profesor senior de NURE Andrii Babii.
Herramientas de Big Data
Apache Spark: la herramienta para la computación distribuida
Usar Apache Spark para el procesamiento de big data es como conducir un Ferrari: es más rápido, más conveniente y permite explorar más en la misma cantidad de tiempo en comparación con un regular.
Apache Spark es un marco distribuido de computación en clúster de código abierto que generalmente está equipado con su motor de procesamiento de datos en memoria.
La funcionalidad de este motor incluye ETL (Extraer, Transformar y Cargar), aprendizaje automático, análisis de datos, procesamiento por lotes y procesamiento continuo de datos.
La capacidad de procesamiento continuo de Apache Spark es una de las razones por las cuales el investigador de Facebook AI Denis Yarats lo usa:
“Esta herramienta usa la concepción de procesamiento de flujo / flujo de datos para la computación distribuida y permite escalar soluciones a grandes grupos. “
Mientras se escribe principalmente en Scala, el motor viene con una alta API de desarrollador de nivel para Java, Python, Clojure y R.
Una variedad de opciones de ejecución (localmente, en clústeres o en la nube, o local) y la capacidad de acceder a datos desde cualquier fuente de datos son otras características beneficiosas de Apache Spark.
MemSQL: una base de datos diseñada para aplicaciones en tiempo real
MemSQL es la plataforma de base de datos SQL en memoria distribuida para análisis en tiempo real.
Ingiere y analiza los datos de transmisión y ejecuta consultas a pequeña escala para permitir el trabajo de aplicaciones en tiempo real como mensajeros instantáneos, juegos en línea o soluciones de almacenamiento comunitario.
MemSQL admite consultas para relacional SQL Geospatial o JSON .
Dicho brevemente, la plataforma puede proporcionar base de datos, procesamiento de datos en vivo y almacén de datos. servicios al mismo tiempo ayudando a los usuarios a lograr la eficiencia de los datos.
“ MemSQL le permite estar despreocupado por el tamaño de los datos y trabajar como si fuera una base de datos SQL regular “, enfatiza Illia Polosukhin desde NEAR .AI.
Palabra final
Nos beneficiamos al comparar herramientas de Machine Learning y bibliotecas definiendo sus casos de uso y requisitos. Mucho mejor para nosotros en la preparación. Estamos planeando un post sobre soluciones de IA en aerolíneas el próximo mes.
Por lo tanto, si usted es un practicante de aprendizaje automático activo, no dude en compartir con nosotros qué herramientas prefiere en la sección de comentarios o contactándonos directamente.
También nos complacería compartir sus comentarios.