BorrowBits
AI mobile
Portada » Blog » Computación » Android » Integrar Motores de Inferencia en Android

Integrar Motores de Inferencia en Android

AI mobileSeguimos hablando de Inteligencia Artificial en dispositivos móviles. En esta ocasión describiremos un enfoque de implementación basado en motores de inferencia y de su posible integración en Android.

La inferencia es una operación lógica realizada por los Sistemas Expertos (SE) para deducir verdades a partir de reglas, casos o métodos bayesianos, estos últimos muy utilizados en la IA de videojuegos.

El SE móvil modela el proceso de razonamiento humano mediante un componente conocido como motor de inferencia. Dicho motor trabaja con la información contenida en una base de conocimientos (modelados y codificados por un experto) y en una base de hechos (contiene los hechos sobre un problema que se ha descubierto durante el análisis) para deducir nuevos hechos.

Motor de inferencia, esquema

¿Pero qué sentido tendría integrar un motor de inferencia en un dispositivo móvil?

Pienso que se mejorarían las capacidades de aprendizaje de ciertos sistemas como los asistentes virtuales inteligentes. Por otro lado hay que tener en cuenta que la mayor parte de los SE móviles actuales basan su funcionamiento en consultas a servidores, por lo que el usuario depende de la conexión a una red de datos. Un motor de inferencia integrado acabaría con esta limitación.

Aunque los lenguajes lógicos como PROLOG y LISP se adaptan mejor a los paradigmas de inteligencia artificial, no son muy flexibles a la hora de desarrollar sistemas  con ciertos requisitos gráficos y de conectividad, como ocurre por ejemplo en los dispositivos móviles. En cambio Java provee una solución multiplataforma y orientada a objetos. Esta aproximación usa a los propios objetos para representar hechos mientras que las reglas se implementan como una conjunción de llamadas a objeto: si las condiciones permiten que un objeto ejecute una regla, se invoca al método correspondiente a dicha regla.

De hecho, los motores de inferencia más usados en la actualidad están basados en Java, como el popular JESS (Java Expert System Shell). Utiliza el algoritmo Rete de reconocimiento de patrones que comparte con su predecesor CLIPS (Sistema de Producción Integrado en Lenguaje C), que fue desarrollado por la NASA en 1990.

JESS es un motor de inferencia basado en reglas que ofrece un conjunto de librerías Java, lo cual «en teoría» lo convierte en un lenguaje fácilmente integrable con Android. Al parecer ya hay gente trabajando en ello y podría estar disponible dentro de unos meses.

Sin embargo JESS no es de código abierto. Como alternativa open source en Java existe JBoss Drools, apoyado por una creciente comunidad y que también se basa en el motor CLIPS. Al igual que JESS, su integración en Android sigue siendo un problema abierto ya que no se han adaptado las librerías de forma oficial.

De todos modos, existe un problema aún mayor a día de hoy: el algoritmo Rete es muy pesado para los limitados recursos computacionales de la mayoría de los dispositivos móviles. Se requiere una versión de Rete ligera que no sería de extrañar fuera incluida oficialmente en próximos lanzamientos de Drools o JESS.

Angel H.

Tecnófilo irreparable y lector insaciable. Emigrante e inmigrante. Además de eso, Ingeniero de Telecomunicaciones y Product Manager. +10 años de experiencia en proyectos de Software, Cloud e Ingeniería de Redes. Me apasiona el DIY, la tecnología Blockchain y las Finanzas.

6 comentarios

  • Buen artículo! Te dejo una duda: para el desarrollo de un sistema experto móvil – Android – estaría bien concluír según lo que publicaste que la arquitectura más eficiente es Cliente-Servidor? siendo la aplicación cliente una simple interfaz que toma los datos y comunica los resultados?
    Muchas gracias.

    • Hola Nicolás, según lo que investigué en el momento de escribir el post (me jugaría el cuello a que sigue siendo así) el modelo cliente-servidor sería la arquitectura más eficiente. Sin embargo con las mejoras de hardware de los últimos modelos (procesadores de 2 y 4 núcleos) no creo que tardemos mucho en ver motores integrados nativamente en Android. Sólo es un problema de potencia de cálculo.

  • Muy buen articulo me dio algunos datos que desconocía y es de gran interés para mi especialmente que para mi titulación propuse un SE para Android que funcione de manera nativa. Bueno espero tener avances pronto, por lo que aun investigo con que versión de Android debería funcionar de requerimiento mínimo.

    • Hola Miguel, me alegra que te haya sido de utilidad. Por desgracia hace meses que abandoné esa línea de investigación (que para mí tenía un interés más que nada personal) por otras más urgentes de carácter profesional.

      Sin embargo es un tema que me sigue interesando mucho. Te propongo que colabores con nosotros en esta categoría y nos mantengas informados de tus avances. Escríbeme a angel@borrowbits.com si te gusta mi propuesta.

      En cualquier caso, mucho ánimo con tu proyecto 🙂

      • Muchas gracias por los ánimos y me agrada mucho la idea de colaborar con ustedes estaré enviando mis avances. Por cierto enviare mis avances desde este correo miguelrodlp@gmail.com
        Espero poder ser de ayuda para esta categoría, hasta pronto.

  • Hola, la verdad que esta muy buena la página, recientemente la encontré por casualidad, leí varios de tus artículos y para ser sincero algunas no las entiendo ya que no soy un experto en informática pero aún así me resulta interesante e insta a buscar información sobre los artículos que publicas. Me gusta la informática aunque mi incursión y recurso en el tema es algo limitado puesto que hace unos pocos años empecé a leer y aprender.

Angel H.

Tecnófilo irreparable y lector insaciable. Emigrante e inmigrante. Además de eso, Ingeniero de Telecomunicaciones y Product Manager. +10 años de experiencia en proyectos de Software, Cloud e Ingeniería de Redes. Me apasiona el DIY, la tecnología Blockchain y las Finanzas.

Suscríbete

¡Sácale el máximo partido a BorrowBits!

Apúntate para seguir recibir por email las nuevas publicaciones, noticias sobre Blockchain pre-filtradas y material exclusivo para suscriptores. De momento es gratis:

{subscription_form_1}

Categorías

Bits del pasado

Sitio patrocinado por:

JitKey rentabilización apartamentos turísticos

JITKey.- Startup enfocada en la gestión de alojamientos turísticos.