¿Cuál es el enfoque de un hacker para aprender el aprendizaje automático y la visión por computadora rápidamente sin muchas matemáticas?

Te diré un secreto: construir un sistema de aprendizaje automático y de visión artificial no requiere que seas un matemático. Realmente necesitas solo habilidades matemáticas básicas en:

  1. Cálculo
  2. Álgebra lineal
  3. Optimización numérica
  4. Estadística

No tiene que ser profundo en ninguno de esos campos para construir un sistema de aprendizaje automático o de visión por computadora desde cero. Creo que las habilidades más importantes que necesitas son:

  1. Tenacidad
  2. Una comprensión más profunda de los sistemas existentes
  3. Habilidades de codificación

Por supuesto, es muy difícil tener una comprensión más profunda de los sistemas existentes. Esto significa que debe investigar mucho durante mucho tiempo antes de poder crear algoritmos novedosos en esta área del aprendizaje automático y la visión por computador, ya que nada es barato.

Sí, hay muchas bibliotecas por ahí, pero a veces se quedan cortas y, por lo tanto, uno necesita construir sus propias cosas, pero hacerlo requiere mucho más esfuerzo y tiempo de su parte. Es por eso que debes preguntarte, ¿por qué estás pasando por todos esos problemas?

Si es algo que quiere hacer por diversión o para mejorar algunos algoritmos existentes, siéntase libre de seguir ese camino. Te aseguro que es divertido pero duro.

Por lo tanto, después de haber pasado por este proceso, puedo darte algunos consejos sobre cómo hacerlo rápidamente.

  1. Encuentre un problema real para resolver: Esto se debe a que el problema lo guiará a través del proceso de aprendizaje y actuará como una motivación. También es interesante poder agregar esto luego a tu CV si resuelves un problema genial.
  2. Solo requiere más iteraciones, no más tiempo: por lo tanto, cuanto más rápido pueda iterar, más rápido terminará. Esto significa que todos los días necesitas trabajar en ello.
  3. Comience ahora: una vez que esté de acuerdo con eso o incluso si siente que no está listo, simplemente hágalo, comience ahora y termine.
  4. Reconozca que no va a ser fácil y puede terminar lo que comienza. Haz el trabajo no importa qué.

No todo es fácil, en realidad no hay atajos, solo tienes que molestarlo. Pero recuerde que está en las iteraciones, itere rápido y terminará en poco tiempo.

Espero que esto ayude.

La respuesta aquí debe considerar muchos factores prácticos. Veamos primero qué tipo de sistemas de ML y Visión se pueden crear y luego analizar el fondo necesario. En términos generales hay tres categorías posibles:

(1) Sistema directo y potencialmente limitado: si solo desea implementar un sistema muy sencillo (capacitar a un CNN estándar en un conjunto de datos determinado, hacer una clasificación SVM, hacer una segmentación básica, detección de rostros, etc.) en una plataforma que ofrezca suficiente recursos para que se ejecuten los algoritmos, y nadie va a pedirle que mejore el rendimiento, no necesita aprender ningún cálculo matemático y, por lo tanto, no hay antecedentes sobre ML y los algoritmos de visión.

(2) No requiere la creación de una nueva tecnología: el siguiente escenario es cuando no se requiere la creación de ninguna nueva tecnología de ML y Vision, pero desea amalgamar inteligentemente varios algos para un buen sistema, y ​​puede implementarlo en una plataforma que sea Difícil (digamos uno de los sistemas embebidos). Entonces hay que entender bien los algoritmos, pero sobre todo desde una perspectiva de ingeniería. Por ejemplo, uno podría necesitar conocer los detalles del algoritmo para una posible paralelización en la plataforma de destino, o bien, podría ser necesario comprender qué algoritmos funcionan bien con datos ruidosos y cuáles no, o cuántas muestras podrían ser suficientes para entrenar un rango. -SVM con una longitud suficientemente buena. Esto no requiere un gran conocimiento matemático, sino algunos estudios de ablación de tipo de ingeniería y un enfoque de pensamiento que puede conducir a sistemas inteligentes. Pero uno no debería ser demasiado horrible en matemáticas, de lo contrario no entendería los algoritmos en primer lugar. No queremos refinar las matemáticas aquí, pero al menos debemos comprender algunas matemáticas de alto nivel.

(3) Requiere la creación de una nueva tecnología: cuando se requiere la creación de nuevas tecnologías que no existen en el mundo a partir de ahora, es necesario que conozca una gran cantidad de matemáticas, combinadas con habilidades de ingeniería inteligente. Por ejemplo, si uno le pide que lo necesite para mejorar el rendimiento en un conjunto de datos determinado, es posible que tenga que usar conceptos de compensación sesgo-varianza, conceptos de minimización de riesgo empírico y error verdadero (en un sentido esperado), comprensión por qué un algoritmo funciona, e inferir de las matemáticas del algoritmo lo que falta en el interior. El simple hecho de probar diferentes modelos (CNN, etc.) en tales escenarios a menudo no ayuda.

¡En todo lo que diría, los conceptos básicos de álgebra lineal, probabilidad y estadística y conceptos de optimización siempre deben aprenderse! También se debe tratar de analizar siempre los algoritmos ML y de visión desde las siguientes perspectivas:

(a) donde los algoritmos pueden ser robustos y por qué

(b) ¿En qué condiciones fallarán los algoritmos y por qué?

(c) cuál es el costo computacional de ejecutar el algoritmo y vale la pena el intercambio entre la eficiencia computacional y el rendimiento ligeramente mejorado (no suficientemente perceptible en una aplicación).

Entonces, incluso si comprende las cosas matemáticamente que serán importantes para el punto (3) anterior, probar varios algoritmos (ejecutar algunas bibliotecas / codificar algunas cosas) siempre ayuda a obtener un bloqueo adecuado de (a), (b), ( c) arriba !!

Otros hacks específicos del producto: muy a menudo vería que la disponibilidad de un conjunto de datos de entrenamiento bien anotado puede mejorar el rendimiento (después de considerar cuidadosamente la compensación de la desviación del sesgo). Por lo tanto, desde la perspectiva del producto empresarial, vale la pena investigar la cuestión, si algún tipo adicional de datos de capacitación puede ayudar . Por ejemplo, en reconocimiento de grano fino, si uno obtiene anotaciones de puntos de referencia en las imágenes y las etiquetas de las imágenes, el rendimiento puede aumentar significativamente (consulte la página principal de Ziwei Liu)

Espero que ayude !!