Cómo crear inteligencia artificial en casa. Crea tu propia inteligencia artificial. Condiciones para una inseminación exitosa.

Máquinas que reproduzcan cerebros humanos o animales serán capaces de autoaprender


Últimamente todo más atención Los científicos se sienten atraídos por una nueva área de investigación: la informática afectiva. El papel de las emociones en la evolución de la inteligencia natural es grande; la inteligencia artificial todavía pierde mucho en este sentido; es imposible encarnar en ella muchos fenómenos asociados con la imagen emocional, con el estado emocional de una persona. Los científicos de IA cuentan con la ayuda activa de neurocientíficos cognitivos, psicólogos y filósofos. Los neurocientíficos han podido demostrar la relación entre los neuromoduladores, que participan activamente en las emociones humanas, y la toma de decisiones. Resultó que la capacidad de una persona para tomar decisiones rápidamente se debe al hecho de que la información en nuestro cerebro está "coloreada" emocionalmente; a menudo tomamos decisiones simplemente bajo la influencia de uno u otro impulso emocional; Sin embargo, esto no ocurre en absoluto en los sistemas informáticos modernos.

Al no incorporar mecanismos emocionales en la IA, estamos perdiendo la capacidad de tomar decisiones rápidas. Como resultado, los sistemas o sistemas robóticos inteligencia artificial resultar inviable en condiciones mundo real. Al mismo tiempo, encarnamos parcialmente ciertos mecanismos emocionales en la tecnología, pero los llamamos de otra manera, por ejemplo, cambio de atención: priorización y redistribución de recursos informáticos.

Con sólo salir a la calle tomamos una enorme cantidad de decisiones: girar la cabeza hacia un lado sonido fuerte o no girar; ¿Deberías cruzar la calle o no cruzar si hay coches circulando por allí? Estas decisiones se toman consciente e inconscientemente, los procesos están cargados de emociones e involucran muchas estructuras cerebrales. Como resultado, las emociones (neuromoduladores) influyen fuertemente en el proceso de pensamiento, es decir, en la funciones informáticas neuronas.

Se ha observado que el cerebro contiene los llamados circuitos. Por ejemplo, el circuito tálamo-cortical principal se ve así: la corteza cerebral influye en las estructuras subcorticales: el tálamo, el cuerpo estriado, etc., provocando emociones positivas o negativas. comentario, que a su vez afecta a la corteza. En otras palabras, los procesos conscientes influyen en los procesos emocionales inconscientes, y los procesos emocionales influyen en los conscientes: estamos constantemente en un ciclo emocional.

Marvin Minsky (pionero de la IA y ganador del Premio Turing) señaló que los ciclos emocionales pueden conducir a un "estancamiento" a largo plazo. Los llama “bicho”, es decir, error: periódicamente podemos reproducir uno u otro estado emocional. Por ejemplo, cuando estamos deprimidos: nos preguntamos repetidamente: “¿Por qué me trató tan mal? Esto es completamente injusto". O, por el contrario, reproducimos un estado de euforia: si has andado en moto, entonces siempre recuerdas lo “cool” que es para ti andar en moto, simplemente porque te gusta. Y en realidad ya no estás conduciendo una motocicleta, sino simplemente recordándola y estando en este ciclo.

En el trabajo sobre la integración de las emociones en la IA, cabe destacar dos áreas que están muy relacionadas. En primer lugar, determinar las emociones de una persona por su rostro, gestos, etc. (Computación afectiva). Se trata de un área que se está desarrollando muy intensamente en Estados Unidos bajo la dirección de Rosalind Picard en el MIT Media Lab. En 1997, Picard publicó su libro Affective Computing, que sirvió como punto de partida para su investigación. En su laboratorio se llevan a cabo experimentos interesantes: los participantes colocan cámaras frente a ellos, filman expresiones faciales a ciertos intervalos y al mismo tiempo recopilan datos a lo largo del tiempo: conductividad de la piel, pulso, presión arterial, etc., asociando reacciones emocionales y Lecturas de sensores corporales.

Otra dirección en la que también estamos involucrados (laboratorio de comprensión de máquinas ITIS KFU) es la Computación afectiva, es decir, la reproducción de las emociones humanas en los sistemas informáticos. Las máquinas no tienen neuronas, ni neuromoduladores, ni bioquímica, sólo procesos computacionales. La correspondencia entre los procesos computacionales y mentales está lejos de ser lineal. Tenemos que crear suficiente teorías complejas, para comprender de qué están hechos, en general, determinados fenómenos psicológicos y cómo podemos reproducirlos en los sistemas informáticos.


El cerebro humano consume aproximadamente 20 vatios, como una bombilla. La última simulación del 1% del cerebro, realizada en el Instituto japonés RIKEN en 2013, requirió 250 supercomputadoras. Este es un éxito bastante serio. Sin embargo, cada supercomputadora tenía a bordo 80.000 procesadores, que consumían mucho más de 20 vatios. Y al mismo tiempo la simulación es mil veces más lenta. trabajo real cerebro. Hasta ahora, la eficiencia claramente no está del lado de los sistemas informáticos. Esto sugiere que necesitamos uno nuevo. arquitectura informática. El proyecto BRAIN tiene como objetivo su creación: el gobierno de Estados Unidos destina 300 millones de dólares al año para reproducir el cerebro humano en forma de microcircuitos y software.

Hasta la fecha, se ha creado la arquitectura TrueNorth, no de von Neumann, de inspiración neurobiológica (von Neumann, la arquitectura de las computadoras convencionales). Esto sienta las bases para un nuevo camino en el desarrollo de sistemas informáticos: la recreación de redes neuronales no mediante software, sino en forma de microcircuitos, "hardware". Los nuevos chips simulan hasta un millón de neuronas. Los especialistas de IBM fueron más allá: ya han creado placa madre, en el que se montó una matriz de 4x4, con un total de 16 millones de neuronas.

Por un lado, esto no es tanto, porque el número de neuronas en la corteza cerebral humana es de 19 mil millones a 23 mil millones, y el volumen total es de 86 mil millones. Por otro lado, esta ya es una escala interesante. Por ejemplo, en la corteza cerebral de un ratón, un mamífero que tiene todo el bagaje emocional necesario, sólo hay 4 millones de neuronas.

Es aún más interesante mirarlo desde una perspectiva histórica: en 2011, la misma IBM tenía un chip que reproducía sólo 256 neuronas. Se produjo así un salto de tres órdenes de magnitud. Si hay un próximo salto, podremos alcanzar la escala de la corteza cerebral humana. Y entonces, tal vez, los sistemas de autoaprendizaje parezcan comparables en potencia a cerebro humano.

¿Qué aportan los sistemas de autoaprendizaje? No programamos ratones, gatitos, no programamos niños. Porque no es necesario. Semejante sistemas computacionales(agentes artificiales) no necesitarán programación en el sentido actual. Tendrán que utilizar técnicas completamente diferentes, conocidas por los profesores de guarderías y escuelas. Así llegamos al concepto de infancia para los agentes de inteligencia artificial, que abre perspectivas fundamentalmente nuevas para el desarrollo de la IA.

Maxim Talánov
candidato ciencias tecnicas, jefe del Laboratorio de Comprensión de Máquinas de la Universidad Federal de Kazán, profesor de la Universidad de Innopolis
forbes.ru

Comentarios: 1

    Sam Harris

    ¿Deberíamos tener miedo de la inteligencia artificial superinteligente? El neurocientífico y filósofo Sam Harris cree que vale la pena. En su opinión, estamos a punto de crear máquinas superinteligentes, sin resolver los muchos problemas que pueden surgir al crear una IA que potencialmente podría tratar a las personas de la misma manera que tratan a las hormigas.

    Mijaíl Búrtsev

    ¿Por qué medio siglo de esfuerzos no han logrado crear inteligencia artificial? ¿Y cómo nos ayudan los cyborgs a comprender cómo funciona el cerebro? Sobre esto habla Mikhail Burtsev, candidato de ciencias físicas y matemáticas, jefe del laboratorio. sistemas neuronales Y aprendizaje profundo MIPT.

    Vitaly Dunin-Barkovsky

    ¿Cómo simular un cerebro? ¿Es comprensible el cerebro humano? ¿Cómo algoritmizar la conciencia? ¿Y es posible copiarlo en un medio inorgánico? Vitaly Dunin-Barkovsky, Doctor en Física y Matemáticas, Profesor, Jefe del Departamento de Neuroinformática del Centro de Tecnologías Óptico-Neurales del Instituto de Investigación de la Academia de Ciencias de Rusia, ayuda a encontrar respuestas a estas preguntas.

    Ivan Ivanchey

    Desde el principio de su historia, la psicología cognitiva ha descrito al hombre como una máquina informática. Iván hablará de puntos clave el desarrollo de este camino de la investigación humana, a qué ha conducido hoy y cómo los científicos modelan procesos tan misteriosos y aparentemente únicos como la intuición, la previsión, la perspicacia y la confianza.

    Gorban A. N.

    ¿Es la neurocomputadora un juguete? ¿Cuáles son las verdaderas ventajas de las neurocomputadoras? ¿En qué áreas son más obvias las ventajas de los sistemas neuronales? ¿La redundancia es buena o mala? ¿Qué tareas sólo puede realizar una neurocomputadora?

    Evgueni Putin

    Evgeniy Putin, estudiante de posgrado del departamento " Tecnologías informáticas» Universidad ITMO. Como parte de su disertación, Evgeniy explora los problemas de integrar el concepto de selección de características en el aparato matemático de las redes neuronales artificiales. Evgeniy hablará sobre cómo funcionan. redes neuronales, qué pueden hacer ahora, de qué serán capaces en un futuro próximo y si esperar la llegada de Skynet.

    Por primera vez se ha alcanzado una escala correspondiente al cerebro humano: 530 mil millones de neuronas y 137 billones de sinapsis. La simulación se desarrolló 1542 veces más lento que el tiempo real. Usó los 1.572.864 núcleos y un petabyte y medio de memoria.

    La arquitectura von Neumann tiene una desventaja conocida, que es que tanto los datos como los programas de instrucciones que describen lo que se debe hacer con los datos residen en la misma memoria. Y el procesador recopila datos de la memoria o los manipula según el comando. Es imposible cargar nuevos datos y procesarlos simultáneamente en el marco de dicho esquema. Debido a esto computadoras modernas, por muy rápidos que sean, resulta complicado realizar algunas tareas, como las relacionadas con el reconocimiento de imágenes. En un intento de ir más allá de la arquitectura de von Neumann, los expertos en "cerebros electrónicos" recurrieron a cerebros reales.

    Serguéi Markov

    En la conferencia discutiremos la segunda primavera de la inteligencia artificial en hechos y cifras, obras clave en Inteligencia Artificial y Aprendizaje Automático en 2017. Hablemos de reconocimiento de imágenes, habla, procesamiento del lenguaje natural y otras áreas de investigación; Analicemos los nuevos modelos y equipos para 2017. También hablaremos sobre la aplicación de la IA y el aprendizaje automático en los negocios, la medicina y la ciencia, y también discutiremos qué esperamos de la inteligencia artificial y el aprendizaje automático en 2018.

    Serguéi Markov

    cuenta de hamburgo

    En 1950, el científico inglés Alan Turing escribió en su artículo " Computadoras and Mind" formuló la pregunta: "¿Puede una máquina entender a una persona?" Así nació la famosa prueba de Turing, en la que una computadora intentó engañar a la gente. Pero, ¿cómo entiende una computadora a una persona y qué no puede entender todavía? ? Decidimos preguntar sobre esto a un especialista según el relato de Hamburgo en aprendizaje automático, director. tecnologías de la información Empresa "Activebusinesscollection" de Sergei Markov.

Lo que necesitas saber y por dónde empezar.

Esta semana pudiste leer un caso sumamente motivador de

Pero, de hecho, fue el deseo de crear una inteligencia artificial perfecta, ya sea un modelo de juego o un programa móvil, lo que empujó a muchos de nosotros por el camino del programador. El problema es que detrás de toneladas de material educativo y la dura realidad de los clientes, este mismo deseo ha sido reemplazado por un simple deseo de autodesarrollo. Para aquellos que aún no han comenzado a cumplir su sueño de la infancia, aquí hay una breve guía para crear inteligencia artificial real.

Etapa 1. Decepción

Cuando hablamos de crear incluso bots simples, nuestros ojos se llenan de brillo y cientos de ideas pasan por nuestras cabezas sobre lo que deberían ser capaces de hacer. Sin embargo, cuando se trata de implementación, resulta que la clave para desentrañar el modelo de comportamiento real son... las matemáticas. Para ser un poco más específicos, aquí tienes una lista de sus apartados que es necesario estudiar al menos en el formato de una educación universitaria:

    Álgebra lineal;

  • Teoría de grafos;

    Teoría de la probabilidad y estadística matemática.

Este es el trampolín científico sobre el que se construirá su programación futura. Sin el conocimiento y la comprensión de esta teoría, todas las ideas se derrumbarán rápidamente debido a la interacción humana, porque la inteligencia artificial en realidad no es más que un conjunto de fórmulas.

Etapa 2. Aceptación

Cuando la arrogancia es un poco derribada por la literatura estudiantil, puedes empezar a aprender idiomas. No vale la pena apresurarse a utilizar LISP u otros todavía; primero hay que aprender a trabajar con variables y estados de un solo valor. Es perfecto tanto para un aprendizaje rápido como para un mayor desarrollo, pero en general puedes tomar como base cualquier lenguaje que tenga las bibliotecas adecuadas.

Etapa 3. Desarrollo

Ahora pasemos directamente a la teoría de la IA. Se pueden dividir aproximadamente en 3 categorías:

    IA débil: bots que vemos en juegos de computadora o asistentes simples como Siri. O realizan tareas altamente especializadas o son un complejo insignificante de ellas, y cualquier imprevisibilidad de la interacción los desconcierta.

    Las IA fuertes son máquinas cuya inteligencia es comparable a la del cerebro humano. Actualmente no existen representantes reales de esta clase, pero computadoras como Watson están muy cerca de lograr este objetivo.

    La IA perfecta es el futuro, un cerebro máquina que superará nuestras capacidades. Son los peligros de tales acontecimientos los que advierten Stephen Hawking, Elon Musk y la franquicia cinematográfica Terminator.

Naturalmente, deberías empezar con los bots más simples. Para hacer esto, recuerda el viejo juego "Tic Tac Toe" cuando uses un campo de 3x3 e intenta descubrir por ti mismo los algoritmos básicos de acción: la probabilidad de ganar con acciones sin errores, los lugares más exitosos en el campo para colocar una pieza, la necesidad de reducir el juego a un empate, etc.

Como comprenderá incluso por los nombres, estas son API que le permitirán crear algo parecido a una IA seria sin perder tiempo.

Etapa 5. Trabajo

Ahora que tienes una idea clara de cómo crear IA y qué usar, es hora de llevar tus conocimientos al siguiente nivel. En primer lugar, esto requerirá estudiar una disciplina llamada "Aprendizaje automático". En segundo lugar, es necesario aprender a trabajar con las bibliotecas adecuadas del lenguaje de programación elegido. Para Python que estamos analizando, estos son Scikit-learn, NLTK, SciPy, PyBrain y Nump. En tercer lugar, en el desarrollo no hay vuelta atrás.

Durante miles de años, el hombre ha intentado comprender cómo piensa. En el campo de la inteligencia artificial (IA), se está resolviendo una tarea aún más importante: los especialistas en este campo intentan no sólo comprender la naturaleza de la inteligencia, sino también crear entidades inteligentes.

Actualmente, el tema de la inteligencia artificial abarca una amplia gama de áreas científicas, empezando por este tipo de tareas. general, como el aprendizaje y la percepción, hasta tareas tan especializadas como jugar al ajedrez, demostrar teoremas matemáticos, escribir poesía y diagnosticar enfermedades. En la inteligencia artificial las tareas intelectuales están sistematizadas y automatizadas, por lo que este ámbito concierne a cualquier ámbito de la actividad intelectual humana. En este sentido, la inteligencia artificial es un campo científico verdaderamente universal.

Sistemas que piensan como personas Sistemas que piensan racionalmente
Una nueva e interesante dirección de trabajo para crear computadoras que puedan pensar, ...máquinas que tengan inteligencia, en su totalidad y literalmente esta palabra Explorando las habilidades mentales utilizando modelos computacionales.
Automatización de acciones que asociamos con el pensamiento humano, es decir. actividades como la toma de decisiones, la resolución de problemas, el aprendizaje El estudio de los tipos de cálculos que permiten sentir, razonar y actuar.
El arte de crear máquinas que realicen funciones que requieren inteligencia cuando las realizan humanos. La inteligencia computacional es la ciencia del diseño de agentes inteligentes.
La ciencia de enseñar a las computadoras a hacer cosas en las que los humanos actualmente son superiores. La inteligencia artificial es una ciencia dedicada al estudio del comportamiento inteligente de los artefactos

Hace poco era algo sacado de la ciencia ficción. Esto es bastante real y hoy aprenderemos cómo crear inteligencia artificial simple utilizando un maravilloso servicio en línea.

Me refiero al sitio http://iii.ru (Ay-ya-yai.ru)
Con la ayuda de este recurso crearemos el llamado “infa”.
¿Qué clase de animal es este, Inf? Inf es un personaje pequeño (un animal o una persona o un Yudo milagroso) que puede hablar con una persona en Internet (sí, sí, también se le puede llamar chatbot). Esta bestia se puede enviar a un amigo, a pagina de inicio, mételo en una firma en el foro, en general, ¡donde tu imaginación lo desee!
Al principio, su información, por supuesto, será un poco “tonta”, ¡pero podemos corregir esto enseñándola!

Echemos un vistazo más de cerca a cómo se hace todo esto:

Al ingresar al sitio nos encontramos en el llamado “ cochera”, donde podemos charlar con varias informaciones ya preparadas y empezar a crear la nuestra propia.

Para comenzar a crear tu propio personaje, debes registrarte. Para ello, en la pantalla del garaje, pulsa en el botón “Quiero información” y después de rellenar un par de líneas sobre ti y leer acuerdo de licencia, haga clic en el botón “Registrarse”.

Ahora llegamos a la pantalla de creación de personajes.

Debes elegir un personaje "hombre", "bestia" o algún otro milagro.

Personalizamos la apariencia: boca, nariz, ojos y otros accesorios. Si en el futuro no te gusta no te desesperes, todo esto se puede corregir.

Ahora veamos la parte más interesante: el entrenamiento del carácter. Haga clic en la pestaña "Entrenamiento". Se abre una lista de posibles métodos:

Cuestionario: complete información sobre su información personal, cambie su nombre si lo desea, etc.

Reacciones a eventos: puedes elegir qué dirá la información si, por ejemplo, haces clic en ella con el mouse o si no hablas con ella durante mucho tiempo.

  • Tutorial

¿Alguna vez has pensado en lo fácil que es escribir tu propia inteligencia artificial que tomará decisiones en el juego? Pero es realmente sencillo. Déjalo tomar decisiones aleatorias al principio, pero luego podrás educarlo, enseñarle a analizar la situación y luego comenzará a tomar decisiones conscientes. En este artículo te contaré cómo escribí mi bot y también te mostraré cómo puedes escribir el tuyo propio en unos minutos. Nuestra computadora reproducirá un clon del juego Tron, o más bien la parte en la que debes derrotar a los enemigos en una motocicleta.

Debajo del corte hay 10 megabytes de archivos gif.

Sobre el juego

En el juego, controlas una motocicleta que deja tras de sí un muro de luz. El campo de juego es limitado y tus oponentes tienen las mismas motocicletas. La motocicleta se mueve constantemente, solo puedes girar. Espacio libre El campo termina y esquivar los obstáculos se vuelve más difícil. Gana el que aguante más. Hice el clon del juego multijugador basado en navegador usando node.js y socket.io. Control de dos botones: girar a la izquierda y girar a la derecha.

interfaz de robot

Desde que uso socket.io, procesé reproductores en el servidor trabajando en una serie de objetos de socket especiales que crea socket.io. De estos objetos, solo utilicé funciones de identificación, emisión y transmisión. Esto significa que es sencillo para el juego implementar la interfaz de socket y usarla en el procesamiento, como si otro usuario estuviera jugando. Llamé a la clase BotSocket.
Método emitir (evento, datos) El bot realiza casi las mismas acciones que el cliente cuando recibe datos entrantes del servidor, a saber:
  1. Guarda datos sobre todas las motocicletas en juego al agregarlas.
  2. Guarda un enlace a tu motocicleta cuando la agregas.
  3. Actualiza datos sobre todas las motocicletas que juegan.
  4. Restablece los estados al reiniciar el juego.
Para enviar comandos de control de tu motocicleta al servidor, necesitabas guardar un enlace al objeto del juego que procesa dichos comandos desde usuarios comunes. método de clase Juego tengo un nombre onControl(zócalo, datos) así que agregué un método a BotSocket
BotSocket.prototype.control = función(datos) ( this.game.onControl(esto, datos); );
Cuando recibo un comando del servidor para actualizar los datos de las motocicletas (han sido movidas), compruebo si tengo una motocicleta bajo mi control, si aún no ha chocado y si ha sido movida, y, si exitoso, llamo al método principal para que funcione la IA: actualizar().
La interfaz está lista, ahora puedes agregar la propia IA.

Inteligencia artificial

Por muy fuerte que pueda parecer, en los juegos a los jugadores para quienes juega la computadora se les suele llamar IA o bots. El objeto BotSocket tiene los datos del juego necesarios para tomar una decisión. Sólo puede haber tres soluciones posibles:
  1. Nada que hacer, sigue recto.
  2. Volverse a la derecha
  3. Gire a la izquierda

Cuando decidí escribir un bot, no tenía idea de cómo hacerlo. Probé un código muy simple:
BotSocket.prototype.update = function() ( var r = Math.random(); if (r > 0.95) ( this.control(("botón": "derecha")); ) else if (r >
El comportamiento fue algo como esto:

Lo miré y sentí una gran alegría; me pareció que ahora era independiente. Parecía que él mismo estaba tratando de sobrevivir, luchando allí como si estuviera vivo. Una vista conmovedora.

Pero quería que viviera lo más posible. Empecé a buscar información sobre cómo se escribe la IA para los juegos. Encontré artículos que describían diferentes enfoques. Pero estaba buscando algo extremadamente simple. En Habré, en uno de los artículos sobre un bot para un juego como Zuma, encontré una mención del método wave. También conocido como algoritmo de Lee. Lo encontré muy simple y apropiado. Este es un algoritmo para encontrar el camino más corto de un punto a otro a lo largo del campo, donde las celdas pueden estar libres u ocupadas. El punto es simple. Partimos del punto de destino, le asignamos el valor 1 y marcamos todas las celdas libres adyacentes con un número uno mayor. Luego tomamos todos los marcados libres vecinos y los marcamos nuevamente uno más. Así nos expandimos por todo el campo hasta llegar a nuestro destino. Y construimos el camino buscando entre los vecinos disminuyendo el número hasta llegar a 1. Miré algoritmos para encontrar los caminos más cortos en gráficos, pero este me pareció el más adecuado.

Transferí el algoritmo copiando y pegando desde la página a la wiki, le di un nombre BotSocket.prototipo.algoritmoLee. Para el campo primero creé un objeto. campo de batalla, en el que marqué con cada actualización puntos ocupados con sus coordenadas. Y en el algoritmo de Lee redujo este campo al mismo, pero con un paso de 1.

Era necesario determinar de alguna manera el destino. Decidí seleccionarlo al azar en ciertos intervalos. Creé un método para buscar un punto libre aleatorio en el campo:
BotSocket.prototype.getDesiredPoint = function() ( var punto = ; var H = Object.keys(this.battleground).length - 1; var W = Object.keys(this.battleground).length - 1; var x, y , i, j; var encontrado = false; var iter = 0; hacer ( i = this.getRandomInt(1, W); j = this.getRandomInt(1, H); x = i * this.moveStepSize; y = j * this.moveStepSize; if (this.battleground[x][y] === this.BG_EMPTY) ( encontrado = true; ) iter++ ) while (!found && iter< 100); point = ; return point; };

Ahora podría reescribir la actualización:
BotSocket.prototype.update = function() ( if (!this.desiredPoint || this.movements % this.updDestinationInterval === 0) ( this.desiredPoint = this.getDesiredPoint(); ) if (!this.desiredPoint) ( return; ) var currentPoint = ; var path = this.algorithmLee(currentPoint, this.desiredPoint); if (ruta && tipo de ruta! == "indefinido") ( this.moveToPoint(ruta); ) else ( this.desiredPoint = this .getDesiredPoint();
Método mencionado aquí moverAPunto, que gira según sea necesario para llegar al primer punto del camino más corto dada la dirección actual.

Luego decidí hacer que los bots fueran más agresivos y en lugar de un punto deseado aleatorio, busqué un punto frente a los enemigos para bloquear su camino. O es que no juegan consigo mismos durante tanto tiempo.

robot del lado del cliente

Decidí intentar transferir el bot a parte del cliente. Dado que el proyecto está en node.js, también puedo usar el código escrito para el bot en el lado del cliente. Para hacer esto, amplié BotSocket con un archivo de cliente separado que anulaba los métodos emitir() Y control() para interactuar correctamente con el servidor sin una referencia al juego.
Todo funcionó bien localmente, pero después de la implementación en servidor remoto había una imagen extraña:

Después de pensarlo mucho, me di cuenta de que era un retraso. El robot envió un comando de giro, pero llegó después de actualizar su posición en el servidor, por lo que muchas veces no podía tomar el camino directo al punto deseado. Pero quería un bot normal en el lado del cliente. Por eso, decidí tener en cuenta el retraso. Para hacer esto, escribí nuevamente la extensión BotSocket. El artículo se está volviendo largo, así que describiré las principales soluciones. Antes de llamar al algoritmo de Lie punto actual Sustituí la posición prevista teniendo en cuenta situación actual y dirección, así como el multiplicador de retraso. El multiplicador de latencia es el número de veces la latencia multiplicada por la tasa de actualización de la posición del servidor. También necesitaba predecir el punto futuro en el método. moverAPunto().

La predicción funcionó si jugabas solo. Pero si había otros participantes, el bot no lo tenía en cuenta y lo dirigía hacia donde, al cabo de un tiempo, ya había pasado otro jugador. Para solucionar este problema modifiqué el método que marca las celdas del campo como ocupadas. Comencé a marcarlos como ocupados dentro de un cierto radio de movimiento de motocicletas. El radio depende del multiplicador de retraso.
Anteriormente, equipé el bot con funciones de depuración, que dibujaban el punto deseado y ocupaban puntos en el campo. Mi versión basada en latencia del bot cliente ahora se mueve así:


Mi pequeño, el resto son servidores.

Lo más importante es intentar crear un bot tú mismo.

El objetivo principal de este artículo es despertar el interés en escribir un bot. He hecho mucho para superar tu pereza. Para hacer esto, agregué la capacidad de cargar mi propio script con un bot, lo que ampliará mi clase de cliente base. Vaya al proyecto y haga clic en el texto "Mostrar opciones para habitación con tu propio bot”, y luego al botón “Crear espacio para probar tu propio bot”. Se creará una sala donde podrás usar bots fácilmente, de forma predeterminada tu bot será un bot sin latencia. Ahora es el momento de tu código.
Dos opciones simples Para usar su código en acción, use cualquiera de:
  1. Cargue el archivo js en cualquier servidor al que pueda acceder su navegador. Pega la URL de tu secuencia de comandos en el juego junto al botón "Cargar tu secuencia de comandos de IA". Después de hacer clic en este botón, se creará y completará un nuevo objeto. botSocket, cuyo método será llamado comenzar().
  2. Utilice la consola del navegador (Firebug – F12, Firefox – Ctrl+Shift+K, Chrome – Ctrl+Shift+J, otros –).

Si ha decidido el método de entrada de su código, intente anular los métodos de clase BotSocket. Lo más sencillo para empezar:
BotSocket.prototype.update = function() ( var r = Math.random(); if (r > 0.95) ( this.control(("button": "right")); ) else if (r > 0.90) ( this.control(("botón": "izquierda"));

Después de esto, vuelva a crear el objeto botSocket ingresando
botSocket = nulo;
En este caso, el código de la página recreará y completará el objeto. Esto cambiará el comportamiento estándar del bot a aleatorio. Y luego depende de tu imaginación o conocimiento profundo.
También puedes conectar el script de mi bot mejorado, teniendo en cuenta el retraso, insertando https://raw.github.com/rnixik/tronode-js/master/public/javascripts/MyBotSocketClient.js en la URL del bot

Conclusión

Le conté cómo creé mi IA en el servidor, luego cómo la transferí al cliente y cómo intenté enseñarle a jugar teniendo en cuenta ping alto. Realmente espero haber podido interesarte y que hayas intentado escribir tu propia IA, si es que nunca lo has hecho antes. Por supuesto, en los juegos. clase alta Se utilizan enfoques completamente diferentes, pero vale la pena empezar poco a poco.

Si no tienes node.js a mano, puedes usar las aplicaciones que implementé:

1) tronode.livelevel.net - el más VPS barato en Digital Ocean,
2) tronode-js.herokuapp.com: unidad virtual gratuita en Heroku.

Lo más probable es que el primero no pueda hacer frente a la carga primero, y el segundo en algunas computadoras restablece el transporte socket.io al sondeo xhr, debido a esto el juego se retrasa mucho.
Si quieres saber más sobre cómo programé la lógica del juego, puedes leer. También hay información sobre el despliegue de node.js y un poco sobre la parte gráfica.

Si no tienes una cuenta en Habré, haz preguntas o envía la tuya ofertas interesantes¿puedes enviarme un correo electrónico? [correo electrónico protegido].

Etiquetas: Agregar etiquetas

Dicen que la inteligencia artificial lleva trabajando en lo más profundo de los laboratorios militares desde 2007. Es posible que ya haya resultados. No es casualidad que hace apenas un mes, Elon Musk anunciara su apoyo a las tecnologías contra la inteligencia artificial e invirtiera 7 millones de dólares en investigaciones en este ámbito.

“Existe el riesgo de que suceda algo realmente peligroso en los próximos cinco años. “Diez años como máximo”, dijo el empresario en una discusión en edge.org.

Elon Musk, fundador de Tesla y SpaceX

Steve Wozniak también está de acuerdo con Musk, quien cree que “la inteligencia artificial algún día será lo suficientemente inteligente como para deshacerse de los humanos”. Bill Gates confía en que si no se controla la creación de IA, entonces "la inteligencia artificial evolucionará hacia un estado que entrará en conflicto con los objetivos de los sistemas humanos". Y por último, el célebre astrofísico Stephen Hawking afirmó directamente que “la inteligencia artificial puede poner fin a la existencia de la humanidad”.

Hawking lo publicó junto con Elon Musk en el sitio web Futureoflife.org. carta abierta con un llamado a la comunidad científica a estar atenta al avance de sus investigaciones en el campo de la inteligencia artificial. Sin embargo, entre los firmantes no figuran los nombres de Sergey Brin y Larry Page. Y esto no es una coincidencia. Recientemente, Google anunció la creación de una nueva IA basada en el modelado de conversaciones.

Aquí hay un breve fragmento de una conversación entre un humano y una máquina de Google:

C: ¿Cuál es el significado de la vida?

M.: Haz el bien.

C.: ¿Para qué vivimos?

M.: Vivir para siempre.

C.: ¿Cuál es el significado de la existencia?

M: Para saber qué pasará cuando lleguemos al planeta Tierra.

C: ¿Dónde estás ahora?

M.: En el centro del vacío.

C: ¿Cuál es el significado de la muerte?

M.: Para conseguir la vida.

C: ¿Cuál es el significado de razón?

M.: Se trata de entender qué es.

C: ¿Cuál es el significado de los sentimientos?

M.: No lo sé.

Una conversación bastante significativa. "Éste es el punto de partida, una especie de núcleo para el futuro de la inteligencia artificial", afirma Evgeniy Karyuk, director ejecutivo de la empresa Biplan. “Aún hoy podemos suponer que en 2030 veremos prototipos muy reales equipados con inteligencia artificial, aunque sea en las etapas iniciales”.

Se puede ver el contenido completo de todas las conversaciones humanas y de Google Machine. Allí también se muestran para comparar las conversaciones entre una persona y Cleverbot. Cleverbot es una aplicación web que utiliza algoritmos de inteligencia artificial para chatear con una persona. Fue inventado en 1988 por el científico Rollo Carpenter. A lo largo de su existencia, Cleverbot ha mantenido más de 65 millones de conversaciones con personas. En 2011, Cleverbot obtuvo una puntuación del 51% en la prueba de Turing.

La prueba de Turing es una prueba empírica propuesta por Alan Turing en su artículo de 1950 "Computing Machinery and Mind" en la revista filosófica Mind. El objetivo de la prueba es averiguar si la computadora puede pensar.

Y aquí está mi conversación con Cleverbot:

Hombre: ¿Cuál es el significado de la vida?

Cleverbot: La vida no tiene sentido.

Hombre: ¿Para qué vivimos?

Cleverbot: Bueno, vivimos para alguien y si te sientes solo, no tiene sentido vivir.

Hombre: ¿Cuál es el significado de la existencia?

Persona: ¿Dónde estás ahora?

Cleverbot: En Moscú.

Hombre: ¿Cuál es el significado de la muerte?

Cleverbot: Esto es lo que quiero preguntarte.

Hombre: ¿Cuál es el significado de razón?

Cleverbot: Tengo mi propia respuesta a esta pregunta.

Persona: ¿Cuál es el significado de los sentimientos?

Cleverbot: ¿Por qué nací?

Es obvio que máquina de google da respuestas mucho más significativas. Cleverbot sustituye las frases que considera adecuadas de otras personas. A veces realmente parece que la otra persona está respondiendo, pero nada más.

Hay otro punto de vista según el cual la inteligencia artificial es, en principio, imposible. El teorema de incompletitud de Gödel se cita a menudo como argumento principal. La conclusión es que una persona es capaz de resolver problemas algorítmicamente irresolubles, pero una computadora no. “A la edad de tres años, un niño resuelve con seguridad el problema de si la fruta está madura o no, debido a que tiene conexiones neuronales, con cuya ayuda se puede responder a la pregunta sobre la madurez: color, sabor, olor, suavidad o dureza, dice Evgeniy Pluzhnik, primer vicerrector del Instituto Tecnológico de Moscú. - ¿La máquina es capaz de aprender esto? ¡Estoy seguro que sí! Si cuenta con una gran base de datos de imágenes podrá medir el contenido de fructosa y determinar la suavidad de la fruta. Pero, ¿qué pasa si metes en el coche una esponja pintada en un coche? azul y empapado en agua dulce? ¿Es la máquina capaz de comprender verdaderamente en este momento?

“Una computadora moderna puede hacer frente fácilmente a cualquier actividad compleja, ya sea ajedrez o cálculos matemáticos, pero sólo con la condición de que esta actividad pueda describirse utilizando reglas computacionales claras”, dice el famoso matemático Roger Penrose en una de sus conferencias. “La inteligencia artificial es la capacidad de un sistema de crear programas durante el autoaprendizaje que pueden resolver problemas cierta clase dificultades, afirma Evgeniy Pluzhnik. "Estoy seguro de que no veremos el surgimiento de una inteligencia artificial potente en los próximos 100 años".

Y para concluir, una pregunta más para Cleverbot.

Persona: Había 1 manzana, 1 tomate, 1 pepino y 1 pera. ¿Cuántas frutas hay en total?
Cleverbot: A las diez de la noche.




Arriba