¿Cómo puede el aprendizaje automático mejorar el desarrollo de software?

Eres desarrollador y estás interesado en entrar en el aprendizaje automático. ¿Y por qué no? Es un tema candente en este momento, y es un campo fascinante y de rápido crecimiento.

Has leído algunas publicaciones de blog. Intentaste profundizar pero los libros son espantosos. Matemáticas enfocadas. Teoría enfocada. Algoritmo enfocado.

¿Suena familiar? ¿Has probado libros, MOOCs, publicaciones de blog y todavía no sabes cómo comenzar a aprender sobre máquinas?

Intenta algunos cursos de video. Usted se registra y hace un intento honesto en el MOOC de Courrsera Stanford Machine Learning que se cita con frecuencia. No es mucho mejor que los libros y las publicaciones detalladas del blog. No puede ver de qué se trata todo este alboroto, por qué se recomienda a los principiantes.

Es posible que incluso haya intentado algunos conjuntos de datos pequeños, tal vez una competencia de Kaggle de nivel de entrada.

El problema es que no puedes conectar la teoría, los algoritmos y las matemáticas de los libros y cursos al problema. Hay una gran brecha. Un golfo ¿Cómo se supone que debes comenzar con el aprendizaje automático?

Ingeniero de Machine Learning

Cuando piensa en el futuro, una vez que haya captado esta comprensión evasiva del aprendizaje automático, ¿cómo es su trabajo? ¿Cómo estás usando tus nuevas habilidades de aprendizaje automático en tu día a día?

Creo que puedo verlo. Eres un ingeniero de aprendizaje automático. Eres un desarrollador que sabe cómo “hacer” aprendizaje automático.

¿Desea pasar de desarrollador a desarrollador que puede hacer aprendizaje automático?

Escenario 1: el modelo único

Tu jefe se acerca y dice:

Oye, sabes el aprendizaje automático, ¿verdad? ¿Puede usar los datos del cliente del año pasado para predecir qué clientes actuales en nuestra cartera de ventas probablemente convertirán? Quiero usarlo en una presentación ante la junta la próxima semana …

Yo llamo a esto el modelo único.

El problema está bien definido por tu jefe. Ella le da los datos, que son lo suficientemente pequeños como para verlos y comprenderlos en MS Excel si fuera necesario. Ella quiere predicciones precisas y confiables.

Puedes entregar. Y lo más importante, puede explicar todas las advertencias relevantes sobre los resultados.

Escenario 2: el modelo incrustado

Usted y su equipo están recopilando requisitos de las partes interesadas en un proyecto de software. Hay un requisito para que el usuario pueda dibujar formas a mano alzada en el software, y para que el software descubra qué forma es y la convierta en una versión clara e inequívoca y la etiquete adecuadamente.

Rápidamente se da cuenta de que la mejor manera (¿y solo viable?) De resolver este problema es idear y capacitar un modelo predictivo e incrustarlo en su producto de software.

Yo llamo a esto el modelo incrustado. Existen variaciones (como si el modelo es estático o actualizado, y si es local o se llama de forma remota a través de una API), pero eso es solo un detalle.

La clave en este escenario es que tiene la experiencia para notar un problema que se resuelve mejor con un modelo predictivo y las habilidades para idearlo, entrenarlo y desplegarlo.

Escenario 3: el modelo profundo

Ha comenzado un nuevo trabajo y el sistema en el que está trabajando se compone de al menos un modelo predictivo. El mantenimiento y la adición de funciones a este sistema requieren una comprensión del modelo, sus entradas y sus salidas. La precisión del modelo es una característica del producto de software y parte de su trabajo será mejorarlo.

Por ejemplo, como parte de las pruebas regulares del sistema de prelanzamiento, debe demostrar que la precisión del modelo (cuando se valida en datos históricos) tiene la misma o mejor habilidad que la versión anterior.

Yo llamo a esto el modelo profundo. Se espera que desarrolle una comprensión profunda de un modelo predictivo específico y use su experiencia y habilidad para mejorar y verificar su precisión como parte de sus tareas rutinarias.

El desarrollador que “ hace ” aprendizaje automático

Estos escenarios le dan una idea de lo que es ser un desarrollador que sabe cómo hacer aprendizaje automático. Son realistas porque son todas variaciones en escenarios en los que he estado o tareas que he tenido que completar.

Los tres escenarios dejan una cosa muy clara. Aunque el aprendizaje automático es un área fascinante, para un desarrollador, los algoritmos de aprendizaje automático son solo otra bolsa de trucos, como la programación de subprocesos múltiples o gráficos en 3D. Sin embargo, son un poderoso grupo de métodos que son absolutamente necesarios para una clase específica de problema.

Nadie sabe. Diez mil personas necesitan probar cien mil ideas antes de que alguien tenga una pista.

Mi idea favorita de ATM es la autocompletación inteligente. Sorbe todo el (digamos) JavaScript del mundo en un solo corpus. Entrenar a una modelo. Ahora, mientras estoy editando, sugiera como siguiente token (o mejor aún, el siguiente nodo de árbol de sintaxis) lo que todos los demás suelen hacer. Lo mismo con los nombres de variables.

El trabajo del programador consiste principalmente en confirmar: “Sí, sí, no un bucle while, sí, sí, si …”

Descargo de responsabilidad: soy el autor de la ruta de aprendizaje de arriba a abajo: Machine Learning para ingenieros de software . La hoja de ruta y la motivación detrás de su construcción están documentadas en Github: ZuzooVn / machine-learning-for-software-ingenieros

More Interesting

¿Qué son las clases y los objetos en la programación?

¿Cuáles son algunas de las técnicas que utilizan los desarrolladores experimentados para comprender rápidamente una nueva base de código y comenzar a contribuir a ella?

¿Alguna de las principales compañías tecnológicas de EE. UU. Ha comenzado a contratar desarrolladores en el extranjero en respuesta a la escasez de mano de obra de Silicon Valley y el aumento de los salarios?

¿Cuánto debe saber un desarrollador web sobre estructuras de datos y algoritmos?

¿Qué es una presentación interesante (15 min) sobre desarrollo de software que sea adecuada para una entrevista de trabajo?

¿Cuáles son las ventajas de usar Spring para el desarrollo de servicios web RESTful? ¿Cuál es la razón de la popularidad de este enfoque en la industria del software?

¿Por qué la mayoría de los profesores de informática no están en contacto con la industria del desarrollo de software?

¿Cuáles son las herramientas más utilizadas en análisis empresarial y gestión de proyectos en la industria de la ingeniería de software?

¿Cuál es el mejor tutorial de SQL para probadores de software?

¿Qué piensa sobre los hallazgos sobre el artículo y los resultados del "mayor elemento disuasorio para las mujeres en tecnología"?

¿Se puede escribir el código de fondo junto con un servicio web en NodeJS?

¿Cómo es Google una empresa enfocada en ingeniería primero?

¿Es posible ser un gran ingeniero de software si eres malo en matemáticas?

¿Cuáles son los 'valores predeterminados sanos' para AngularJS?

Empleados de Amazon: ¿cómo se prepararon para la parte cultural de la entrevista?