Introducción a la Programación de Inteligencia Artificial
2024-25
IES AL-ÁNDALUS
# UT01
No hay un perfil único
Evolución muy rápida
Las carreras profesionales tradicionales, no garantizan los conocimientos y habilidades necesarios
Algunas tareas no requiren conocimientos profundos, aunque es recomendable entender bien el paradigma de programación
Nociones de cómo se trabaja con los datos a nivel matemático
# UT01
Data Science
Parte algorítmica
al hablar de "Ciencia de Datos", en realidad, nos estamos refiriendo a una parte de lo que comprende el área de "Big Data", vinculado a las técnicas de trabajo en la que interviene el "Machine Learning"
Tareas de datos
Científicos de datos
Expertos en investigación de algoritmos y modelos en machine learning buscan mejoras y soluciones nuevas. Requieren fuertes habilidades matemáticas. Generalmente, trabajan en universidades o grandes empresas tecnológicas, pero también hay profesionales y empresas pequeñas que comparten avances con la comunidad.
Ingenieros de datos
Los "ingenieros de datos" se encargan de asegurar la calidad de los datos utilizados en modelos, tanto durante el entrenamiento como en producción. En este contexto de "Programación de Inteligencia Artificial," asumiremos que ya tenemos los datos y solo necesitamos realizar un tratamiento básico para que sean compatibles con nuestro modelo.
Analista de datos
o "MLops", es un perfil que aplica herramientas existentes para obtener información valiosa en decisiones comerciales o estrategias futuras. No requiere una formación universitaria y debe comprender el contexto del negocio, tener acceso a recursos como servidores y datos, y usar una interfaz para presentar resultados. Suele trabajar en equipos multidisciplinarios.
# UT01
# UT01
Un técnico de inteligencia artificial debe conocer las principales técnicas y modelos existentes y desarrollados por los investigadores, y debe saber adaptarlos al problema concreto que debe resolver, así como saber interpretar los resultados y corregir los errores.
En concreto, debe poder moverse con soltura con los siguientes aspectos técnicos:
Saber programar
Conocer el entorno Cloud
Saber utilizar software de control de versiones. Git
# UT01
Contar con habilidades de programación sigue siendo importante en el campo de la inteligencia artificial, aunque existan herramientas que permitan crear soluciones sin programación. La programación proporciona una comprensión técnica y una capacidad para optimizar y prever situaciones de fallo. Estas habilidades son valiosas, ya que la precisión y robustez son fundamentales, incluso en entornos donde no se trabaje directamente con código.
Y, finalmente, es bastante importante haber desarrollado las cuatro habilidades propias del pensamiento computacional que permiten idear y adaptar cualquier problema al ámbito computacional, donde podremos resolverlo de forma eficiente y minimizando errores.
# UT01
Y estas habilidades se adquieren, principalmente, programando. Por ello, es muy recomendable aprender a programar y colaborar en proyectos de código siempre que sea posible, o trabajar en proyectos propios personales para mantener el pensamiento computacional en forma.
# UT01
Hoy en día, la mayoría de las organizaciones migran su infraestructura a la nube, aprovechando los servicios de servidor en línea. Esto se debe al crecimiento del Software como Servicio (SaaS), que ha permitido que las empresas accedan a servicios informáticos actualizados y seguros de manera rentable. El "cloud computing" permite a las organizaciones enfocarse en sus objetivos de negocio mientras los proveedores de infraestructura se encargan de la protección y los costos, basados en un modelo de "pago por uso".
Los principales proveedores de computación en la nube, son Google Cloud Platform, AWS, IBM Cloud y Azure. Todos ellos te permiten crear una cuenta de desarrollador y probar sus servicios sin coste para un determinado nivel de uso.
# UT01
Entre sus servicios, está la herramienta BigQuery, que está orientada a analítica de datos, pero también permite entrar en la experiencia del machine learning. Su servicio específico en el área que nos ocupa, es Vertex AI, una plataforma unificada de aprendizaje automático que contiene la herramienta AutoML. También cuenta con servicios más enfocados en tareas concretas, como por ejemplo Dialog Flow para aplicación de asistentes conversacionales.
# UT01
En el catálogo de aplicaciones y servicios de Amazon Web Services, las herramientas de IA se segmentan en función de la posibilidad de personalizar y entrenar tú mismo un modelo. La herramienta base, es Amazon SageMaker, que provee de todo lo necesario para crear y entrenar modelos de machine learning con una cierta capa de servicio mayor que si se hace en un IDE con Python, por ejemplo. Pero una propuesta muy interesante, son sus servicios Rekognition para reconocimiento de imagen y Comprehend para el análisis de textos y procesamiento de lenguaje natural.
# UT01
El producto estrella de IBM en el campo de la IA es su sistema cognitivo Watson, que fue el precursor de la era actual de la inteligencia artificial. Aunque en sus inicios estaba enfocado a convertirse en un asistente conversacional, IBM ha ido ampliando su catálogo de servicios incluyendo todo tipo de soluciones.
# UT01
Cuando un equipo debe trabajar de forma colaborativa en un proyecto de código, para que no se pierda ninguna actualización y se pueda ir modificando el código con orden, es muy recomendable utilizar una metodología y/o plataforma en la que vaya quedando registrado el trabajo de cada uno, sugerencias de cambio y la posibilidad de ir incorporando los cambios de forma cómoda, quedando un registro de todas las ramas que se han ido generando y fusionando con el proyecto principal. El software más utilizado es Git, a través de plataformas online como Github o Gitlab.
# UT01
Las técnicas utilizadas actualmente para crear productos de inteligencia artificial, tienen una base matemática amplia y profunda. Aunque se pueden aplicar sin contar con una formación académica avanzada, siempre es conveniente tener nociones sobre los campos de estudio que han originado las funciones que se utilizan en los algoritmos, así como las técnicas de optimización y cálculo numérico que permiten resolver las tareas propias del Aprendizaje Automático.
# UT01
El área de las matemáticas que comprende las teorías de modelos, conjuntos, teorías de la demostración y la teoría de la computabilidad, es el de la lógica. Aunque es muy anterior a los ordenadores, el campo de las Ciencias de la Computación, se beneficia de una parte importante de esta disciplina. La teoría de la computabilidad pone los cimientos de la computación en términos lógicos y aritméticos.
proporciona las reglas y técnicas para determinar si es o no válido un argumento dado, lo cual es fundamental en cualquier programa computacional.
# UT01
Trabaja con estructuras numéricas en distintas dimensiones. Se dice que es la matemática de los datos. Es fácil distinguirla por la presencia de elementos apilados en forma de vectores, matrices, tensores,...
En IA son elementos fundamentales, porque facilitan la infinidad de operaciones a realizar con las técnicas actuales de "machine learning" o aprendizaje automático
En cualquier problema con un sistema de múltiples variables de entrada y de salida, es necesario plantear relaciones o ecuaciones entre ellas. Para la resolución de dichas ecuaciones, el álgebra propone estas estructuras de datos y una serie de reglas para poder trabajar con ellos.
# UT01
Es una ciencia a parte que utiliza las matemáticas. Se dedica a estudiar colecciones de datos, su organización y análisis.
Tiene un papel clave a la hora de introducir las principales técnicas de análisis y exploración de los datos. En muchos casos, simplemente con un adecuado análisis estadístico, podemos extraer bastante información de valor de los datos, sin necesidad de aplicar técnicas más avanzadas.
# UT01
En la gran mayoría de los casos, utilizaremos el análisis estadístico para obtener una "foto" inicial de los datos y orientar mejor las técnicas de "machine learning" o aprendizaje automático.
# UT01
IA
Constante Evolución
Mantenerse actualizado supone un desafío debido a su rápido desarrollo.
En el desarrollo de software, especialmente en el paradigma "Open Source," la colaboración y el trabajo en equipo son fundamentales.
En el desarrollo y aplicación de la IA, es altamente recomendable interactuar con la comunidad y no dejar de participar en iniciativas y eventos.
# UT01
El sector del desarrollo ha experimentado una transición hacia el trabajo remoto y equipos distribuidos en todo el mundo, apoyándose en metodologías como Scrum. A pesar de ello, los profesionales técnicos siguen siendo activos en eventos y proyectos presenciales que fomentan la colaboración.
# UT01
La comunidad en torno a la ciencia de datos y la inteligencia artificial se mantiene gracias a iniciativas colaborativas, impulsadas tanto por individuos como por grandes empresas tecnológicas que buscan talento y retroalimentación para mejorar sus productos y servicios.
La mejor manera de formar parte y mantenerse en contacto con la comunidad de profesionales y entusiastas de la inteligencia artificial es participar en algunas de las plataformas, foros o actividades que existen.
Entrar a formar parte de la comunidad te permitirá, principalmente:
Aprender cosas nuevas.
Tener un espacio de referencia para preguntar dudas o encontrar proyectos que te interesen.
Compartir con otros profesionales de tu mismo perfil tus inquietudes, pasión y logros.
No permanecer aislado e incluso hacer nuevos amigos.
Conseguir apoyo y ayuda para proyectos o tests.
Debatir sobre diferentes aproximaciones o nuevas tecnologías.
Tener visibilidad desde el punto de vista laboral y aumentar posibilidades de encontrar o mejorar trabajo.
# UT01
Pero antes de pasar a ver todas las opciones a tu disposición, una advertencia importante: se trata de una relación bi-direccional. Es necesario tanto dar como recibir. Debes tener una actitud positiva ante lo que los demás comparten u ofrecen de la misma manera que a ti te gusta que se respete y valore tu esfuerzo y trabajo. Y no es bueno recurrir a la comunidad solo para recibir: aprovecha ese espacio para exponerte, para presentar tus ideas y experimentos, porque la comunidad te aportará mucho para mejorarlo y ganarás visibilidad.
# UT01
Redes Sociales
Las redes sociales han permitido crear comunidad a través de las distintas opciones de grupos, canales, etc, que proporcionan. En torno a cada tecnología y framework, han ido surgiendo opciones para mantenerte al día y conectado a otros profesionales y apasionados de la inteligencia artificial.
Foros y Blogs
Los foros son muy útiles para pedir ayuda a la comunidad, como es el caso de Stack Overflow una referencia para toda la comunidad de desarrollo en general. También hay mucha interacción y riqueza de contenido y colaboración en la plataforma Medium, y más concretamente, en las comunidades de contenido dentro de ésta como Towards Data Science.
Es la plataforma de colaboración e interacción entre desarrolladores por excelencia. Se pueden encontrar muchos proyectos "open source" colaborar aportando sugerencias para mejorar el código. Es recomendable, tener cuenta en github y tener repositorios públicos, así como formar parte de otros repositorios como colaboradores.
# UT01
Twitter - X
Hay muchos usuarios relacionados con el mundo de la inteligencia artificial que comparten contenido de valor en esta red social. Lo más recomendable aquí, es crear tu propia lista de AI e ir añadiendo perfiles interesantes haciendo búsquedas por los términos "Artificial Intelligence", "Machine Learning" o "Deep Learning"
YouTube
Aquí puedes encontrar una gran cantidad de canales dedicados al desarrollo y creación de modelos de inteligencia artificial. Algunos canales que no deberías perderte son:
# UT01
Una de las formas más directas y eficientes de mantenerse en contacto con la comunidad, hacer contactos de valor y estar al día en las novedades de la industria de la inteligencia artificial es asistir a eventos del sector. También es muy recomendable participar en competiciones abiertas, porque se conoce y colabora con otros profesionales y amantes de la inteligencia artificial, se aprende mucho, y se gana visibilidad de cara empresas que convocan estas competiciones u otros participantes que también están interesados en conocer gente con este perfil.
# UT01
Una plataforma que ha crecido mucho en los últimos años y que se ha convertido en referencia para todos los que desarrollan modelos de machine learning, es Kaggle. En esta plataforma se publican retos por parte de empresas y organizaciones en los que es necesario utilizar los datasets que éstas comparten y crear un modelo que, tras ser entrenado con dichos datos, sea útil para la misión de la organización que recurre a la comunidad. La plataforma cuenta con un catálogo de datasets muy variado y amplio, por lo que es un medio ideal para todos los que están aprendiendo o que necesitan probar nuevas técnicas con datos reales y actuales en algún caso de uso concreto.
# UT01
La inteligencia artificial es herramienta y producto para las empresas
En el ecosistema de la IA, el mayor peso lo tiene la industria, las empresas, en definitiva, el negocio. Principalmente en:
Productos o servicios internos
que mejoren la operativa de negocio o su gestión. En este grupo, tenemos todo el área de analítica avanzada de negocio, herramientas de IA para marketing, ventas, monitorización de sistemas,...
Productos o servicios para cliente
que la empresa crea y comercializa. Es el caso de consultoras, empresas de desarrollo de software o startups con aplicaciones de IA.
# UT01
Dado que todas la organizaciones y empresas necesitan transformar sus procesos para hacerlos más eficientes y la IA es uno de los mejores medios para ello, hay una creciente demanda de este tipo de profesionales. Pero no a través de los métodos tradicionales de selección.
Factores de Éxito
Experiencia dentro del área concreta
Tener portfolio de proyectos relacionados con el puesto
Reconocimiento en plataformas colaborativas
Ser emprendedor con la tecnología del puesto.
Sector muy joven y cambiante
Proceso contínuo de "Aprender haciendo"
# UT01
Los algoritmos de inteligencia artificial requieren planteamientos matemáticos profundos, lo que implica el uso de lenguajes de programación adecuados para tales tareas. Aunque los lenguajes de bajo o medio nivel son eficientes en cálculos, no son ideales para la IA debido a su complejidad y manejo ineficiente de grandes estructuras de datos.
Ámbito empresarial
Python o Java
Investigación
Matlab o Octave
Estrategias de datos
R (limitado para IA)
Disp. Móviles & Web Apps
Javascript o Node.js
# UT01
Leng. Prog. Científica
Intérprete propio
Sintaxis orientada a cálculo matemático
IDE propio, donde se ejecuta habitualmente
Parte del proyecto GNU. (Opensource y Gratuito)
Escrito en C++ y compatible con Matlab
Compatible con otros programas GNU para mejorar la parte gráfica
# UT01
Su potencia en el planteamiento de cálculos matemáticos y sus herramientas de visualización 2D y 3D los han hecho muy adecuado para la investigación en el campo del machine learning y la optimización.
# UT01
La popularización de Python en inteligencia artificial se aceleró con la liberación de TensorFlow por Google y el aporte de proyectos académicos y científicos.
Ofrece programación orientada a objetos, estructurada y funcional, se adapta a diversos sistemas operativos y posee un amplio catálogo de librerías respaldado por la comunidad.
# UT01
Proyecto de código abierto.
Legibilidad como objetivo principal.
Fácil e intuitivo, similar a leer un texto en inglés.
Potencia comparable a otros lenguajes de su nivel.
Apto para programar tareas sencillas o construir prototipos rápidamente.
Capacidad para ser "incrustado" en programas escritos en C y C++.
Útil y aceptado en proyectos grandes.
# UT01
también es un lenguaje de propósito general, pero sus librerías y paquetes se han centrado más en cálculo estadístico, visualización y flujo de datos en general.
R es un lenguaje interpretado y libre que se integra con lenguajes como C o Fortran para tareas muy voluminosas de análisis de datos, orientado a generar informes finales más que código estático.
# UT01
Se trata de un lenguaje complementario utilizado en proyectos integrales, desde la adquisición de datos hasta su presentación, aunque el motor de inteligencia artificial probablemente se ejecute en otro lenguaje.
Cuenta con un repositorio centralizado de paquetes, denominado CRAN, que facilita bastante la programación de tareas de analítica de datos y lo que se conoce como "Big Data" o "Smart Data"
# UT01
A medida que la programación de IA y machine learning evoluciona hacia la programación funcional, Java pierde preferencia entre nuevos desarrolladores, pero aquellos familiarizados con Java para otras aplicaciones optan por usarlo antes que aprender Python.
Podríamos decir que Java es el lenguaje de programación de la industria. Es el más utilizado en proyectos de negocio, en plataformas y herramientas de gestión,...
# UT01
También es posible encontrar desarrollo de inteligencia artificial programados en C y en C++. Este lenguaje, además de ser la base de otros lenguajes de alto nivel que se usan en el campo del machine learning, cuenta con librerías muy potentes para aplicaciones que requieren de rapidez y rendimiento.
Hay desarrollos de inteligencia artificial en otros lenguajes de programación. Por ejemplo, aunque Javascript es considerado el lenguaje de programación de la web, existen librerías y herramientas que permiten ejecutar algoritmos de machine learning en aplicaciones, corriendo en Javascript o en sus frameworks más utilizados, como Node.js.