Cómo comenzar a aprender inteligencia artificial y robótica

Esta es una de esas áreas donde los detalles son menos importantes que la imagen más grande, y la imagen más grande implicará escribir código. Montones y montones de código, y no solo de la variedad de nivel de entrada, sino también uno de los códigos más complicados e intensivos en algoritmos que escribirás en tu carrera. Hay una razón por la cual la IA generalmente se enseña como una de las últimas asignaturas (si es que lo hace) en informática de nivel universitario.

Lo que esto significa en términos prácticos es que primero debe aspirar a ser un ingeniero de software realmente bueno y perfeccionar su oficio en cualquier número de proyectos más pequeños antes de abordar cualquier cosa realmente considerada “IA”, aunque solo sea para que los resultados de lo que haga puedan ser leído y comprendido por usted mismo y otros más tarde, como sería cierto con cualquier tarea compleja de ingeniería de software.

La robótica tiende a involucrar mucha más electrónica e interfaz con dispositivos del “mundo real” como motores, actuadores, sensores, etc., por lo que todo lo anterior también se aplica (ya que el software complejo sigue siendo un software complejo) pero querrá un dispositivo decente Conexión a tierra en dispositivos electrónicos (sin juego de palabras) y dispositivos analógicos, así como lenguajes de programación más eficientes como C o incluso lenguaje ensamblador para escribir al menos parte del código que requiere baja latencia y respuesta crítica de tiempo a las entradas externas.

Algunos solían insistir en que no podías ser un programador de inteligencia artificial sin ser también muy fluido en LISP, pero ya no estoy seguro de que eso sea cierto. Es un lenguaje realmente interesante de aprender por otras razones, y hacerlo ciertamente cambiará su forma de pensar acerca de la programación en general, pero aprender a administrar la complejidad del software en general sigue siendo la habilidad de primer orden requerida. Las redes neuronales también están teniendo un gran impacto en la IA y ciertamente vale la pena estudiarlas.

Creo que esto dependería de tu estado actual.

Si aún eres estudiante:

Toma cursos relevantes en tu universidad. Incluso si no se encuentra en los flujos relacionados de CS / EE / ECE cuya facultad puede ofrecer estos cursos, puede tomar los cursos ofrecidos como optativos.

Esto podría ser:

  1. Álgebra lineal
  2. Aprendizaje automático
  3. Aprendizaje profundo
  4. Temas avanzados en aprendizaje profundo (visión artificial, procesamiento del lenguaje natural, aprendizaje por refuerzo, etc.)

Creo que puede omitir por completo el Aprendizaje automático e ir directamente al Aprendizaje profundo (DL) porque allí es donde está toda la diversión en lo que respecta a la IA y la robótica.

De hecho, ayudé a uno de mis amigos (que es profesor en uno de los Institutos Indios) a diseñar una introducción al curso DL, que solo enseña suficiente ML para comenzar a usar DL. El curso se ofrecerá el próximo semestre y nos aseguraremos de que la calidad sea la mejor que podamos ofrecer conjuntamente.

Es esencial que realice un proyecto utilizando todas las ideas en estos cursos utilizando las herramientas de última generación que se utilizan en la industria, resolviendo un problema que sea de relevancia práctica (tal vez la traducción automática de su idioma nativo al inglés y al inglés). viceversa, etc.). Esto te hace valioso en el mercado laboral.

Si planea obtener una gran experiencia en el área, MS y PhD o unirse a una nueva empresa es una buena opción. También puede pensar en pasantías con los mejores expertos académicos de su país.

Si ya está trabajando en un campo no relacionado:

Se ofrecen muchos buenos cursos / recursos en línea. Pero sugeriría ir a una reunión relacionada con IA / Robótica en su ciudad y formar un grupo de estudio. Siempre es recomendable aprender en grupo (en lenguaje de aprendizaje automático: aprendizaje en conjunto) que solo. El ritmo y la precisión del aprendizaje definitivamente serán más rápidos y mejores.

Están surgiendo muchas escuelas de verano de DL, pero no vayas a ellas si los organizadores tienen un propósito descarado de ganar una cantidad irrazonable de dinero. Los expertos en el campo están haciendo que sus conferencias y diapositivas estén disponibles en línea. Abogan por una cultura de investigación abierta y un aprendizaje accesible. Está bien poner dinero, si ofrecen una certificación válida que le permita conseguir un trabajo en la industria de IA. También está bien pagar razonablemente por el esfuerzo de los oradores y los organizadores, incluso si no se ofrecen certificados.

Intente y haga un buen proyecto con sus amigos del grupo de estudio preferiblemente en Kaggle (Your Home for Data Science). Toda teoría y ningún proyecto práctico convierte a Jack en un niño aburrido y a Jill en una niña aburrida.

No soy un experto, soy un autodidacta. Este es mi plan a largo plazo y creo que funcionará.

EDITADO: Programación dinámica -> Algoritmos de búsqueda y búsqueda de rutas (libros de desarrollo de juegos) -> Probabilidad -> libro base de IA (libro de Peter Norvig + curso de IA de Udacity) -> Álgebra lineal -> Aprendizaje automático (Andrew Ng) -> Aprendizaje profundo ( muchas cosas por ahí, elige una buena biblioteca de tu idioma favorito y explora con él) -> Máquinas de estados finitos (incluidas las cosas de markov) -> Aprendizaje de refuerzo (libro de sutton + curso de david silver) -> Mix Machine learning and Deep aprendizaje con aprendizaje de refuerzo -> ahora pasar a la robótica (cosas de sebastian thrun) -> hacer un proyecto -> volver a los libros avanzados de IA -> Leer los últimos documentos (incluido un mapa de ruta a la IA) -> poner un ojo en la ciencia neuro / cognitiva (espere los documentos de vicario) y la computación cuántica (No quiero aprender, solo manténgase actualizado). Únete a comunidades y foros. No olvides probar tus habilidades con plataformas de competencia como Kaggle, Hackerrank, etc. Debes ser flexible para adaptar los últimos inventos, porque la IA todavía está en su etapa primitiva y hay mucha investigación activa por ahí.

Puede comenzar implementando un módulo de visión robótica, los algoritmos tradicionales de reconocimiento de objetos de visión por computadora se centran en el análisis de imágenes en imágenes estáticas. es decir, el ingeniero crea una solución de reconocimiento para una cámara estacionaria y un sujeto estacionario.

En la robótica, rara vez es así, ya que muy a menudo tanto el robot como el objeto que se está identificando se mueven, por lo que puede pensar en el movimiento relativo y el análisis de vectores de movimiento relativo. Si uno aplicara un algoritmo normal de visión por computadora a este problema, el robot vería un desenfoque debido al movimiento relativo. Este es un buen problema para resolver.

Intente implementar una solución llamada reflejo ocular vestibular, que básicamente le da al robot un movimiento reflejo tal que, aunque el robot se esté moviendo y el objetivo se esté moviendo, se puede lograr un enfoque perfecto. Podrías trabajar en eso.

Además, para un análisis de profundidad adecuado, necesitará más de una cámara en el robot. Normalmente, una sola cámara producirá una imagen plana, que podría usar sin problemas, pero más bien dos cámaras funcionarían mejor dando una percepción de profundidad e impresión adecuada de profundidad. Para hacer esto, necesitará implementar una sinopsis binocular en su solución. Que es básicamente dos cámaras (un sistema de visión binocular). En cuyo caso, ambos cuadros de las dos imágenes tendrán que fusionarse para completar el proceso de estereosis binocular. Se debe conocer el ángulo entre las cámaras y la distancia entre las cámaras para realizar el cálculo de fusión de imagen.

En los seres humanos, el cálculo de la estereosis binocular se realiza subconscientemente ya que el cerebro “conoce” la distancia entre ambos ojos y el ángulo de cada ojo en relación con el otro ojo. En robótica, esto debe hacerse manualmente. Los sistemas de visión en robótica son solo un poco menos complejos que los sistemas de visión en biología natural. Los pequeños sistemas de reflejos sutiles, como el reflejo ocular vestibular, deben diseñarse y codificarse manualmente en un robot, pero sin tales soluciones, muchas imágenes aparecerían como un desenfoque en la robótica.