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.
- ¿Cómo se ve afectada la propagación hacia atrás en NN recurrentes?
- ¿Por qué la distribución previa no tiene mucho impacto en la distribución posterior cuando tenemos muchos datos?
- ¿Qué tiene de bueno la PNL?
- ¿Qué proyectos principales puedo hacer en R después de aprender minería de datos, análisis de sentimientos de limpieza, regresión y técnicas de agrupamiento?
- ¿Cuán relevantes son las redes neuronales atractoras en la investigación actual del aprendizaje automático?
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.