¿Por qué debería uno aprender el aprendizaje automático desde cero en lugar de aprender a usar las bibliotecas disponibles?

Trabajé en y con el aprendizaje automático (ML) durante varios años, haciendo investigación y desarrollo. Durante ese tiempo, dirigí y participé en el desarrollo de una serie de sistemas basados ​​en aprendizaje automático que se utilizaron en la producción.

Para su pregunta, lo mejor con mucho es aprender ML “desde cero” y familiarizarse con las bibliotecas / plataformas disponibles. Este último puede ahorrar mucho trabajo, pero para poder utilizarlos de manera efectiva, uno necesita el primero.

En la mayoría de las aplicaciones en las que trabajé, la parte más crítica de encontrar una solución viable fue crear un buen conjunto de características: el conjunto de atributos / medidas que utiliza el algoritmo ML para hacer lo que hace. En raras ocasiones, uno de estos paquetes lo hará automáticamente. Puede haber algunas herramientas para ayudarlo, pero necesitará información y comprensión para utilizarlas.

Esto puede haber cambiado ahora que la “ciencia de datos” se ha convertido en un campo candente, pero, en mi experiencia, un área donde la mayoría de los graduados en ciencias de la computación son deficientes cuando se trata de ML es ciertos aspectos de las estadísticas, especialmente una comprensión “fundamental”. Esto es importante para cosas como determinar el número óptimo de características, el tamaño óptimo del conjunto de entrenamiento, comprender profundamente lo que significa obtener una muestra representativa, cómo hacer un muestreo estratificado y tratar esas muestras en un procedimiento / algoritmo de ML. Esto es importante para una población desequilibrada. Por ejemplo, en un simple problema de detección binaria, la población puede contener muchos menos ejemplos positivos (lo que desea detectar) que negativos. En el extremo, esto se convierte en lo que se conoce como detección de “eventos raros”.

Finalmente, una comprensión profunda de ML generalmente es crítica para diagnosticar problemas: cuando algo no funciona correctamente o lo suficientemente bien, cuáles son las causas probables, cómo verificar una hipótesis relacionada y cómo solucionar el problema.

Gerente : Bien, ¡necesitamos un sistema para detectar peatones en tiempo real en el camino!

Ingeniero : ¡Estoy seguro de que hay un paquete R que lo hace! Alternativamente, podemos usar Scikit-SelfDrivingCar o algo así. ¡Apuesto a que podemos hacerlo la próxima semana!

Unas horas de googlear más tarde …

Ingeniero : Aparentemente, no hay nada de eso. Hagamos un poco de trabajo pesado: utilizaremos Scikit-VisionMagic, descargaremos un conjunto de datos en formato .csv de Kaggle, llamaremos a un montón de métodos estándar del tutorial y lo enviaremos a producción.

Día siguiente:

Ingeniero : Uuuh, no hay conjuntos de datos fácilmente disponibles, no hay bibliotecas listas para usar … Suspiro. Muy bien, ¡usemos Keras y el proyecto de alguien de Github!

Algunos comentarios denigrantes de StackOverflow más tarde …

Ingeniero : De acuerdo, he logrado ejecutarlo en nuestros datos, pero este modelo nos da algunos artefactos extraños que no se informaron en las instrucciones … Supongo que tendré que aprender más sobre Keras e intentar solucionarlo.

Algunas preguntas sobre Quora más tarde:

Gerente : Oye, ¿cómo va esa cosa peatonal?

Ingeniero : Bastante bueno, ¡solo algunas correcciones menores!

* sonido amortiguado de choque en el fondo *

Ingeniero : ¡Resulta que este modelo era bueno solo para demostración! Tendré que escribir el mío en TensorFlow …

Unos días de código tutorial de copiado y pegado más tarde:

Gerente : Amigo, no tenemos prisa, pero nos has dicho que ya estarías listo.

Ingeniero : Sí, hubo algunas complicaciones, es necesario asegurarse de que todo salga bien después del lanzamiento.

¿Escuchas ese sonido? Ese es el sonido que hace un gradiente cuando explota [1]

Ingeniero : ¡Esta función de pérdida pre-implementada es un desastre! Y tendré que escribir un par de mis capas personalizadas, y una función de pérdida, y la regularización que no está incluida en la biblioteca disponible … tantas cosas para estudiar.

Un curso de ML más tarde.

Ingeniero : Resulta que el campo receptivo era demasiado estrecho … si tan solo tomara una clase de aprendizaje profundo …

Ingeniero : ¡Oh, esa cosa de normalización de lotes realmente es genial! ¿Por qué no lo escriben en el tutorial de scikit-learn?

Un libro de Goodfellow más tarde.

Ingeniero : ¡Finalmente! He roto un montón de cosas por mi cuenta y he cometido muchos errores que podrían evitarse, pero bueno, ¡eso es divertido de aprender!

Ingeniero : Muy bien, funciona, ¡las simulaciones se ven bastante bien!

Ingeniero de implementación : ¡Genial! Pero su sistema requiere 24 Gb de memoria y no puede procesar más de 2 fotogramas por segundo en una tarjeta Titan de gama alta. No podemos usarlo en un auto.

Ingeniero : ¡Maldita sea! Parece que necesitaré un método de inferencia rápido y un consumo de memoria reducido … si tan solo supiera la complejidad computacional de cada parte de mi red y la cantidad de parámetros que enseñan en el curso de algoritmos … ¿Y qué hay de eso de FP16 de todos modos? ..

Gerente : Nos hemos quedado sin fondos y todos están despedidos.

Aleta

La moraleja de la historia es que no se puede superar Google buena educación fundamental y conocimiento técnico relevante.

Notas al pie

[1] http://www.cs.toronto.edu/~rgros

En primer lugar, 8 formas en que el aprendizaje automático está mejorando los procesos de trabajo de las empresas

Las organizaciones líderes de la actualidad están utilizando herramientas basadas en el aprendizaje automático para automatizar los procesos de decisión, y están comenzando a experimentar con usos más avanzados de inteligencia artificial (IA) para la transformación digital. Se prevé que la inversión corporativa en inteligencia artificial se triplique en 2017, convirtiéndose en un mercado de $ 100 mil millones para 2025 . Solo el año pasado se vieron $ 5 mil millones en inversión de riesgo de aprendizaje automático. En una encuesta reciente, el 30% de los encuestados predijo que la IA será el mayor disruptor para su industria en los próximos cinco años. Sin duda, esto tendrá profundos efectos en el lugar de trabajo.

El aprendizaje automático está permitiendo a las compañías expandir su crecimiento de primera línea y optimizar los procesos al tiempo que mejora la participación de los empleados y aumenta la satisfacción del cliente. Aquí hay algunos ejemplos concretos de cómo la inteligencia artificial y el aprendizaje automático están creando valor en las empresas de hoy. Espero que te ayude a saber por qué aprender Machine Learning desde cero

El aprendizaje automático es una habilidad muy solicitada para agregar a su currículum. Recorremos los pasos para sumergirse en el aprendizaje automático con la ayuda de Python.

¿Se ha preguntado qué se necesita para comenzar con el aprendizaje automático? En este artículo, explicaré los pasos para comenzar a aprender a utilizar Python. Python es un popular lenguaje de programación de código abierto y es uno de los lenguajes más utilizados en inteligencia artificial y otros campos científicos relacionados. El aprendizaje automático (ML), por otro lado, es el campo de la inteligencia artificial que utiliza algoritmos para aprender de los datos y hacer predicciones. El aprendizaje automático ayuda a predecir el mundo que nos rodea.

Desde automóviles autónomos hasta predicciones del mercado de valores y aprendizaje en línea, el aprendizaje automático se utiliza en casi todos los campos que utilizan la predicción como una forma de mejorarse. Debido a su uso práctico, es una de las habilidades más demandadas en este momento en el mercado laboral. Además, comenzar con Python y el aprendizaje automático es fácil, ya que hay muchos recursos en línea y muchas bibliotecas de aprendizaje automático de Python disponibles.

¿Qué tienes que hacer para comenzar con el aprendizaje automático de Python? Pasemos por el proceso.

Mejora tus habilidades de Python

Debido a que Python es extremadamente popular, tanto en las comunidades industriales como científicas, no tendrá dificultades para encontrar recursos de aprendizaje de Python. Si es un principiante completo, puede comenzar a aprender Python utilizando materiales en línea, como cursos, libros y videos. Por ejemplo:

1. Aprende Python de la manera difícil

2. Curso de Python para desarrolladores de Google (videos)

3. Clase de Python de Google

Sepa más sobre cómo comenzar el aprendizaje automático

Observación simple y espero no ofender: la mayoría de los principiantes en cualquier cosa pasan por ese paso, la ilusión de competencia . Las personas que hicieron algunos MOOC y compraron un libro de Python pueden decir “fácil, hay una biblioteca para eso”. Las personas que han estado luchando con problemas de Machine Learning durante 20 años son modestas.

Una vez asistí a un entrenamiento de Aprendizaje profundo de Russ Salakhutdinov, un compañero de Pittsburgher. Cada diapositiva tenía puntos que resumían en 20 segundos lo que nos llevó meses comprender. Y tuvo muchas diapositivas, un día completo. Ay.

Puede ser bueno en Machine Learning solo cuando puede pensar en un problema por sí mismo.

La biblioteca solo hace los cálculos para usted: el último tramo.

Todo lo demás debe provenir de nuestro cerebro, no de los libros, de nuestro cerebro. Para llegar allí, solo tenemos una solución: pasar el tiempo suficiente para poner el conocimiento en nuestro cerebro y luego usarlo en el mundo real.

Una empresa que contrata a un ingeniero de Machine Learning paga por los años que tardó en adquirir el conocimiento y los años que tardó en recuperarlo y probarlo en el mundo real. Pagan la capacidad de analizar un problema en términos de Machine Learning, elegir las herramientas adecuadas, las personas adecuadas y el enfoque correcto.

La mayor parte de eso ni siquiera requiere encender la computadora, sino hablar con las personas frente a una pizarra

Si contratan a un senior, también pagan por la comprensión de cómo funcionan las organizaciones, las habilidades de comunicación y la capacidad general de hacer que las cosas sucedan a pesar de los obstáculos. Si un vicepresidente cree que los chicos de TI están soñando y no van a decirle cómo vender sus cosas, ninguna biblioteca lo ayudará con eso …

Una palabra: dinero. A menos que no le importe y esté completamente ajeno a conceptos tales como su salario futuro, crecimiento profesional, seguridad laboral y perspectivas, debe esforzarse por ser un solucionador de problemas capaz de adaptarse a cualquier conjunto de problemas y desafíos frente a usted, como en oposición a alguien que solo puede usar soluciones preexistentes disponibles.

¿Le pagaría a alguien $ 1000 / hr para que le muestre, por ejemplo, una solución TensorFlow? No, no lo creo. ¿Invertirías millones en su inicio si todo lo que tienen que mostrar es demostraciones enlatadas predefinidas de bibliotecas ya existentes?

No hay nada de malo en usar bibliotecas abiertas, gratuitas y ya existentes, de hecho, son excelentes para hacer las cosas de manera rápida y eficiente. Pero eso no es donde está el mayor valor agregado financiero. Esta es la razón por la cual las empresas de código abierto obtienen un valor agregado y generan ingresos vendiendo soporte, ya que sus productos son gratuitos.

Existe, por supuesto, la parte obvia de mejorarse técnicamente al comprender cómo funcionan las cosas, en lugar de ser solo un usuario de nivel de aplicación. Y algunos pueden decir que es demasiado vago y nebuloso y quieren recompensas financieras inmediatas y claras. Bueno, lo anterior se aplica especialmente a ellos, a menos que quieran estar atrapados en carreras de apoyo a nivel de aplicación por el resto de sus vidas.

Hay diferentes niveles en los que puedes entender un algoritmo.

En el nivel más alto, sabes lo que un algoritmo está tratando de hacer y cómo. Entonces, por ejemplo, el descenso de gradiente encuentra un mínimo local al dar pequeños pasos a lo largo del gradiente negativo.

Yendo un poco más profundo, profundizarás en las matemáticas. Nuevamente, tomando el descenso de gradiente, por ejemplo, aprenderá cómo tomar gradiente para cantidades de vectores, normas, etc. Con aproximadamente el mismo nivel de profundidad, también tendrá otras variantes del algoritmo, como manejar las restricciones en el descenso de gradiente. Este es también el nivel en el que aprende a usar bibliotecas para ejecutar su algoritmo específico.

Más profundo, implementa el algoritmo desde cero, con pequeños trucos de optimización. Por ejemplo, en Python, querrás usar la vectorización. Considere los siguientes dos fragmentos de código:

# Versión 1:

importar numpy como np

N = 10000000
a = np.random.rand (N, 1)
b = np.random.rand (N, 1)

para i en rango (N):
s = s + a [i] * b [i]

imprimir m

# Versión 2:

importar numpy como np

N = 10000000
a = np.random.rand (N, 1)
b = np.random.rand (N, 1)

s = a * b

imprimir m

Ambos tienen la misma funcionalidad, pero el segundo es 20 veces más rápido. Del mismo modo, aprenderá algunas otras técnicas de implementación importantes, como la paralelización del código, la creación de perfiles, etc. También aprenderá algunos detalles específicos del algoritmo, como cómo inicializar su modelo para una convergencia más rápida, cómo configurar la condición de terminación para compensar precisión y tiempo de entrenamiento, cómo manejar casos de esquina [como puntos de silla de montar en descenso de gradiente], etc. Finalmente, aprenderá técnicas para depurar el código de aprendizaje automático, que a menudo es complicado para los principiantes.

Finalmente, llega la profundidad a la que se escriben las bibliotecas. Esto requiere mucho más conocimiento de los sistemas que los pasos anteriores: saber cómo manejar datos muy grandes, eficiencia computacional, administración efectiva de la memoria, escribir código GPU, multihilo efectivo, etc.


Ahora, volviendo a la pregunta: ¿con cuánto detalle necesita conocer los algoritmos? En su mayor parte, no necesita conocer los algoritmos en la profundidad de la implementación de la biblioteca, a menos que esté en la programación de sistemas. Para los algoritmos más importantes en ML, como el descenso de gradiente, SVM, regresión logística, redes neuronales, etc., debe comprender las matemáticas y cómo usar las bibliotecas para ejecutarlas. Esto sería suficiente si no eres un ingeniero de ML y solo usas ML como una caja negra en tu trabajo diario.

Sin embargo, si va a trabajar como ingeniero de ML / científico de datos / científico de investigación, también debe implementar algunos algoritmos desde cero. Por lo general, los cubiertos en los cursos en línea son suficientes. Esto le ayuda a aprender muchos más matices de diferentes herramientas y algoritmos. Además, esto lo ayudará con los nuevos algoritmos que podría necesitar implementar,

Una habilidad poderosa que todo investigador / ingeniero debería tener es la capacidad de aprender nuevas habilidades lo más rápido posible. Hay tantos marcos que salen regularmente, hoy los requisitos de trabajo buscarán TensorFlow, mañana será Sonnet, el otro día fue Caffe2 y la próxima semana será PyTorch y sin mencionar a Kotlin para el desarrollo de Android que está a punto de reemplazar Java

En serio, ¿cómo se sobrevive en un mundo tecnológico tan dinámico? Adapte, improvise y conquiste , cada vez que salen cosas nuevas simplemente adáptelas en consecuencia con una fricción mínima. Por lo tanto, la mejor habilidad para poseer es aquella que no depende en absoluto de ninguna de esas tecnologías o marcos. Si su equipo cambia de Caffe2 a PyTorch, su conocimiento central debe permanecer intacto y todo lo que necesita es aprender el nuevo marco codificando mientras se refiere a la documentación durante las primeras semanas / meses y luego estará listo para continuar.

Es por eso que aprender desde cero es poderoso. Lo que sucede cuando aprendes desde cero es que tomas principios básicos muy básicos que literalmente constituyen todo el campo. Aprender desde cero no es diferente del aprendizaje por primer principio, en realidad son una y la misma cosa. Una persona que desea aprender inglés primero debe aprender el alfabeto, de la A a la Z, y una persona que desea aprender matemáticas debe aprender números, sumas, multiplicaciones y muchos más conceptos básicos. El poder aquí proviene de combinaciones / permutaciones, el aprendizaje de [matemáticas] n [/ matemáticas] cosas básicas significa que puede combinarlas en formas [matemáticas] n! [/ Matemáticas], que es un número muy grande, por lo tanto, aprender y comprender los conceptos básicos es la forma segura de dominar cualquier campo.

Debe asegurarse de que su base en inteligencia artificial (IA) y aprendizaje automático (ML) sea sólida y muy sólida mediante la implementación de conceptos básicos desde cero, como el algoritmo de retropropagación y algunos otros interesantes como las redes neuronales convolucionales (convNet). Cada vez que encuentre un concepto matemático en ML, tómese el tiempo para comprender su derivación e intente derivarlo usted mismo desde cero y también implementarlo desde cero en el código y ver si puede hacerlo funcionar.

De esa manera, el conocimiento que obtenga se mantendrá y será independiente de cualquier marco que decida aprender más tarde. Puede elegir fácilmente bibliotecas de alto nivel como Keras y aprenderlas en un día más o menos. Si mañana el requisito de trabajo quiere TensorFlow, puede pasar una semana aprendiendo TensorFlow y agregarlo a su CV y ​​aplicar. Sí, algunos marcos pueden tomar tiempo para aprender, pero en la entrevista también puede usar este enfoque para su ventaja, señale qué tan rápido puede obtener el conocimiento necesario y que cuando los objetivos de la empresa cambian, puede cambiar fácilmente con ellos, eso es una gran ventaja para ti allí

Google acaba de cambiar de móvil primero a AI primero y, por lo tanto, muchos objetivos dentro de los equipos de ingeniería y la compañía en general cambiarán después de eso. DeepMind también adoptó TensorFlow cuando se unieron a Alphabet, sus investigadores / ingenieros también tuvieron que adaptarse. Entonces, sea adaptativo y prepárese para ese futuro siempre cambiante aprendiendo los conceptos subyacentes y aprender desde cero es la mejor manera de aprender esos conceptos subyacentes de AI / ML.

Por lo tanto, cuando aprenda campos complejos como AI / ML, intente comenzar desde un nivel extremadamente bajo ignorando los principios básicos subyacentes y asegurándose de que tiene el compromiso correcto al implementarlos usted mismo desde cero. Aprender C ++, por ejemplo, hace que sea muy fácil aprender cualquier otro lenguaje como Java o Python. Lo mismo se aplica al aprendizaje de los conceptos básicos de AI / ML desde cero, le ayuda a elegir cualquier otro marco de ML con poca molestia.

Espero que esto ayude.

Las razones por las que aprende los principios de ML, la probabilidad y las estadísticas, y los conceptos básicos de programación, es para que pueda diseñar una solución robusta eficiente adecuada para un problema bien especificado. De lo contrario, producirá una solución general a un problema general ajeno a las limitaciones de los datos, la memoria o el tiempo de ejecución. Si su primer intento no tiene éxito, ¿qué hará entonces? La prueba y error al azar es casi siempre una estrategia perdedora para cualquier problema de búsqueda u optimización.

Si solo conoce las herramientas, pero no el problema y las restricciones de datos, no puede saber qué herramienta sería la mejor para su problema, o qué características se pueden usar de manera eficiente, robusta e informativa y producir una respuesta que sea ‘suficientemente buena’ . En cualquier tipo de problema en el que los expertos superen a los novatos, sus competidores ganarán y usted perderá. Y los problemas de aprendizaje automático son ese tipo de problema.

Por ejemplo, tome un cirujano. Si solo conoce los instrumentos quirúrgicos, pero nada más: el historial médico del paciente, su estado de salud actual, sus cirugías anteriores, los efectos de la anestesia y la duración del procedimiento, la tasa de éxito de varios procedimientos alternativos en circunstancias comparables, la cantidad y La calidad de la atención de seguimiento disponible para el paciente, su probabilidad de efectos secundarios como infección y su propia capacidad en el procedimiento dadas todas estas limitaciones: es mucho menos probable que la operación tenga éxito y el paciente va a sufrir. Y cualquier cirujano que mate a sus pacientes no tendrá muchos negocios repetidos.

Ok, déjame ponerlo en una perspectiva diferente.
Cómo lo sabes,

  1. ¿Qué algoritmos usar del paquete disponible?
  2. ¿Cuál es la eficiencia del algoritmo en su conjunto de datos?
  3. ¿Cómo modifica los parámetros y hace que el aprendizaje automático sea efectivo sin caer en falso positivo?

Para todas estas preguntas, es importante el conocimiento básico o la comprensión de diferentes algoritmos implementados en el paquete como scikit.
Principalmente, no aplicará directamente el algoritmo de aprendizaje automático en los datos. Primero debe analizar y limpiar los datos para que se conviertan en algo utilizable y obtener información de ellos.

Espero que esto responda a tu pregunta de ¿Por qué?

Puedes sobrevivir sin lo básico, pero no por mucho tiempo. Debe conocer el principio subyacente para crear su propio algoritmo mediante ajustes cuando sea necesario.

Use un ejemplo muy simple. Dada la siguiente función:

agregar (x, y)

Si no sabe qué es la suma, ¿qué ayuda tiene para sumar 5 y 7?

Obtienes 12, y la única idea que tienes de que la respuesta es correcta es que la computadora te lo dijo. Pero como no comprende la suma, no tiene idea de por qué la usaría, y la respuesta no tiene un significado más profundo.

Lo mismo para el aprendizaje automático. Si no conoce ningún concepto de LD, las respuestas que le da la máquina son “correctas”, pero no tiene idea de por qué eso es correcto (o si tiene sentido). ¿Por qué elegirías una función sobre otra, cuáles son las compensaciones de usar diferentes ecuaciones?

Volver a la adición. Si desea sumar 20 diez veces, en el mejor de los casos, tendría un concepto que sumaría (20, sumar (20) …), pero no está seguro de si esto realmente tiene sentido. Como no tienes idea de lo que significa la suma, tampoco puedes entender la multiplicación.

Si su trabajo es implementar ciegamente un código que llama a las bibliotecas de ML, no debe aprender nada, aunque sea programación (suponiendo que lo haya aprendido). Si desea crear una nueva solución, debe comenzar desde cero en casi todos los departamentos desde la concepción hasta la ejecución. Existen problemas legales y ningún mérito al copiar códigos, por lo que las empresas eventualmente desean desarrollar sus propios códigos / bibliotecas si quieren mover para monetizar su producto. Si trabaja en dicho equipo, prepárese para aprender, desaprender y volver a ingresar cada vez que piense para crear algo nuevo.

¡Hola!

Es aún más difícil descubrir las bibliotecas existentes y luego determinar la mejor manera de personalizarlas de manera efectiva.

¡Confía en mí, aprender los conceptos básicos del aprendizaje automático y luego construirlo requiere menos esfuerzo y dolor de cabeza!

¿Alguna vez has intentado depurar el proyecto divertido de alguien sin la ayuda adecuada de él para explicar qué hace exactamente? Si ha tenido esa experiencia, comprenderá por qué digo que escribir su código desde cero es más fácil.

Sin el conocimiento básico adecuado, ¿cómo puede entender lo que hace la biblioteca existente, y mucho menos darse cuenta de cómo personalizarla?

Sin aprender los conceptos básicos, ¿cómo puede estar seguro de lo que realmente necesita para su proyecto? Lo que podría considerarse una excelente biblioteca existente para un tipo particular de problema, con algunas restricciones xy, en realidad podría no funcionar para su proyecto con restricciones yz. Entonces, si conoce los conceptos básicos de ML, en realidad podría descubrir que algún otro algoritmo o técnica podría funcionar de manera más efectiva que esta biblioteca existente.

Esta es la razón por la cual las personas prefieren codificar desde cero wrt ML en lugar de usar bibliotecas existentes.

¡Salud!

No siempre tienes que aprender desde cero. Sí, es más efectivo aprender desde cero con la biblioteca de aprendizaje automático para comprenderlo y usarlo mejor, pero lleva más tiempo revisarlos todos y es posible que su empresa no espere eso. Puede aprender solo la biblioteca de aprendizaje automático y comenzar con ella, si usted o su empresa carecen de tiempo para aprender desde cero.

Si se trata del científico de datos en una empresa, entonces la cosa es diferente. El científico de datos necesita conocimiento y comprensión tanto de los antecedentes matemáticos como de la biblioteca, la lógica y el uso en otras palabras.

Para saber cómo funciona realmente el algoritmo de aprendizaje automático, debe conocer las matemáticas del aprendizaje automático. Necesitas conocer los conceptos básicos para convertirte en un experto en aprendizaje automático.

Los marcos están ahí para facilitar su trabajo. Pero se supone que desea resolver un problema utilizando el aprendizaje automático y los algoritmos disponibles en el marco no son tan eficientes para resolver ese problema, entonces es posible que deba crear un nuevo algoritmo. Para crear un nuevo algoritmo, necesita saber cómo funcionan los algoritmos existentes. Por lo tanto, el aprendizaje automático de las matemáticas es muy importante.

Es posible que no necesite esas matemáticas actualmente, pero a largo plazo es mejor saberlo.

Simplemente pon

Las bibliotecas se construyeron por una razón, por un problema en particular y el autor decide luego publicarlo para que el público lo considere útil.

Las posibilidades son, o eres

  • tratando de resolver el mismo problema que ayudaría a usar su biblioteca, lo menos probable
  • resuelva un problema similar que necesita pequeños ajustes para adaptarse a sus necesidades, más probable
  • resolver un problema completamente diferente que requiere un enfoque diferente que necesita romperse y reconstruirse, muy probablemente

En general, las bibliotecas están hechas por una razón, y a menos que su razón para elegirla sea la razón para crearla en primer lugar, es posible que tenga muchos problemas y tiempo perdido.

Además, para resolver este problema, algunas bibliotecas tienen muchas características adicionales para tratar de dar cuenta de varios escenarios posibles, luego te das cuenta de que realmente necesitas ~ 28% de la biblioteca. El resto de los 72 se quedaría consumiendo ~ 3 veces más recursos de los que realmente necesita y usa.

Al igual que cuando compra un Ferrari en Nigeria, nunca puede usar la mayoría de sus funcionalidades debido a las malas carreteras, pero tuvo que pagar por ellas.

A veces, construir una casa es más barato que remodelar una.

La comprensión de las matemáticas que subyacen a los métodos permite que un científico de datos / ingeniero de aprendizaje automático juegue con las piezas individuales para mejorar un algoritmo o adaptarlo a un conjunto de datos. Por ejemplo, existen muchos sabores de muestreo que pueden usarse para mejorar un algoritmo como el bosque aleatorio (uno de los mejores es el muestreo estratificado para observaciones raras o datos desequilibrados). Sin saber cómo se realiza el muestreo dentro del algoritmo de bosque aleatorio, uno no podría modificarlo para adaptarlo a la situación en la que se desplegará.

Imagina que eres un tipo de estadísticas. R es ideal para reducir las cosas y hacerlas rápidamente, pero aún necesita saber qué usar, los supuestos, y casi siempre tiene que volver a trabajar el problema.

El aprendizaje automático es igual de complejo, y se sale de control rápidamente. Por lo tanto, debe saber qué está haciendo la computadora cuando le pide que haga cosas. Si desarrollas un gran producto, alguien más vendrá y lo hará mejor si no tienes la experiencia en el dominio.

Hmm, esto es similar a por qué aprender algoritmos y estructuras de datos desde cero en lugar de cómo usar las versiones de plantilla de ellos (C ++ 11). Personalmente, he descubierto que al conocer esas cosas he aprendido

1. Algunos trucos de programación (la forma en que se hacen las estructuras de datos es bastante ordenada)

2. Cómo ajustar la plantilla suministrada para que coincida con la situación que puede mejorar el rendimiento (puede ser importante cuando se trata con TB de datos)

3. Depuración, tal vez estoy tratando de hacer algo y sigo obteniendo fallas de segmentación o errores semánticos, tal vez hay algo que me falta detrás del código de biblioteca proporcionado

4. Mentalidad, ver la ingeniería detrás de los algoritmos y las estructuras de datos me ha ayudado a abordar las cosas con un marco mental.

Sin embargo, dicho esto, aún intentaría usar las bibliotecas tanto como sea posible y solo modificar el código cada vez que sea absolutamente necesario (la gente que hace y mantiene la biblioteca generalmente construye bien las cosas). En mi opinión, es una inversión en mí y caja de herramientas, lo que creo que me da un conjunto de habilidades más dinámico.

Hagas lo que hagas, debes hacerlo dando tu 100%, la construcción de una estructura necesita una base básica sólida sin base si se produce un defecto, es difícil dar marcha atrás al problema debido a un menor conocimiento de la base.

Si desea construir algo dentro de los 10 días agudos, base por 8 días y luego aplique lo que aprendió en los 2 días restantes.

Considere a los ingenieros de Google, en realidad están creando bibliotecas con las que está hablando. El ingeniero de Google está en menos números para aquellos que usan sus bibliotecas, lo que resulta en un hecho de que los ingenieros de Google están teniendo un impacto en la sociedad, no en quienes los están usando (aunque también lo están, pero sin la fuente principal no podrán hacerlo).

Entonces, es tu decisión de qué lado quieres estar.

La mejor de las suertes.

Depende. Dicho de esta manera, ¿desea resolver problemas o construir el motor para que otros resuelvan los problemas?

Si es lo primero, no deberías. Hay equipos completos de personas mucho más inteligentes que usted implementando bibliotecas que se prueban, prueban y optimizan para hacer lo que necesita. No tengo idea de lo que sucedió en el motor que utilizamos. Estaba fuera del estante y funcionó. Si no existiera, podríamos construir otra formando con los mismos insumos, y probablemente llegaría a las mismas conclusiones, que tuvimos que hacer cuando nuestro socio que había suministrado el motor decidió que querían ser el contenido. especialistas y desarrollar un producto competitivo. Resulta que no los necesitábamos, pero ciertamente nos necesitaban a nosotros.

Entonces, ¿cuál es el objetivo? En mi caso, no me importa qué bibliotecas usamos, solo me importó el resultado final, lo que significaba que construirlo desde cero era inútil.