¿Que es y para que sirve un ALGORITMO? Uso en IA y ML

“vete a la cocina a buscar la bolsa de las compras, le pides a la abuela la lista, vas donde tu papá para que te dé el dinero y llegas al almacén, compras todo, pagas y vuelvas a casa»…
CORRECTO!! Lo anteriormente enunciado ha sido un algoritmo.
Para la programación (que es la actividad que tiene como resultado un programa o software) es el conjunto de sentencias, instrucciones, operaciones, en un lenguaje que entiende la computadora, los cuales desarrollan la lógica de un programa. Si las operaciones no siguen una lógica el resultado es imperfecto o imposible. Se clasifican en dos grandes grupos: los cualitativos que son los que mueven, convierten, modifican, etc y los cuantitativos que usan las operaciones de las matemáticas.

Un algoritmo es una secuencia finita de instrucciones, cada una de las cuales tiene un significado preciso y puede ejecutarse con una cantidad finita de esfuerzo en un tiempo finito. Ha de tener las siguientes características: legible, correcto, modular, eficiente, estructurado, no ambiguo y a ser posible se ha de desarrollar en el menor tiempo posible. 
Su importancia radica en mostrar la manera de llevar a cabo procesos y resolver típicamente problemas matemáticos (o de otro tipo). Al igual que las funciones matemáticas, los algoritmos reciben una entrada y la transforman en una salida («efecto caja negra»). Sin embargo, para que un algoritmo pueda ser considerado como tal, debe ser determinista (definido), finito y eficiente. Por eficiente se entiende que las instrucciones encuentran la solución en el menor tiempo posible; finito implica que tiene un determinado número de pasos, es decir, que termina; y determinista, que si se sigue el mismo proceso más de una vez se llega siempre al mismo resultado. 
En la vida cotidiana se emplean algoritmos en multitud de ocasiones para resolver diversos problemas. Algunos ejemplos se encuentran en los instructivos (manuales de usuario), los cuales muestran algoritmos para usar el aparato en cuestión o inclusive en las instrucciones que recibe un trabajador por parte de su patrón. También existen ejemplos de índole matemática, como el algoritmo de la división para calcular el cociente de dos números, el algoritmo de Euclides para calcular el máximo común divisor de dos enteros positivos, o el método de Gauss para resolver un Sistema lineal de ecuaciones.  

Tipos de algoritmos de Inteligencia Artificial y Machine Learning

Uno de los problemas que nos encontramos al crear agentes expertos es que no son capaces de aprender por sí solos, no generan nuevas preguntas; este tipo de sistemas son alimentados con el conocimiento constante de expertos en una materia, pero siempre quedan restringidos al conocimiento externo a través de algoritmos de Inteligencia Artificial relativamente básicos.

Es por esto por lo que nace el Machine Learning, como una disciplina que busca conseguir que las máquinas aprendan por sí mismas, pero claro, esto suena mucho más fácil de lo que realmente es, y la capacidad de cómputo de los equipos informáticos no siempre ha permitido llevar a cabo algunos de los algoritmos más exigentes. Por suerte esta limitación ya ha sido superada.

La matemática subyacente detrás de toda esta tendencia es compleja y muy diversa, por lo que en este texto solo mencionaremos algunos de los algoritmos implicados, a modo de vista general, sin entrar en detalle.

ALGORITMOS DE INTELIGENCIA ARTIFICIAL

Aunque de forma genérica se usa la expresión «algoritmos de Inteligencia Artificial» para referirse a los algoritmos que mencionaremos a continuación, sería más correcto usar el término «algoritmos de Machine Learning«, ya que como vimos en artículos anteriores la Inteligencia Artificial es un superconjunto de tecnologías que engloba al propio Machine Learning, y sería imposible concretar todos los algoritmos involucrados en tal campo. Veamos los 3 grupos de algoritmos principales.

Aprendizaje por refuerzo (RL, Reinforcement Learning)

El aprendizaje por refuerzo consiste en la iteración constante y basada en “prueba y error” que una máquina es capaz de realizar en tiempo récord ante determinadas condiciones o entorno dado (por ejemplo, las reglas de un juego) y con un objetivo específico llamado “recompensa” (un ejemplo clásico es el de vencer en una partida de ajedrez). De esta forma se pueden obtener resultados, patrones, correlaciones, caminos y conclusiones basadas en experiencia previa generada por la propia máquina. Un ejemplo de este modelo de aprendizaje ha sido la IA ajedrecista AlphaZero de DeepMind.

Aprendizaje por refuerzo - algoritmos de machine learning.

Los principales algoritmos utilizados en el aprendizaje por refuerzo son: programación dinámica (dynamic programming), Q-Learning y SARSA (State–action–reward–state–action).

Aprendizaje supervisado (Supervised machine learning)

El aprendizaje supervisado se basa en modelos predictivos que hacen uso de datos de entrenamiento. Dado un conjunto conocido de datos, se pretende que el sistema sea capaz de lograr una determinada salida, de forma que el modelo es ajustado (entrenado) hasta lograr resultados adecuados. Ejemplocoches autónomos.

Los principales algoritmos en aprendizaje supervisado son: árboles de decisión, clasificaciones Naïve Bayes, regresión ordinaria por mínimos cuadrados, regresión logística, Support Vector Machines (SVM).

Aprendizaje no supervisado (Unsupervised machine learning)

Los algoritmos de aprendizaje no-supervisado son similares a los de aprendizaje supervisado, pero estos ajustan su modelo únicamente en función de los datos de entrada. Dicho de un modo sencillo, el algoritmo realiza un auto entrenamiento sin indicaciones externas.

Inteligencia Artificial y Machine Learning - Aprendizaje automático no supervisado.

Los principales algoritmos de aprendizaje no supervisado son: algoritmos de agrupamiento (clustering), análisis de componentes principales (PCA), Singular Value Decompotition (SVD), análisis de componentes independientes (ICA).

¿EXISTEN APLICACIONES STANDALONE DE IA?

Generalmente, la IA se agrega a algún producto ya existente, ya sea hardware o software. Es difícil encontrar sistemas de IA que actúen como una aplicación individual (stand-alone) y que se vendan por separado.

Normalmente, los productos tienden a incorporar algún subconjunto o técnica de IA que le permita obtener un valor añadido (de la misma forma que SIRI se incorpora a un dispositivo iOS). De esta forma, las automatizaciones, bots y sistemas inteligentes se combinan junto con un gran volumen de datos para mejorar tecnologías de cualquier ámbito (hogar, trabajo, etc.) y tipología (sistemas mecánicos o aplicaciones software).

Aunque es posible encontrar proyectos o librerías para aplicar IA de raíz en nuestros proyectos (véase las librerías software que ofrecen TensorFlow y OpenAI), lo más común es consumir servicios en la nube que las grandes empresas tecnológicas ponen a nuestra disposición porque… ¿para qué vamos a reinventar la rueda si otros ya lo han hecho antes?

Por tanto, la tendencia es el uso de servicios en la nube (servicios de Cloud Computing) con los que interactuar a través de APIs específicas. Microsoft Google son dos claros ejemplos de este tipo de servicios, que proveen una interfaz de conexión abierta para todo el mundo.

Algunos ejemplos de plataformas de Inteligencia Artificial o Machine Learning actuales son:

Microsoft Cognitive Services

Microsoft Cognitive Services es un conjunto de servicios de inteligencia cognitiva que Microsoft ha puesto a disposición del público en su Cloud (Azure), y que ha dividido en categorías como visión, voz, lenguaje, decisión y búsqueda, de forma que resulten más intuitivos para el usuario.

Google Cloud AI

Google Cloud AI conjunto de servicios que Google oferta en sus planes Cloud, y abarcan desde el consumo de servicios cognitivos hasta el desarrollo de aplicaciones de IA propiamente dichas.

Watson AI

Watson AI es una plataforma desarrollada por IBM, Watson nos permite integrar el que presume ser la IA más poderoso del mundo en nuestra propia aplicación.

recuperado de:

https://adictoalcodigo.blogspot.com/2016/06/que-es-y-para-que-sirve-un-algoritmo.html

auraportal.com


Descubre más desde La Red Cientifica

Suscríbete y recibe las últimas entradas en tu correo electrónico.

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.