{UT01}
Introducción a la Programación de Inteligencia Artificial
2024-25

IES AL-ÁNDALUS
1. Perfil del programador de inteligencia artificial
# 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
1. Perfil del programador de inteligencia artificial
# 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
Perfiles
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.
1.
2.
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.
3.
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
1.1. Conocimientos Técnicos
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:
1
Saber programar
2
Conocer el entorno Cloud
3
Saber utilizar software de control de versiones. Git
# UT01
Saber programar
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
Saber programar
- Dividir un problema complejo en partes más simples
- Abstracción
- Reconocimiento de Patrones
- Diseño de algoritmos

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
Conocer el entorno Cloud
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
Google Cloud Platform
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
Amazon Web Services
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
IBM Cloud
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
Saber usar SW control de Versiones. Git
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
1.2. Conocimientos Matemáticos
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
Lógica Matemática
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
Álgebra
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
Estadística (Verdadera disciplina de los datos)
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
Estadística (Verdadera disciplina de los datos)

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.

¡¡¡Repasemos un poco!!!
2. Ecosistema en el ámbito de la inteligencia artificial.
# 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
2.1. Comunidad de desarrolladores.
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
2.1. Comunidad de desarrolladores.
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:
1
Aprender cosas nuevas.
2
Tener un espacio de referencia para preguntar dudas o encontrar proyectos que te interesen.
3
Compartir con otros profesionales de tu mismo perfil tus inquietudes, pasión y logros.
5
No permanecer aislado e incluso hacer nuevos amigos.
Conseguir apoyo y ayuda para proyectos o tests.
4
Debatir sobre diferentes aproximaciones o nuevas tecnologías.
6
Tener visibilidad desde el punto de vista laboral y aumentar posibilidades de encontrar o mejorar trabajo.
# UT01
2.1. Comunidad de desarrolladores.
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
2.2. Plataformas.
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.
1.
2.
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.
3.
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
2.2. Plataformas. RRSS
2.
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"
3.
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
2.3. Competiciones y Eventos.
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
2.3. Competiciones y Eventos.
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
2.4. Empleo.
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
2.4. Empleo. Búsqueda de Profesionales
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"

¡¡¡Repasemos un poco!!!
3. Lenguajes de Programación.
# 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
3. Lenguajes de Programación. Octave
# 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

3. Lenguajes de Programación. Octave
# 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.
3. Lenguajes de Programación. Python
# 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.
3. Lenguajes de Programación. Python
# 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.
3. Lenguajes de Programación. R.
# 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.
3. Lenguajes de Programación. R.
# 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"
3. Lenguajes de Programación. Java.
# 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,...

3. Lenguajes de Programación. Otros.
# 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.

¡¡¡Fin de la UT01!!!
CE-IABD-UT01-Introducción a la Programación de Inteligencia Artificial
By Manuel Jesús Rodríguez Arabi
CE-IABD-UT01-Introducción a la Programación de Inteligencia Artificial
- 246