Saltar al contenido

Blog técnico | Imaginando un inteligente

¿Qué significa ser un ingeniero de software en un equipo de aprendizaje de máquinas? No pude responder a esta pregunta cuando me uní a Dev-asauraus-rex, el primer equipo de aprendizaje de máquinas dedicado a . Inmediatamente me puse a leer los libros tan pronto como supe cuál iba a ser el espacio problemático de nuestro equipo. Empecé a ver cursos de aprendizaje de máquinas, refrescando mis conocimientos de cálculo y estadística, y escuchando podcasts. Mientras bebía de la manguera del conocimiento, seguí descubriendo más preguntas. Sin duda había tomado la píldora roja y seguido al conejo blanco por su agujero.

En mi búsqueda por averiguar lo que significaban mis nuevas responsabilidades como ingeniero de software especializado en aprendizaje de máquinas, aprendí mucho. Uno de mis primeros tropiezos es que hay bastantes términos ambiguos que tienen significados completamente diferentes en el aprendizaje automático. Hace tres meses, si me hubieras preguntado qué era la ingeniería de características, te habría dado una respuesta en algún lugar del tipo «es añadir funcionalidad a una aplicación». Lo que he aprendido desde entonces es que la ingeniería de características es el proceso de recoger y limpiar datos para que un modelo de aprendizaje automático pueda tener sentido. Otro término que me ha hecho mirar dos veces es «probar». Para un desarrollador, «testing» se refiere normalmente a pruebas unitarias, pruebas de extremo a extremo o pruebas de integración. Para un ingeniero de aprendizaje de máquinas, puede referirse al proceso de empujar datos en un modelo para ver si puede hacer la suposición correcta sobre los datos o enfrentar los modelos entre sí para encontrar el mejor modelo. Hay más términos confusos en el cruce entre el aprendizaje automático y el desarrollo de software de los que tengo tiempo de compartir. El mejor consejo que puedo dar a alguien en un viaje similar es no hacer suposiciones.

Blog técnico | Imaginando un inteligente
Blog técnico | Imaginando un inteligente

Después de aprender los fundamentos del aprendizaje aplicado de la máquina, las cosas comenzaron a unirse. Pude empezar a ver la luz al final del túnel. Había aprendido que los ingenieros de aprendizaje de máquinas y los ingenieros de software no son tan diferentes. El ingeniero de software suele ser más versado en arquitectura, mejores prácticas de software, automatización y optimización de una aplicación. Un ingeniero de aprendizaje de máquinas tiene más conocimientos de dominio en torno al aprendizaje de máquinas aplicadas, el modelado de datos, las estadísticas y la optimización. Ambos deben estar familiarizados con los fundamentos de la informática, el desarrollo web y las operaciones de bases de datos. Lo más emocionante es que somos un equipo genuinamente interfuncional. Practicamos regularmente la programación en parejas y el mobbing, intentando siempre tener un ingeniero de software trabajando con los ingenieros de aprendizaje de máquinas o viceversa. Una gran parte del trabajo diario que hacemos ha sido guiar a los científicos de datos y a los ingenieros de aprendizaje de máquinas a través de nuestras mejores prácticas de ingeniería y arquitectura. La mayor parte del código que escribimos gira en torno a la ingeniería de características.

Trabajar en un equipo de aprendizaje de máquinas es una experiencia increíble. Cada día en mi camino al trabajo no puedo dejar de pensar en cómo estoy ayudando a construir una máquina más inteligente que no sólo enseña a sus usuarios sino que también aprende de ellos. Lo más importante es que intentamos reducir el tiempo que se tarda en aprender un tema o una tarea determinada, y creemos que el aprendizaje automático es un camino viable para lograr ese objetivo.

Categorías: technicalTags: machine learning, continuous improvement