¿Cómo se comienza a aprender inteligencia artificial?

16

Soy estudiante de ingeniería de software y soy completamente principiante en IA. He leído muchos artículos sobre cómo comenzar a aprender IA, pero cada artículo sugiere una forma diferente. Me preguntaba si algunos de ustedes expertos pueden ayudarme a comenzar de la manera correcta.

Algunas preguntas más específicas

  1. ¿En qué idioma debería centrarme? Muchos artículos sugieren Python, C ++ o Lisp para AI. ¿Puedo usar Java en lugar de cualquiera de los otros idiomas mencionados?

  2. ¿Qué tipo de formación matemática debo tener? Durante el primer año, hice matemáticas discretas, que incluían los siguientes temas: conjuntos, matrices, vectores, funciones, lógica y teoría de grafos (enseñaron estos temas brevemente). ¿Hay más temas que debería aprender ahora? Por ejemplo, cálculo?

Si es posible, agradecería cualquier recurso o libro que pueda usar para comenzar, o tal vez ustedes puedan darme un procedimiento detallado que pueda seguir para alcanzar su nivel.

Nota: Por ahora me gustaría centrarme en las redes neuronales y el aprendizaje automático. Después de eso, me gustaría explorar la robótica y el procesamiento del lenguaje natural.

aspire29
fuente

Respuestas:

16

La Inteligencia Artificial es un campo muy amplio y cubre muchas y muy profundas áreas de informática, matemáticas, diseño de hardware e incluso biología y psicología. En cuanto a las matemáticas: creo que el cálculo, las estadísticas y la optimización son los temas más importantes, pero aprender tantas matemáticas como sea posible no hará daño.

Hay muchos buenos recursos introductorios gratuitos sobre IA para principiantes. Recomiendo comenzar con este: http://aiplaybook.a16z.com/ También publicaron dos videos sobre los conceptos generales de IA, puedes encontrarlos en Vimeo: "AI, Deep Learning y Machine Learning: A Primer "y" La promesa de la IA "

Una vez que tenga una comprensión clara de los términos y enfoques básicos de inteligencia artificial, debe descubrir cuáles son sus objetivos. ¿Qué tipo de software de IA quieres desarrollar? ¿En qué industrias estás interesado? ¿Cuáles son sus posibilidades de involucrarse en proyectos de grandes empresas? Es más fácil elegir las herramientas adecuadas cuando sabes exactamente lo que quieres lograr.

Para la mayoría de los recién llegados a la IA, el área más interesante es el aprendizaje profundo. Solo para dejarlo claro, hay muchas áreas de IA fuera del aprendizaje automático y hay muchas áreas del aprendizaje automático fuera del aprendizaje profundo. (Inteligencia artificial> Aprendizaje automático> Aprendizaje profundo) La mayoría de los desarrollos recientes y las noticias publicitadas son sobre DL.

Si también te interesó el aprendizaje profundo, debes comenzar por aprender sobre los conceptos de redes neuronales artificiales. Afortunadamente, no es demasiado difícil entender los conceptos básicos y hay muchos tutoriales, ejemplos de código y recursos de aprendizaje gratuitos en la web y hay muchos marcos de código abierto para comenzar a experimentar.

El marco de aprendizaje profundo más popular es TensorFlow. Está respaldado por Google. Me encanta o lo odio, es un marco basado en Python. También hay muchos otros frameworks basados ​​en Python. Scikit-learn, Theano, Keras también se mencionan con frecuencia en los tutoriales. (Un consejo: si usa Windows puede descargar WinPython que incluye todos estos marcos).

En cuanto a los frameworks Java, desafortunadamente no hay tantas opciones. El marco Java más destacado para DL es Deeplearning4j. Está desarrollado por una pequeña empresa y su base de usuarios es mucho más pequeña que la de TensorFlow. Hay menos proyectos y tutoriales para este marco. Sin embargo, los especialistas de la industria dicen que los marcos basados ​​en Java eventualmente se integran mejor con las soluciones de Big Data basadas en Java y pueden proporcionar un mayor nivel de portabilidad y una implementación de producto más fácil. Solo una nota al margen: el Laboratorio de Propulsión a Chorro de la NASA usó Deeplearning4j para muchos proyectos.

Si decide seguir la corriente y quiere comenzar a aprender más sobre TensorFlow, le recomiendo que consulte los canales de YouTube de "DeepLearning.TV", "sentdex" y "Siraj Raval". Tienen buenos tutoriales y algunas demostraciones geniales. Y si decide realizar una inmersión más profunda, puede inscribirse en un curso en línea en udacity o coursera.

También puede ser interesante saber que existen otros marcos de Deep Learning para la máquina virtual Java con lenguajes alternativos, por ejemplo, Clojure. (Clojure es un dialecto de LISP y fue inventado por John McCarthy, el mismo informático que acuñó el término "inteligencia artificial". En otras palabras, existen lenguajes y herramientas de programación más modernos y populares, pero aún es posible / y un poco genial / para usar el lenguaje para IA que fue diseñado originalmente para IA. ThinkTopic en Boulder y Freiheit en Hamburgo son dos compañías que usan Clojure para proyectos de IA. Y si quieres ver algo increíble para inspirarte para usar Clojure en IA y robótica, Le recomiendo que vea el video de YouTube "OSCON 2013: Carin Meier, La alegría de volar robots con Clojure".

(+++ Cualquiera puede corregirme si digo algo incorrecto. +++)

akopacsi
fuente
Dado que hay menos marcos para Java, ¿es posible escribir mis propios marcos para él, que puedo usar como sustituto de TensorFlow? Gracias
aspire29
1
Crear su propio marco para estudiar los conceptos básicos es una muy buena idea. Por otro lado, TensorFlow está desarrollado por una gran comunidad y muchos profesionales muy talentosos. Honestamente, no creo que ningún marco casero pueda competir con éxito con él. Por cierto, no entiendo por qué hay tan pocos frameworks Java AI ... considerando que sigue siendo el número 1. lenguaje de programación y JVM está en casi todas partes. Supongo que la IA todavía se trata más de investigación que de producción.
akopacsi
6

Descubrirá que tanto el cálculo como el álgebra lineal tienen alguna aplicación en las técnicas de IA / ML. En muchos sentidos, puede argumentar que la mayor parte de ML se reduce a álgebra lineal, y el cálculo se usa, por ejemplo. El algoritmo de retropropagación para el entrenamiento de redes neuronales.

Sería bueno tomar una clase o dos en probabilidad y estadísticas también.

La elección del lenguaje de programación es menos importante, OMI. Puede hacer AI / ML en prácticamente cualquier idioma convencional y en muchos idiomas no convencionales. La mayor diferencia implica el rendimiento y la disponibilidad de bibliotecas / herramientas. C ++, por ejemplo, generalmente va a superar a Java o Python y le permite acercarse al metal para maximizar realmente las capacidades de su hardware. Python, sin embargo, tiene un FFI realmente bueno, y a menudo se usa junto con C o C ++. Python, C ++, Java, R, Octave / Matlab y algunos otros lenguajes tienden a tener muchas bibliotecas de alta calidad disponibles, lo que puede ser importante para usted dependiendo de lo que quiera hacer.

Dicho esto, probablemente no quieras intentar hacer ML / AI en, por ejemplo, COBOL o PL / I o RPG / 400 o algo así. Apégate a algo al menos razonablemente popular. Mire alrededor de mloss.org y vea qué bibliotecas / juegos de herramientas están disponibles en diferentes idiomas y eso debería ayudar a guiar su elección.

crimen mental
fuente
5

Cuando me interesé en la IA, comencé con las cosas más básicas. Mi primer libro fue Inteligencia artificial de Russell y Norvig: un enfoque moderno . Creo que es un buen lugar para comenzar, incluso si está interesado principalmente en Deep Nets. Trata no solo los conceptos y algoritmos básicos de IA (sistemas expertos, búsqueda en profundidad y amplitud, representación del conocimiento, etc.) sino también las matemáticas fundamentales (razonamiento bayesiano, lógica de primer orden, n-gramas NL, etc.) y algunos problemas comúnmente conocidos (como el problema del vendedor ambulante, por ejemplo).

También puede ser una buena idea aprender estadísticas, ya que está particularmente interesado en el aprendizaje automático. Después del libro mencionado, también debe tener una buena idea sobre qué aprender a continuación.

  • No me importa demasiado el lenguaje de programación.

Es mucho más importante comprender la programación en sí misma y las técnicas relacionadas. Aprenda algo sobre estructuras de datos, algoritmos y los diferentes paradigmas de programación (como OOP, programación funcional, etc.). Intente comprender la lógica detrás de la programación y no solo un lenguaje en particular. Después de todo, aprender un nuevo idioma no es tan difícil una vez que entiendes cómo programar (entonces aprender un nuevo idioma es más o menos azúcar sintáctica).

BobbyPi
fuente
1
Hice una pequeña edición para facilitar la lectura y agregué un enlace al libro de texto. Buen consejo, especialmente re: lenguajes de programación. (Mire a los codificadores que trabajan en "cualquier idioma con sintaxis" :) Realmente se reduce a lo que es más óptimo o conveniente para un proyecto o tarea determinada.
DukeZhou
3

Para iniciar la IA, en primer lugar, comprenda qué es la IA. Por qué la precisión de MNIST aumenta rápidamente después de 2012. Por qué el aprendizaje automático necesita IA para aumentar su precisión.

Para iniciar y construir Application on Machine learning con IA no necesitabas matemáticas ni algún tipo de ciencia espacial. Llegas tarde, mi hermano crea atajos para todos los problemas de aprendizaje automático, como un contenedor. Solo necesita pasar datos a un método y el método hará toda la mierda. Comience con el problema de MNIST es emocionante. Lea sobre la historia de MNIST, use el algoritmo básico en ella. Pruebe la regresión lineal, la regresión logística, la agrupación Kmean, KNN. Herramientas para el aprendizaje automático Skite learn (python lib) o Tensorflow (python lib) tflearn (api de nivel superior de Tensorflow como un contenedor) Ambos son de código abierto. Los ejemplos están disponibles en GitHub. Comienza a buscar en GitHub. Encontraste un gran ejemplo. Para ambos lib. Usa kaggel para resolver problemas participa en comptition.

Cuando complete todo el algoritmo anterior, trate de centrarse en su error. Ahora AI entró en rollo. Intente descubrir cómo la red neuronal lo ayuda a disminuir el error y aumentar la precisión. Luego pruebe alguna red neuronal básica como sigmoid, relu y cnn. No olvide usar el abandono en su red neuronal. Puede usar Tensorflow o keras o Tensorflow con keras

Verifique de lado a lado 3 Blue 1 Brown's Linear Álgebra de video para mejorar sus matemáticas. una vez al día pero todos los días un video.

Y ahora enfóquese en las matemáticas detrás de la lógica (cualquier algoritmo). Puede probar con un curso de aprendizaje automático.

Use Tensorflow para crear aplicaciones de Android, aplicaciones de iOS, RaspPi Check Tensorflow dev summit 2016/2017.

O si necesita un curso intensivo, consulte este https://youtu.be/u4alGiomYP4

evalsocket
fuente
1
Vamos a aclarar, AI no se trata solo de leer el libro html y comenzar a programar, ¡aclaremos aquí! OP necesita consultar a profesores de Oxford, Harvad, etc.
quintumnia
3

Antes de entrar en Inteligencia Artificial, uno debe terminar con los requisitos previos. No hay una lista sólida, pero un buen conocimiento de varios algoritmos es obligatorio. Aparte de eso, debería sentirse cómodo con al menos un lenguaje de programación, como C ++ o Java. No te sugeriré que te sumerjas en la Inteligencia Artificial si eres completamente nuevo en Informática. Un poco de experiencia con la programación antes de sumergirse en la Inteligencia Artificial será un punto a favor para usted.

Comienza a leer (blogs, documentos, artículos académicos, etc.) sobre Inteligencia Artificial. Como lo que es, sus aplicaciones, estado actual y otras cosas que puedes encontrar. Comience a hacer códigos de IA para juegos pequeños como Tic Tac Toe, Sudoku, Reversi (Othello), etc. para comenzar. Puede crear su propio simulador y crear un código que resuelva el cubo Rubik. Del mismo modo, cree códigos para el reconocimiento de patrones y el aprendizaje automático. Nada es mejor que aprender haciendo. Lenguajes como LISP y Python serán muy útiles. Aquí hay dos respuestas que lo ayudarán, ans1 y ans2 .

Si eres una persona a la que le gusta leer y aprender de libros (como yo), entonces puedes comprar Inteligencia artificial: un enfoque moderno (Peter Norvig y Stuart Russell). El libro es muy bueno y funciona bien para el nivel intermedio y avanzado. Intenta resolver los problemas de ejercicio que figuran en el libro. La solución pdf de los libros está disponible en línea . Para Machine Learning, dos libros que recomiendo es Pattern Recognition and Machine Learning (Christopher M. Bishop) y Programming Collective Intelligence (O'Reilly).

Para empezar, hay un muy buen artículo sobre Inteligencia Artificial y Singularidad Tecnológica.

El artículo es largo y está dividido en dos partes. Le recomiendo que lea este artículo si se toma en serio la Inteligencia Artificial. Te dará algunas buenas ideas.

El conocimiento de la teoría computacional te será de gran ayuda. Especialmente cuando trabajas en el campo del procesamiento del lenguaje natural. Otros subcampos de IA que podrían interesarle serán el aprendizaje automático, la computación evolutiva, los algoritmos genéticos, el aprendizaje por refuerzo, el aprendizaje profundo, etc. La lista continúa. Mejor su conocimiento de Estadística, mejor será para Inteligencia Artificial. Manténgase en sintonía con los acontecimientos recientes en el campo a través de foros, sitios web, etc. El sitio web abierto de AI también es una muy buena fuente.

Ugnes
fuente