La experiencia de un ingeniero de aprendizaje automático en el primer año 12

Autor|Inteligencia artificial Big Data y aprendizaje profundo

Fuente|Ballena de datos

El aprendizaje automático y la ciencia de datos son términos amplios que involucran muchos campos y conocimientos. Lo que hace un científico de datos puede ser muy diferente de otro, y lo mismo ocurre con los ingenieros de aprendizaje automático. El pasado (datos) se utiliza a menudo para comprender o predecir (modelar) el futuro.

Para poner en contexto los puntos mencionados anteriormente, tengo que explicar cuál es mi función. Una vez trabajé en un pequeño equipo de consultoría de aprendizaje automático. Lo hemos hecho en muchas industrias que pueda imaginar, desde la recopilación de datos hasta la limpieza, el modelado y la implementación de servicios. Como el equipo es pequeño, todos tienen muchos títulos.

La vida diaria de un ingeniero de aprendizaje automático:

A las 9 de la mañana, entré a la oficina, saludé a mis compañeros, puse la comida en el frigorífico. , sirvió una taza de café y caminó hacia el escritorio. Luego me siento, miro mis notas del día anterior, abro Slack, leo noticias no leídas y abro enlaces a artículos o publicaciones de blog que le gustaron al equipo. Debido a que este campo se está desarrollando rápidamente, debería leer más cosas de vanguardia.

Normalmente paso un poco de tiempo explorando artículos y publicaciones de blogs después de leer mensajes no leídos, y estudio detenidamente el contenido que es difícil de entender. He de decir que algunos de estos contenidos son de gran ayuda para el trabajo que estoy realizando. En términos generales, la lectura me lleva aproximadamente una hora o más, dependiendo del artículo en sí. Algunos amigos me preguntarán por qué tardó tanto.

En mi opinión, la lectura es la metahabilidad definitiva. Porque tan pronto como haya una mejor manera de hacer lo que estoy haciendo ahora, aprenderé a usarla de inmediato, ahorrando aún más tiempo y energía. Pero hay circunstancias especiales. Si se acerca la fecha límite del proyecto, acortaré mi tiempo de lectura para hacer avanzar el proyecto.

Después de leer, reviso el trabajo del día anterior y mi cuaderno para ver dónde necesito empezar a trabajar y por qué puedo hacerlo. Porque mi cuaderno es un diario.

Por ejemplo, "Para procesar los datos en el formato correcto, ahora necesitamos entrenar los datos en el modelo. Si encuentro dificultades en el trabajo, escribiré algo como esto: "Hay una discrepancia de datos. Luego intentaría arreglar la combinación y combinar para obtener una línea de base antes de probar un nuevo modelo. ”

Alrededor de las 4 de la tarde, organizaré mi código, lo que probablemente implique: ordenar el código desordenado, agregar comentarios y fusionarlo. ¿Por qué hacer esto? Debido a esta pregunta, a menudo me pregunto: ¿Qué pasa si otras personas no pueden entender esto? Si quiero leer este código, ¿qué necesito más? Con esta idea en mente, creo que es particularmente significativo dedicar algo de tiempo a ordenar el código. Alrededor de las 5 p. m., mi código debería cargarse en GitHub.

Este es un día ideal, pero no todos los días. A veces tendrás una gran idea a las 4 p. m., trabajarás en ella y puede que te lleve toda la noche.

Ahora deberías tener una comprensión general de la vida diaria de un ingeniero de aprendizaje automático. A continuación te compartiré mi experiencia:

1. Con los ojos abiertos y cerrados, hay datos.

Muchas veces, los ingenieros de aprendizaje automático se centran en crear mejores modelos en lugar de mejorar los datos utilizados para construir los modelos. Si bien este modelo puede proporcionar resultados interesantes a corto plazo invirtiendo suficiente potencia informática, nunca estará donde queremos que esté.

Cuando eres nuevo en un proyecto, debes dedicar mucho tiempo a familiarizarte con los datos. Porque estar familiarizado con estos datos te permitirá ahorrar más tiempo a largo plazo.

Eso no significa que no debas empezar con los detalles. Como ocurre con cualquier conjunto de datos nuevo, su objetivo debe ser convertirse en un "experto" en el campo. Examine distribuciones, encuentre diferentes tipos de características, valores atípicos, por qué son valores atípicos y más. Si no puede contar la historia de los datos actuales, ¿cómo puede hacer que el modelo funcione mejor con los datos?

Ejemplo del ciclo de vida del análisis de datos exploratorios (acciones realizadas cada vez que se encuentra un nuevo conjunto de datos). Más detalles sobre el análisis de datos exploratorios.

2. La comunicación es más difícil que resolver problemas técnicos.

La mayoría de los obstáculos que encontré no fueron técnicos, sino que estaban relacionados con problemas de comunicación. Por supuesto que existen desafíos técnicos, pero el trabajo de nuestros ingenieros es resolver los problemas técnicos.

Pero nunca subestimes la importancia de la comunicación interna y externa. No hay nada peor que tomar la decisión tecnológica equivocada porque está diseñada para resolver el desafío tecnológico equivocado.

¿Qué pasará?

Externamente, esto se debe a que existe un desajuste entre lo que los clientes buscan y lo que podemos ofrecer. Internamente, dado que muchas personas desempeñan múltiples funciones, es difícil garantizar que todos puedan concentrarse en una sola cosa.

¿Cómo solucionar estos problemas?

Para problemas externos, sólo podemos comunicarnos constantemente con los clientes. ¿Tus clientes entienden lo que tienes para ofrecer? ¿Entiendes las necesidades de tus clientes? ¿Entienden lo que el aprendizaje automático puede y no puede proporcionar? ¿Cómo puedes comunicar tus ideas de manera más efectiva?

Para problemas internos, puedes juzgar la facilidad de la comunicación interna por la cantidad de herramientas de software que utilizamos para resolverlos: Asana, Jira, Trello, Slack, Basecamp, Monday, Microsoft Teams. Uno de los métodos más efectivos que he encontrado es actualizar un mensaje simple al final del día en el canal del proyecto correspondiente.

¿Es perfecto? No, pero parece estar funcionando. Me dio la oportunidad de reflexionar sobre lo que estaba haciendo, contarles a todos los que necesitaban apoyo para mi próximo trabajo e incluso recibir sus consejos.

No importa qué tan buen ingeniero seas, tu capacidad para mantener y adquirir nuevos negocios está relacionada con tus habilidades de comunicación.

3. Estabilidad>Tecnología de última generación

Ahora surge un problema del lenguaje natural: clasificar el texto en diferentes categorías, el objetivo es que el usuario envíe un fragmento. de texto al servicio y lo categoriza automáticamente en una de dos categorías. Si el modelo no confía en la predicción, pase el texto a un clasificador humano, con una carga diaria de entre 1000 y 3000 solicitudes.

Bert fue muy popular el año pasado. Pero sin la computación a escala de Google, usar BERT para entrenar un modelo para resolver el problema que queremos resolver sigue siendo complicado, porque es necesario modificar muchas cosas antes de entrar en producción. En su lugar, utilizamos otro enfoque, ULMFiT. Aunque no es el más avanzado, aún podemos obtener resultados satisfactorios y es relativamente fácil de usar.

4. Los dos errores más comunes para los principiantes en el aprendizaje automático

Hay dos errores al aplicar el aprendizaje automático a la producción real: uno es la brecha entre el trabajo del curso y el trabajo del proyecto; la brecha entre el modelo en el cuaderno y el modelo de producción (implementación del modelo).

Tomé cursos de aprendizaje automático en línea y completé una maestría en IA. Pero incluso después de completar muchos de los mejores cursos, cuando comencé a trabajar como ingeniero de aprendizaje automático, descubrí que mis habilidades se basaban en la columna vertebral estructurada de los cursos y que los proyectos no estaban tan organizados como los cursos.

Me faltan muchos conocimientos específicos que no se pueden aprender en el curso, como cómo cuestionar datos, qué datos explorar y qué datos usar.

¿Cómo suplir esta carencia? Tengo la suerte de estar entre los mejores de Australia, pero también estoy dispuesto a aprender y cometer errores. Por supuesto, equivocarse no es el objetivo, pero para tener razón hay que descubrir qué es lo que está mal.

Si está aprendiendo aprendizaje automático a través de un curso, continúe tomando el curso, pero necesitará aprender lo que está aprendiendo a través de sus propios proyectos para compensar las deficiencias del curso.

¿En cuanto a cómo implementar? Todavía no soy muy bueno en esto. Afortunadamente, noté una tendencia: la ingeniería de aprendizaje automático y la ingeniería de software están convergiendo. Con servicios como Seldon, Kubeflow y Kubernetes, el aprendizaje automático pronto se convertirá en una parte más del conjunto. Crear un modelo en Jupyter es fácil, pero ¿cómo ponerlo a disposición de miles o incluso millones de personas? Esto es en lo que deberían pensar los ingenieros de aprendizaje automático, y esta es también la premisa para que el aprendizaje automático cree valor. Sin embargo, según discusiones recientes en Cloud Native, las personas ajenas a las grandes empresas no saben cómo hacer esto.

El 5,20% del tiempo

El 20% del tiempo, es decir, dedicamos el 20% del tiempo a estudiar. Hablando objetivamente, el aprendizaje es un término relativamente vago, siempre que se trate de aprendizaje automático, puede incluirse en el alcance del aprendizaje y las empresas relacionadas deben seguir aprendiendo. Como ingeniero de aprendizaje automático, comprender el negocio puede mejorar enormemente la eficiencia de su trabajo.

Si la fortaleza de tu negocio reside en lo que haces mejor ahora, entonces tu negocio futuro depende de que continúes haciendo lo que mejor sabes hacer, lo que significa que necesitas seguir aprendiendo.

6. Vale la pena leer uno de cada diez artículos, pero rara vez se utiliza.

Este es un indicador aproximado.

Sin embargo, al explorar cualquier conjunto de datos o modelo, rápidamente descubrirá que esta regla es universal. En otras palabras, es posible que obtenga 10 artículos fundamentales por año entre miles de presentaciones. Entre estos 10 artículos fundamentales, 5 pueden provenir de la misma institución o individuo.

No puedes estar al día con cada nuevo avance, pero puedes aplicarlos con una base sólida de principios fundamentales que han resistido la prueba del tiempo.

El siguiente es el tema de la exploración y el desarrollo.

7. Sé tu mayor escéptico.

El problema de la exploración y el desarrollo es el dilema entre probar algo nuevo y algo que ya funciona. Puedes lidiar con estos problemas convirtiéndote en tu mayor escéptico. Sigue preguntándote, ¿cuáles son los beneficios de elegir estos en lugar de los antiguos?

Explotación

En general, es fácil ejecutar el modelo que ha utilizado y obtener números de alta precisión que luego puede informar al equipo como una nueva línea de base. Pero si obtienes un buen resultado, recuerda revisar tu trabajo y pedirle a tu equipo que vuelva a hacer lo mismo. Como eres ingeniero, debes tener esta conciencia.

Exploración

Dedicar el 20% de tu tiempo a la exploración es una buena decisión, pero 70/20/10 podría ser mejor. Esto significa que debe dedicar el 70% de su tiempo al producto principal, el 20% de su tiempo al desarrollo secundario del producto principal y el 10% de su tiempo a proyectos lunares (cosas que utilizará más adelante), aunque estas cosas pueden No funcionará de inmediato. Me avergüenza decir que nunca he practicado esto en mi rol, pero esta es la dirección que estoy desarrollando.

8. Los "problemas de juguetes" son muy útiles.

Los problemas de juguetes pueden ayudarte a comprender muchos problemas, especialmente a resolver un problema complejo. Comience configurando una pregunta simple. Esta pregunta puede ser una pequeña parte de sus datos o puede ser un conjunto de datos no relacionado. Encuentre una solución a este problema y luego generalícela a todo el conjunto de datos. En equipos pequeños, el truco consiste en abstraer el problema y luego organizarlo.

9. Pato de goma

Si tienes un problema, sentarte y mirar el código puede resolverlo o no. En este momento, si lo discute con sus colegas y finge que son sus patitos de goma, el problema puede resolverse fácilmente.

"Ron, estoy intentando iterar a través de esta matriz, recorrer otra matriz y realizar un seguimiento de los estados, y luego quiero combinar esos estados en una lista de tuplas".

"Ciclismo ¿Por qué no vectorizar? ”

“¿Puedo hacer esto?”

“Intentémoslo”

10. El número de modelos construidos A partir de 0 es decreciente.

Esto tiene que ver con la convergencia de la ingeniería de aprendizaje automático y la ingeniería de software.

A menos que su problema de datos sea muy específico, muchos problemas son similares, como la clasificación, la regresión, el pronóstico de series temporales y las recomendaciones.

Servicios como Google y AutoML de Microsoft están poniendo el aprendizaje automático de primer nivel a disposición de cualquiera que pueda cargar un conjunto de datos y seleccionar variables objetivo. Para los desarrolladores, existen bibliotecas como fast.ai que pueden proporcionar los modelos más avanzados con unas pocas líneas de código, así como varias animaciones de modelos (un conjunto de modelos prediseñados), como PyTorch hub, TensorFlow Hub, proporcionados. La funcionalidad es la misma.

Esto significa que no necesitamos conocer los principios más profundos de la ciencia de datos y el aprendizaje automático, solo necesitamos conocer sus principios básicos. Lo que debería preocuparnos más es cómo aplicarlos a problemas prácticos. para crear valor.

11. ¿Matemáticas o código?

Para los problemas de los clientes con los que trato, todos nos centramos en el código, y todos los códigos de ciencia de datos y aprendizaje automático son Python. A veces incursiono en las matemáticas mirando un documento y copiándolo, pero la mayoría de los marcos existentes incluyen matemáticas. Esto no quiere decir que las matemáticas sean innecesarias. Después de todo, el aprendizaje automático y el aprendizaje profundo son formas de matemáticas aplicadas.

Dominar las operaciones de matrices mínimas, algo de álgebra lineal y cálculo, especialmente la regla de la cadena, es suficiente para convertirse en un practicante del aprendizaje automático.

Recuerde, la mayoría de las veces, o más bien el objetivo de la mayoría de los profesionales, no es inventar un nuevo algoritmo de aprendizaje automático, sino mostrar a los clientes si el potencial aprendizaje automático ayudará a su negocio.

12. Lo que hiciste el año pasado puede no ser válido el año que viene.

Esta es una tendencia importante y esta situación se está volviendo cada vez más obvia debido a la integración de la ingeniería de software y la ingeniería de aprendizaje automático.

Pero es por eso que te metiste en esta industria. El marco cambiará y varias bibliotecas prácticas cambiarán, pero las estadísticas básicas, la probabilidad y las matemáticas permanecerán sin cambios. El mayor desafío sigue siendo: cómo aplicarlos para crear valor.

¿Y ahora qué? Debería haber muchos pozos que explorar en el camino de crecimiento de los ingenieros de aprendizaje automático. Si eres novato, basta con dominar estos 12 primero.