¿Los científicos de datos y el ingeniero de aprendizaje automático necesitan saber implementar algoritmos ML / DL desde cero o simplemente usar las bibliotecas existentes en producción?

Desde cero? Muy raramente

A menos que usted mismo presente un algoritmo completamente nuevo, generalmente ya hay buenas implementaciones de bibliotecas.

Sin embargo, creo que implementar algoritmos de aprendizaje automático desde cero es un ejercicio muy útil. Si lo hace, obtendrá una mejor comprensión de cómo funcionan realmente los algoritmos. Leer sobre ellos es una cosa, pero codificar cada pequeño detalle es algo completamente diferente.

Te diré una cosa. Cuando he estado entrevistando para trabajos de aprendizaje automático y me han hecho preguntas sobre algoritmos que he implementado desde cero, mis respuestas siempre fueron acertadas. Cuando me preguntaban acerca de los algoritmos que solo había usado a través de bibliotecas, a menudo dudaba y tropezaba con algunos de los detalles.

Implementar algoritmos desde cero no es estrictamente necesario para trabajar en el aprendizaje automático, pero es la forma más difícil de aprender y te hará destacar entre todos los pretendientes.

Para los científicos de datos, no necesariamente. Para ingenieros de aprendizaje automático, sí.

Respondí una pregunta similar anteriormente: la respuesta de Boxun Zhang a ¿Qué tan bien necesito saber los algoritmos de aprendizaje automático para ser un científico de datos en una empresa de tecnología (Google, Microsoft, Facebook, etc.)?

Para el científico de datos, a menudo es suficiente usar las bibliotecas existentes, pero es importante saber cómo funcionan esos algoritmos, especialmente sus limitaciones.

Pero para los ingenieros de aprendizaje automático, las bibliotecas existentes a veces pueden no funcionar en ciertas circunstancias y, por lo tanto, debe implementar la suya propia.

En mi opinión, existen tres tipos diferentes de mineros de datos correspondientes a la función de trabajo.

Si algunas personas trabajan en el departamento comercial (ventas, gestión de riesgos …), deben aprender a usar el paquete de software de minería de datos como sas (em), spss, rapidminer, etc. Los modelos de minería de datos se pueden construir rápidamente con la ayuda del software. Los usuarios comerciales se centrarán en transformar las preguntas comerciales en preguntas de datos, en lugar de escribir códigos de programa.

Para las personas que trabajan en el departamento de gestión de datos, la necesidad de informar al CDO. Los mineros de datos resolverán las preguntas de los departamentos comerciales, y pueden estar contentos de escribir python o r shells para este propósito. Los algoritmos básicos de ml ya son (desde sklearn import svm), y suficientes para la mayoría de los casos. La parte clave es la ingeniería de características, y las personas pasarán mucho tiempo en ello.

En algunos casos, las ruedas deben reinventarse para un mejor rendimiento. Es necesariamente conocer los detalles de los algoritmos, desde la teoría hasta el método de optimización. Para este tipo de rol, necesitan implementar los algoritmos desde cero.

Si desea ser un ingeniero o investigador de aprendizaje automático, definitivamente necesita conocer las matemáticas detalladas y los algoritmos detrás de los modelos, ya que es probable que los implemente para la producción o realice investigaciones sobre ellos.

Para el científico de datos, creo que el requisito puede ampliarse de alguna manera. Durante mucho tiempo, es probable que utilice paquetes y bibliotecas existentes para entrenar su modelo, realizar experimentos y probar su hipótesis, ya que quiere ser eficiente y no perder el tiempo implementando todos los modelos que usa. Definitivamente sería beneficioso si conoces los algoritmos. Los diferentes tipos de algoritmos o modelos funcionan mejor en diferentes situaciones y puede ahorrar tiempo utilizando los modelos más apropiados.

Iré contra la corriente y diré que debes saber cómo funciona el algoritmo antes de comenzar a usar soluciones listas para usar. La razón es porque si comprende cómo programarlo, entonces probablemente pueda modificarlo en algún momento (que en muchos casos, deberá hacerlo). SIN EMBARGO, lo que es más importante, debe conocer los pros y los contras del algoritmo y POR QUÉ funciona mejor en ciertas situaciones. Esto será más importante que implementarlo porque sabrá cómo el contexto del problema que está tratando de resolver afectará la implementación (o mejor dicho, qué algoritmo implementar).

Con respecto a ser un ingeniero de ML, probablemente tendrá que crear sus propias soluciones; por lo tanto, conocer las soluciones más antiguas puede dar una idea de cómo crear nuevas. También me enfocaría en entender cómo su solución encajará en la arquitectura de software de la compañía porque puedo garantizarle que surgirá.

Depende. A veces uso las bibliotecas existentes (pero necesita conocer la teoría lo suficientemente bien como para saber si los resultados que arroja son correctos o si la técnica es adecuada); otras veces los desarrollo desde cero. Yo diría que son unos 50-50. Utilizo el conocimiento teórico de limitaciones y suposiciones de métodos el 100% del tiempo.

Si planea convertirse en ingeniero de aprendizaje automático, es muy importante saber la razón detrás del uso del algoritmo que esté implementando. Muchas de las escuelas en los EE. UU. Enseñan algoritmos de aprendizaje automático. Si le preguntas a los estudiantes qué es xyz en el aprendizaje automático, entonces podrían responder. Pero si les preguntas por qué elegirías Algo A sobre B, es posible que no puedan responder. Para obtener el conocimiento adecuado sobre ML siempre es bueno aprender, cuestionar e implementar algoritmos desde cero.

Creo que uno debería saber cómo implementar algoritmos DL desde cero, y la razón es que los algoritmos DL son altamente personalizables. Incluso si uno pudiera usar directamente, digamos, capas de keras, con frecuencia necesitaría “cuidar” el proceso de entrenamiento, y conocer los detalles de los algoritmos es imprescindible.

Sin embargo, para los algoritmos más de “aprendizaje de scikit”, creo que conocer la intuición sería suficiente.

Puede ser un experimento divertido implementarlos desde cero en algún momento posterior, pero sugeriría experimentar primero sobre un marco establecido primero. Consulte, por ejemplo, Tensorflow (Python) o Torch (Lua), pero hay muchos otros (principalmente en Python). Incluso si desea implementar alguna idea radicalmente nueva, probablemente sea mejor (es decir, 1000 veces más rápido) extender uno de los marcos existentes .

More Interesting

¿Tiene sentido el uso de bosques aleatorios en los datos financieros si se supone que los rendimientos dependen en serie (es decir, que los rendimientos actuales dependen de los rendimientos pasados)?

¿Qué es más robusto para datos ruidosos, un árbol de decisión o Naive Bayes?

¿Cuál es la diferencia entre machine learning y IOT?

¿Cuáles son algunos proyectos paralelos de Machine Learning que puedo implementar en mi tiempo libre?

¿Cuáles son los problemas de investigación 'hardcore' en visión artificial, aprendizaje automático y arquitectura informática?

¿Alguna vez has observado que la normalización por lotes en realidad ralentiza el entrenamiento?

¿Cuál es el algoritmo utilizado para mantener los drones equilibrados en el aire, a pesar de los golpes externos, como la ráfaga de viento?

¿Cuál es la diferencia de enfoque para resolver un desafío de Kaggle y trabajar en un problema de investigación de LA bien definido?

¿Cómo puede llevar a cabo experimentos y compararlos con otros algoritmos en la investigación de la visión por computadora (detección de objetos, reconocimiento, seguimiento, etc.)?

¿Cuál es el mejor modelo de predicción de la siguiente palabra en R?

¿Se moverá el conjunto de problemas ICPC para incluir sistemas distribuidos y aprendizaje automático en el futuro?

Cómo interpretar una capa totalmente conectada como una capa convolucional para hacer predicciones densas de píxeles

Investigadores de aprendizaje automático, ¿algún día los robots nos matarán a todos?

¿Cómo puedo evitar el sobreajuste?

¿Por qué la optimización del aprendizaje profundo es más rápida en las CPU que en las GPU?