¿Cómo debo comenzar a crear una IA simple en Java?

La inteligencia artificial (IA) es un vasto dominio. El aprendizaje automático y el procesamiento del lenguaje natural son subdominios superpuestos de IA. Las redes neuronales son uno de los muchos algoritmos de aprendizaje automático.

Ahora, volviendo a su pregunta, para comenzar con la inteligencia artificial: puede aprender sobre los algoritmos tradicionales de inteligencia artificial y muchos otros conceptos, a través de cursos y libros en línea:

  • Introducción a la inteligencia artificial?
  • Inteligencia artificial: un enfoque moderno

Puede implementar muchos de estos algoritmos en JAVA.

Además con respecto a las redes neuronales, Inicialmente aconsejaré comenzar a aprender y comprender los conceptos básicos de Machine Learning, Álgebra lineal, otros algoritmos de Machine Learning como la regresión logística, etc. [1]. Después de eso, proceda a comprender las redes neuronales.

Mira esta video conferencia para aprender más sobre las redes neuronales:

Además, puede verificar muchas bibliotecas disponibles y diferentes tipos de implementación de redes neuronales en JAVA, comprender su código e intentar implementar su propia versión desde cero.

Ahora, llegando a la segunda parte de su pregunta, parece que desea crear un chatbot. Para eso también tienes que aprender el procesamiento del lenguaje natural [2].

Puede consultar Standford CoreNLP [3] una biblioteca NLP implementada en JAVA.

Junto con las técnicas de PNL, también puede usar muchos algoritmos de aprendizaje automático (por ejemplo, redes neuronales) para la implementación de su chatbot.

Vea mi otra respuesta sobre el enfoque de implementación de chatbot.

¿Cómo desarrollo un chatbot usando Python sin ningún framework?

¡La mejor de las suertes!

Notas al pie

[1] Aprendizaje automático | Coursera

[2] Introducción al procesamiento del lenguaje natural | Coursera

[3] Stanford CoreNLP: software de lenguaje natural

Describiste dos tipos muy diferentes de IA. Las redes neuronales son un mecanismo para mapear un conjunto de valores de entrada a valores de salida basados ​​en un conjunto de números que se ajustan mediante un algoritmo de optimización. Eso significa que son buenos en tareas que son complicadas pero que tienen un número muy limitado de resultados posibles, como “¿Es esta la imagen de un perro” o “¿En qué dirección debe ir este automóvil?”. Tener una conversación con su computadora combina muchos temas, pero el primero que tendría que conquistar sería averiguar qué está tratando de decir el usuario, que se llama Procesamiento del lenguaje natural o PNL. La PNL no es una tarea que podría completar con una red neuronal a menos que tenga una supercomputadora para entrenarla, por lo que es probable que tenga que escribir un algoritmo para ella. Esto puede ser realmente divertido, pero hacer cualquier cosa que pueda manejar una amplia gama de situaciones es muy, muy difícil. Las redes neuronales son probablemente un mejor lugar para comenzar, ya que existen numerosas bibliotecas para usarlas e incluso escribir su propia implementación no es muy difícil si está dispuesto a trabajar. Sin embargo, si recién está comenzando con IA, podría ser mejor hacer que su computadora haga algo más simple como jugar un juego con usted en lugar de tener una conversación. Escribe una IA para jugar contra ti en Tic Tac Toe y construye desde allí. No importa en qué ruta vayas, YouTube es tu amigo. Yo personalmente recomiendo el canal carykh, hace cosas increíbles con redes neuronales e IA y las explica bastante bien, pero para obtener una explicación más detallada y técnica, tendrá que buscar en otro lado.

Debe usar el conjunto de bibliotecas de aprendizaje automático asociadas con Eclipse Deeplearining4j. Son, con mucho, los más completos y eficaces.

  • Deeplearning4j: DSL de red neuronal (facilita la construcción de redes neuronales integradas con tuberías de datos y Spark)
  • ND4J: matrices N-dimensionales para Java, una biblioteca tensorial: “Eclipse January con código C y alcance más amplio”. El objetivo es proporcionar operaciones de tensor y soporte optimizado para varias plataformas de hardware.
  • DataVec: una biblioteca ETL que vectoriza y “tensoriza” datos. Extraiga la carga de transformación con soporte para conectarse a varias fuentes de datos y generar matrices n-dimensionales a través de una serie de transformaciones de datos
  • libnd4j: biblioteca Pure C ++ para operaciones de tensor, que trabaja en estrecha colaboración con la biblioteca de código abierto JavaCPP (JavaCPP fue creado y es mantenido por un ingeniero de Skymind, pero no forma parte de este proyecto).
  • RL4J: aprendizaje de refuerzo en la JVM, integrado con Deeplearning4j. Incluye aprendizaje Deep-Q utilizado en AlphaGo y A3C.
  • Jumpy: una interfaz de Python para la biblioteca ND4J que se integra con Numpy
  • Árbitro: ajuste automático de redes neuronales a través de la búsqueda de hiperparámetros. Optimización de hiperparámetros mediante búsqueda de cuadrícula, búsqueda aleatoria y métodos bayesianos.

Tienen un canal de soporte para desarrolladores grande y activo en línea aquí: deeplearning4j / deeplearning4j

Pasar de lo básico a la IA es un ENORME salto. Te sugiero que sigas aprendiendo las cuerdas antes de meterte en aguas profundas.

Aquí hay algunos recursos para comenzar:

  • Descripción general de las bibliotecas de IA en Java | Baeldung
  • Inteligencia artificial práctica: programación con Java [1]

Notas al pie

[1] http: // * https://www.saylor.org/

Empiezas haciendo una investigación seria sobre la técnica anterior. Los libros de texto, la literatura científica y google son tus amigos.

Pruebe la biblioteca Weka para realizar Machine Learning en Java.

Puede hacerlo directamente en la herramienta Weka e intentar implementarla en su aplicación.