Si alguien sin experiencia en programación quisiera aprender algoritmos y aprendizaje automático, ¿cuáles serían las mejores fases de estudio e investigación? ¿Sería mejor comenzar con el aprendizaje de la codificación? ¿Con qué idioma es mejor comenzar?

Me gusta comenzar desde cosas fundamentales, como comencé a programar usando C ++. Desde entonces, aprender C ++ me ha ayudado a aprender fácilmente otros lenguajes modernos como Java, C #, Python y muchos más.

Porque después de haber aprendido y hecho las cosas difíciles en C ++, uno tiende a aprender fácilmente más cosas en la parte superior. C ++ es difícil, pero si logras aprenderlo, casi nunca tendrás problemas para aprender otro lenguaje de programación, nunca más.

Mientras que otros lenguajes abstraen la administración de memoria, C ++ no lo hace, en C ++ puede aprender sobre asignaciones de memoria de bajo nivel y eliminación de objetos o matrices de objetos y, por lo tanto, lo obliga a aprender los conceptos de programación a un nivel fundamental. Una vez que aprenda C ++, técnicamente conoce todos los demás lenguajes de programación, Python será más fácil, Java será más fácil y C # también será más fácil.

Lo mismo se aplica al aprendizaje automático (ML), debe comenzar con los requisitos previos, como aprender matemáticas de nivel universitario. Porque comprender conceptos de alto nivel en ML no requiere las matemáticas sofisticadas.

Los conceptos de ML son muy fáciles de aprender a un alto nivel si conoce álgebra lineal básica.

No necesita ser un experto en programación para comprender ML.

Simplemente aprenda los siguientes requisitos previos:

  • Álgebra lineal
    • Matrices
    • Vectores
  • Cálculo
    • Diferencial
    • Integral
  • Optimización numérica
    • Métodos de optimización de primer orden
    • Métodos de optimización de segundo orden.
  • Probabilidad y estadística
    • Variables aleatorias
    • Funciones de distribución de probabilidad.
    • Teorema de Bayes.

ML no requiere que usted sea competente en programación. Solo tiene que tener suficientes habilidades en programación como poder acceder a bibliotecas de alto nivel como Keras, que se basa en TensorFlow (TF) y puede tener modelos ML en funcionamiento.

Obviamente, aún querría aprender más que solo llamar a bibliotecas de alto nivel. Para hacerlo, debe dedicar tiempo al aprendizaje de manera constante durante un período prolongado de tiempo, como varios años de lectura (investigación), diseño e implementación de modelos de aprendizaje automático.

No importa cómo empieces, pero te aconsejo que comiences con las matemáticas. Al menos revise los requisitos previos anteriores o apréndalos si aún no los conoce.

Luego, puede tomar cursos en línea o, como yo, puede comenzar proyectos paralelos para guiar su proceso de aprendizaje.


Cuando aprendí ML ya tenía conocimiento en visión por computadora en 3D y programación en una variedad de lenguajes de programación, así que comencé a leer directamente literatura de primer nivel de Google Brain, DeepMind, Facebook AI research (FAIR) e investigación de Microsoft.

Pero cuando aprendí visión por computadora (CV) comencé desde cero solo con un conocimiento limitado en matemáticas de ingeniería de segundo año. No tenía un conocimiento serio de programación, en ese momento, solo podía escribir código básico como:

cout << "hola mundo";

Sin embargo, logré saltar directamente y comencé a enseñarme a mí mismo la visión por computadora y la programación desde cero. No tomando cursos en línea sino leyendo revistas de primer nivel y probando ideas intentando codificar las cosas desde cero.

Este enfoque me tomó 4 años para finalmente construir mis propios algoritmos de visión por computadora desde cero.

Me llevó alrededor de 2 años comenzar a ver patrones y desarrollar una perspectiva única y los otros 2 años los pasé diseñando, rediseñando, implementando y reimplementando una variedad de ideas. Se sintió casi como un ciclo interminable de ida y vuelta antes de finalmente desarrollar nuevos algoritmos CV funcionales.

El enfoque que utilicé fue como sumergirme de cabeza en una pared de ladrillos (probablemente eso es una exageración, sin mencionar que fue muy divertido).

Para aprender programación, CV y ​​ML:

  • Comencé un proyecto desafiante, en 2009, que sabía que no era fácil de terminar simplemente con una búsqueda básica en Google y una noche de codificación. Desde entonces, me gusta comenzar proyectos que prueban mi comprensión del tema cada vez que quiero comprender profundamente un campo. Entonces, para aprender tanto CV como ML tuve que comenzar proyectos desafiantes.
  • Utilizo los proyectos para guiarme mientras leo (investigo) e implemento cosas.
  • Más tarde, puedo agregar los proyectos terminados a mi cartera, iniciar aplicaciones o código abierto.

El otro consejo que puedo dar es comenzar con una visión general de ML, mientras intentas implementar modelos de ML puedes aprender algoritmos, estructuras de datos y conceptos básicos de diseño de sistemas de la informática en el camino.

Obtenga la descripción general y luego conozca los detalles en el camino.

Así:

  • Aprenda los requisitos previos de matemáticas primero.
  • Luego elige un lenguaje de programación.
    • El mejor lenguaje para aprender para ML es Python.
    • Java también es fácil de aprender.
    • C ++ es más difícil de aprender, pero creo que es más gratificante conocer este lenguaje de programación porque te da la flexibilidad para construir sistemas desde cero.

Por ejemplo, cuando estaba aprendiendo CV y ​​programación, literalmente tuve que construir una biblioteca de visión por computadora desde cero.

Codifiqué todo desde cero, incluidas las estructuras de datos, como listas vinculadas, listas de matrices y árboles. También codifiqué montones de estrategias de búsqueda prioritarias.

Aprendí mucho sobre codificación y CV de esa manera. También gané mucha confianza en la programación y la visión por computadora de esa manera.


Cada vez que necesite aprender algo, tómese el tiempo para dividir el problema más grande en componentes más simples. Se llama aprendizaje por primer principio, aprender los bloques de construcción y luego tratar de sintetizar soluciones a partir de esos bloques de construcción básicos.

Tengo un lema:

Las cosas simples constituyen cosas avanzadas.

Aprendo lo básico y trato de explicar conceptos complejos al reunir esos conceptos básicos. Si no puedo hacerlo, entonces necesito aprender nuevos conceptos básicos además de los básicos que ya conozco para poder explicar los nuevos conceptos desde mi propia perspectiva.

Sin embargo, lleva años construir ese nivel de pensamiento intuitivo. Es por eso que debes amar este campo de ML si quieres tener éxito en él.

  • No lo hagas por el dinero.
  • No lo hagas por reconocimiento.

Recordar:

  • Comience con las matemáticas.
  • Elija un lenguaje de programación, preferiblemente Python.
  • Aprenda la descripción general de ML mientras practica con bibliotecas de alto nivel como Keras.
  • Una vez que gane cierto nivel de confianza, comience proyectos secundarios cada vez más desafiantes. Asegúrese de terminar esos proyectos sin importar cuánto tiempo le lleve. Mi primer proyecto desafiante en visión por computadora me tomó cerca de 4 años en completarse porque resultó que masticaba más de lo que podía tragar en ese momento. Pero eso fue todo, era el secreto para comprender los conceptos subyacentes en CV necesarios para desarrollar una perspectiva única.
  • No aprendes programación y aprendizaje automático al leer, aprendes practicando constantemente durante años. Por lo tanto, necesita disciplina, enfoque, perseverancia y tenacidad para aprender con éxito el aprendizaje automático, la visión por computadora y la programación.

De lo contrario, no tiene que preocuparse mucho por no tener experiencia en programación para aprender estas cosas.

Cada experto fue una vez un principiante.

Espero que esto ayude.

La ruta de aprendizaje para los entusiastas actuales del aprendizaje automático y el aprendizaje profundo, en mi humilde opinión, debería ser:

  1. Elija un lenguaje de programación y actualmente Python es bastante accesible y se está desarrollando rápidamente. Encontrará su camino hacia otros lenguajes imperativos como C ++, etc., muy pronto.
  2. Tenga una estrategia de dos frentes para el aprendizaje automático / profundo: una es una pista en la que visita todos los aspectos del aprendizaje supervisado y no supervisado y tiene otra pista en la que usa Github y otro medio para realizar un seguimiento de las últimas investigaciones. ¿Por qué 2 puntas? Porque, por un lado, es bueno tener los fundamentos correctos, pero es clave saber qué trabajo de investigación y modelo evitar y cuál elegir. Por ejemplo, el uso de la red convolucional, en su forma actual, puede estar desactualizado en los próximos 12 meses. (¡Quién lo hubiera pensado! ¡Yo no!)
  3. Por último: trace una ruta para desarrollar una aplicación, chatbot o algo que lo mantenga involucrado en los dos anteriores.

A medida que progreses, tu visión se volverá más clara.

Comenzaría con Python en este caso.

Yo aprendería:

  • Árboles de decisión
  • Probabilidad / generación de números aleatorios
  • Alguna herramienta de ingestión de datos (base de datos, archivos de texto, hadoop si es valiente)
  • mapear, filtrar, reducir

Vea si eso lo atrae y luego vaya desde allí.

A2A. El primer paso sería aprender a codificar en Python, posiblemente R. Al mismo tiempo, debe repasar sus cálculos matemáticos, hasta el cálculo y las derivadas parciales. Una vez que tenga lo básico en la codificación, debe comenzar a usar el lenguaje para trabajar en la codificación de modelos lineales generalizados (GLM); Es probable que el 80% de los problemas comerciales se puedan resolver con GLM.

Luego, trabaje a través de las diversas familias de algoritmos de aprendizaje automático, como agrupamiento, árboles de decisión y máquinas de vectores de soporte (SVM). Luego, si tiene acceso a grandes conjuntos de datos, comience a explorar redes neuronales profundas (DNN). Codifique al menos una red neuronal convolucional (CNN) y una red neuronal recurrente (RNN).

Cuando haya superado todo esto, repase su experiencia y concéntrese en los tipos de algoritmos en los que se sintió más cómodo. Profundice en esas áreas para obtener modelos más sofisticados.

Comience con las matemáticas (álgebra lineal, cálculo multivariable, modelos estadísticos y regresión …), que no requiere experiencia en programación. A partir de ahí, lea los documentos (consulte aquí para ver ejemplos asociados con algoritmos comunes hoy: https://www.slideshare.net/Colle …) e intente implementar en un lenguaje simple como R, que tiene paquetes correspondientes a muchos algoritmos (y tiene muchos tutoriales en línea para orientar uno al lenguaje de programación).

Sí, es mejor aprender al menos un idioma para entender cómo funciona la codificación.

Pero puede comprender los conceptos básicos del aprendizaje automático sin conocimientos de programación. Solo necesita un poco de pensamiento lógico para comprender los algoritmos y el aprendizaje automático.

Por lo general, las personas comienzan con lenguaje C. Luego Java o Python. Pero puedes aprender Java o Python directamente sin lenguaje C.

No estoy seguro de por qué necesitaría algoritmos, a menos que esté construyendo sistemas / bibliotecas de aprendizaje automático. Python, R y Scala son lenguajes geniales y fáciles de implementar redes neuronales. Puedes aprenderlos mientras construyes tus NN. Pero, si no tiene un ingeniero de datos, necesitará programación para guardar y acceder a sus datos de manera eficiente. Puede comenzar a construir NN’s mañana con algunos videos tutoriales rápidos / fáciles.

More Interesting

¿Podemos automatizar las búsquedas a través del aprendizaje automático? Tengo cientos de sitios web de diferentes fabricantes de automóviles, si tengo la intención de extraer toda la información (sobre todas las bicicletas / automóviles) junto con los enlaces.

¿Alguien ha intentado utilizar motores de recomendación y alguna forma de filtrado colaborativo para destacar agujeros en el mercado y producir conceptos para un mayor desarrollo en los productos?

¿Cuáles son algunas aplicaciones destacadas de los métodos de máxima verosimilitud?

¿Se podría denominar al PageRank como un algoritmo de aprendizaje automático?

¿Cuáles crees que son los campos más emocionantes del aprendizaje automático fuera del aprendizaje profundo?

¿Qué son los hiperparámetros en el aprendizaje automático?

Cómo comenzar mi investigación sobre el aprendizaje por refuerzo si no soy bueno en Python

El aprendizaje profundo hará que los humanos sean innecesarios para qué trabajos.

¿Amazon Web es una buena alternativa para que yo use redes neuronales si mi computadora no tiene suficiente energía?

¿Cuáles son algunos trabajos de investigación recientes sobre detección de anomalías?

¿Es posible implementar la detección de fraude usando Mahout? ¿Cómo?

¿Necesita ser un buen ingeniero de software para trabajar en cosas como visión por computadora, reconocimiento de voz, gráficos por computadora, aprendizaje automático?

¿Es una idea loca aprender el aprendizaje automático y el aprendizaje profundo sin ningún conocimiento avanzado de matemáticas?

¿Cómo se utiliza el aprendizaje automático en el análisis de sentimientos?

¿Cuáles son algunas aplicaciones de muestreo de importancia en Deep Learning?