¿Es posible programar un sistema que siga recibiendo información constantemente para que tome algunas decisiones, y luego aprenda de sus decisiones pasadas y de la información recibida, para refinar las decisiones que tomará en el futuro?

La respuesta corta es sí.

Para dar una mejor respuesta, probablemente necesite aclarar la intención de la pregunta y, a su vez, aclarar la intención y las capacidades del sistema.

Esto lleva al tema general de la descomposición del problema, que es una de las partes más importantes de la ingeniería. Algunas preguntas que tal vez quieras hacerte:

¿Cuál es la entrada al sistema?

  • ¿Texto? Imágenes? ¿Audio?
  • Gestos? ¿Botones? Palancas? Entradas direccionales (palos de control)?
  • ¿Estructuras de datos complejas (mapas, modelos, etc.)?
  • Sensores?

¿Cuál es la salida del sistema?

  • ¿Qué puede hacer el sistema?
  • ¿Escribir texto a un terminal? ¿Mostrar video en una pantalla? ¿Mover actores de IA dentro de una simulación? ¿Afecta los actuadores de un brazo robótico?

Ambas preguntas crean un marco de referencia para trabajar dentro. Una vez que entiendes ese tipo de contexto, la pregunta importante es:

¿Qué tipo de decisiones te interesa tomar?

  • ¿Estás buscando crear una conversación humana basada en el texto que se le pide al sistema?
  • ¿Estás buscando que un robot evite la colisión con objetos a su alrededor?
  • ¿Estás tratando de crear un sistema que identifique a los humanoides en una transmisión de video?
  • ¿Estás tratando de hacer un sistema que juegue al póker?

Obviamente, estos son casos de uso muy diferentes, pero este tipo de contexto es importante para definir lo que está tratando de hacer. Como sugieren algunas de las otras respuestas, hay muchos campos de inteligencia artificial y aprendizaje automático que podrían ser relevantes para su pregunta, pero debe aclarar lo que está haciendo y por qué antes de que alguien pueda ayudarlo a orientarlo en la dirección correcta.

La respuesta corta es , hasta cierto punto es posible.

El campo del aprendizaje automático básicamente trata con la programación de un sistema que mejora el rendimiento de realizar una tarea T a medida que gana más experiencia E , con respecto a una medida de rendimiento P.

Ahora, la pregunta es ¿cómo puede un sistema mejorar algo sobre lo que inicialmente no sabe nada? La respuesta es que la máquina generalmente recibe instrucciones de antemano sobre la medida de rendimiento P. La tarea podría ser jugar un juego de damas, podría predecir si una compra es genuina o fraudulenta, podría ser estimar los precios inmobiliarios o cualquier otra cosa. La medida de rendimiento para cada una de estas tareas debe especificarse, como ganar el juego, mejorar la precisión de la predicción o mejorar la estimación del precio con respecto a un cierto valor conocido.

Se puede hacer una máquina que aprende del entorno (de sus entradas) especificando la tarea que necesita realizar, y luego decidiendo las entradas (variables ambientales) que deben usarse para realizar la tarea de manera agradable, el formato de estas entradas variables (documento de texto, solo palabras de los documentos, etc.) y especificando la métrica en la que la máquina medirá su rendimiento.

Una vez hecho esto, la máquina pronosticará en función de las variables conocidas, y también en función de sus predicciones pasadas y sus resultados reales (qué tan desagradable estaba en su predicción). El algoritmo de aprendizaje automático continuará intentando mejorar su rendimiento en esa métrica específica.

Un ejemplo común de esto son los anuncios contextuales. Puede observar que los anuncios se vuelven cada vez más significativos para usted a medida que navega más en los sitios web relacionados.

Para una introducción al aprendizaje automático, puede leer ” Aprendizaje automático” de Tom Mitchell o seguir el curso de Andrew Ng sobre Coursera.

, es posible

En términos generales, hay tres tipos de aprendizaje.

1. Aprendizaje supervisado:
Habrá un maestro que entrenará el sistema. Imagina a un chico aprendiendo en
Universidad.

2. Aprendizaje no supervisado:
No habrá ningún maestro para guiarte, aprenderás de tu experiencia.

3. Aprendizaje de refuerzo:
Habrá un maestro que te castigará si actúas mal y recompensará
usted si se desempeña bien.

Ahora debes elegir qué técnica de aprendizaje se adapta a tu sistema y explorar eso 🙂

¡Definitivamente!
Además, no necesita ser complicado en absoluto. De hecho, aquí hay un sistema muy simple pero divertido escrito en <100 líneas de python.

Vi esto por primera vez en la introducción a la clase de informática en Berkeley. Fue implementado en esquema (lisp) por nuestro instructor.

No puedo encontrarlo ahora, así que lo reescribí en Python, ¡espero que sea fácil de entender! Lo puedes encontrar aquí:
evanthebouncy / is_it_parrot?

Aquí hay un rastro de mí jugando con el guión:

=========== vamos a jugar al juego de animales =============
tiene alas? (si no)

es un loro? (si no)
no
¡fascinante! por favor dime que animal es este?
halcón
dime una cosa que el halcón tiene que el loro no
¡golpe de Alcón!
halcón tiene ponche de halcón! ? usted no dice! ¡Recordaré eso!
presione cualquier tecla para comenzar un nuevo juego

=========== vamos a jugar al juego de animales =============
tiene alas? (si no)

¿Tiene ponche de halcón? (si no)

¿Es un halcón? (si no)

jaja yo gano! (o ^^) o
presione cualquier tecla para comenzar un nuevo juego

Como puede ver, aunque es muy simple, este programa cumple con su requisito de poder aprender de su entorno y mejora sus comportamientos en usos futuros.

En un nivel alto, es un sistema basado en modelos, y generalmente tiene los siguientes componentes:

1) Un modelo que representa a algunos cree que el programa tiene sobre el mundo.
Notarás en nuestro programa simple, es un árbol de decisión binario

2) Una forma de comportarse / actuar de acuerdo con este modelo:
En nuestro programa simple, hacemos preguntas al usuario basadas en el árbol, buceando más profundo hasta llegar finalmente a un animal concreto

3) Una forma de modificar / refinar el modelo basado en experiencias:
En nuestro caso, el usuario le dice explícitamente al programa cómo clasificar mejor un nuevo animal, basándose en un rasgo también proporcionado por el usuario

Un sistema más elegante y complejo podría ser un sistema que intente predecir el clima en función de la humedad del aire, la temperatura, etc.
1) Como modelo, uno podría usar una red bayesiana.
2) Para actuar de acuerdo con este modelo, podemos consultar en el modelo la probabilidad condicional de lluvia, o podemos tomar muestras del modelo e intentar estimar esta probabilidad.
3) Para modificar / refinar el modelo, podríamos recopilar datos pasados ​​y entrenar el modelo, el resultado es un modelo mejor con parámetros actualizados para sus distribuciones.

También hay muchas otras formas de hacerlo, aquí quizás haya un buen punto de partida en Wikipedia:
Agente inteligente

Si quieres estudiar más, te sugiero que tomes una clase introductoria a la IA.

Por supuesto que esto es posible. Aquí es donde entra el aprendizaje automático. La red neuronal artificial es una de las muchas soluciones de autoaprendizaje. Funciona como el cerebro humano. Tiene algo de entrada y da algo de salida, ahora debería haber un esfuerzo humano para curar la salida, para enseñarle a la máquina si es una buena decisión o una mala decisión y cuál podría ser el enfoque correcto. Después de este aprendizaje, hace lo correcto la próxima vez.

Debe optimizarse sin ninguna interferencia externa:
Esto ciertamente no es posible según mi conocimiento. Si deja solo a un niño humano y no enseña nada, no podrá aprender nada por sí mismo, pero aún así, en el caso del cerebro humano, tiene la capacidad de comprender y medir la decisión, que una computadora no puede. Construyes cualquier sistema, tienes que enseñarlo antes de que realmente esperes una buena habilidad para tomar decisiones.

Sí. Existen algoritmos de entrenamiento en línea para redes neuronales artificiales. Los algoritmos genéticos pueden funcionar en línea en las circunstancias correctas. También hay Q-learning que está naturalmente en línea. Los filtros Kalman son un tipo de aprendizaje automático, aunque se aproximan específicamente al estado de un sistema dado las reglas de actualización y las mediciones ruidosas, por lo que generalmente no son los que toman las decisiones.

El aprendizaje profundo que comenzó en Microsoft y ahora está siendo utilizado por muchos investigadores se ocupa exactamente de eso. Ya ha marcado una gran diferencia en el reconocimiento de video y audio
Aquí hay un enlace a la wiki Aprendizaje profundo

Prueba esto:

https://www.coursera.org/course/ml

Esto comenzó la semana pasada. Puedes unirte a este curso.