0% encontró este documento útil (0 votos)
4 vistas161 páginas

Contents

El documento ofrece una introducción a la tecnología Big Data, abarcando su evolución histórica, definiciones y conceptos clave como ETL, NoSQL y arquitecturas de datos. Se destaca la importancia de comprender la diferencia entre datos, información y conocimiento, así como el impacto de tecnologías como Hadoop y Spark. Además, se menciona el papel de la inteligencia artificial y el machine learning en el análisis de grandes volúmenes de datos.

Cargado por

analuburgos123
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas161 páginas

Contents

El documento ofrece una introducción a la tecnología Big Data, abarcando su evolución histórica, definiciones y conceptos clave como ETL, NoSQL y arquitecturas de datos. Se destaca la importancia de comprender la diferencia entre datos, información y conocimiento, así como el impacto de tecnologías como Hadoop y Spark. Además, se menciona el papel de la inteligencia artificial y el machine learning en el análisis de grandes volúmenes de datos.

Cargado por

analuburgos123
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Introducción a la

tecnología Big Data

1
Introducción a la tecnología Big Data
Ayuda

Objetivos

1. Introducción

1. Introducción

2. La (Pre)Historia del Big Data

2. La (Pre)Historia del Big Data

3. Y llegamos al siglo XX

3. Siglo XX

4. Y se hizo el Big Data (al menos como definición)

4. Definición de Big Data

5. Pirámide del conocimiento: datos, información, conocimiento

5. Pirámide del conocimiento: datos, información, conocimiento

6. Nivel dato: extraer, transformar y cargar

6. Nivel dato: extraer, transformar y cargar

6.1. Kafka: una nueva forma de tratar los datos

7. Nivel información: contextualización y flexibilidad

7. Nivel información: contextualización y flexibilidad

7.1. SQL vs NoSQL

7.2. Sistemas no distribuidos vs sistemas distribuidos

7.3. Hadoop

7.4. Spark

7.5. Arquitecturas híbridas

7.6. Data Wareouse, Data Lakes y Data Lakehouse

7.7. ¿En mis instalaciones o en la nube?

8. Nivel conocimiento: analizar y comprender

8. Nivel conocimiento: analizar y comprender

8.1. Visualización: a veces la vista no nos engaña

8.2. Análisis: empezar a extraer conocimiento de los datos

8.3. Inteligencia Artificial: intentar que las máquinas piensen como nosotros
2
8.4. Redes convolucionales

8.5. Transformers: aprendiendo el lenguaje humano

8.6. Modelos de difusión: sacar el ángel de la piedra

8.7. Generando vídeos: combinamos los Transformers y los procesos de difusión

Bibliografía

Fin de módulo

¡Enhorabuena!

3
Ayuda

1. Accede desde el menú


principal al listado de los
apartados del e-book y sus
secciones.
2. Muévete entre las secciones
del apartado utilizando las
flechas y .
3. Avanza al siguiente
apartado con las flechas
laterales.
4. Presta atención a las
instrucciones. Te indicarán
cómo interactuar con los
contenidos.
5. No olvides hacer clic en
todos los textos que estén en
azul para ver más información.
6. Puedes descargar el pdf con
los contenidos del e-
book haciendo clic en el icono.

Recuerda revisar todo el contenido de cada e-book.

4
Objetivos

En este módulo te presentamos una visión general de la tecnología que se


encuentra detrás de la revolución Big Data. El análisis de los datos masivos
que nos proporcionan la actividad de los usuarios cuando acceden a servicios
online o usan sus teléfonos inteligentes ha permitido a multitud de empresas
conocer mejor las necesidades de los mismos, y poder responder
adecuadamente de formas totalmente innovadoras y eficaces.

El campo del Big Data es muy extenso y algunos puntos exigen muchos
conocimientos y habilidades avanzadas que solo se adquieren tras muchos
años de formación y dedicación. Sin embargo, en este módulo presentamos
un marco conceptual sencillo y accesible, que te permitirá tener una visión
general para comprender, en un primer momento, todo lo que conlleva la
tecnología Big Data. Además, te servirá de guía para seguir profundizando por
tu cuenta, presentado los principales conceptos de forma sencilla y
enlazándolos entre sí dentro de ese marco.

Ahora cuando alguna empresa te presente soluciones Big Data, podrás


encajarlas en alguno de los niveles descritos, y sabrás destacar los puntos
importantes y diferenciales de cada una de ellas. De la misma forma, cuando
hables con especialistas de esta tecnología, tendrás una base para hablar un
lenguaje común, y así enfocar todos los esfuerzos en las necesidades reales
de los clientes y de la empresa.

5
1. Introducción

1. Introducción

¡Bienvenido al primer módulo de la especialización de


Big Data Básico! En este módulo se introducirán los
principales conceptos que han surgido dentro del
campo tecnológico que se ha ido denominando Big
Data. Asociado a este término, tan usado en multitud
de ámbitos y escenarios distintos, se han ido
acumulando tecnologías, herramientas y soluciones
que hacen de esta palabra un concepto muy general y
muchas veces no del todo comprendido.

Comprender los datos es algo consustancial al ser


humano

Por este motivo comenzaremos por entender que la


necesidad de comprender los datos es algo
consustancial al ser humano, desde su origen, y que
poco a poco se han ido creando herramientas que
permitían un mejor uso de la información de la que se
disponía. Ya en la parte final del siglo XX coincidieron
varias tecnologías que supusieron un empuje
definitivo a nuestras ansias de reconocer patrones y
obtener conocimiento de ellos, y que supusieron la
puesta en marcha de lo que luego se llamó Big Data.

Pero para comprenderlo, y ya que, como hemos dicho, es


algo inseparable de la actividad humana, utilizaremos un
marco conceptual “robado” de otras ciencias menos
6
tecnológicas como psicología o teoría del conocimiento.

Se trata de comprender la diferencia ente datos, información y conocimiento,


y usar esta división para “compartimentar” y explicar las diferentes
capacidades que hay que desarrollar para poder usar en toda amplitud las
tecnologías Big Data.

Con este mapa en la mano, se recorrerá el camino desde la información más


simple, el dato, hasta su transformación en conocimiento útil y válido. Se verá
qué significan conceptos como ETL, NoSQL, clústeres, llegando a marcos de
desarrollo como Hadoop o Spark., fundamentales y utilizados ampliamente en
todas las infraestructuras Big Data.

Para finalizar, analizaremos el nivel en el que de verdad en la actualidad se centra


la tecnología de Big Data: el conocimiento. Introduciremos en este nivel
conceptos como la inteligencia artificial, machine learning o deep learning. Pero
echaremos algo en falta en todo ello, y veremos que es necesario contar con algún
factor más, lo que será el punto de partida de los siguientes módulos de esta
especialidad.

7
2. La (Pre)Historia del Big Data

2. La (Pre)Historia del Big


Data

Como se ha dicho anteriormente, la historia del Big


Data comenzó hace muchos años 1 (1) , incluso
siglos y milenios. Y la razón no es más que el
tratamiento de la información y su utilización como
herramienta ha sido fundamental en el desarrollo
evolutivo del ser humano. Nuestra ventaja primordial
ha sido la capacidad de comprender lo que nos
rodeaba y usar ese conocimiento para adaptarnos al
medio.

En cuevas del paleolítico superior (alrededor del 18000 A.C.) se han encontrado
indicios de que los humanos de ese tiempo ya tenían ciertas herramientas para
contar o hacer operaciones matemáticas sencillas. En palos o huesos2 (2) se han
encontrado marcas que permitían llevar cierta contabilidad de comida o recursos.

Más adelante, alrededor del 2400 A.C., en Babilonia se extiende el uso del ábaco,
aunque su origen parece ser las regiones de la actual China. Con esta herramienta
se podían hacer cálculos más sofisticados y con números más grandes.

También aparecieron las primeras BIG DATA EN TIERRAS AZTECAS


bibliotecas, siendo la más famosa de ellas
la Biblioteca de Alejandría, que buscaba
el objetivo de acumular todo el
conocimiento de la humanidad. Por
desgracia en el año 48 A.C. sufrió un
incendio y se perdieron gran cantidad de
libros, irrecuperables hoy en día.

Un poco antes, en el siglo II A.C. se


8
desarrolló el primer ingenio mecánico Un ejemplo muy descriptivo de la “obsesión”
que podría definirse como ordenador, el humana por los datos desde sus orígenes es la
mecanismo de Anciticera3 (3) , con el “Piedra del Sol”, una representación del
objetivo de hacer cálculos astronómicos calendario azteca. En esta representación, se
y seguir el ciclo de los Juegos Olímpicos. conjugan tres factores del Big Data: a través
de una visualización comprensiva y compacta,
Y siguiendo un poco más adelante, en se muestra información estructurada de
1663 se tiene noticia del primer uso de multitud de datos con el objetivo de obtener
análisis de datos. El comerciante John un conocimiento sobre los ciclos naturales de
Graunt 4 (4) , accediendo a los datos de las estaciones.
mortalidad de la ciudad de Londres, pudo
crear un modelo con el que detectar Fuente:
epidemias de peste bubónica. [Link]
azteca-azteca-escultura-642655/
Finalmente, el primer registro que se
tiene del término “business intelligence”,
uno de los precursores del Big Data,
aparece en 1865, gracias a Richard Millar Devens5 (5) . Éste lo usa en referencia
al banquero Henry Furnese, que, analizando los datos de los competidores de
manera estructurada, consiguió obtener ventaje comercial. Unos años después en
1881, para poder procesar los datos del censo de Estados Unidos, un ingeniero
llamado Herman Hollerith6 (6) creó lo que se llamó la “Hollerith Tabulating
Machine”. La empresa que fundó gracias este antecesor de las primeras
computadoras modernas llegó a ser conocida como IBM.

1 (1)

[Link]
bernard-marr

2 (2)

Ver el hueso de Ishango en [Link]

3 (3)

Ver: [Link]

9
4 (4)

Ver: [Link]

5 (5)

Ver: [Link]

6 (6)

Ver: [Link]

10
3. Y llegamos al siglo XX

3. Siglo XX

Un gran hito que se produjo alrededor de mitad


de siglo XX, con los estudios teóricos de Alan
Turing y la creación del primer ordenador
totalmente digital llamado ENIAC, fue la
capacidad de poder procesar información según
algoritmos programables. En este momento se
inició lo que hoy denominamos Informática. Pero
volvamos un poco más atrás en el tiempo. La
necesidad de seguir utilizando la información para
mejorar la eficiencia empresarial produjo el gran
avance de la estadística y el marketing.

Los grandes medios de comunicación (radio y


televisión) y los nuevos procesos de fabricación,
permitieron llegar a gran cantidad de consumidores.
Para hacerlo de forma eficiente, era necesario
conocer los gustos y tendencias de los posibles
clientes, y la única forma en la que se podía hacer era
mediante las encuestas y el tratamiento estadístico
de las mismas. También se utilizaban focus groups para
obtener una información de tipo más cualitativo.

Escribe aquí tu texto.

11
LEY DE MOORE Ambas informaciones, cuantitativa y
cualitativa, eran utilizadas
ampliamente para decidir las acciones
a tomar en cuanto a fabricación,
distribución o publicidad. Esta era la
etapa de lo que podíamos llamar Small
Data.

Esta información todavía sigue


En la imagen se puede ver que el usándose y en algunos momentos y
desarrollo de la capacidad de los etapas de todo producto es la única
microprocesadores ha seguido de la que se puede disponer. La
exactamente la Ley de Moore. Cabe utilización del Big Data no implica que
preguntarse si la Ley de Moore no se necesite o sea útil la obtención
efectivamente se cumple o los fabricantes de información a través de este tipo
de ordenadores han seguido la Ley de de métodos. Para comprender ciertas
Moore como reto a conseguir. De todas
actividades o comportamientos del
formas, parece que ya se está llegando al
usuario muchas veces es
imprescindible.
límite de la capacidad física. A partir de
aquí será necesario otro paradigma para la
Aunque como se ha comentado,
creación de microprocesadores. Aquí es
desde mediados de siglo se dispone
donde aparece la Computación Cuántica.
de los primeros sistemas informáticos,
pero hasta las primeras décadas del
Fuente:
siglo XXI no se ha producido el boom
[Link]
del Big Data. Esto es debido a que en
mons/thumb/9/90/Ley_de_Moore.png/550
esa época se produjo la convergencia
px-Ley_de_Moore.png
de tres factores.

El primero fue la evolución en la


capacidad de procesar información de
los dispositivos informáticos. Desde la
creación y la fabricación de los
circuitos integrados basados en silicio,
el número de transistores que se han
podido integrar en los procesadores
de los ordenadores ha ido creciendo
exponencialmente. Según la Ley de
Moore7 (7) , cada dos años se
duplica el número de transistores en
los microprocesadores, lo que permite
aumentar la velocidad de
procesamiento de estos.

Escribe aquí tu texto.

12
Cuestión de datos
GIGABYTE A PRECIO DE SALDO

Por otra parte, también se ha producido


un gran avance en los dispositivos de
almacenamiento de datos. El precio por
Gigabyte ha decrecido enormemente
desde los 193.000 dólares del año 1980
hasta los 0,07 dólares del año 2009.

Finalmente, y también debido al


desarrollo tecnológico que ha hecho Evolución del precio por Gigabyte desde los
posible los dos anteriores fenómenos, a años 80.
finales del siglo XX y principios del siglo
XXI se popularizó el uso de internet y los Fuente: [Link]
dispositivos móviles. datos en la misma página.

La posibilidad de enviar y recibir


información desde cualquier parte el
mundo y la existencia de un dispositivo personal que siempre está con nosotros ha
disparado la cantidad de datos que las persona generan y que por tanto es
necesario almacenar, procesar y entender.

Escribe aquí tu texto.

QUÉ PASA EN INTERNET EN UN Por ejemplo, como se puede ver, las


MINUTO horas de contenido en stream que ven
los usuarios en un minuto
equivaldrían a 43 años. O también
que una persona promedio genera
102 MB de datos. En todas las demás
categorías y servicios las métricas son
impresionantes.

Esta gran cantidad de eventos e


interacciones con los servicios
conlleva, como hemos dicho, una gran
cantidad de información que puede
ser almacenada, tratada y analizada.
Se han hecho diversos estudios de
Fuente: cuál es la cantidad de datos e
[Link] información que la humanidad genera
ata-never-sleeps-11 y su evolución a lo largo del tiempo.
Uno de estos estudios realizado por
Martin Hilbert y Priscilia López de la
13
Universidad de Carolina del Sur en
2011 puede servirnos de base. Para
poder entender la gran cantidad de
datos que se están generando,
podemos analizar los eventos que se
producen en internet cada minuto.
Desde hace varios años, se han
publicado infografías al respecto de
las que rescatamos una de 2023.

Según este estudio 8 (8) , de 1986 hasta 2002, el hombre generó unos 17
exabytes9 (9) de información. Pero en los cinco años siguientes hasta
2007, se estima que la creación de información creció hasta los 277
exabytes, 16 veces más. Y esta evolución ha seguido un crecimiento
exponencial hasta los 2,5 exabytes al día y para 2020 se estima que
llegaremos a generar un exabyte cada minuto. Impresionante.

“MÁQUINAS” DE GENERACIÓN DE DATOS

7 (7)

Ver: [Link]

8 (8)

Ver: [Link]

14
9 (9)

1 Exabyte = 1.000 Millones de GB

15
4. Y se hizo el Big Data (al menos como definición)

4. Definición de Big Data

Ante esta situación, los ingenieros recogieron el reto


para poder almacenar esa gran cantidad de datos y
también de crear las infraestructuras necesarias para
poder tratarlos de forma adecuada, rápida y flexible.
Empezaron a crear la tecnología que podía hacerlo
realidad. Y poco a poco se fue creando un campo que
más tarde se definió como Big Data. En este campo se
empezaron a mezclar conceptos como información,
datos, conocimiento, NoSQL, Data Mining, Inteligencia
Artificial, cloud, sistemas distribuidos, clústeres,
privacidad, que hacían muy difícil tener una definición
concisa y clara de lo que significaba esta nueva
tecnología

Una de las primeras definiciones fue presentada por la consultora Gartner10 (10)
en 2012. Según este documento el Big Data son:

Big Data

“Activos de información de gran volumen, gran velocidad y/o gran variedad que
demandan formas innovadoras y económicas de procesamiento de información,
que habilitan un conocimiento avanzado, la toma de decisiones y la
automatización de procesos”.

Podemos ver que los tres conceptos básicos son volumen, variedad y velocidad.
Por eso se hablaba en un principio de las tres Vs del Big Data. Con el tiempo esta
definición se fue haciendo más detallada, ampliando el número de Vs.

16
Las 7 Vs del Big Data:

Volumen

Se necesita manejar una gran cantidad de datos, por lo que, es necesario


gestionar de forma adecuada y flexible gran cantidad de información. La
dimensión o magnitud fundamental en este aspecto es “Cantidad”.

Velocidad

Los datos, como hemos visto, se generan continuamente a toda velocidad, por
lo que, es fundamental la capacidad de obtener datos, de procesarlos y de
responder a ellos en poco tiempo. Sobre todo, este aspecto es básico: de nada
sirve tener muchos datos si al final la respuesta no llega en el momento
adecuado. La dimensión o magnitud fundamental en este aspecto es
“Latencia”.

Variedad

Antes de la era internet la mayoría de los datos se podían ajustar a “tablas”


estructuradas. Pero en la actualidad se genera mucho tipo de información que
no se ajusta a este formato: imágenes, textos, comentarios en redes, audio,
etc. Por eso ha sido necesario crear nuevas formas de almacenamiento y
acceso a este tipo de datos. Es necesario gestionar la complejidad de estos
múltiples tipos de datos. La dimensión o magnitud fundamental en este
aspecto es “Complejidad”.

Veracidad

En cualquier proyecto de Big Data, aunque se tengan muchos datos, es


necesario que estos datos tengan una calidad suficiente, que sean ciertos y
que se ajusten a la realidad que se quiere capturar. La dimensión o magnitud
fundamental en este aspecto es “Incertidumbre”. Siempre hay que tener en
cuenta que se debe manejar un nivel de incertidumbre, por la calidad de los
datos o por su significado dentro de la situación real que se quiere analizar o
medir.

17
Variabilidad

Los mismos datos y la misma información pueden significar cosas distintas


dependiendo del momento. Por ejemplo, que un usuario acceda a una página
web de una aseguradora puede significar que quiere contratar un nuevo
seguro o que quiere declarar un siniestro. El análisis debe ser distinto y se
debe actuar de forma distinta. Detectar esta diferencia puede ser crítico en el
éxito de un caso de uso. La dimensión o magnitud fundamental en este
aspecto es “Contexto”.

Visualización

Por el momento, la capacidad de encontrar conocimiento en la información


depende de personas. La Inteligencia Artificial puede ayudar a detectar
eventos o mejorar el análisis de la información, pero qué significa y qué se
puede hacer con ella depende de la capacidad humana de compresión. Y en
este proceso es fundamental la visión que es el sentido básico por el cual
encontramos patrones. Por eso es de gran valor crear gráficos y
visualizaciones que nos permitan indagar en los datos y encontrar
regularidades. Y no solo para poder buscar esos patrones, sino también y
sobre todo para comunicar los resultados y hacerlos útiles dentro de la
organización. La comunicación es fundamental dentro de todos los proyectos
de Big Data. Por todo esto, la dimensión o magnitud fundamental en este
aspecto es “Comprensión”.

Valor

Finalmente, y como objetivo básico de todo tipo de análisis de datos, se


encuentra el valor. Es necesario que se obtenga algún tipo de conocimiento
que permitan a las personas y las organizaciones utilizarlo para mejorar algún
aspecto u obtener nuevos ingresos. La dimensión o magnitud fundamental en
este aspecto es “Beneficio”, entendido como mejora que obtienen las
personas.

10 (10)

Ver Laney, Douglas. "The Importance of 'Big Data': A Definition". Gartner.


Retrieved 21 June 2012: [Link]

También: [Link]
data

18
5. Pirámide del conocimiento: datos, información,
conocimiento

5. Pirámide del conocimiento: datos,


información, conocimiento

Durante todo este tiempo han surgido multitud de tecnologías y empresas


que han ido creando un mapa complejo y extenso. Es muy difícil
categorizar a cada empresa o tecnología en grupos estancos e incluso es
difícil definir las categorías a utilizar.

Escribe aquí tu texto.

Por eso es necesario crear un marco conceptual que nos permita disminuir la
complejidad de este horizonte y tener un punto de vista inicial para analizar lo que
ahora se llama Big Data. Y este marco debería ser lo suficientemente amplio y
19
estable para que pueda ser siempre útil, aunque se sigan introduciendo nuevas
tecnologías y soluciones.

Para ello acudiremos a un marco utilizado en psicología y teoría del conocimiento,


ampliamente utilizado. Para comprenderlo, analicemos las siguientes frases.

Sale el sol a las 13:34

Mañana sale el sol

Todos los días sale el sol

No sale el sol

Hoy sale el sol

Sale el sol

Ayer salió el sol

Como se puede ver, todas las frases indican al menos algún tipo de información,
pero queda claro que son diferentes entre ellas. Están las más básicas, aquellas
que indican un evento único, individual, como “No sale el sol” o “Sale el sol”. Son
puros datos, no relacionados con otro tipo de información. Este tipo de frase, de
información es las que asociaríamos al nivel de datos.

En el siguiente nivel se encuentran frases del tipo “Hoy sale el sol”, “Ayer salió el
sol”, “Sale el sol a las 13:34”. Se puede ver que en este caso la información es más
compleja. Se relacionan dos tipos de evento, por ejemplo, “Sale el sol” y “Son las
20
13:34”, dos tipos de eventos que se corresponden con el nivel de datos para crear
un nuevo tipo de información, más contextualizada, relacionada, agrupada en
categorías, filtrada. Este sería el nivel de información.

Quedan las frases “Mañana sale el sol” y “Todos los días sale el sol”. Realmente
son frases que no indican ningún evento real que se haya producido. Surgen de
analizar la información que se dispone en el nivel anterior, de relacionarla a un
nivel más profundo, para buscar patrones, repeticiones que nos permiten inferir
otros eventos que se van a producir. Este nivel sería el del conocimiento.

Estos tres niveles forman lo que se puede denominar la pirámide del


conocimiento, que será el marco que utilizaremos para avanzar en la explicación
de los temas relacionados con el Big Data.

En el primer nivel, el de los datos, nos encontramos con la necesidad de


conseguir datos desde multitud de fuentes de diferentes tipos y a gran
velocidad. Los datos pueden provenir de organizaciones, empresas públicas o
privadas, sensores, de redes sociales, de internet y de las mismas personas, a
través de sus dispositivos o directamente. La pregunta fundamental en este
nivel es ¿cómo consigo datos con calidad suficiente?

El siguiente nivel, el de la información, ya necesita de un procesado más


avanzado de los datos. Es necesario recoger los datos, categorizarlos,
estructurarlos y relacionarlos unos con otros para que, de forma sencilla,
flexible y ágil, se pueda recuperar y procesar. Aquí la pregunta fundamental es
¿cómo puedo almacenar los datos y procesarlo de forma rápida y flexible?

21
Finalmente, el nivel de más arriba es el del conocimiento. En este nivel, lo
importante es analizar la información y obtener patrones que nos permitan
extraer conocimiento de los datos. Este nivel fundamentalmente es el nivel de
las personas. Por el momento, y como se ha indicado anteriormente, las únicas
entidades que son capaces de extraer ese conocimiento para comprender la
información que existe en los datos, son los seres humanos. Esto no implica
que no sean necesarias herramientas y algoritmos, pero al final, el sentido y la
aplicación de ese conocimiento depende de las personas. En la actualidad
estas herramientas son tan avanzadas gracias a la creación de la Inteligencia
Artificial, aunque como veremos, todavía no se ha creado una inteligencia
artificial que pueda aplicarse a todos los casos de uso.

Realmente la revolución del Big Data ha impactado en este nivel. Desde hace
mucho tiempo han existido multitud de datos e información, se ha creado la
tecnología necesaria para poder almacenarla y procesarla. Desde la década de los
80, los bancos, las operadoras de telecomunicaciones y otras compañías han
contado con multitud de datos, que han sido utilizados para la operativa
principal o para ver tendencias de ventas y de mercado. También existían
herramientas estadísticas y de data mining que permitían extraer conocimiento de
esos datos y aplicarlo para mejorar el negocio.

Sin embargo, con la explosión de los datos que hemos visto anteriormente, se
ha pasado de poder extraer información de forma agregada para ver
tendencias de tipo general o información de segmentos de mercado, a poder
analizar y prever el comportamiento de una persona determinada, pasando
de un marketing basado en segmentos a un micromarketing basado en las
necesidades de cada usuario.

Por otro lado, también se ha pasado de la importancia de la respuesta a la


importancia de la pregunta. En el pasado, la investigación y análisis de datos
estaba enfocada en responder a las preguntas típicas del negocio: cuáles son
las ventas, cuántos clientes tengo, incluso preguntas más avanzadas como
cuales son las ventas previstas o estimaciones de mercado.

22
Pero no era más que responder a preguntas sobre información dentro de un
ámbito que ya conocíamos, por lo que, siempre nos hacíamos las mismas
preguntas. Era así, porque la dificultad de conseguir datos adicionales, de poder
procesarlos con rapidez y eficacia no permitía tener recursos suficientes para
poder dedicarlos al análisis más avanzado y profundo de los datos.

Sin embargo, con las tecnologías asociadas al Big Data y la explosión de los datos,
han aumentado las posibilidades de disponer de información suficiente y de poder
procesarla con rapidez y eficacia. De esta forma, empiezan a surgir nuevas
preguntas que ni siquiera antes nos planteábamos. Nos movemos ahora en un
ámbito en el que no sabemos nada, pero tampoco sabemos qué preguntas son las
apropiadas. Por eso, es tan importante hacerse las preguntas correctas, y por eso,
de nuevo el aspecto más crítico es la capacidad humana de intuición e
imaginación. No es casualidad que en los últimos años Google ha estado buscando
perfiles más asociados a las ciencias humanas como psicología, antropología,
filosofía o sociología11 (11) . Estos perfiles obtienen las preguntas o hipótesis
adecuadas que hay que responder y los técnicos se encargan de analizar los datos
para corroborar o responder adecuadamente.

Este desplazamiento hacia preguntas y situaciones más complejas también ha


dejado su huella en la evolución de la analítica de las empresas. En primera
instancia nos encontramos con la etapa en la que la empresa no tiene ni
siquiera la capacidad mínima de poder utilizar los datos para obtener
información sobre el negocio. Cuando la empresa empieza a controlar la
información operativa básica para obtener cuadros de mando que indican la
situación del negocio y el conocimiento del cliente, estamos en el terreno de
la Inteligencia de negocio “clásica”, y en este caso la analítica es del tipo
descriptivo, es decir, se basa en obtener información y conocimiento de lo
que ha pasado. Así se puede conocer cuántos clientes han comprado ciertos
productos, cuántas ventas por delegación se han contabilizado el mes pasado,
y otra información de tipo similar (acordémonos, preguntas que ya
conocemos sobre lo que ya conocíamos).

23
Más adelante, cuando las necesidades de negocio aumentan y el mercado se hace
más competitivo, las empresas empiezan a preguntar sobre qué es lo que va a
pasar. Nos encontramos ahora en la analítica predictiva, en esta fase ya es
necesario conseguir más información, crear modelos más complejos y poder
entrenarlos para que nos den una respuesta adecuada a situaciones futuribles, por
lo que, nos encontramos en el nivel superior de la pirámide, donde queremos
extraer patrones e inferencias a partir de los datos de los que disponemos.

Siguiendo por el camino, y si cada vez más tenemos modelos y conocimientos


más profundos sobre los datos, se llega a un tipo de analítica que se centra en
darnos propuestas sobre cuál es la mejor acción por realizar ante
determinadas situaciones de mercado, eventos del cliente o de los procesos
de negocio. Es la analítica prescriptiva. En este caso nos intentamos
preguntar, a partir de la información de la que disponemos, qué debemos
hacer y, mediante modelos de simulación, sugerir ciertos caminos de acción,
con la previsión de sus consecuencias. Con todo ello, los empleados de la
empresa podrán tomar mejores decisiones y crear una ventaja competitiva.

Este tipo de modelos siempre


deberían ofrecer propuestas
que serán validadas por una o
varias personas. Pero puede
ser que, en algún momento, los
modelos estén tan ajustados y
hayan probado su eficacia en
multitud de ocasiones, que
puede decidirse pasarlos a
modo automático para que
esos empleados que antes
validaban y elegían la acción
final, no tengan que hacerlo y
se puedan dedicar a trabajar
en investigar otros aspectos
del negocio, más creativos o
importantes. En este punto
nos encontramos ante la
analítica automatizada, donde
juegan un papel fundamental
la Inteligencia Artificial y la
robotización.

24
Está claro que estas cuatro fases descritas conviven en la actualidad en
cualquier empresa, pero no solo porque el cambio organizativo y técnico es
un proceso largo que necesita el desarrollo en fases, sino, sobre todo, porque
esta evolución también es una evolución que afecta al mismo proceso de
innovación basada en el dato. En una primera fase, cuando se lanza cualquier
producto o servicio, no se tiene información sobre el mismo, y lo que se
puede controlar es lo que está pasando en ese momento (analítica
descriptiva).

A medida que se van almacenando datos e información, ya se pueden realizar


modelos más avanzados que nos llevan hacia la analítica predictiva y prescriptiva,
para llegar finalmente, por razones de eficiencia y coste, a automatizar ciertos
modelos y operaciones (analítica automatizada). Y este proceso vuelve a empezar
en un movimiento cíclico y continuo.

Empecemos a utilizar este marco conceptual basado en los niveles de dato,


información y conocimiento para poder profundizar un poco más en la tecnología
Big Data y sus usos y aplicaciones.

11 (11)

Ver: [Link]
[Link]

25
6. Nivel dato: extraer, transformar y cargar

6. Nivel dato: extraer, transformar y


cargar
El objetivo fundamental en este nivel se resume en el acrónimo ETL, ampliamente
utilizado en todo el ámbito de análisis de datos y Big Data.

ETL

Acrónimo de Extract, Transform & Load (Extraer, Transformar y Cargar).

Extraer (extract)

Se necesita crear la infraestructura y procesos necesarios para poder obtener


los datos desde las diversas fuentes disponibles. Hay que gestionar datos en
formato más estático desde fuentes tradicionales (bases de datos, sistemas
operacionales) y también datos en tiempo real a través de flujos (redes
sociales, web, aplicaciones móviles). También es necesario enfrentarse a
multitud de interfaces distintos.

Transformar (transform)

Los datos obtenidos en la fase de extracción tienen formatos que puede que
no se adecúe a las necesidades de negocio, o que incluso no sea necesario
almacenarlos. En esta fase se trata de adaptarlos a la estructura que va a
almacenarlos. Por ejemplo, un cambio típico es cambiar fechas de formato
anglosajón a formato europeo, o eliminar errores y campos vacíos.

26
Cargar (load)

Una vez que los datos están preparados, hay que cargarlos en los sistemas
que los almacenarán de forma definitiva. En esta fase se debe controlar la
carga, un proceso lento, costoso y con frecuentes errores, para asegurar que
no se pierdan datos y estos estén estructurados según se haya definido.

Estos procesos aquí explicados también han cambiado profundamente ante el


avance de las tecnologías Big Data y del nuevo contexto de la explosión del
dato. Este cambio se ha producido en dos dimensiones fundamentales: en el
tipo de datos y en las fuentes que los originan.

En cuanto al tipo de datos, en periodos


anteriores solo podían utilizarse datos
estructurados. Esto significa que estos
datos tienen una estructura muy
definida y concreta, basada en registros
con campos fijos, tanto en su definición
como en su número. Es similar a tener
una tabla donde cada fila es una
observación o registro y cada columna es
un valor asociado a esa observación.
Cada observación debe tener el mismo
número de campos, y además el orden
debe ser el mismo.

Sin embargo, a medida que los servicios digitales e internet han ido evolucionando,
cada vez más se han ido creando información de forma no estructurada: voz,
textos, comentarios, imágenes, videos, etc. Este tipo de datos no puede
almacenarse en formatos de tipo tabla, y mucho menos, si se quieren analizar, no
se pueden ajustar al formato registro con campos fijos. Por otra parte, también las
fuentes de datos han ido cambiando.

Debido a la dificultad de almacenar información y a la inexistencia de un medio de


comunicación globalizado como internet, en épocas anteriores solo se disponía de
los datos que las mismas empresas podían capturar y generar a partir de sus
operaciones o de su relación con el cliente. Podían disponer de sus ventas, de
información de sus clientes, del uso de sus servicios.

27
A medida que las empresas han empezado a utilizar las nuevas tecnologías,
comenzaron a recopilar información de sus páginas web, aplicaciones, redes
sociales. Esta información ha sido la que ha impulsado el desarrollo de las
tecnologías de Big Data y de analítica avanzada y ha supuesto una mina de
oro para mejorar las operaciones de las empresas.

Pero al mismo tiempo que esta información ha sido comprendida y utilizada por
las empresas, también ha destapado la necesidad de poder contar con
información más allá de la que la misma empresa dispone. Por ese motivo,
también ha empezado a utilizarse información pública e información incluso de
otras empresas. Por ejemplo, ahora se dispone información como la que provee
ASNEF para conocer el estado de morosidad de un posible cliente, o han surgido
multitud de iniciativas para poner de forma abierta información pública, lo que se
ha denominado Open Data.

Y en los próximos años esta expansión del dato aumentará de forma exponencial.
En un futuro no muy lejano cada persona dispondrá, tanto en su casa como para
su uso personal, de multitud de dispositivos conectados (relojes, televisores,
altavoces inteligentes, consolas, pulseras, etc.) que aportarán más datos, lo que se
conoce como la revolución IoT (Internet of Things). El uso y compartición de estos
datos provocará un salto adelante en el análisis del comportamiento de personas
y clientes.

UN PIE EN EL ETL Esto ha provocado también un


cambio en el mismo proceso ETL.
Como hemos visto, el proceso ETL
comenzaba con la ingesta de los
datos, su preparación para eliminar
errores y adaptarlos a la estructura
final, para terminar con la carga en los
sistemas finales, mediante un proceso
largo y costoso, proclive a fallos. En
estos sistemas, denominados Data
Warehouse12 (12) , los datos eran
almacenados siguiendo modelos y
estructuras de datos muy enfocadas
en el negocio, en la operativa. Muy
eficientes para hacer tareas de
inteligencia de negocio, pero no muy
optimizados para analítica más
avanzada. Además, al ajustar los datos
a una estructura definida de
antemano, es complicado cambiarla
ante nuevas necesidades de negocio,
28
ralentizando la adaptación del mismo
ante los nuevos retos de mercado que
puedan surgir.

Esta forma de trabajar es ineficiente en el momento actual. Ahora se generan tal


cantidad de datos y a tal velocidad, que no habría tiempo para poder adaptarlos a
la estructura final. Por eso, lo que se hace ahora es alterar un poco el proceso,
modificando el orden “clásico” (ingesta, carga y preparación). El dato llega en
formato de flujo o stream, en tiempo real y mediante procesos de escritura
eficientes, se almacenan, en el mismo formato y estructura con el que llegan, en lo
que se denomina un “data lake” (luego veremos qué tipo de soluciones permiten
crear estos data lakes). Y, ¿dónde queda la etapa de preparación? Esta etapa se
deja para cada uno de los procesos que van a utilizar los datos. Accediendo a los
datos almacenados en bruto, cada proceso prepara sus datos según sus
necesidades, por lo que, se mejora la flexibilidad y rapidez.

12 (12)

Hablaremos posteriormente un poco más sobre los Data Warehouse.

29
6.1. Kafka: una nueva forma de tratar los
datos

De momento es sencillo, pero


imaginemos que lo vamos
aumentando con más
En las arquitecturas tradicionales aplicaciones y sistemas:
las conexiones entre los diversos
componentes de la arquitectura
Big Data se suelen hacer con
conexiones específicas punto a
punto. Por ejemplo, si tuviéramos
dos aplicaciones y dos sistemas13
(13)
tendríamos este esquema:

Y más y más:

Llegamos a lo que se puede llamar una arquitectura “espagueti”. Como se puede


entender este sistema es difícil de mantener y de monitorizar, por lo que, se
planteó crear sistemas intermedios que se encargaran de la comunicación entre
todos los componentes. Además, debido a la necesidad de tener que manejar
datos en tiempos real y flujos de información, asegurando el almacenamiento y la
escalabilidad, se crearon los sistemas de mensajería (Messaging System), también
llamados buses. Todos los componentes se enganchan a este sistemay envían y
reciben datos de/y a todos los demás componentes del sistema:

Uno de los sistemas de mensajería más utilizados es Apache Kafka. Como su


30
propio nombre indica, es un proyecto de código abierto bajo el paraguas de la
fundación Apache. Más allá de permitir una mejor gestión del enrutamiento de los
datos entre los sistemas, ha conseguido crear una solución que permite tratar con
eventos en tiempo real, transformarlos, almacenarlos y cargarlos en multitud de
bases de datos y sistemas de almacenamiento.

Hay varios conceptos básicos en Kafka que merece la pena reseñar. El primer
concepto es distinguir entre productores (producers) y consumidores
(consumers). Como su nombre indica, los productores son los que “publican”
datos en el bus y los consumidores son los que recogen datos (consumen
datos) del bus.

La publicación de datos en Kafka se basa en tópicos (topics) que podrían


considerarse como canales. Cuando se quiere que una aplicación aporte
datos específicos a las demás, se crea un tópico o se conecta con un tópico
existente, y esta aplicación publica los registros (“mensajes”) en ese tópico.
Las demás aplicaciones que quieren recibir esos datos de la aplicación se
suscriben a es tópico y desde ese momento pueden recibirlos.

Dentro de cada topic los mensajes se escriben en orden, como si fuera un registro
de eventos. Cada mensaje tiene un número de offset que indica su posición en ese
registro. Cada consumidor puede leer el tópico a la velocidad que necesitey, para
ello, mantiene él mismo el offset del último mensaje leído. Más aún, cada tópico
puede tener varias particiones, como si fueran copias sincronizadas, para permitir
que muchos consumidores puedan leer a distintas velocidades, como podemos
ver en la imagen:

Para aumentar la rapidez, la redundancia y la protección ante fallos pueden existir


grupos de consumidores que leen de un tópico al mismo tiempo para procesar
más rápido o por si se cae alguno de los consumidores que otro pueda seguir
procesando los datos.

Por la parte de producción, Kafka también permite que varios broker se encarguen
31
de gestionar un tópico a la vez. Uno de ellos es el líder y todos los demás
mantienen copias de cada partición del tópico. De esta forma si se cae algún
broker, otro se encarga de seguir manteniendo las particiones en el tópico.

Finalmente, Kafka permite definir la retención de cada registro dentro de cada


tópico. Se puede definir que cada registro se mantenga una determinada cantidad
de tiempo:

Basada en tiempo

Los mensajes se mantienen durante un período de tiempo específico. Una vez


que los mensajes superan este límite de tiempo, son elegibles para ser
eliminados.

Basada en tamaño

Los mensajes se retienen hasta que el tamaño total de los datos en una
partición alcanza un límite específico. Cuando se supera este límite, los
mensajes más antiguos se eliminan para hacer espacio.

Compaction

En lugar de eliminar mensajes basados en el tiempo o el tamaño, Kafka


mantiene solo el mensaje más reciente para cada clave. Esto es útil para casos
donde solo se necesita el estado más reciente de los datos.

Kafka por defecto tiene un tipo especial de productos y consumidores. Se trata de


los conectores, que son componentes que permiten integrar el bus con sistemas
externos no preparados para el sistema Kafka, como bases de datos, sistemas de
clave valor, ficheros, etc. De esta forma, es muy sencillo integrar sistemas
antiguos dentro de este nuevo paradigma.

Como se puede ver Kafka es un sistema muy versátil que puede utilizarse en
muchos escenarios, como sistemas de eventos, streamings, sistema de mensajería,
incluso podría usarse como base de datos dependiendo de la retención. Por este
motivo es ampliamente utilizado en sistemas de Big Data.

13 (13)

SI en los gráficos ves nombres o acrónimos que no entiendes, no te


preocupes que en los siguientes capítulos los explicaremos.

32
7. Nivel información: contextualización y flexibilidad

7. Nivel información: contextualización y


flexibilidad

Como hemos visto, en este nivel es donde


se comienzan a relacionar los distintos
datos para poder contextualizar y extraer
información de estos mismos datos. Por
tanto, el objetivo fundamental en este nivel
es estructurar los datos y relacionarlos de
una forma que permita un acceso y
procesado flexible y rápido a su
información.

33
7.1. SQL vs NoSQL

Desde el mismo comienzo de la informática se han ido creando soluciones y


herramientas para hacer más sencilla la estructuración y acceso a los datos.
Uno de los grandes hitos fue la creación de las primeras bases de datos
relacionales y el lenguaje SQL. Este lenguaje, creado en 1974, ha tenido tanto
impacto en el mundo de la analítica que se ha convertido en una especie de
idioma internacional, que es necesario conocer para dedicarse
profesionalmente al mundo de la analítica.

Una base de datos relacional es un paradigma que se ajusta perfectamente


a la idea de datos estructurados que hemos visto en el apartado anterior.
Los datos se almacenan en estructuras denominadas tablas, en la que cada
fila es un registro u observación, y cada columna es un campo o valor
asociado a ese registro u observación. Para añadir un registro se debe
añadir una fila nueva y rellenar esos campos con los valores adecuados.
Por ejemplo, podríamos tener una tabla de estudiantes con una estructura
similar a esta:

El nombre de relacional proviene de En tal caso si quisiéramos tener toda


que, para almacenar estructuras de esa información en una sola tabla,
datos complejas, se crean distintas tendría este aspecto:
tablas que están relacionadas unas
con otras a través de índices, claves y
otros elementos. La tabla anterior es
sencilla, pero si quisiéramos por
ejemplo añadir campos para
almacenar la asignatura, el profesor o
la clase y mantener todo en una tabla,
se convertiría en una tabla
complicada con muchos campos con
valores repetidos. Supongamos que

34
los alumnos pueden ir a diferentes
asignaturas, tener distintos profesores
y distintas clases. Si quisiéramos
saber las clases o profesores que hay
deberíamos leer toda la tabla y
después eliminar los duplicados para
obtener la lista final.

Lo mismo ocurre si quisiéramos saber qué asignaturas da cada profesor o


preguntas similares. Como vemos, a medida que aumentan los campos a insertar,
la estructura en una única tabla se vuelve impracticable. Por este motivo, en vez
de trabajar con una sola tabla se crea una estructura con varias tablas que
encierran la información de un mismo tipo y estas tablas se relacionan mediante
índices, claves o valores. Veamos cómo sería la misma tabla anterior con un diseño
más adecuado:

Vemos que, en vez de poner el valor real del alumno, asignatura o profesor, se
ponen referencias de valores que están en las otras tablas. Si vamos a esas tablas
y buscamos esa referencia, podemos extraer el nombre del alumno de la
asignatura o del profesor.

Puede parecer que es menos eficiente y más complejo, pero si quisiéramos,


por ejemplo, cambiar el nombre de la asignatura o nos hemos confundido en
el nombre de un alumno, solo deberíamos ir a la tabla correspondiente y
cambiarlo. De la otra forma, tendríamos que recorrer toda la tabla de notas y
buscar los valores a cambiar. El paradigma SQL y de base de datos relacional
ha sido el dominador claro en muchas décadas, pero a medida que la cantidad
y diversidad de los datos ha ido aumentando, se ha visto que no era
totalmente aplicable en todos los casos de uso que iban apareciendo.

Se fueron creando otro tipo de tecnologías de bases de datos y hoy en día se


puede decir que hay dos grandes familias: las bases de datos SQL y las bases de
35
datos NoSQL. El término NoSQL no significa que no se utilice el SQL (veremos que
al final, en muchos casos, se sigue utilizando), sino que puede decirse que su
significado es Not-OnlySQL. Dentro del NoSQL podemos encontrar diferentes
tipos de bases o sistemas de datos.

Clave-Valor

En este caso, los datos se almacenan en un formato


clave-valor. Es decir, todos los datos tienen un clave a
partir de la cual se identifican y ordenan, y esta clave
tiene asociado un campo valor en el que se puede
insertar cualquier tipo de información (campos
normales, un texto no estructurado, una foto, un
audio, un video, …).

El sistema de almacenamiento no se preocupa de qué tipo de información se trate,


no la estructura ni la formatea. Quién conoce cuál es la información o estructura
de los datos es la aplicación que utiliza los datos, no el mismo sistema de gestión y
almacenamiento de datos. Este tipo de bases de datos son muy divisibles, rápidas,
escalables y flexibles. Entre las más populares o conocidas se encuentran
Cassandra o DynamoDB.

Fuente: [Link]
marketing/DynamoDB/PartitionKey.8dd0530a7f6d66d101f31de30db5
[Link]

Un ejemplo de cómo se almacena información sobre ítems de compra (libros,


películas discos) en una base de datos DynamoDB. La clave hace referencia a un
disco, a un DVD o a un libro, e incluso a una canción dentro de un disco. Como se
puede ver en la parte de valor, la estructura de los datos es definida
independientemente para cada tipo de dato. La aplicación que use esta base de

36
datos es la que conoce esa estructura.

Documentales
Las bases de datos documentales almacenan la información en base a una
estructura “documento”. Un documento es un texto con cierta estructura donde
se describen los campos de información y su valor asociado. De esta forma, se
puede almacenar cualquier tipo de información, e incluso, no hace falta cambiar la
estructura de toda la base de datos si es necesario añadir nueva información
(como ocurría con las bases de datos SQL). La estructura está definida en el mismo
documento. Por eso, este tipo de bases de datos son muy flexibles y suelen ser
utilizadas cuando no se puede saber de antemano el tipo de datos que se van a
utilizar o crear.

Dentro de las más populares se encuentran MongoDB o Couchbase. Hay que


decir que una base de datos de tipo clave-valor podría transformarse en una
documental, simplemente insertando en el campo valor cualquier tipo de
documento.

Base de datos documentales

Fuente: [Link]

Un ejemplo de documentos que pueden encontrarse en una base de datos


documental, en este caso se trata de un texto-documento en formato JSON,
aunque pueden utilizarse otros formatos, como el XML o incluso texto plano.
Como se puede ver, la estructura está definida en el mismo documento, con su
valor asociado. En este caso se trata de películas, donde podemos ver que se
almacena el año, título e info, pero la flexibilidad de este tipo de bases de datos
permite incluso que el campo info pueda tener una estructura distinta para cada
37
película.

Columnares
Escribe aquí tu
Como hemos visto, las bases de datos SQL orientan el texto.
almacenamiento de los datos a una estructura en
filas. Esto hace que la extracción de los datos en base
a cada registro sea eficiente, pero cuando lo que se
quiere es realizar operaciones de agregación sobre los
diferentes campos, se obliga a tener que leer todos
los registros, obtener el valor de cada campo y luego
realizar la operación de agregación. Es una operación
que se suele hacer habitualmente en aplicaciones
analíticas.

Ejemplo:

Si quisiéramos obtener los ingresos totales de las


ventas de un día, tendríamos que leer todos los
registros de ese día, extraer su campo precio de venta
y después sumarlas, lo que implica muchas
operaciones de lectura. Sin embargo, las bases de
datos columnares orientan su almacenamiento en base
a las columnas. De esta forma, si se quieren realizar
una operación agregada sobre un campo se leen de
forma conjunta todos los valores de un campo
determinado en una solo operación de lectura.

Además, otra funcionalidad es la de que suelen permitir


que cada registro tenga diferentes columnas, haciéndolas
más flexibles que las SQL, ya que en este caso todos los
registros deben tener el mismo número de campos
(columnas).

38
Ante una misma base de datos, podemos ver la diferente forma de
almacenamiento en disco. En las bases de datos SQL se colocan todos los campos
de un registro de forma consecutiva, mientras que en una base de datos columnar
se almacenan todos los valores de cada campo de todos los registros de forma
consecutiva. Esto nos permitiría realizar la operación de media de las notas en
menos tiempo.

Basados en grafos

Este tipo de bases de datos utilizan una estructura en grafo para almacenar la
información. Un grafo es una estructura en la que existen dos tipos de
elementos: los nodos y las aristas. Los nodos son entidades de información
(una persona, un libro, un pedido, etc.) y las aristas representan relaciones
que se crean entre los nodos.

Ejemplo:
“María tiene el libro de Matemáticas” o “El pedido contiene el artículo 328”. Tanto
los nodos como las aristas pueden tener atributos, para así poder complementar
la información que disponemos de ellos. Si tuviéramos una relación del tipo “María
es propietaria de la casa al 50 %”, tendríamos dos nodos, “María” y “Casa”, y la
relación “es propietaria”.

39
BASES DE DATOS ORIENTADAS A
Asociado al nodo “María” GRAFOS
podríamos tener los
atributos “Edad:48”, y
asociado a la casa Datos
podíamos tener la
referencia catastral. Y,
I Nombr Not Profeso
finalmente, asociada a la Asignatura
D e a r
relación “es propietaria”
podíamos tener el valor de
“Porcentaje: 50 %”. Puede Antoni
1 Ana 7 Big Data
parecer que la estructura o
en grafos es demasiado
complicada para que sea Contabilida
2 Ana 9.1 Mar
útil, pero permite realizar d
ciertos tipos de búsqueda
muy rápido, ya que la 3 María 8 Big Data Juan
asociación entre
elementos está ya 4 María 5,5 Marketing Daniel
establecida en la misma
estructura. Por ejemplo, si 5 Paco 6 Marketing Daniel
quisiéramos saber qué
casas tiene María,
Contabilida
sencillamente deberíamos 6 Paco 5 Diego
d
ir hasta el nodo que
representar a María y
contar las relaciones del
tipo “es propietaria”, sin Gráfico
tener que ir buscando por
toda la base de datos Aquí podemos ver la representación en
todos los registros. forma de grafo que tendría una base de
datos SQL típica. Como vemos las
diferentes entidades (alumnos,
profesores y asignaturas) son nodos
dentro del grafo que pueden tener
atributos propios.

40
Este tipo de base de datos es muy útil para representar relaciones entre personas,
por lo que, pueden ser muy eficientes para manejar información dentro de redes
sociales. La más popular de las bases de datos orientadas a grafos en Neo4j.

La relación que en una base de datos en SQL queda fijada en la estructura de


registro y campos, en la base de datos orientada a grafos es una arista de un tipo
determinado (“es profesor de”, “se matriculó de”, o “imparte”). De forma rápida se
puede ver que “Daniel” tiene dos alumnos o que “Paco” tiene dos profesores,
mientras que en la base de datos original es más complicado.

Basados de vectores

En los últimos años, debido a la popularidad de los modelos de IA


generativa, se han creado bases de datos específicas o se han adaptado
las bases de datos existentes para que puedan manejar vectores. Como
veremos en el apartado de inteligencia artificial, el almacenamiento de
valores vectoriales, la búsqueda en listas de vectores o la realización de
todo tipo de operaciones algebraicas u vectoriales son fundamentales para
el funcionamiento de estos nuevos sistemas de inteligencia artificial.

De todos modos, en los proyectos reales se suelen utilizar de forma


simultánea diferentes tipos de bases de datos. Cada una de ellas tienen
una peculiaridad que las hace ser más útiles para determinados casos de
uso, por lo que siempre los diseñadores y arquitectos de sistemas elegirán
aquellas que les proporcionen más ventajas para la problemática que
quieren resolver.

41
7.2. Sistemas no distribuidos vs sistemas
distribuidos

Unido a los diferentes tipos de bases de datos, se


encuentra la decisión de cómo implementar este tipo
de organización de datos en sistemas informáticos
reales.

En los primeros años de la informática, los primeros ordenadores eran monstruos


que ocupan habitaciones enteras, con multitud de componentes electrónicos,
sistemas de almacenamiento basados en grandes cintas magnéticas y que
consumían gran cantidad de energía. Los primeros fabricantes comercializaban
estas grandes máquinas (llamadas “mainframes”) a las empresas que querían
utilizarlas para almacenar y procesar sus datos. Una empresa que quisiera seguir
ampliando la potencia de esas máquinas debían comprar a ese fabricante nuevas
unidades de almacenamiento, más procesadores o más memoria RAM, con el gran
costo que suponía. Era lo que se llamaba “escalado vertical”. Pero tenía un límite,
ya que, por restricciones de espacio y diseño, ese aumento de capacidad no podía
ser infinito, por lo que, se debía comprar otro mainframe.

Sin embargo, a medida que los ordenadores se hicieron más baratos y se


mejoraron las tecnologías de comunicación, se empezó a pensar en el uso de
multitud de ordenadores conectados unos con otros, ejecutando de forma
coordinada todos los procesos y almacenando los datos de forma conjunta.

Este nuevo paradigma se denominó computación distribuida. El concepto


fundamental es el de clúster: un conjunto de ordenadores conectados todos entre
sí y controlados por un nodo central que coordina la ejecución de pequeños
procesos en cada uno de ellos. Este nodo controlador se denomina maestro
(master) y los demás son llamados esclavos (slave). En este caso la capacidad de

42
procesamiento depende fundamentalmente del número de ordenadores
conectados, por lo que, para aumentarla, basta con introducir nuevos nodos
esclavos en el clúster. Esto puede parecer más costoso, pero si tenemos en cuenta
que los ordenadores que se suelen utilizar en los clústeres son ordenadores del
tipo PC, es más barato que mejorar un gran ordenador. Este tipo de ampliación de
la capacidad de proceso se denomina “escalado horizontal”.

Normalmente, los clústeres para Big Data están compuestos por PCs cuya
arquitectura se basa en CPUs, procesadores de propósito general. Pero en los
últimos años han proliferado otros tipos de clústeres en los que estos
ordenadores, a parte de las CPUs incluyen también GPUs (Graphic Processin Units).
Una GPU es un procesador especializado que originalmente fue diseñado para
manejar y acelerar el procesamiento de gráficos en una computadora. A diferencia
de las CPUs (Central Processing Units), que son buenos para manejar una variedad
de tareas generales, las GPUs están optimizadas para realizar operaciones
matemáticas en paralelo, lo que las hace muy eficientes para tareas que requieren
la misma operación repetida muchas veces, como el procesamiento de imágenes.

Como luego veremos en capítulos posteriores, la


mayoría de los modelos de inteligencia artificial
actuales se basan en algoritmos que se benefician del
procesamiento en paralelo de las GPUs. De esta forma
tanto el entrenamiento como el funcionamiento de
estos modelos de inteligencia artificial se puede hacer
de una forma más rápida y eficaz14 (14) .

14 (14)

Para profundizar más en el uso de GPUs en IA se puede ver


en [Link]

43
7.3. Hadoop

Uniendo los conceptos de bases de


datos NoSQL y los sistemas
distribuidos, a mediados de la
década de los 2000, el ingeniero
Doug Cutting, que trabajaba en
Google, propuso un sistema de
gestión, procesamiento y
almacenamiento distribuido llamado
Hadoop (en honor a un elefante de
juguete de su hijo)15 (15) .

En la actualidad, Hadoop es un proyecto de software libre gestionado por la


fundación Apache, que proporciona un entorno para la creación de clústeres de
procesamiento distribuido. Tiene dos componentes fundamentales.

El primero es un sistema distribuido de ficheros llamado HDFS (Hadoop


Distributed File System), que permite almacenar grandes cantidades de datos.
El segundo es un algoritmo general de procesamiento de datos en entornos
distribuidos, llamado MapReduce.

Antes de explicar en más detalle estos dos elementos, nos centraremos en


explicar un concepto fundamental de Hadoop. Se trata de la filosofía de “en vez de
llevar los datos al código, llevamos el código al dato”.

Antes de Hadoop ya había sistemas distribuidos para el almacenamiento de datos


(por ejemplo, ya existían bases de datos distribuidas). Pero en muchos de esos
sistemas había un nodo central que pedía a cada uno de los nodos donde se
almacenaba la información que se los enviara para hacer el cálculo solicitado. Eso
hacía que todo el proceso fuera bastante lento: el envío de los datos por la red era
lento y encima el nodo central tenía que hacer cálculos complicados con muchos
datos.

Método "tradicional" Hadoop

44
Sin embargo, en Hadoop, lo que se pretende es llevar el código a donde están los
datos. El nodo central da a cada uno de los nodos esclavos el código que tiene que
ejecutar en los datos que ese mismo nodo almacena. Los datos no viajan por la
red, sino que los nodos esclavos realizan operaciones sobre esos datos y envían
resultados parciales al nodo principal que es el que final quien los agrega. Pero al
ser resultados parciales, son menos cantidad de datos y el nodo central tiene que
hacer menos operaciones.

¿Cómo se consigue esto? Básicamente creando en cada nodo dos capas


diferenciadas que se encargan de la gestión del almacenamiento distribuido de los
datos (capa HDFS) y de la ejecución del código a aplicar a esos datos(capa
MapReduce). Vamos a profundizar un poco más en cada una de estas capas para
conocer cómo funcionan.

Comenzamos con la capa HDFS. Como hemos dicho el nodo de nombres es el


encargado de decidir cómo se almacena la información entre los nodos que
forman un clúster. Su objetivo es conseguir la redundancia de información para
poder soportar fallos de hardware y además conseguir procesar la información de
ese fichero en paralelo. Todo ello lo consigue mediante la réplica de pequeños
trocitos de un mismo fichero en varios nodos de datos.

DENTRO DE CADA NODO HADOOP

45
Dentro de un nodo esclavo Hadoop hay dos áreas diferenciadas:

Nodo de datos (data node)

Procesos encargados de gestionar los datos almacenados en ese nodo.

Gestor de tareas (tasks tracker)

Se encarga de controlar los procesos necesarios para poder procesar los


datos que existen en ese nodo.

En el clúster Hadoop hay un nodo especial, un nodo maestro que es un poco


distinto. Añadido a los gestores antes indicados (nodo de datos y gestor de tareas)
que realizan las mismas tareas que en los nodos esclavos, aparecen otros
procesos:

Gestor de trabajos (jobs traker)

Se encarga de coordinar todos los gestores de tareas


de cada nodo, indicando el código que tiene que
ejecutar cada uno. Todos estos procesos forman la
capa HDFS.

Nodo de nombres (name node)

Este proceso gestiona el almacenamiento dentro de


cada nodo de datos y guarda dónde se encuentra cada
fichero distribuido. Todos estos procesos forman la
capa HDFS.

Cuando el fichero tiene una longitud pequeña (Fichero A), el nodo de nombre lo
replica un número determinado de veces (lo normal es 3) y coloca cada una de
esas réplicas en un nodo de datos distinto. Además, almacena la información de
qué réplica del fichero tiene en cada nodo.

Si el fichero es más grande (Fichero B), antes de hacer la réplica lo divide en


trocitos más pequeños llamados “chunk”. Cada uno de estos chunks son los que se
replican y se colocan en nodos de datos distintos. De la misma forma, guarda la
información de dónde se encuentra cada trozo y réplica del fichero. Para leer cada
uno de ellos hace el proceso inverso. Recuperando la información, va a buscar en
46
algunos nodos cada uno de los trocitos, los ensambla y entrega el fichero total16
(16)
.

Toda esta estructura permite una recuperación ante fallos muy eficiente. Si un
nodo se cae siempre hay algunos nodos que mantienen toda la información de
cualquier fichero. Por ejemplo, si se cae el tercer nodo, siempre habrá al menos
dos copias de cada fichero o de cada trozo de fichero, pudiéndose recuperarse.
Cuando el nodo que se ha caído esté disponible, el sistema HDFS volverá a copiar
las réplicas necesarias para que se siga manteniendo el sistema de redundancia.
Realmente no hace falta hacer copias de seguridad de los nodos, salvo uno. El
nodo de nombres mantiene la información de dónde está cada fichero, y, por lo
tanto, si pierde esa información, no se podría saber dónde está cada fichero. Por
eso sí que se hace copia de seguridad de esta información que almacena y
gestiona el nodo de nombres.

Para terminar, indicar que el sistema HDFS


guarda los ficheros en un formato clave-
valor. En cada fichero, en cada línea
almacena una clave (que puede ser cualquier
valor) y después aparece el valor asociado.
De esa forma se puede almacenar cualquier
tipo de datos, como hemos visto. Si en el
fichero realmente no hay una clave explícita
(por ejemplo, cuando es simplemente una
lista de palabras), se suele usar el número de
línea como clave. Hay que resaltar que,
aunque se utiliza el paradigma de clave-
valor, HDFS realmente no se puede
considerar una base de datos, sino un
sistema de almacenar información de forma
masiva y flexible, ya que realmente el acceso
se basa en ficheros.

Sigamos con el proceso MapReduce. Como ya se ha comentado este algoritmo se


utiliza para procesar los datos repartidos entre los nodos de forma paralela y
47
distribuida. La base de MapReduce es dividir el proceso en varios pasos:

Proceso Map

Se crea un proceso que lo que hace es leer cada “clave-valor” y transformarla


(mapearla) en otro par “clave i – valor i”. El programador tiene que definir el
código que realiza esa transformación dentro de una función Map(). El gestor
de trabajos envía este código a los diferentes gestores de tareas de los nodos
en los que se encuentran los ficheros a procesar. Las nuevas claves-valor se
almacenan en ficheros HDFS temporales y son utilizados por las etapas
posteriores. Si algún nodo falla en la ejecución, el gestor de trabajos puede
enviar el código a otro nodo disponible donde se encuentren otras réplicas del
fichero a tratar.

Proceso Shuffle

Lo que se hace es enviar todos los pares “clave i-valor i” cuya clave es la
misma a un nodo de datos. De esta forma se agrupa en un mismo nodo toda la
información asociada a una misma “clave i”.

Proceso Reduce

Al estar toda la información en un mismo nodo, se puede ejecutar el proceso


Reduce() definido por el programador para obtener un resultado agregado
asociado a esa “clave i”.

Escritura final

Los resultados de la función Reduce() para cada clave son recogidos y se


escribe en el fichero de salida.

Podemos comprender mejor este


proceso a través de un ejemplo17
(17)
. Tenemos un fichero de
texto en el que aparece una lista
de frases en las que cada frase
puede tener uno o varios
nombres de fruta. Queremos
contar el número de veces que
aparece cada nombre de fruta en
el fichero.

48
Fichero:

Ficheros clave-valor:

Como hemos visto, primero el sistema HDFS habrá partido este fichero en
trocitos y lo habrá almacenado en nodos distintos. Por tanto, habría
varios nodos que deberán trabajar en paralelo para sacar la solución. El
programador define la función Map() de tal forma que lo que hará será
leer cada línea, detectar cada palabra, y crear una clave-valor del tipo
“palabra 1”. Estas claves valores se almacenan en ficheros clave-valor.

Como vemos en el ejemplo, el fichero original se ha dividido en tres


trozos, a los cuales se ha aplicado la función Map() comentada y se han
obtenido ficheros con las parejas “palabra 1”.

49
Fases Suffle y Reduce():

El siguiente paso es realizar las fases Suffle y Reduce(). Para la primera lo


que hará Hadoop será enviar todas las parejas clave-valor que tengan el
mismo valor de clave a un nodo distinto. En este caso, como tenemos 5
valores de clave posibles, utilizará cinco nodos. Dentro de cada nodo se
ejecutará la función Reduce(), que en este caso consistirá en sumar todos
los valores asociados a esa clave, obteniendo como salida la pareja
“palabra suma_de_valores”. Finalmente, todos los resultados se unen en
un fichero de salida, obteniéndose el recuento de palabras:

En el ejemplo podemos ver para la clave “manzana” cómo se ha realizado


el Shuffle. También se puede ver cómo se realiza la función Reduce() sobre
cada nodo que almacena una clave distinta para obtener la salida final.

Puede parecer que este proceso es demasiado complicado para una tarea simple,
que hasta incluso nosotros podríamos hacer de forma sencilla y bastante rápido.
Pero no hay que olvidar que en los casos reales nos enfrentamos a grandes
cantidades de datos. La disposición de los datos en un sistema HDFS y el proceso
MapReduce permite que la tarea pueda dividirse de forma muy sencillaentre
muchos ordenadores, e incluso que alguno de estos ordenadores pueda fallar y,
sin embargo, el proceso pueda finalizarse, ya que hay redundancia de datos y de
ordenadores.

Desde sus orígenes, Hadoop ha evolucionado hasta crearse un ecosistema de


herramientas y soluciones que han ido ampliando las funcionalidades y mejorando
su utilidad.

ECOSISTEMA HADOOP

50
De forma paralela al desarrollo y evolución de la capa básica de Hadoop, también
se ha desarrollado multitud de herramientas de código abierto para ampliar la
funcionalidad de Hadoop:

Pig

Lenguaje de más alto nivel para hacer más sencilla la


programación MapReduce.

Hive

Solución para poder hacer consultas “SQL” sobre


Hadoop, a través de un lenguaje propio llamado
HiveQL basado en SQL.

HBASE

Base de datos NoSQL orientada a columnas y con


funcionamiento en memoria para procesado en
tiempo real y en streamming.

Sqoop

Utilidad para importación y exportación de base de


51
datos SQL.

Flume

Es un servicio para mover de forma eficaz grandes


cantidades de datos y en especial flujos de datos en
streamming.

Mahout

Librerías para realizar y desarrollar algoritmos de


machine learning.

Storm

Solución para procesar datos en streaming.

Zookeper

Para la administración del clúster Hadoop y demás


herramientas.

Ozzie

Para poder crear, planificar y gestionar dentro del


clúster Hadoop flujos de trabajo, una colección de
tareas que hay que realizar en un orden y con un
calendario programado.

Ambari

Para el despliegue, gestión y control de clústeres


Hadoop.

52
De todos modos, al tratarse de código abierto y gestionado por la fundación
Apache, cualquier programador podría desarrollar diferentes herramientas y
soluciones para ampliar sus funcionalidades.

Aunque Hadoop, como ya se ha comentado, es una herramienta de código abierto


gestionada por la fundación Apache, y cualquiera puede bajárselo, instalarlo y
configurarlo en los sistemas, las compañías comerciales necesitan cierto soporte y
funcionalidades que de forma estándar no están disponibles.

Por ello varias empresas han desarrollado distribuciones de Hadoop, que hacen
más sencilla su instalación, mantenimiento y soporte dentro de los entornos
empresariales. Dos de las empresas que crearon este tipo de distribuciones,
Cloudera y HortonWorks, se fusionaron en 2018-2019, y operan ahora con el
nombre de Cloudera. Otra distribución conocida era la ofrecida por MapR, que fue
adquirida por Hewlett Packard Enterprise para integrarla en su oferta de servicios.
Finalmente, otros grandes de la informática y tecnologías de la información
también tienen sus distribuciones como en el caso de IBM o Amazon Web Services.

15 (15)

Ver: [Link]
computing/[Link]

16 (16)

Para ver una explicación más entretenida y con Lego


ver: [Link]

17 (17)

Otro ejemplo más heterodoxo para explicar el algoritmo MapReduce con


cartas de poker se puede ver aquí: [Link]
v=bcjSe0xCHbE

53
7.4. Spark

De forma similar y paralela al desarrollo de


Hadoop, desde 2009 se comenzó a
desarrollar en el AMPLab de la UC Berkeley,
otro framework de computación en
sistemas distribuidos que seguía otro
paradigma de programación. Este proyecto
denominado Spark fue cedido también a la
Apache Foundation, y es de código abierto,
por lo que, de la misma forma que Hadoop
han ido surgiendo nuevas funcionalidades
y soluciones que han creado un ecosistema
completo.

Como característica principal, Spark trabaja por defecto en memoria, por lo que, es
bastante más rápido que Hadoop, cuyo trabajo principal se realiza en disco.
Incluso aunque se fuerce a trabajar en disco, Spark supera en velocidad a Hadoop.
Además, su modelo de programación es más flexible, y no se restringe a un
modelo fijo, como sí lo hace MapReduce.

Spark está más orientado a trabajos en tiempo real, pero su flexibilidad


también le permite trabajar en entornos batch o de procesado por lotes
(procesado masivo de datos sin interacción con el cliente que puede ser
programado y cuyo resultado no es necesario que esté en tiempo real). Esto
ha permitido poder integrar el procesado de datos en tiempo real con datos
almacenados, clave para el desarrollo de los casos de uso más avanzados
dentro del Big Data.

Sin embargo, Spark no tiene un sistema de ficheros propio, tal y como lo tiene
Hadoop. Por este motivo, los sistemas Spark suelen utilizar y son compatibles con
el sistema HDFS. Por lo tanto, no tiene sentido contraponer Spark y Hadoop, ya
que en la mayoría de las implementaciones de sistemas distribuidos existentes en
la actualidad ambos sistemas suelen coexistir y se utilizan para implementar de
forma más efectiva ciertas necesidades.

De la misma forma, también se han desarrollado bajo el paraguas de Spark


multitud de herramientas que han permitido mejorarlo y hacer más sencillo su
uso.
54
ECOSISTEMA SPARK

De la misma forma que Hadoop, también se han desarrollado otros sistemas y


soluciones para facilitar y mejorar el uso de Spark.

1. Lo primero, resaltar que Spark no tienen un sistema de gestión de ficheros o


motor de base de datos propio, por lo que necesita acceder a diversos
motores como Hadoop, Cassandra, Hive, HBASE, bases de datos SQL e,
incluso, ficheros de texto o en formato JSON.
2. Segundo, Spark desde el comienzo ha dispuesto de Apis para ser utilizado
por varios lenguajes de alto nivel como Scala, Java, Python o R. Esto permite
una gran flexibilidad, desarrollo y que tenga una gran popularidad entre los
programadores de multitud de ámbitos:

SparkSQL

Utilidad para poder usar SQL con nodos Spark.

Spark Streaming

Motor para poder trabajar con datos en tiempo real.

MLlib

Librería para poder ejecutar y desarrollar algoritmos de machine learning para


datos masivos y en entornos distribuidos.

GraphX

Librerías para poder trabajar con objetos del tipo grafo, con algoritmos
orientados y específicos para este tipo de datos y estructuras.

55
7.5. Arquitecturas
híbridas
A medida que se han ido aplicando este tipo de soluciones a los casos reales
dentro de empresas y organizaciones, han aparecido las dificultades y necesidades
que estos casos de uso requerían. Uno de ellos ha sido la necesidad de poder
combinar un procesamiento en lotes con el procesamiento de los datos en tiempo
real.

La mayoría de las empresas recopilan datos


que luego son utilizados para poder perfilar
clientes, procesar las ventas y en general para
poder mejorar las operaciones de la empresa.
Estos procesos se solían realizar en modo
batch o por lotes, primero debido a la gran
cantidad de datos que se iban almacenando y,
segundo, a que, en ese momento, no era
necesario que los resultados estuvieran en
tiempo real.

Sin embargo, a medida que los usuarios se conectaban a los diferentes canales,
utilizaban distintas aplicaciones, generando datos y datos, se hacía necesario
procesar estos datos y responder a ellos en tiempo real. Pero no solo basándose
en los datos que se generaban en ese momento, sino también respondiendo a
toda la información y conocimiento de la que se disponía. Por lo tanto, era
necesario combinar la información en batch y los datos que llegaban
continuamente en tiempo real. Para responder a ese reto, se propusieron dos
arquitecturas: la arquitectura Lambda (λ) y la arquitectura Kappa (κ).

56
La arquitectura Lambda combina dos capas distintas para poder procesar
datos en batch con datos en tiempo real: la capa batch + servicio y la capa de
velocidad.

Ejemplo:

En la arquitectura Lambda los datos nuevos son enviados tanto a la capa de batch
como la capa de velocidad. En la capa batch los datos son almacenados dentro de
la zona de datos maestros. Estos datos maestros son procesados para generar
vistas de los datos que serán utilizadas posteriormente. Estas vistas son somo
resúmenes o “fotos” de los datos procesados, para que, cuando tengan que ser
servidas en tiempo real de consulta no se tengan que volver a procesar de nuevo
todos los datos. Estas vistas son entregadas a la capa de servicio que se encargará
de servirlas cuando los usuarios realicen las diferentes consultas. En la capa de
velocidad, solo se procesan los datos realmente nuevos, y se preparan las vistas
en tiempo real.

Cuando un usuario quiere obtener información, realiza una petición y el sistema


combina las vistas batch con las vistas en tiempo real, mostrándolas de forma
integrada y unificada. Aunque la arquitectura Lambda fue la primera que se
propuso para poder unificar el tiempo real y el batch, conlleva una gran dificultad.

57
El procesado se realiza a través de dos caminos que pueden implicar tecnologías y
sistemas de desarrollo distintos. Estos dos caminos tienen que estar sincronizados
y cualquier cambio en uno de ellos implica un cambio en el otro, por lo que, la
gestión de una arquitectura Lambda es complicada. Por eso, se propuso unos años
después la arquitectura Kappa (κ).

En este caso, para evitar la complejidad de mantener dos caminos distintos, se


elimina la capa batch y todo se procesa en tiempo real. Los datos de tipo batch se
consideran como datos en tiempo real acotados, por lo que, cuando se necesitan
se vuelven a introducir en el flujo de entrada para que se procesen de nuevo.
Mediante el procesado de este flujo de datos, se generan las vistas en tiempo real
que son entregadas a la capa de servicio para ser servidas cuando se soliciten en
las consultas pertinentes.

Esta arquitectura es más sencilla en su concepto al no tener que sincronizar


dos caminos distintos para los datos. Sin embargo, es necesario disponer de
un sistema que gestione los tipos de datos batch que se tienen que introducir
y cuando deben ser introducidos para que puedan ser reprocesados.

Por otra parte, si estos datos batch necesitan de mucho procesamiento para
generar los resultados y vistas, por ejemplo, en los casos en los que se usan
técnicas de machine learning para la obtención de perfiles de los clientes, se
genera mucha carga extra. En estos casos sería mejor utilizar una arquitectura
lambda. Pero, en cualquier caso, la solución final a desarrollar depende de la
finalidad que se persiga y, normalmente, no se puede cubrir todas las
necesidades con una única solución.

EVOLUCIÓN DE SOLUCIONES BIG DATA

58
La evolución dentro de las diferentes soluciones de Big Data, es continua y se
realiza de forma paralela y combinada.

59
7.6. Data Wareouse, Data Lakes y Data Lakehouse

Ya hemos introducido en apartados anteriores


los términos Data Warehouse y Data Lake.
Ahora es el momento de hablar un poco más
de ellos y ver la evolución que se ha producido
hasta llegar a los Data Lakehouse, que
combinan las ventajas de ambos sistemas.

Cuando en la década de 1980 se empezaron a crear los primeros grandes sistemas


de almacenamiento de datos, gracias a la creación de tecnologías como las bases
de datos relacionales SQL, la información de las empresas se almacenaban en
sistemas denominados Data Warehouse (DWH). Como se ha visto en el nivel de
datos, se recogía la información de las diferentes fuentes, y mediante procesos
ETL, se adaptaban a las estructuras de datos definidas en estos Data Warehouse.
Esto podía hacerse porque la información recogida era estructurada y encajaba
bien es estos modelos de datos y en los sistemas de los que se disponía (bases de
datos relacionales).

Este proceso de adaptación de la información era lento y costoso, ya que se


exigía la alta calidad e integridad de los datos para que pudiera mantenerse la
complicada relación entre las distintas unidades lógicas de información. De
forma adicional, a partir de este DWH central también se realizaban otras
tareas de ETL para extraer información más específica utilizada por áreas de
negocios diferentes, que era almacenada en los llamados Datamart, también
en bases de datos relacionales.

Estos sistemas de DWH eran muy eficientes para tareas de inteligencia de negocio
y de analítica descriptiva. Al estar la información estructurada según las
60
necesidades de negocio, eran muy buenos en dar mucha información ante
consultas típicas utilizada todos los días por los encargados de la empresa, por lo
que, eran sistemas muy optimizados, pero también muy costosos.

Sin embargo, no funcionaban tan bien ante las tareas propias de analíticas
más avanzadas como la predictiva o prescriptiva. Además, como solo se
almacenaba la información necesaria para alimentar esa estructura de datos
de negocio, muchos datos se perdían y no podían recuperarse si no se acudía
a las fuentes originales, muchas de las cuales ya habían destruido esos datos
por falta de capacidad de almacenamiento.

A medida que pasaron los años, y debido al gran crecimiento de los datos, tanto
en complejidad como tamaño, se necesitaron crear otros sistemas como los que
aquí hemos descrito. Estos sistemas se denominaron Data Lakes y suele estar
basados en sistemas distribuidos como Spark+Hadoop. En un Data Lake se
almacenan los datos que llegan a gran velocidad, sin apenas procesarse. Se usan
bases de dato NoSQL para poder gestionar datos de multitud de fuentes distintas,
estructurados y no estructurados.

Una vez almacenados, mediante técnicas ETL


se preparan y transforman para que puedan ser
cargados en los sistemas DWH tradicionales, y
así están disponibles para las herramientas
habituales de inteligencia de negocio, para
generar los informes y cuadros de mando
tradicionales.

Por otra parte, mediante otros procesos de datos, son preparados también para
las tareas analíticas más avanzadas: machine learning, analítica predictiva y
prescriptiva. Los Data Lakes son menos costosos en cuestión de almacenamiento
de datos, pero no están tan preparados para ser eficientes ante las típicas

61
consultas de inteligencia de negocio que pueden gestionar adecuadamente los
DWH y presentan muchos retos en términos de calidad del datos y gobernanza.
Por eso en los últimos años se han creado sistemas que combinan los puntos
fuertes de Data Lake y Data Warehouse. Se denominan Data Lakehouse y constan
de las siguientes capas:

Capa de almacenamiento

Contiene los datos en formato nativo, organizados por dominios de negocio.


Suelen usarse tecnologías distribuidas como las utilizadas en los Data Lakes.

Capa de metadatos

Para organizar de forma flexible, pero a la vez que permita la creación de


estructuras adaptadas a negocio, esta capa almacena información sobre los
mismos datos (ubicación, tipo, permisos, descripción) que permiten poder
descubrirlos y acceder de ellos de manera eficiente. De esa forma la
gobernanza y la calidad de los datos es más sencilla.

Capa de acceso y consultas

Permite el acceso a los datos mediante colsultas optimizadas. Se pueden


consultar en su formato en crudo original o en formato más estructurado. De
esta forma se consigue las mismas capacidades que ofrecen los DWH
tradicionales.

Capa de consumo/servicios

En esta capa los datos son entregados a los usuarios, aplicaciones,


herramientas de reporting o de machine learning, en multitud de formatos,
lenguajes o interfaces. Suele basarse en tecnologías API (Application
Programming Interface)18 (18) basadas en pregunta respuesta, dotando de
mucha flexibilidad, adaptabilidad y rapidez.

Así, con este nuevo tipo de tecnologías, se pueden combinar las ventajas de los
Data Lake y Data Warehouse. Ofrecen una única capa de acceso a los datos, para
todo tipo de analítica, como machine learning o inteligencia artificial, sin olvidar la
necesidad de realización de consultas de inteligencia de negocio que sean
eficientes, y además a un coste adecuado. Las dos soluciones más utilizadas
actualmente para la creación de estos Data Lakehouse son Snowflake y Databrics.

62
18 (18)

Las APIs (Interfaces de Programación de Aplicaciones) permiten que


diferentes aplicaciones o sistemas se comuniquen entre sí, facilitando el
intercambio de datos y funcionalidades. Existen varios tipos como REST,
SOAP, y GraphQL, cada uno con sus propios protocolos y métodos. Son
esenciales para la integración, automatización y creación de aplicaciones
actuales.

63
7.7. ¿En mis instalaciones o en la
nube?

Por lo que hemos visto, para poder gestionar una gran


cantidad de datos de forma eficiente y flexible se
necesitan grandes clústeres de cientos e incluso miles
de servidores, donde se ejecuten sistemas de
computación distribuida como Hadoop y Spark.

El mantenimiento y gestión de estos sistemas es


bastante complejo y costoso. Es necesario
disponer de multitud de personas que en horarios
continuos mantengan en funcionamiento multitud
de componentes informáticos, equipo
especializado que pueda configurarlos y operarlos,
y además una conexión a la red eléctrica
constante, no solo para dar energía a esos mismos
servidores, sino también para mantenerlos
refrigerados.

Podemos imaginarnos que las grandes compañías líderes en el uso y explotación


de los datos y de la información, han invertido y construido plantas para poder
almacenar estos grandes clústeres, en localizaciones que dispongan de todos los
requisitos necesarios19 (19) . Necesitan tener estas infraestructuras controladas
ya que son el propio núcleo de su negocio, y más que un coste, es un activo
estratégico que puede impactar directamente en la cuenta de ingresos y costes.

Mientras tanto las compañías tradicionales, habían invertido en centros de


datos propios donde tenían sus grandes sistemas informáticos anticuados,
con grandes ordenadores “mainframe” y sistemas herederos de la informática
del siglo XX. El paso a estas grandes instalaciones que conlleva el uso
apropiado de la multitud de datos que estaban generando sus clientes
implicaban nuevas y grandes inversiones, y no estaba claro que fueran una
inversión en vez de un coste, porque el centro del negocio no se encontraba
en la explotación de los datos que estaban almacenando. Pero estos dos
mundos se encontraron.

Las grandes empresas tecnológicas estaban creando centros de datos con


64
multitud de servidores, y con una gran capacidad de procesamiento instalada, para
preparar el crecimiento de datos que debían de gestionar en años futuros. Tanta
que muchas veces estos servidores estaban infrautilizados en momentos valle del
día.

Así que, a finales del 2003, dos ingenieros de Amazon20 (20) propusieron aplicar
todo lo que habían aprendido en el desarrollo de la propia infraestructura
informática de la empresa, y montar una nueva división que ofreciera esta
capacidad y servicios a otras empresas y así nació Amazon Web Services, líder
indiscutible de lo que se empezó a llamar “la nube”.

Millones de ordenadores, almacenamiento, sistemas informáticos puestos a


disposición en modo de pago por uso, con interfaces y herramientas que
hacían posible que en pocos minutos una sola persona pudiera crear,
configurar y utilizar clústeres de datos sin tener que comprar, instalar y
operar. Sin tener que hacer inversiones que luego no pudieran ser
rentabilizadas: con solo pulsar el botón de off en una pantalla de ordenador,
el clúster de datos desaparecía y los servidores que lo formaban eran
reutilizados para otros clientes. Solo se paga por el tiempo que se usaba o
tenía disponible esa infraestructura.

Esto permitió a las compañías clásicas poder hacer una migración hacia el nuevo
paradigma de procesado de datos. Sin tener que hacer inversiones costosas que
luego deberían ser desechadas si no eran rentables, sin tener que comprar, instalar
y mantener equipos informáticos, sin tener que crear equipos que tuvieran que
mantener el hardware, el almacenamiento y el sistema físico donde se alejaban.
Procesos que estaban en torno a meses de desarrollo podían hacerse en minutos,
con menos personal y gastos. Estos dos tipos de acercamiento para crear la
infraestructura necesaria para poder disponer de las capacidades de computación
que exigen los nuevos sistemas distribuidos de procesamiento de datos e
información se conocen como “on-premises” (en instalaciones propias) o “cloud” (en
la nube).

65
Estos servicios de cloud se pueden dar, de forma genérica en tres formas:

¿EN TU CASA O EN LA MÍA?

IaaS (Infrastructure as a Service): el proveedor proporciona


las “máquinas” hardware necesarias para que el cliente
instale el sistema operativo y aplicaciones que desee.

PaaS (Platform as a Service): en un nivel de integración


superior, el proveedor además proporciona software (el
sistema operativo y servicios básicos) para que el cliente
pueda crear y desarrollar sus propias aplicaciones y
servicios.

SaaS (Software as a Service): en este caso la integración es


total. El propio proveedor proporciona hasta las mismas
aplicaciones que el cliente utilizará. Este es el caso de la
mayoría de las aplicaciones y servicios que utilizamos. Por
ejemplo, los servicios de Google como Gmail, Maps, Docs
son servicios SaaS, ya que el cliente tiene a su
disposición, sin tener que invertir, una aplicación de
correo, de mapas o un sistema de creación y
compartición de documentos ofimáticos.

Si tenemos en cuenta los diferentes niveles funcionales que existen dentro de un


servidor, podremos distinguir los distintos servicios “ cloud” que pueden ofrecerse.
Si nosotros somos los que compramos los servidores, los instalamos en nuestra
red, cargamos el sistema operativo y las diferentes aplicaciones, estamos en un
66
entorno “on-premises”.

Si alquilamos a un tercero el hardware (Red, Almacenamiento, Servidores y


Virtualización), deberemos gestionar nosotros mismos la instalación y
mantenimiento de un sistema operativo y del entorno que nos permite desarrollar
nuestras propias aplicaciones. En este caso estaremos hablando de IaaS
(Infrastructure as a Service).

Como PaaS (Platform as a Service), dejamos que


el tercero también gestione el sistema
operativo y el entorno de ejecución. Nosotros
solo tendremos que ocuparnos de disponer de
los datos y de desarrollar nuestras aplicaciones
y servicios.

Finalmente podríamos contratar con el tercero todos los niveles. En este caso solo
deberemos usar la aplicación que este tercero ha desarrollado. Puede parecer
extraño, pero en realidad estamos todo el día utilizando aplicaciones de este tipo.
Cuando accedes a Gmail, Facebook o aplicaciones similares, estamos usando una
aplicación SaaS (Software as a Service).

Vamos a explicarlo con pizzas. Si quieres comer una pizza, puedes comprar todos
los ingredientes, hacer la masa, hornearla y comerla en tu casa. Esto sería el
modelo on-premises. También puedes comprarla en un supermercado, donde una
empresa ya ha hecho la pizza. Tú la horneas y la comes en tu casa. Este sería el
modelo IaaS. También puede llamar para que te lleven la pizza a casa. En este caso
otros han hecho la pizza y la han horneado. Tú pones la mesa. Esto sería el modelo
PaaS.

Finalmente, puedes ir a un restaurante. Allí te hacen la pizza, ponen el horno y el


servicio. Tú solo disfrutas de comerla. Este sería el modelo SaaS. Amazon fue la
primera empresa que desarrolló estos servicios de una forma transversal y
destinada a todo tipo de público, desde el uso personal hasta la creación de
grandes entornos empresariales desarrollados totalmente en la nube. Por ejemplo,

67
Netflix en el año 2016 terminó por cerrar sus propios centros de datos para
terminar su migración total a la nube21 (21) . Otros proveedores como Microsoft
con Azure o Google con su Google Cloud también ofrecen servicios en la nube. A lo
largo de todos estos años Amazon ha desarrollado multitud de servicios en todos
los modos posibles.

Desde su primer servicio en modo IaaS denominado EC2, ahora ofrece


cientos de servicios que permiten desarrollar cualquier tipo de
infraestructura.

Ejemplos

Entre todos los servicios y productos de los que dispone AWS pueden destacarse
los siguientes22 (22) :

68
Servicios de almacenamiento

S3: almacenamiento básico, tan flexible y útil que se ha convertido en


un estándar de facto. Multitud de soluciones Big Data permiten
conectarse por defecto a este tipo de servicio. La peculiaridad de S3 es
que no es necesario reservar por anticipado la cantidad de espacio que
piensas que vas a necesitar. Simplemente enviando los datos que se
quiera almacenar, se amplía o reduce automáticamente el espacio
reservado.
EBS: es el almacenamiento que está asociado a los servidores estándar
que puedes crear en AWS. Son como los discos duros que tendrían
esos PCs. En este caso, sí que es necesario definir la memoria que se va
a necesitar, pero ampliarla o reducirla es tan simple como pulsar unos
cuantos botones.
Glacier: es una memoria de almacenamiento de más larga duración,
destinado sobre todo para guardar información de gran tamaño pero
que no se use frecuentemente, como las copias de seguridad. La
velocidad de lectura es mucho más lenta que en S3 o en EBS, pero a
cambio el precio es mucho menor.

Hardware

EC2: es el servicio de máquinas-servidores bajo demanda en modo


PaaS. Amazon, en unos pocos clicks y minutos, permite crear un
servidor de entre una lista de máquinas disponibles con diferentes
características y funcionalidades. Al instante tienes una máquina
preparada con un sistema operativo (Linux, Windows), mantenido y
actualizado en todo momento de forma automática y desasistida por
parte del usuario.
EMR: de la misma forma, AWS permite disponer en muy poco tiempo
de un clúster Spark/Hadoop con cualquier número de nodos y
utilidades.

69
Bases de datos

RDS: servicio de base de dato relacional. El usuario puede disponer de


varias bases de datos de tipo relacional bajo demanda.
Redshift: servicio de base de datos de tipo columnar de alta capacidad y
rendimiento. Es muy utilizada para procesos de gran carga, pudiendo
manejar petabyes de datos de forma eficiente.
DynamoDB: una base de datos de clave valor y orientada a documentos
que destaca por su rapidez de lectura debido a su almacenamiento
caché en memoria. Por eso, es muy utilizada como base de datos en
aplicaciones y servicios web que gestionan multitud de accesos por
parte de los usuarios.

Servicios

Kinesis: servicio para poder crear y gestionar flujos y stream de datos


para aplicaciones en tiempo real.
Machine learning: solución que permite aplicar algoritmos de machine
learning sobre gran cantidad de datos.

Todos estos servicios pueden en cualquier momento “desenchufarse”: si una vez


utilizado no se necesita tenerlo disponible, el usuario puede “congelarlo”, y dejar
de pagar por el servicio. Si en un momento posterior quiere volver a utilizarlo,
puede “levantarlo” de nuevo, y toda la configuración se recupera. De esta forma
solo se paga por el tiempo en el que los recursos contratados están siendo usados
(menos algún tipo de servicios especiales).

Como se puede suponer, este tipo de servicios tienen multitud de ventajas. La


más importante es la flexibilidad. En muy poco tiempo puedo tener disponible un
sistema totalmente configurado y preparado, sin tener que invertir de antemano
en comprar equipos, licencias o recursos. Además, si por motivos de negocio la
empresa tiene que crecer o disminuir, simplemente puedo eliminar o aumentar la
capacidad, pagando por lo que estoy utilizando sin perder ningún tipo de
inversión. Todo esto hace que las empresas puedan pasar de un modelo de
inversión en grandes centros de datos a un modelo basado en contratación de un
servicio, por lo que, se pasa de gasto en capital ( CAPEX) a gastos operacionales
(OPEX), lo que es más asumible para startups y pequeñas empresas.

70
Adicionalmente, la evolución tecnológica es más
sencilla. El proveedor de servicios cloud actualiza de
forma automática el hardware de las máquinas
utilizadas, haciendo que se puedan tener servidores
de última generación sin tener que crear grandes
procesos de migración. De la misma forma sucede con
el software. El proveedor de servicios cloud mantiene
actualizado el sistema operativo y los servicios,
instalando los últimos parches de seguridad. Y,
además, como multitud de usuarios están probando lo
mismo, la solución ofrecida es robusta y a prueba de
fallos.

Pero, por otra parte, también hay ciertas desventajas. La más importante es la
sensación de pérdida de control. Los usuarios pueden sentir que su datos y
máquinas están menos bajo control, por lo que, pueden surgir dudas sobre la
privacidad y confidencialidad.

Pero en verdad, en la mayoría de los casos es una sensación irreal. Desde


hace muchos años las grandes corporaciones ya habían externalizado el
servicio de centro de datos. Aunque se consideraba que los centros de datos
eran propios, en verdad estaban siendo gestionados por terceras partes, que
ponían a disposición de estas empresas parte de la capacidad que tenían
disponible en centros de datos compartidos. Así que ya se podía considerar
que se estaba usando la nube, pero sin la flexibilidad y sencillez que permiten
los servicios cloud. Por ejemplo, la instalación de nuevos servidores era un
proceso de varios meses, mientras que en la nube es cuestión de minutos.

Por eso, en realidad, para disfrutar de todas las ventajas que ofrece el desarrollo
en la nube, la mayoría de las empresas utilizan sistemas híbridos. Se dispone de
una infraestructura “on-premises”, para almacenar información que por su alto
nivel de confidencialidad o privacidad necesita ser procesada en un entorno más
controlado. Cuando se necesita disponer de mayor capacidad de proceso, se
dispone de una infraestructura en la nube a la que se envía información cifrada
y/o anonimizada, se procesa y se recogen los resultados. Cuando ya se ha
terminado de procesarlos, esta infraestructura se congela, por lo que, no se
incurre en más gastos innecesarios. Esta forma de actuar es muy común cuando
las empresas van a lanzar grandes campañas puntuales, y se necesita dar servicio
a una gran demanda de peticiones y usuarios (por ejemplo, el Black Friday).

71
19 (19)

Ver: [Link]
el-nuevo-amor-incondicional-hacia-los-centros-de-datos-nordicos. Y no
siempre tienen que ser sitios feos y aburridos
[Link]
mundo/

20 (20)

Ver: [Link]

21 (21)

Ver: [Link]
su-migracion-a-la-nube-con-aws o [Link]
studies/netflix/

22 (22)

Para un listado de casi todos los servicios disponibles ver:


[Link]
services-daniel-pe%C3%B1a-silva/

72
8. Nivel conocimiento: analizar y comprender

8. Nivel conocimiento: analizar y


comprender

Por último, ya hemos llegado al nivel de


conocimiento, donde lo que se busca es analizar
la información obtenida, interpretarla,
comprenderla y hacer inferencias que permitan
obtener algún tipo de valor.

El proceso de análisis puede parecer una etapa en


la que la creatividad juega un papel importante.
Sin menospreciar la necesidad de saber hacer las
preguntas correctas y tener cierta inventiva e
intuición en la búsqueda, el análisis suele seguir
unas etapas y pasos típicos que conforman cierta
metodología23 (23) .

Preparación de datos

Aunque en los procesos ETL ya se pueden haber corregido muchos errores,


después de conseguir los datos, siempre hay que limpiarlos, por ejemplo,
rellenando campos vacíos con valores normalizados, eliminar variables que no
se van a utilizar o no tienen sentido para el análisis, y realizar las primeras
transformaciones (por ejemplo, entre las más típicas la normalización de
fechas o cambio del punto por coma decimal, o normalizar formatos de
números.

73
Estructurar los datos

Una vez limpios y aunque los datos también tengan ya cierta estructura, como
el análisis puede dirigirse hacia otros objetivos distintos de los definidos
cuando se recogieron los datos, es necesario estructurarlos de la mejor forma
que permita que el análisis sea más sencillo. Se empiezan a relacionar unos
datos con otros y además se dejan preparados en algún formato o en algún
tipo de bases de datos o sistema de ficheros (relacional, NoSQL, HDFS) que
pueden ser procesados por las herramientas utilizadas en fases posteriores.

Análisis

En esta fase se empieza a comprender e interpretar los datos. Para ello las
herramientas fundamentales son la estadística, al utilizar técnicas de muestreo
y métricas estadísticas, y sobre todo la visualización de los datos, desde la
simple creación de tablas numéricas, hasta los gráficos y animaciones más
complejos y completos. En esta fase se empieza a intuir las diferentes
propiedades de los datos que guiarán los siguientes pasos.

Creación de modelos

Una vez se ha empezado a comprender los datos, sus propiedades, y


basándose en los objetivos del análisis, se comenzará a definir qué modelos
podremos utilizar para intentar encontrar patrones e inferencias útiles que
satisfagan las necesidades definidas. Un modelo es una representación de la
realidad que nos indica algún tipo de predicción o conocimiento sobre esa
misma realidad. Los modelos obtienen a partir de unas variables conocidas (las
variables de entrada o independientes) una o más variables calculadas o
inferidas (variables dependientes o target) que no conocemos y que tienen
cierto valor para poder realizar algún tipo de acción.

74
Prueba y optimización

Aunque el modelo puede tener cierta eficacia teórica, siempre hay que
probarlo y confrontarlo con la realidad. Para ello es necesario ejecutar algún
tipo de test o prueba real, eligiendo grupos de control, para así comprobar el
valor real de los modelos. Muchas veces los modelos son muy buenos
detectando o infiriendo variables, pero su aplicación puede fallar por
cuestiones tales como la dificultad de escalarlo hacia todos los clientes o la no
adecuación a los procesos o productos de la compañía. Pero incluso si el
modelo funciona adecuadamente, su aplicación nos ofrece nuevas variables e
incluso nuevos descubrimientos de relaciones que no habíamos detectado y
que, por tanto, pueden volver a ser analizadas para optimizar el modelo. De
esta manera, de una forma cíclica, volvemos a la primera etapa, recogiendo y
preparando esa nueva información y datos para su análisis.

Las etapas de este proceso que hemos indicado tienen cierta relación con los tipos
de analítica que se habían visto anteriormente. Por ejemplo, en la analítica
descriptiva que buscaba responder a la pregunta sobre qué ha pasado, se suele
llegar solamente a las tres primeras fases (limpiar, estructurar y analizar). Sin
embargo, en la analítica predictiva y prescriptiva se llegan a realizar todas las
etapas.

UN PROCESO MUY CREATIVO, PERO TAMBIÉN MUY ESTRUCTURADO

El proceso de análisis suele seguir unos pasos muy definidos, con tareas muy específicas y
que utilizan herramientas enfocadas en resolver la problemática de cada etapa. La utlización
de cada una de las etapas también tiene mucho que ver con el tipo de analítica que
queremos o tenemos que desarrollar.

Como podemos ver en el cuadro anterior, las herramientas de visualización,


análisis y la inteligencia artificial son las herramientas principales que se utilizan
en esta etapa y, por tanto, vamos a pararnos un poco en cada una de ellas.

75
23 (23)

En otro módulo, veremos una metodología formal de este tipo de nominada


CRISP-DM:
[Link]
ng

76
8.1. Visualización: a veces la vista no nos
engaña
Lo primero que se recomienda siempre al empezar a
trabajar con datos es visualizarlos de alguna forma.
Obtener representaciones gráficas de la información
contenida en ellos permite que una persona pueda
comprenderlos, empezar a intuir formas de trabajar con
ellos e, incluso, obtener conclusiones.

¿Por qué es importante?

En el mundo pre-big data había pocos datos y se


podían manejar y visualizar bien, pero ahora es muy
difícil visualizarlos y existe la tentación de hacer
medidas resumen con el objetivo de entenderlos, pero
que pueden ocultar la verdad.

Muchas veces, diferentes conjuntos de datos pueden


dar medidas estadísticas similares. Además, se puede
ver cómo están distribuidos y ayuda a enfocar mejor
los siguientes pasos del análisis. Incluso podemos ver
datos anómalos que decidiremos si tomar o no tomar
en consideración para el análisis. Por otra parte, nunca
se puede despreciar la capacidad de la visión humana
para encontrar posibles relaciones y patrones que nos
permitirán elegir el mejor modelo para analizarlos en
etapas posteriores.

Es el caso del “Cuarteto de Anscombe”24 (24) . Se trata de cuatro conjuntos de


datos que, aunque tengan los mismos parámetros estadísticos, cuando se
visualizan son totalmente distintos:

La línea azul es la línea de tendencia clásica que se suele calcular de forma


estándar para realizar algún tipo de predicción. Como se ve, es la misma en los
cuatro conjuntos de datos, pero también se puede ver que oculta la verdadera
naturaleza de cada grupo de datos.

77
En el primer caso (arriba a la izquierda) podemos ver un
típico conjunto de datos donde los puntos se encuentran
más o menos repartidos siguiendo esa línea de tendencia.

En la imagen de arriba a la derecha, sin embargo,


podemos ver que la tendencia estaría mejor representada
por una curva polinómica que se ajustaría perfectamente
a la variabilidad de los datos.

En el tercer caso (abajo a la izquierda), podemos ver que


mientras un grupo de datos sigue una tendencia lineal
muy clara, hay un punto que se separa completamente.
Además, lo que significa ese punto puede depender
mucho de la realidad que representa ese dato o de los
objetivos del análisis. En la mayoría de los casos puede
tratarse de un caso anómalo (outlier) que puede decidirse
quitar de los datos para que no estropee el análisis. Pero
si, por ejemplo, lo que estamos haciendo es un modelo
para detectar casos de fraude, quizás ese punto sea el
caso anómalo que representa ese mismo fraude, por lo
que en verdad deberíamos quitar todos los demás puntos
y centrarnos en ese.

78
Finalmente, en el último ejemplo, podemos pensar que el
punto alejado puede tratarse de un caso anómalo, pero
quizás también pueda significar que se trata de casos que
se agrupan en grupos específicos y entonces podríamos
decantarnos en las fases posteriores a utilizar técnicas de
clusterización y/o categorización para detectar estos
diferentes grupos.

CASO CHALLENGER: ¿SE PODRÍA HABER EVITADO CON VISUALIZACIÓN?

El 28 de enero de 1986, el transbordador espacial


Challenge se desintegró a los 73 segundos del
despegue. Una junta de los cohetes laterales falló,
dejando escapar combustible que se incendió y
provocó el fatal desenlace.

Los siete tripulantes murieron al chocar la cabina


contra el mar después de una caída interminable de
tres minutos. Se creía que ninguno estaba consciente
en el momento del choque, pero después se supo que al menos cuatro de ellos
activaron el suministro auxiliar antes de que la cabina llegara al mar.

El fallo de la junta fue provocado por las bajas temperaturas que se produjeron la
noche anterior y el día del lanzamiento. Según los estudios estadísticos
posteriores, la tasa de fallo se acercaba al 13 %, mientras que los estudios
generales de probabilidad de fallo general del transbordador estaban alrededor
del 0,001 %.

Los ingenieros que decidieron el lanzamiento del transbordador tenían muy pocos
datos y además los recogían de forma poco visual.

Escribe aquí tu texto.

Escribe aquí tu texto.

79
Los ingenieros solo habían tenido en cuenta datos de temperatura cuando otras
juntas habían sufrido estrés, pero su
análisis no dejaba claro que hubiera una
relación directa entre la temperatura y el
estrés.

Como se ve en el gráfico, se habían dado


más fallos con la temperatura por debajo
de 55º, pero también se habían dado más fallos a 75º. Pero lo que no tuvieron en
cuenta fueron los casos en los que no se había producido ningún fallo.

Si añadimos esos datos, se puede ver


una tendencia clara: por debajo de 65º
no hay ningún caso en el que no se haya
producido ningún fallo, así que parece
que ese es un límite a tener en cuenta
como potencial riesgo ante un
lanzamiento del transbordador. Más aún,
si extendemos este gráfico, podemos ver
que existe una tendencia a que este
riesgo aumente a medida que disminuye la temperatura.

¿Con este tipo de visualización se podría haber evitado el desastre?Ver:


[Link]

Existen multitud de herramientas para hacer visualizaciones de datos y cualquier


paquete estadístico dispone de un buen conjunto de ellas. Algunas de las
herramientas enfocadas en visualización general son:

Excel

El clásico por antonomasia. Su uso está muy extendido porque es una


herramienta altamente utilizada en el entorno empresarial y financiero.

80
Tableau y Qlik

Son herramientas de visualización de nueva generación que empezaron como


servicios web, pero también cuentan con versiones descargables, aunque
todo su potencial se desvela en entornos compartidos. Tienen versiones
gratis y, cada vez más, su uso está más extendido.

Looker Studio (antes Google Data Studio)

Una herramienta gratuita de Google enfocada sobre todo para el análisis de


los datos que generan otro tipo de servicios de la misma compañía, como por
ejemplo Google Analytics, YouTube o Google Ads. Muy utilizada en entornos de
métricas web y apps.

Amazon QuickSight

Herramienta de visualización ofrecida por Amazon dentro de su servicio AWS.


Puede trabajar con gran cantidad de datos de diversas fuentes, ya que utiliza
todos los servicios y recursos disponibles dentro de los que están disponibles
en Amazon Web Services.

Adicionalmente, en la actualidad se está desarrollando mucho análisis geoespacial,


es decir, se utilizan datos asociados a una localización del cliente, por lo que, es
necesario disponer de algún tipo de herramienta que permita ver los datos
asociados a una posición en el mapa:

QGIS

Herramienta de software libre para PC, gratuita y muy


popular. Con gran cantidad de capas de información
georeferenciada y una gran comunidad con multitud
de desarrolladores añadiendo funcionalidad a través
de plug-ins y software adicional.

ArcGIS

Herramienta de pago desarrollada por la empresa


ESRI, orientada a las empresas. Tiene versión para
escritorio y también online. Esta ampliamente
extendida en empresas que se dedican a la
explotación de mapas y datos geolocalizados.

81
Google Earth y Google Maps

Herramientas muy populares, utilizadas por el gran


público, pero abierta a desarrolladores para que
puedan crear mapas y asociar información
geoespacial. Gratuito hasta un cierto número de
elementos a mostrar y peticiones.

Carto

Empresa española que ha desarrollado una


herramienta de visualización geoespacial totalmente
online muy potente, siendo referencia internacional.
Gratuita hasta cierta cantidad de información
mostrada y almacenada.

Finalmente, y atendiendo a una de la estructuras más especiales y difíciles de


mostrar, hay visualizadores especializados en grafos:

Gephi

Herramienta de código abierto y gratuita que utiliza directamente las tarjetas


de vídeo especializadas para mostrar redes y grafos de una forma flexible,
dinámica y rápida. Cuenta con multitud de plugins y software adicional para
realizar cálculos de métricas de red, importación y exportación de datos y
algoritmos de visualización. Tiene un módulo para trabajar con redes
temporales, esto es, redes que cambian a lo largo del tiempo, bien porque
cambian su número de nodos, o el número o estructura de sus relaciones.

Cytoscape

Herramienta de visualización de grafos y redes orientada sobre todo a la


visualización de redes biológicas (redes genéticas, de proteínas, bioquímicas,
etc.). También es gratuita y tiene multitud de plugins desarrollados por la
comunidad que amplían sus funcionalidades.

82
NodeXL

Plugin que se puede instalar en Excel para poder crear, visualizar y realizar
métricas de redes dentro de este programa. Desde sus comienzos ha
evolucionado bastante y ahora cuenta con una versión gratis, una versión de
pago y hasta incluso una versión online.

24 (24)

Ver: [Link] Para ver esa


problemática de forma más divertida y en profundidad, ver:
[Link] donde explica el
“Datasaurus” un conjunto de datos que muestra un dinosaurio pero que
tiene los mismos parámetros estadísticos que otros muchos conjuntos de
datos más “normales”.

83
8.2. Análisis: empezar a extraer conocimiento de
los datos
Aunque en módulos siguientes manejaremos algún tipo de herramienta para
realizar análisis, por lo que, no entraremos en los detalles de cada una, vamos a
hablar brevemente de algunas de ellas, para poder un conocimiento general de las
más importantes y usadas.

Para realizar análisis de datos podemos tener tres acercamientos:

Usar lenguajes de Usar soluciones de Usar entornos de


programación análisis análisis
“empaquetadas”

(25) (27)
(26)

Usar lenguajes de programación (25)

Usar lenguajes de programación: este es el acercamiento más generalista,


ya que la flexibilidad que conlleva utilizar cualquier lenguaje de
programación para procesar los datos permite al investigador realizar
cualquier tipo de análisis. Por el contrario, también existe la posibilidad de
que, para realizar las tareas más sencillas, se tenga que desarrollar código
desde cero. Sin embargo, gracias al movimiento del software libre y las
grandes comunidades de desarrolladores, existen multitud de librerías y
código ya desarrollados para casi cualquier tarea, o ejemplos de código que
podemos insertar directamente en nuestro programa.

Estos dos lenguajes serían básicos para profundizar en el análisis y


procesado de datos:

84
SQL es un lenguaje creado en los Python es un lenguaje de propósito
años 70 para el acceso y consulta general muy sencillo, fácil de leer y
de bases de datos relacionales. Ha muy flexible. Es un lenguaje
sido y es tan popular, que este tipo interpretado, por lo que, solo se
de bases de datos han tomado su necesita un “intérprete”
nombre de este lenguaje compatible con el sistema
(recordemos la explicación de base operativo del ordenador en que se
de datos SQL frente a bases de esté usando, lo que ha propiciado
datos NoSQL). Debido a su amplia que se pueda ejecutar en casi
utilización, los sistemas de Big cualquier ordenador o servidor. Al
Data, que incluso no se rigen por el ser tan útil y extendido, hay una
modelo de base de datos gran comunidad que desarrolla
relacional, han desarrollado librerías y extensiones para
adaptadores SQL para poder realizar cualquier tarea sin tener
acceder y procesar a los datos. que crear código desde cero. Y por
supuesto, dentro de estas librerías,
dispone de muchas que permiten
realizar análisis de datos o
conectarse a cualquier sistema de
Big Data para procesar la
información almacenada. Si
hubiera que elegir un lenguaje
para empezar a programar,
recomendaría empezar por este.

85
Usar soluciones de análisis “empaquetadas” (26)

En este caso nos encontramos con paquetes de software desarrollado por


diversas empresas que integran normalmente todas las herramientas de
análisis necesarias (visualización, entorno de programación y desarrollo de
modelos). En el entorno empresarial son ampliamente utilizadas, pero han
perdido posiciones ante herramientas de software libre

SAS es un paquete
SPSS es un paquete Power BI es una
de análisis de
estadístico de larga solución de Microsoft
datos completo,
tradición para el muy integrada con el
potente y de
análisis en ciencias paquete de ofimática
amplio uso en
sociales y marketing. Office, ofrece en un
entornos
En la actualidad entorno híbrido de
empresariales. escritorio y nube.
puede manejar gran
Permite
cantidad de Gracias a ello, puede
conectarse con usarse para el
información y su multitud de
compra e integración procesado de gran
fuentes de datos e
dentro del catálogo cantidad de datos de
integrarse en
de IBM ha permitido forma sencilla y para
sistemas
su uso en entornos de usuarios sin grandes
empresariales conocimientos de
Big Data.
complejos,
programación. Una de
ofreciendo todas
sus grandes
las herramientas diferencias es la
de análisis, desde
integración con
la visualización
herramientas de
hasta la creación y
inteligencia artificial
ejecución de
de Microsoft, como
modelos. También
Cortana.
incluye un entorno
de programación
con su propio
lenguaje, el SAS
Base, muy flexible
y amplio.

86
Usar entornos de análisis (27)

En este caso, estamos hablando de entornos de código abierto desarrollados


por y para la comunidad, con la intención de integrar multitud de librerías y
extensiones para realizar cualquier tipo de análisis de datos. De esta forma,
cualquier usuario puede acceder a todo el potencial de análisis sin tener que
desarrollar o pagar por el código:

“R” es el paquete de análisis de


Knime, Altair AI Studio (antes
datos estándar en la actualidad. Es
Rapidminer) y Weka son entornos
una solución hecha por y para la
de desarrollo de propósito más
comunidad, con una gran cantidad
específicos que cuentan con un
de desarrolladores, creando código
interfaz más visual y agradable. La
que puede ser reutilizado por
mayoría de la programación se
cualquier usuario. Esto permite
realiza a través de bloques
disponer de herramientas,
funcionales que se van uniendo
modelos, análisis estadísticos y
con el ratón. Cualquier miembro
visualizaciones muy complejas sin
de la comunidad puede desarrollar
tener que crear código desde cero.
nuevos bloques y así aumentar las
Y gracias a su lenguaje “R” y a su
funcionalidades y capacidades
intérprete asociado, lo hace
disponibles. Con estos entornos,
totalmente flexible para cualquier
un usuario no avanzado puede
tarea que se necesite.
crear en pocos minutos modelos
complejos y funcionales sin tener
que aprender un lenguaje de
programación.

87
8.3. Inteligencia Artificial: intentar que las
máquinas piensen como nosotros

Finalmente llegamos a la Inteligencia Artificial. Este


campo, tan de moda ahora, tuvo su origen en la
segunda mitad del siglo XX. En 1956 cuatro pioneros,
John McCarthy, Marvin L. Minsky, Nathaniel Rochester y
Claude E. Shannon, organizaron la Conferencia de
Dartmouth25 (28) . Esta conferencia puede
considerarse como el evento fundacional de la
Inteligencia Artificial. Muchos de los conceptos,
algoritmos, o matemática fueron desarrollados en esa
época, entre los años 50 y 70. Por tanto, no podemos
considerar que ha sido un descubrimiento de
nuestros días.

Entonces, ¿por qué se ha producido esta explosión en la última década?


Realmente, y como lo habíamos indicado en la introducción, la utilización masiva
de la inteligencia artificial ha sido posible por el aumento de la capacidad de
procesamiento de nuestros ordenadores y la facilidad de acceso a los mismos, el
descenso en los precios del almacenamiento de datos, y sobre todo por los datos.

Y creo que este es el aspecto fundamental. Cualquier sistema de inteligencia


artificial necesita ser entrenado, y para ello, es necesario que disponga de
datos sobre los que pueda aprender. Y eso, realmente, solo ha sido posible
con el nacimiento de internet y de la tecnología móvil. Actualmente, miles de
millones de personas cuelgan fotos, crean contenido, navegan y, además, en
cierta medida, clasifican esta misma información. Con esta gran cantidad de
información, un sistema de inteligencia artificial puede ser entrenado para
simular ciertos aspectos de nuestra inteligencia humana.

Y así puede definirse la inteligencia artificial como cualquier simulación de


procesos de la inteligencia humana por parte de máquinas o sistemas
informáticos. Se puede resumir las características que debería tener cualquier
sistema de inteligencia artificial ideal en pocos aspectos:

Debe tener una interacción natural con


humanos

88
Basada en lenguaje natural, reconocimiento y síntesis
de habla, bien sea oral o escrita. Incluso, también
reconocer gestos o imágenes, o entonación, de
manera similar a como hacemos los humanos para
comunicarnos entre nosotros.

Debe ser un sistema que aprenda

Es decir, que a partir de la adquisición de información


genere reglas para que esa información sea útil según
un determinado objetivo.

Debe ser un sistema que razone

Que, con las reglas que ha desarrollado en la fase de


aprendizaje, pueda llegar a conclusiones aproximadas
o definitivas a partir de nueva información que reciba.

Debe autocorregirse

Si las conclusiones que ha obtenido no son correctas,


debe darse cuenta y modificar las reglas establecidas.

25 (28)

Ver: [Link]

89
8.4. Redes
convolucionales
Como estas características realmente son difíciles de conseguir, se suele hablar de
dos tipos de inteligencia artificial: la inteligencia artificial débil y la inteligencia
artificial fuerte.

Débil

Es aquella inteligencia artificial que está diseñada y entrenada para una tarea
en particular, por ejemplo “detectar gatos” en una foto. Para la tarea para la
que han sido diseñadas, suelen ser mejor que cualquier humano, y además
también más rápida. Por ejemplo, muchos sistemas de reconocimientos de
imagen médica pueden detectar, con mayor eficiencia y en mucho menos
tiempo, el cáncer de mama de lo que haría un experto.

Fuerte

Englobaría a la inteligencia artificial que tiene habilidades cognitivas humanas


generales. Es decir, trabajarían como cualquier persona, eligiendo las mejores
“herramientas” cognitivas para cada situación, aprendiendo en cada paso y
también corrigiendo y modificando sus reglas y razonamientos a medida que
utiliza más y más información. De momento ningún sistema de inteligencia
artificial ha llegado a este punto, pero se ha teorizado con el mismo, dentro
de lo que se ha llamado “Singularidad Tecnológica”26 (29) .

Antes de empezar a describir las diferentes técnicas que forman la inteligencia


artificial, es necesario hacer una distinción entre diferentes términos que muchas
veces se confunden y se toman como sinónimos.
La inteligencia artificial es una gran área de conocimiento. En ella, se encuentran
tecnologías como la robótica, el reconocimiento y generación de habla, detección
de imágenes, coches autónomos, asistentes virtuales, sistemas expertos para la
detección de cáncer, etc.

Para que este tipo de sistemas puedan funcionar, utilizan técnicas de machine
learning. Con estas técnicas, un asistente virtual puede aprender a entender
diferentes acentos o un coche autónomo puede detectar una bicicleta en su
camino. Por tanto, dentro de la inteligencia artificial, como una parte muy
importante, se encuentra el machine learning.

LA INTELIGENCIA ARTIFICIAL NO SOLO VIVE DEL DEEP LEARNING

La inteligencia artificial es un campo muy amplio, donde una parte importante,

90
pero no la única, son las técnicas de Machine Learning. Dentro de esta multitud de
técnicas, una de las más utilizas hoy en
día son las Redes Neuronales.
Finalmente, el Deep Learning es una
forma especial de diseñar y entrenar
redes neuronales.

Por tanto, no hay que confundir


inteligencia artificial y deep learning. Sería
algo totalmente erróneo y reduccionista,
apartándonos de otros aspectos y
técnicas dentro de la Inteligencia Artificial.

Finalmente, el machine learning cuenta con muchas técnicas distintas, entre las que
se encuentran, por ejemplo, los árboles de decisiones, métodos de regresión, SVM
u otras. Dentro de ellas, una de las más utilizadas en la actualidad y que han sido
potenciadas por la gran cantidad de información disponible han sido las redes
neuronales. Y dentro de las redes neuronales, destacan el deep learning o
aprendizaje profundo.

Por lo tanto, y resumiendo lo comentado anteriormente, dentro de la


inteligencia artificial nos encontramos con el machine learning, y una de las
partes de este machine learning, son las redes neuronales y el deep learning.
No se puede decir que la inteligencia artificial solo se basa en eldeep learning
o que el deep learning ha posibilitado la inteligencia artificial.

Estas conclusiones son falsas y producen cierta confusión que puede tener
consecuencias. Por ejemplo, muchas tareas pueden realizarse utilizando
modelos clásicos de machine learning, que son más sencillos de entender y
explicar y, por tanto, de aplicar, por lo que, pueden ser preferibles a trabajar
con redes neuronales. Sin embargo, muchos expertos en la materia siempre
intentarán decir que la única posibilidad es trabajar con deep learning,
presuponiendo la igualdad inteligencia artificial-deep learning.

Como en toda tecnología, lo más importante es saber cuándo utilizar o no algún


método y, casi siempre, los mejores resultados se obtienen combinando diversas
técnicas dentro de un catálogo amplio de soluciones y algoritmos.

Para empezar a explicar las diferentes técnicas de machine learning, primero


haremos una clasificación en base a la manera de entrenar. Siguiendo esta
categorización habría tres tipos:

SUPERVISADO, NO SUPERVISADO Y REFORZADO


91
Aprendizaje supervisado: en este caso, tenemos datos de entrenamiento. Es
decir, podemos suministrar datos de prueba de los que sabemos la respuesta
adecuada, y por tanto, el algoritmo busca ajustarse para que, a partir de datos
de entrada, se obtenga la salida esperada. Por ejemplo, podemos pasar a un
algoritmo multitud de fotos en las que se muestran animales. Y le decimos al
algoritmo que queremos detectar gatos y, por tanto, marcamos las fotos en las
que hay gatos como la respuesta correcta. El algoritmo entones intentará
aprender qué características tienen las fotos para decir que aparece un gato o
no, tanto de las fotos marcados como “gato” como de las fotos no marcadas
como “gato”. Por ese motivo, se dice que este aprendizaje es supervisado,
porque en cierta medida un humano tiene que decirle qué tiene que detectar
o aprender.

Aprendizaje no supervisado: en este caso, no disponemos de datos de


entrenamiento y de resultados marcados como correctos. Por lo tanto, el
algoritmo tiene que buscar patrones o conclusiones de los datos de entrada,
agrupando las observaciones o datos que son parecidos. De esta forma puede,
en cierta medida, ayudar a clasificar imágenes, textos o cualquier otro tipo de
contenido para que luego sean más fácilmente interpretables por personas o
por otro tipo de sistemas.

92
Aprendizaje reforzado: en este caso, el aprendizaje no tiene que ver con los
datos en sí mismo, sino con un “ambiente o mundo” con el que el sistema de
inteligencia artificial tiene que interactuar. Este ambiente puede ser tan
sencillo como una partida de ajedrez o un juego de ordenador, o puede ser tan
extenso y complejo como la conducción por una ciudad. Por tanto, lo que
hacemos es dejar que el sistema de inteligencia artificial se “mueva” dentro del
ambiente y a cada movimiento o acción que realice le damos una puntuación.
Además, marcamos un objetivo de puntuación, por lo que, el sistema intentará
maximizar esos puntos, lo que indicará que ha podido sobrevivir en ese
ambiente y, por tanto, sabrá cómo tratar con los problemas de ese mundo. De
esa manera, sin tener que conocer todas las situaciones que se pueden
producir en ese mundo, habrá aprendido unas reglas que maximizan la
posibilidad de tener éxito ante cualquier situación.

Se muestra en el gráfico los diferentes


métodos de machine learning según la
forma de entrenamiento. Se incluyen las
problemáticas típicas en las que se aplica
cada una de ellas y algunos de los
métodos más conocidos y populares
dentro de cada categoría.

No hay espacio para poder explicar con


un poco de profundidad todos los
métodos que pueden utilizarse, y,
además, en los siguientes módulos aprenderemos mediante una herramienta visual
a utilizarlos con datos de ejemplo, por lo que explicaremos algunas de sus
características en ese punto 27 (30) .

Sin embargo, para poder tener una visión general de cómo funcionan las redes
neuronales y el deep learning, vamos a explicar sus características y estructura
básica. Este tipo de técnica se basa en simular el funcionamiento del cerebro
humano y de sus neuronas.

Las redes neuronales se basan en un modelo de neurona llamado Perceptrón, que


fue descrito en el año 1958 por Frank Rosenblatt.

Siguiendo la estructura de una neurona real, el Perceptrón recibe información de


varias entradas (en este caso 5). Cada una de las entradas se pondera por un peso.
Todos estos valores ponderados se agregan. Este valor agregado pasa a la función
de activación y si ese valor sobrepasa un umbral, se activa la salida. Dependiendo
de los pesos, la función de agregación y la función de activación, el Perceptrón
obtiene una salida específica para cada conjunto de entradas28 (31) .
93
Este concepto de Perceptrón se amplía
en las redes neuronales. De la misma
forma que en el cerebro se organiza en
capas de neuronas conectadas unas a
otras, en una red neuronal se conectan
muchos perceptrones en diferentes
capas.

Una red neuronal tiene varias capas de


neuronas (perceptrones):

Capa de entrada

Esta capa recoge las señales de entrada. Debe tener el mismo número de
neuronas que número de señales de entrada. Cada una de las neuronas se
conecta con cada una de las neuronas de la capa interna.

Capa interna

Capa formada por varias neuronas conectadas a todas las demás neuronas de
la capa de entrada. Esta capa procesa las diferentes salidas de las neuronas de
entrada y sus salidas están conectadas a cada una de las neuronas de la capa
de salida.

Capa de salida

Esta capa recoge las señales de cada una de las neuronas de la capa interna,
las procesa y obtiene las diferentes señales de salida. Como ocurre con la
capa de entrada, esta capa debe tener el mismo número de neuronas que las
señales que queramos obtener.

La estructura de cualquier red neuronal es similar a la estructura mostrada en


la figura. Lo que cambia es el número de capas internas que se añaden, el tipo
de neuronas utilizadas (pueden tener memoria, por ejemplo), o el tipo de
conexiones (puede haber incluso conexiones hacia atrás entre capas 29 (32) ).

Como la mayoría de la actividad se produce en las capas internas, el


procesamiento basado en este tipo de redes también se llama Deep Learning,
entendiendo “deep” como interno, haciendo referencia al procesado que se
realiza en las capas “internas” de la red.

94
Realmente nadie puede comprender cómo funcionan este tipo de
estructuras, por qué eligen ciertos valores internos o realizan ciertos
procesados. Por este motivo, muchas veces, por causas legales, no pueden ser
utilizadas. Por ejemplo, en entornos bancarios y aseguradores, los modelos
utilizados para dar un crédito o un seguro necesitan ser explicables para el
usuario, por si éste quiere reclamar si la respuesta es negativa. De ahí que en
estos casos se estudien otras técnicas más fáciles de entender y de las que se
pueda explicar la salida en base a las entradas.

SUEÑOS DE ROBOT

Lo ingenieros de Google en su afán por comprender cómo funcionaban ciertas


redes de reconocimiento de imágenes que habían desarrollado, les suministraban
imágenes y obligaban a la red a detectar objetos en ellas. Cuando vieron las
imágenes se quedaron sorprendidos: parecían sacadas de cuadros surrealistas de
Dalí o de imágenes imposibles de Escher, como si fueran sueños generados por
algún tipo de conciencia.

Las redes habían creado objetos


desde detalles ínfimos de las
imágenes y los habían replicado
hasta formar patrones
inquietantes. En una etapa
posterior, introdujeron imágenes
formadas solo por ruido y
forzaron a detectar cualquier
patrón en ellas. Lo que
obtuvieron fue una especie de
interpretación artística, como se
puede ver en la imagen de
arriba. Estas imágenes fueron tan
virales que crearon una página
web
([Link]
) donde se pueden subir
imágenes que puedan ser
procesadas por esta red y así
obtener “cuadros” basados en
esas imágenes.

Finalmente, dentro del campo de la inteligencia artificial, el último avance son los
sistemas cognitivos. Un sistema de este tipo se puede definir según ciertas

95
características:

Recopila información de todo tipo

Tanto estructurada como no estructurada, pública,


privada o personal, de forma automática.

Analiza la información de modo semántico

No solo detecta palabras o frases, sino que analiza la


estructura interna de la información para establecer
relaciones semánticas, tales como que “un coche es un
vehículo” a partir de una frase del tipo “existen
diferentes tipos de vehículos y uno de los más usados
es el coche”.

Crea mapas conceptuales

Con la información semántica recogida, crea una


imagen conceptual de conocimiento gracias a la
creación de un mapa de relaciones entre cada uno de
los conceptos. Así, por ejemplo, podría unir el
concepto de coche con el de bicicleta, ya que en la
información que ha recogido ambos son definidos
como vehículos. Para ello, utilizan como estructura
fundamental el grafo o red.

Usa diferentes agentes cognitivos


especializados en cada tarea

Una vez realizado este mapa conceptual ejecutan


sistemas cognitivos para encontrar información oculta
en ese mapa conceptual, buscando relaciones entre
conceptos. Estos agentes son como pequeños
programas que combinan machine learning,
programación y sistemas expertos para ir navegando
dentro del grafo e ir encontrando patrones.

96
Utilizan interfaces naturales para relacionarse
con humanos

Tanto la recogida de información como la


presentación de sus resultados se realiza a través de
lenguaje natural y visualización. De esta forma la
respuesta se organiza en forma de historias donde se
mezcla texto y gráficos para hacer más entendibles las
ideas y conocimiento que han adquirido. Estos
sistemas son capaces de responder a preguntas
realizadas en lenguaje natural (por ejemplo, “Mira a
ver si hay relación entre las ventas de ayer y el tiempo
que hizo”) sin tener prefijada ninguna respuesta.
Analizan las preguntas, revisan la información dentro
de su mapa conceptual, ejecutan los algoritmos y
agentes disponibles y preparan la respuesta en
lenguaje natural.

El sistema cognitivo más conocido en la


actualidad es Watson, desarrollado por IBM.
Para demostrar su capacidad de enfrentarse a
problemas reales, en 2011 participó en el
concurso Jeopardy ante dos de los mejores
concursantes de la historia. Este concurso no
era el típico de pregunta-respuesta, sino que la
mayoría de las pruebas necesitaban obtener la
relación que existe entre varios datos para
adivinar la respuesta a la pregunta.

Además, se introducción giros lingüísticos y juegos de palabras, por lo que, era


necesario que Watson comprendiera el lenguaje natural, la ironía o el sarcasmo
para poder entender cada pregunta. El resultado: Watson ganó el premio final de
un millón de dólares, que fue donado30 (33) .

97
Sin embargo, después de ver este concurso, John Baldini, vicepresidente de
Tecnología y Ciencia en GlaxoSmithKline, contactó con el responsable de IBM,
y le propuso trabajar con Watson para descubrir algún tipo de tratamiento
nuevo para la Malaria. Le suministraron toda la información sobre la malaria,
la composición de todos los medicamentos utilizados para el tratamiento de la
enfermedad, y algunos otros compuestos más. Analizando toda esta
información, Watson identificó correctamente todos los medicamentos anti-
malaria que existen y, además, sugirió otros nuevos 15 componentes con
potencial para ser utilizados como nuevos medicamentos para tratar la
enfermedad31 (34) .

VENCIENDO A HUMANOS

Desde que hemos podido hacer


máquinas inteligentes, siempre se ha
querido crear una de ellas que fuera tan
inteligente o más que un humano. Ya en
1996, se produjo un encuentro entre
una máquina llamada Deep Blue y el
campeón del mundo de ajedrez, Gary
Kasparov. En esa primera ocasión todavía
el orgullo humano se mantuvo a flote, ya
que fue ganado por Kasparov. Sin
embargo, un año después, en 1997, Deep Blue finalmente ganó el segundo
encuentro, marcando un hito en la historia.

De todas formas, el juego de ajedrez, aunque encierra multitud de opciones, es un


juego muy acotado y formal. La Inteligencia Artificial necesitaba demostrar que
podría vencernos en cosas que los humanos hacemos verdaderamente bien. Por
eso en 2011, otra máquina de IBM, llamada Watson, participó en el concurso
Jeopardy, enfrentándose a dos campeones históricos. La naturaleza de las
preguntas abiertas y la dinámica del concurso eran un reto para la tecnología.
Watson venció.

98
Pero, aunque se había vencido en ajedrez o en concurso televisivo, el Go, un juego
milenario donde hay más posibilidades que átomos en el universo, y donde la
capacidad de intuir qué va a hacer el contrario es fundamental. La fuerza bruta,
que había sido usada en Deep Blue, no serviría esta vez. Así que Google creó a
AlphaGo, una máquina entrenada para vencer en este juego que utilizaba las
últimas técnicas de Deep Learning. En 2016 se enfrentó a Lee Sedol, ganándole
también. Y la siguiente versión de esta máquina, AlphaZero, desarrollada en 2017
consiguió un nivel sobrehumano en ajedrez y Go en tan solo 24 horas, solo
entrenando, sin tener acceso a ninguna base de datos de aperturas o finales, como
sí se había hecho en otros casos.

Aunque estos avances en la inteligencia


artificial son y han sido espectaculares,
en los últimos años se ha producido otra
explosión en el campo de la inteligencia
artificial. La IA generativa.

Ahora todos estamos familiarizados con


sistemas como ChatGPT, DALLE,
Midjourney y otros servicios de IA que
han provocado profundos cambios en nuestros hábitos de trabajo y de [Link]
inteligencia artificial supone un gran reto, ya que se han enfocado hacia tareas
muy creativas que hasta hace muy poco eran consideradas propias de los seres
humanos y que pensábamos que estarían vedadas a este tipo de sistemas y
desarrollos32 (35) . Para poder explicar el núcleo de estas tecnologías vamos a
tener que recorrer un camino en varias fases:

Redes convolucionales

Aplicados sobre todo para el análisis de imágenes, pero que sirven como base
para entender los modelos de difusión.

Modelos Transformers

Fundamentales para los sistemas de comprensión y generación de texto, y


fuertemente relacionados con los modelos de difusión y de generación de
vídeo, ya que estos toman como entrada una cadena de texto con la
explicación de la imagen o el vídeo que se quiere obtener.

Modelos de difusión

Utilizados para la generación de imágenes a partir de texto.

99
Modelos de generación de vídeo

Similar al anterior, pero en este caso, para el vídeo.

8.4.1. Redes convolucionales

La aplicación de la inteligencia artificial a las


imágenes parte de una dificultad propia la
información digital asociada a cada imagen. Para
poder almacenarla y distribuirla, cada punto de
una imagen es codificada con un valor numérico
asociado a las características de luminancia y
color de ese punto. Es decir, cada imagen puede
ser considerada como la combinación de tres
imágenes que representan cada una un color (rojo,
verde y azul33 (36) ). Esto hace que la
información de una imagen, en un primer
momento, sea realmente la información asociada
tres imágenes.

Por otra parte, si tenemos en cuenta la estructura de red neuronal que se ha


descrito anteriormente, no es eficiente asignar a cada punto de la imagen una
neurona de entrada. Eso haría que la red neuronal tuviera que ser enorme.

Pero también, como una persona puede ver claramente, la información de un


punto de una imagen tiene una correlación muy fuerte con los puntos que están a
su alrededor. Un punto de una imagen puede formar parte de una línea recta, y
por tanto, los puntos que tenga alrededor y pertenecen a esa línea recta también
tendrán características similares. Por lo tanto, es necesario poder analizar de
forma estructural la imagen, no solo punto por punto.

100
¿Cómo se puede analizar de forma espacial una
imagen, obteniendo la información espacial alrededor
de un punto y teniéndola en cuenta para poder
obtener algún tipo de aprendizaje que nos permita
obtener un resultado utilizable? ¿Cómo podríamos
sacar cachitos de información espacial que nos
permitiera ver más allá de los puntos, y detectar
estructuras como rectas, curvas, círculos, etc.?

La herramienta matemática que podemos utilizar y que está a nuestro alcance


es la convolución. De forma genérica, la convolución es la obtención de una
nueva función a partir de la mezcla de dos funciones, haciendo que una de
ellas vaya “pasando” por encima de la otra, y así se obtiene una nueva función
que es una combinación y resumen de ambas34 (37) .

Como una imagen es una estructura espacial, la convolución puede ser entendida
como “pasar” en cada punto de la imagen una “máscara” que obtendrá de forma
más resumida la información que queremos obtener de ese punto.
Pero antes de profundizar un poco más, veamos a alto nivel las etapas de las que
se componen una red “convolucional”:

La imagen original (capa de


partida) a través de
procesos de convolución y
de agrupación/reducción
(pooling en inglés) es
reducida a capas más
pequeñas que al final sí
pueden ser introducidas
una a una en una red
neuronal clásica que
clasifica la imagen en una de las categorías aprendidas. Veamos cómo funciona
cada una de las etapas35 (38) .

Cada etapa de convolución se basa en “pasar” por la imagen un conjunto de filtros


(kernel), cada uno de ellos especializado en detectar características de la imagen.
De forma iterativa este filtro es aplicado a cada uno de los puntos, obteniendo una
capa que suele ser de tamaño inferior con información agregada de forma
espacial.

Si lo expresamos en forma de matrices se verá más claro. En este caso, se

101
considera que los valores de cada punto de la imagen solo pueden ser 0 o 1
(en realidad podríamos encontrarnos cualquier valor dependiendo de la
codificación de la imagen).

Teniendo en cuenta esto una imagen podría estar representada por


esta matriz

Un filtro también puede visualizarse como una matriz más pequeña

El centro del filtro está marcado en naranja, también se han ajustado sus
valores a 0/1 pero podrían tener cualquier valor, incluso valores
negativos:

Para hacer la convolución de la imagen lo que se hace es pasar el


filtro por cada punto de esta

Es decir, se pone el centro del filtro sobre cada punto de la imagen,


solapando cada valor del filtro sobre ese punto y los adyacentes:

102
Después de solaparse, se multiplica cada valor, y luego se suman
todos los productos

Cuando se ha solapado, se multiplica cada valor de los puntos de la


imagen por el valor de la casilla del filtro que se solapa con ese punto, y
luego se suman todos estos productos para conseguir el valor en ese
punto de la imagen resultante:

Esto se va haciendo para cada punto de la imagen

La “imagen” resultante (realmente una nueva matriz) es más pequeña que


la original, pero en cada punto se ha resumido información espacial de
cada punto y de sus puntos adyacentes:

Esto se repite para cada filtro disponible, N filtros, y se obtienen entonces


N matrices cada una con una característica de la imagen. La composición
de cada filtro y los valores asociados a cada una de sus casillas se obtiene
en la fase de aprendizaje. Es decir, cuando se entrena a la red neuronal
con imágenes específicas, se ajusta el valor de estos filtros para que se
detecten las características necesarias que permitan la clasificación
correcta de las imágenes.

103
Se utiliza un filtro específico

Lo que de verdad generan este tipo de filtros puede verse en este


ejemplo si utilizamos un filtro específico:

En este caso, este filtro detecta los bordes de las imágenes, por lo que
sirve para encontrar por ejemplo objetos en las imágenes.

Después de hacer una función de convolución para seguir reduciendo el


“tamaño” de la imagen, pero manteniendo la información espacial, se
produce un proceso de agregación (pooling). Para ello, primero se trabaja
a nivel de cada punto (casilla) de la matriz resultante para limitar los
valores a un tango determinado. Una de las funciones que más se utilizan
es la función ReLU:

Es decir, para cada punto de la matriz resultante si su valor es mayor que


cero, se deja. Si no, se pone 0. Por ejemplo:

104
Se aplica la función de muestreo para seguir reduciendo el tamaño

Y para seguir reduciendo el tamaño se aplica una función de muestreo,


reduciendo el número de puntos con un cálculo que agrega información
de varios puntos a la vez. Se suele usar una función denominada MaxPool,
que consiste en dividir la matriz resultante en cuadrículas de CxC y
quedarse con el mayor valor:

En este caso vamos a aplicar una MaxPool de 2x2:

105
Proceso iterativo de convolución y agregación

Una vez obtenidas las matrices reducidas, se vuelven a pasar por otro
proceso de convolución utilizando más filtros y por otro proceso de
agregación/reducción para que así al final podamos obtener un número
de puntos reducidos que podremos pasar por una red neuronal “clásica”
para realizar el proceso de clasificación final, y así poder saber que en una
foto hay un gato, un perro o una persona. Recordemos la estructura
general de una red convolucional:

Este proceso iterativo de convolución y agregación lo que hace es


detectar patrones, desde los más sencillos (rectas curvas), pasando por
patrones intermedios (círculos cuadrados, triángulos) y llegando a
patrones muy complejos (por ejemplo, la cara de una persona):

Las redes convolucionales han permitido grandes avances en el uso de la


inteligencia artificial para la detección, por ejemplo, de enfermedades a partir del
análisis automático de imágenes de radiografías o resonancia, permitiendo a los
médicos una mejora en los diagnósticos de este tipo de enfermedades36 (39) .

26 (29)

Ver: [Link]

106
27 (30)

Para una ampliación muy sencilla y clarificadora de todos estos métodos,


ver: [Link]

28 (31)

Para más información sobre este punto


ver: [Link]

29 (32)

Para ver ejemplos de diferentes tipos de redes, ir a:


[Link]

30 (33)

Para más información ver:


[Link]
que-tienes-que-saber o el vídeo del concurso en:
[Link]

31 (34)

Ver: [Link]
id=bdmYCgAAQBAJ&pg=PA154&lpg=PA154&dq=glaxosmithkline+ibm+watson
+malaria&source=bl&ots=PJDEBuivb9&sig=ACfU3U0Ime7Lgkh85RWurOUaHI
d3fQ9idA&hl=es&sa=X&ved=2ahUKEwi77OLFhoTmAhVOxoUKHed0D10Q6A
EwA3oECAoQAQ#v=onepage&q=glaxosmithkline%20ibm%20watson%20malari
a&f=false y [Link]
[Link]

107
32 (35)

Ver: [Link]
[Link] y
[Link]
-[Link] .

Quizás siempre haya espacio para el artista, pero está claro que los avances
de los últimos años plantean dudas sobre las afirmaciones anteriores. La
creatividad es una característica humana, pero eso no quiere decir que no
pueda ser una característica de otros “seres”, sean estos naturales o
artificiales.

33 (36)

En realidad, hay tres formas básicas de representación de color, todas ellas


intercambiables: HSB (tono, saturación y brillo), RGB (rojo, verde y azul) y
CMYK (cyan, magenta, amarillo y negro), pero la codificación RGB es, creo,
la que mejor se puede entender.

34 (37)

Ver: [Link] . Esta operación está


presenta en nuestras vidas de forma invisible, pero es base de todas las
telecomunicaciones, del procesamiento de audio y video y de otras sectores
y tecnologías básicas para la digitalización y transmisión de la información.

108
35 (38)

Para más información ver [Link]


convolucional/ y [Link]
convolucionales/, y la serie de posts en:

Codificando Bits:

[Link]
introduccion/
[Link]
convolucionales/

36 (39)

Ver: [Link]
diagnostico-imagen_2024071866985bf5ef89480001eac6a6.html

109
8.5. Transformers: aprendiendo el lenguaje
humano

Presentación de ChatGPT

El 30 de noviembre de 2022 OpenAI presentó


ChatGPT, una aplicación web que dotaba de una capa
interactiva basada en diálogo a un modelo de lenguaje
llamado GPT 3.5. Su lanzamiento fue un éxito rotundo.
En solo unos días, el 4 de diciembre, ya contaba con
más de un millón de usuarios. Cualquier usuario que
empezaba a manejarlo quedaba sorprendido de la
capacidad que tenía el modelo de lenguaje de
responder en un diálogo abierto de una forma muy
natural y rápida.

Esta tecnología ahora accesible a cualquier usuario a


través de un interfaz sencillo se basa en una nueva
arquitectura de inteligencia artificial denominada
Transformer. Combina multitud de técnicas de
machine learning de forma optimizada y paralelizable,
permitiendo que el entrenamiento y ejecución de
estos modelos sea más rápido37 (40) .

Para poder comprender un poco de su funcionamiento, es


necesario explicar varias piezas que se han ido
desarrollando los últimos años. Veremos términos como
embeddings, búsqueda de similitud de palabras, atención,
codificación de posicionamiento.

8.5.1. Embeddings: cómo codificar palabras para


que la entiendas las máquinas

110
Ya hemos visto que las redes neuronales necesitan como entrada señales
de tipo numérico. Entonces, ¿cómo podríamos pasarle algo que en un
principio tiene poco que ver con números como lo son las palabras?
Normalmente, lo que se hace es asignar un valor numérico único a cada
una de las palabras. Este proceso se denomina tokenización y puede
realizarse de varias formas, dependiendo de las características de los datos
a tokenizar y del problema que se quiere solucionar o entrenar.

Un primer acercamiento podría ser asociar a cada palabra de nuestro


diccionario un número cualquiera. Es decir, por ejemplo, si tuviéramos las
palabras “Ordenador”, “Televisor”, y “Plátano”, podíamos asignarles los
valores “15”, “25” y “30” y así con todas las palabras del diccionario:

Esta codificación es muy sencilla, pero tiene varios problemas. Uno de ellos es que
las redes neuronales son muy sensibles a las relaciones numéricas, es decir,
intentan sacar conclusiones de las relaciones que pueden observar en los valores
que les pasamos. En este caso, podría, por ejemplo, suponer que un “plátano” es el
doble de un “ordenador”, y obtener aprendizajes no reales de la relación entre un
ordenador y un plátano. Por otra parte, tampoco la codificación encierra ninguna
información de significado de cada palabra, ya que se han asignado de forma
arbitraria. La red neuronal podría obtener conclusiones erróneas de palabras que
están cercanas en valor, aunque esta relación sería incorrecta.

Para evitar al menos el primer problema, se realiza lo que se llama un “ One hot
encoding”. Se trata de crear un vector con tantas componentes como palabras
tenemos en el diccionario. Básicamente una tabla de 1 fila y N columnas, siendo N
el número de palabras en el diccionario. Entonces asignamos una de esas
componentes, una de esas columnas, a cada palabra. Para representar una palabra
como un vector lo que haremos será poner un “1” en la componente asignada a
esa palabra:

111
Escribe aquí tu texto.

Esto soluciona la dependencia de los


valores. Si consideramos que cada uno
de estos vectores representa una
palabra, podemos considerar cada
palabra como un vector en un espacio N
dimensional, y cada uno de esto vectores
serán linealmente independientes y
estarán todos a la misma distancia uno
de otros. Vamos a intentar explicarlo
simulando que solo tuviéramos las tres
palabras del ejemplo. Al tener solo tres
palabras el espacio N dimensional será
tridimensional. Entonces la representación gráfica de las palabras en ese espacio
112
tendría un aspecto como estos ejemplos.

Esta codificación hace que cada una de


las palabras esté a la misma distancia y
encima en direcciones distintas y
perpendiculares por lo que la red
neuronal podrá tratarlas sin inferir
relaciones “extrañas” entre ellas38 (41) .

Pero, como contraparte, esta


codificación hace que la representación
de cada palabra sea enorme. Cada
palabra es un vector de N componentes
en el que todos sus valores son cero menos uno de ellos. Y si queremos por
ejemplo procesar un texto de 100 palabras dentro de un diccionario de 20.000
palabras39 (42) , tendremos que pasarle a nuestro sistema de inteligencia
artificial, 100 vectores con 20.000 componentes cada uno, es decir 2.000.000 de
valores en los que solo 100 tienen un valor de 1.

¿Cómo se podría reducir este número de componentes a menos dimensiones?

Vamos a hacer un ejercicio intentando ordenar un conjunto de palabras, por


ejemplo, un listado de frutas. Cada fruta tiene muchas cualidades distintas. Pero,
para cierto tipo de problema, podíamos fijarnos solo en dos características:
tamaño y color.

113
Podemos ver que esta forma de ordenación y simplificación de dimensiones
hace que una fruta pueda ser representada por simplemente dos valores,
correspondientes al valor que esa fruta tenga en cada una de las dos
dimensiones. Por ejemplo, si suponemos que el valor máximo de cada
dimensión es 1, el limón podría representarse por el vector bidimensional (0.7,
0.4). De esta forma, si tenemos en cuenta que nuestro “diccionario” es de 12
frutas, en vez de tener que usar vectores de 12 componentes usaremos para
representar cada fruta con vectores de solo dos componentes, con el ahorro
de datos que eso supone.

Aún más, si vemos el gráfico, nos damos cuenta de que, al ordenar de esta forma,
aparece una forma de codificar también la “cercanía” de cada fruta con frutas
semejantes. Todas las frutas de un mismo color estarán en una misma vertical
(tendrán el mismo valor de la dimensión color) y todas las frutas de tamaño
parecido aparecen en la misma horizontal (tendrán el mismo valor de la dimensión
tamaño). Y las frutas que sean semejantes en ambas dimensiones aparecerán
cerca. Es decir, en el valor que hemos asignado a cada fruta ya encierra en sí cierto
significado según las dimensiones elegidas40 (43) .

Podríamos hacer esto entonces con las palabras. Podríamos reducir los
vectores one hot encoding con muchas componentes a otros vectores más
pequeños, utilizando para ellos algún tipo de reducción de dimensiones
mediante la selección de características comunes. Pero ¿cuáles serían estas
características comunes? Llegar a una lista de características a utilizar es casi
imposible. Entonces, ¿por qué no usar la inteligencia artificial para que
aprenda las características que podrían reducir las dimensiones necesarias
para representar una palabra? ¿Y qué conjunto de datos podemos usar para
su entrenamiento?

Este problema ya se planteó hace unos años. Y una de las soluciones es usar los
mismos textos que generamos los humanos para poder tener una idea de cómo
ordenamos y categorizamos a las palabras. Se puede considerar que dos palabras
están relacionadas si en multitud de ocasiones salen en las mismas frases.
Teniendo en cuenta esto, si tenemos muchos textos, podemos entrenar una red
neuronal para que pueda “aprender” cómo obtener vectores de menos
dimensiones que la que tienen los vectores one hot, pero al mismo tiempo puedan
generar una representación única para cada palabra de nuestro diccionario y que
agrupe las palabras por su “significado”, sea lo que sea ese significado para la red
neuronal. Estas representaciones de las palabras (u objetos en general) con menos
dimensiones obtenidas a partir del aprendizaje automático se denominan “vectors
embedding”.

114
Este trabajo ya fue descrito también por un grupo de investigadores de Google41
(44) , y al final ha dado
estándares en la industria
como Word2Vec, que
agrupa diversos modelos
preentrenados de creación
de embeddings y que
pueden usarse de forma
gratuita al ser código
abierto. Estos modelos
crean espacios vectoriales
(típicamente entre 100 y 1000 dimensiones) para representar las palabras de un
diccionario y para asociarlas por cercanía en este espacio multidimensional. Para
tener una idea del aspecto de este espacio se puede usar la web:
[Link] , donde podemos buscar palabras y ver las que
son más cercanas42 (45) . Por ejemplo, para la palabra “ house” podemos ver las
palabras cercanas en este espacio.

También podemos verlo de una forma sencilla, matricialmente.

Supongamos que hacemos un word embedding con 50 dimensiones:

Cada palabra estaría representada por una tabla con 50 valores 43 (46) :

Si coloreamos cada casilla teniendo en cuenta el valor podríamos


tener una representación de este tipo:

Por ejemplo, la palabra “King” quedaría como:

115
Ahora veamos cómo se representarían varias palabras relacionadas:

Como podemos ver, todas estas palabras tienen una componente


parecida, lo que indican que en esa dimensión están relacionadas
(cuadrado rojo). Además, podemos ver que por ejemplo “woman” y “girl”
son parecidas, al igual que lo son “man” y “boy”.

Algunas operaciones lógicas pueden ser realizadas como operaciones


algebraicas:

Lo sorprendente de estos embeddings y de los espacios creados es que


ciertas operaciones lógicas de significado pueden ser realizadas como
operaciones algebraicas. Por ejemplo, se pueden hacer operaciones tan
locas como:

Es decir, haciendo
operaciones matemáticas
podemos realizar
operaciones lógicas en
cuanto a significado. Al
hacer la resta de los
vectores de “King” y de
“Man”, y sumando el vector
de “Woman”, el resultado es un vector cuya palabra más cercana es “ Queen”.
116
Podemos verlo en código. En este caso la operación “ most_similar” encuentra las
palabras más cercanas a la operación de sumar “King” y “Woman” y restarle “ Man”.
Como puede verse, aparece el listado de las palabras más cercanas con una
valoración de su cercanía, siendo la palabra “ Queen” la más cercana con un valor
de 0.85.

La creación de estos embeddings y sus espacios


vectoriales asociados permiten una funcionalidad
mejorada en la búsqueda dentro de grandes
diccionarios de elementos. Un diccionario es una
estructura de información que consiste en una lista
de multitud de elementos formados por parejas de
clave-valor (key-value). La clave permite un acceso
rápido dentro del diccionario para poder obtener el
valor asociado. Es decir, nosotros podemos realizar
una búsqueda dando una clave determinada y si el
diccionario tiene esa clave, nos devuelve su valor
asociado.

En un diccionario típico, un diccionario discreto, se


entrega un valor como consulta (query) para buscar
entre las claves del diccionario. Mediante una
función de búsqueda en ese diccionario, se intenta
encontrar una clave que tenga el mismo valor que
la consulta. Si existe esa clave, el diccionario
entrega el valor asociado. Si no existe la clave que
tiene el mismo valor que la consulta, el diccionario
entrega un mensaje de “clave no encontrada”.

Sin embargo, gracias a los embeddings y los espacios vectoriales creados, se


podría crear un diccionario de tipo continuo. Imagina que creamos un
diccionario que como clave tiene los embeddings de todas las palabras que
tenemos en nuestro idioma. Entonces si pasamos como consulta un
embedding, aunque no haya un embedding igual, podemos buscar dentro de
las claves-embedding las más cercanas, ya que el espacio vectorial me permite
hacer este tipo de cálculos y devolver sus valores asociados, con un
porcentaje de semejanza.

DICCIONARIO DISCRETO DICCIONARIO CONTINUO

117
(47) (48)

Esto es lo que ha ocurrido en el ejemplo antes mencionado sobre las operaciones


lógicas que podemos hacer en los embeddings. Se ha creado un diccionario donde
la clave y el valor son los embeddings calculados dentro del diccionario total del
lenguaje.

Después se han cogido varios embeddings y se han realizado operaciones sobre


ellos (“king-man+woman”). El embedding resultante no aparece realmente en el
diccionario, pero el diccionario ha sido capaz de encontrar una palabra que se
asemeja a ese embedding y lo ha devuelto como valor buscado (“ queen”). La
semejanza se calcula mediante el producto escalar del embedding query con el de
embedding key:

Esta forma de trabajar de los diccionarios continuos y la configuración de qué


consultas lanzamos, qué claves utilizamos, qué valores guardamos en los
diccionarios y qué función de búsqueda utilizamos, es clave dentro del problema
de la comprensión y generación automática del lenguaje. Lo veremos más en
detalle, pero esto nos permite por ejemplo poder seleccionar dentro de un
contexto de una frase o de un párrafo que palabra tiene más probabilidad de
aparecer en la siguiente posición.

8.5.2. Codificar y decodificar: los Transformers

118
La gran revolución que ha sido base de los
últimos avances en la comprensión y
generación de lenguaje natural por parte de la
inteligencia artificial ha sido la utilización de
Transformers44 (49) . Un transformer no es
más un sistema que ante una entrada de
información genera otra salida de información.
Dependiendo del entrenamiento que haya
recibido y de la información que trate, puede
ser un transformer dedicado a la generación de
texto a partir de una pregunta, a hacer un
resumen a partir de un texto de entrada o
también a traducir un texto de entrada en
otros idiomas.

En todo este capítulo vamos a ir explicando conceptos que iremos añadiendo


poco a poco, haciendo que la comprensión de todos los mecanismos que
juegan un papel en este tipo de tecnologías vaya de lo más sencillo a lo más
complicado, hasta completar el diseño completo de este tipo de arquitectura
de inteligencia artificial. Así que no te extrañes que una vez explicado un
concepto se introduzca un pequeño detalle sobre lo dicho anteriormente que
puede ampliar o cambiar algo de lo ya explicado.

Si se presentaran todos estos conceptos a la vez podría ser más complicado de


entender. Empezamos, tomemos el último caso mencionado, el de un traductor.

Un transformer sería entonces una caja que, a partir de un texto en


francés, genera su traducción en inglés:

119
Si nos metemos un poco más en esa caja, vemos que tiene dos partes
diferenciadas:

Un encoder y un decoder. El encoder se encarga de “codificar” la cadena de


entrada, traducirlo en un conjunto de información que permita al
decodificador conocer las partes clave de la sentencia de entrada, su
estructura y así pueda generar la sentencia de salida:

120
La salida de cada encoder es la entrada de otro:

En realidad, si vemos un poco más en el interior, esas grandes cajas de


“encoders” y “decoders” a su vez son varios encoders y decoders puestos en pila,
esto es, que la salida de cada uno de ellos es la entrada de otroencoder o
decoder:

El encadenamiento de varios encoders permite mayor eficacia y precisión en la


respuesta. La estrategia de encadenar varias etapas similares es bastante
común. De esta forma en cada etapa el sistema de inteligencia artificial puede
aprender diferentes características de la cadena de entrada o incluir diferentes
aspectos aprendidos en la cadena de salida. Veremos también esta estrategia
cuando hablemos de los generadores de imágenes.

Lo que hay que destacar de esta imagen es que la salida del último encoder se
envía a todos los decoders para que tengan información de las características
de la cadena de entrada y puedan generar la salida de una forma más efectiva.

121
Todavía podemos profundizar un poco más dentro de losencoders y
decoders:

La estructura interna de encoders y decoders es similar. Tienen una capa de


autoatención que se centra en comprender la estructura interna de la frase y
ver qué palabras se relacionan con cada palabra de la cadena de entrada.
Cuando esta información se ha procesado, se pasa por una red Feed Forward,
que es otro término con el que se conocen las redes neuronales multicapa
“clásicas” que hemos explicado anteriormente. La única diferencia entre el
encoder y el decoder es que en este último se añade una capa de atención
encoder-decoder. De esta forma, el decoder integra la información que el
encoder ha obtenido de la cadena de entrada, y así la salida del decoder es más
precisa.

Hemos incorporado el concepto de


atención, pero ¿a qué se refiere este
proceso? En general es un proceso por el
que un sistema de inteligencia artificial
aprende la relación entre los elementos
de la información que se le pasa.
Supongamos que tenemos la frase “El
mono duerme en su árbol”. Vemos que la
palabra “su”, por el sentido de la frase, se
refiere al “mono”. Pero para una
inteligencia artificial, ¿cómo puede
aprenderlo?

Aquí entra el proceso de atención. Para ello para cada palabra (realmente como
hemos visto para cada embedding de cada palabra) dentro de la frase vamos a
obtener tres valores que nos sonarán de lo comentado con los diccionarios
continuos: una consulta (query), una clave (key) y un valor (value). La forma de
obtenerlos es usar tres redes neuronales distintas que tomando el embedding de la
palabra han sido entrenadas para generar estos valores. Vamos a verlo con una
frase más sencilla que tiene que ver con el problema de traducción que estamos
tratando: “Thinking Machines”.

122
Vemos que cada uno de los embeddings de las palabras (Ex) pasan por cada
una de las redes neuronales especializadas en obtener las queries (qx), las keys
(kx) y los values (vx). Cada una de estas redes es independiente y ha sido
entrenada justamente para obtener esos valores. Este proceso se puede
hacer en paralelo gracias a las arquitecturas hardware paralelizables como las
GPUs.

Entonces ahora hemos creado desde las palabras de entrada un diccionario


continuo con las keys y los values obtenidos de este proceso y tenemos
también las queries oportunas. Para ver la “atención” de cada palabra lo que
hacemos es ver la “similitud” de cada query de cada palabra por cada key de
todas las palabras de la frase. Esto se hace con el producto escalar, como
hemos comentado también en el tema de los embeddings.

Con esto obtenemos un listado de números que reflejan la semejanza de cada


palabra con todas las demás palabras de esa frase (se pone en verde el origen de la
query o de la key para mejor comprensión). Estos valores se pasan por un proceso
de normalización para que sus valores finales s e encuentren entre 0 y 1. Se suele
usar la función softmax45 (50) :

Con estos valores ya se ha medido la “atención” de cada palabra sobre todas las
palabras de la frase. Lo único que queda es que el módulo de atención genere los
valores de salida. Va a generar una salida para cada palabra que consistirá en la
suma ponderada de todos los valores de todas las palabras de la frase según el
valor de atención obtenido para cada una de ellas. De forma gráfica queda más
claro (de nuevo se ha dejado en verde la palabra que origina esos valores):

123
De esta forma, la salida del módulo de atención será una vector concatenado de
los diferentes values que ha obtenido de cada una de las palabras. Ponemos de
nuevo todos los pasos ahora de forma unificada:

124
Dependiendo de los valores que el módulo de atención utilice o calcule como
entradas, como queries, como keys y como values podrá ser aplicado a diversas
tareas. El caso que hemos visto es el que se denomina “auto-atención” ( self-
attention) y es utilizado en la arquitectura del transformer tanto en el encoder como
en el decoder. En el módulo del decoder además se utiliza un módulo de atención
encoder-decoder, en el que se utilizan como keys y values las salidas del encoder y
como query la entrada al módulo de atención, es decir, la salida del módulo de
autoatención del decoder. Este mecanismo se denomina de forma general
“atención cruzada” (cross-attention):

125
Pero el diseño de estos módulos de atención, tanto en los encoders como en
los decoders, también son mejorados por lo que se denomina “Atención de
Múltiples Cabezales” (Multi-Head Attention). En lo expuesto hasta ahora, el
proceso de atención lo realiza solo un cabezal. Es decir, se leen las palabras o
embeddings de entrada, se aplica las redes neuronales para obtener las
consultas, claves y valores y se realiza el proceso de atención solo una vez.
Pero lo que se hace es leer de 8 formas distintas las entradas.

Es decir, el módulo de atención consta de 8 cabezales (heads) que leen la


entrada, pero aplican redes neuronales distintas, por lo que, cada uno de ellos
presta “atención” a diferentes características de la entrada y, por tanto, sus
salidas son distintas. Es como si la entrada fuera leída por ocho personas
distintas que se fijan en cosas distintas. Al final del módulo de atención estas
ocho salidas distintas se concatenan y mediante otra red neuronal se ajusta
su longitud para que cumpla con la longitud requerida.

Adicionalmente se añade en cada


encoder y decoder otra mejora para que
se siga manteniendo de algún modo la
información que ese encoder o decoder
recibe en la entrada: las conexiones
residuales. En resumen, se trata de
añadir en cada módulo que forma el
encoder y el decoder (los módulos de
atención y el módulo Feed Forward) la
entrada que reciben a la salida que
obtienen. Si lo vemos para un bloque
encoder (a la entrada del encoder
tenemos dos palabras X1 y X2).

126
La normalización es un proceso que hace que los resultados de la suma reduzcan
su rango. La normalización es una operación que se realiza frecuentemente en los
modelos de inteligencia artificial. Reduce el tiempo de entrenamiento, evita que el
modelo solo se fije en las características con los mayores valores y quede sesgado.
En este caso la normalización se realiza teniendo en cuenta la media y la
desviación estándar de los valores que resultan de la suma de los valores de
entrada y salida46 (51) .

En esta imagen podemos ver ya todos los conceptos que hemos visto, en una
arquitectura de tranformer con dos encoder y dos decoders. Se puede ver los
módulos de autoatención y feed forward en cada encoder y decoder y los módulos
de atención encoder-decoder en cada decoder. Las flechas con guiones indican las
conexiones residuales, y las flechas con puntos el envío de la información del
encoder a cada uno de los bloques encoders:

Hasta ahora hemos visto


cómo los módulos de auto-
atención saben encontrar la
relación que tiene cada
palabra de entrada con
todas las demás. Aunque
este cálculo, de momento,
no ha tenido en cuenta la
posición de cada palabra
dentro de la frase. Es de
suponer que la relación entre palabras también se vea influenciada por la posición
que tiene cada una en la frase. Pero como esta arquitectura de transformer está
diseñada para que todas las palabras de toda la frase de entrada se analicen en
paralelo, se pueda obtener también la atención en paralelo y así optimizar todos
los cálculos, ¿cómo podemos introducir la información de posición de cada palabra
en la clase?

127
La forma de hacerlo es añadiendo un módulo de codificación posicional antes
de introducir las palabras tanto en el bloque encoder como en el bloque
decoder. No se basa en introducir una nueva componente con el valor de la
posición o sumar el valor de la posición en cada componente, ya que al final
tendríamos un valor no normalizado porque la longitud de cada frase es
distinta.

Supongamos que añadimos a cada componente de los embeddings de entrada el


número de la posición que tiene en la frase y la frase tiene 200 palabras. Entonces
a cada componente del último embedding de esta frase se le tendría que añadir
200, con lo que realmente se perdería el valor de los componentes originales,
diluyéndose en el valor de la posición de ese embedding:

Pero si tenemos en cuenta la codificación binaria del número de la posición


podemos ver ciertos patrones que nos pueden dar una pista de cómo codificar la
posición. Supongamos que tenemos una frase de 16 palabras y codificamos la
posición del 0 al 15:

Vemos que cada uno de los bits que codifican la posición (filas de la tabla) varia su
valor con una frecuencia determinada. El primer bit (fila de arriba) cambia su valor
de 0 a 1 en cada posición. El segundo bit (segunda columna) lo cambia cada dos
posiciones. Y de la misma forma, cada bit tiene una frecuencia de cambio distinta.
Y estos cambios de valor se repiten infinitamente independientemente de la
longitud de la frase.

Esto dio una pista a los creadores de este tipo de arquitectura para diseñar una

128
codificación basada en funciones periódicas que podrían añadir a los embeddings
de entrada sin distorsionar
mucho sus valores47 (52) .
En verdad, funciona como
si metiéramos cierto ruido
en la señal de entrada que
encoders y decoders
pudieran detectar y
aprender que tiene que ver
con la posición de ese
embedding en la frase.
Podemos ver cómo es ese
patrón, en el caso de unos embeddings de 64 componentes (dimensiones) y una
frase de 10 palabras.

Si tuviéramos embeddings de 64 posiciones, añadiríamos a cada componente de


ese embedding los valores que vemos en ese patrón dependiendo de la posición
del embedding en la frase. Esta forma de codificación tiene varias ventajas:

Distinción de posiciones

Cada posición en la secuencia tiene una codificación única debido a las


combinaciones únicas de los valores sinusoidales y cosenoidales.

Facilidad para aprender relaciones relativas

La diferencia entre las codificaciones posicionales de dos posiciones es


linealmente dependiente de la distancia entre las posiciones, lo que facilita
que el modelo aprenda relaciones relativas entre tokens, como la proximidad
entre palabras.

Generalización a secuencias de diferentes longitudes

Debido a su naturaleza sinusoidal, las codificaciones posicionales pueden


extenderse a secuencias más largas de las que se vieron durante el
entrenamiento sin perder precisión.

Actualmente este tipo de codificación posicional en vez de ser fija también se


puede ser entrenada y aprendida por el modelo de transformer. Así que ya
tenemos otra componente, que nos permite ver cómo se entrelazan todos los
conceptos definidos:

129
No solo se mete la codificación posicional en el bloque de encoders, sino
también en el bloque de decoders. Luego veremos que los decoders utilizan
como entrada de palabras la secuencia que ellos van generando, por lo que,
también es importante que tengan en cuenta la posición de las palabras que
han ido generando para que influya en la generación de la siguiente palabra.

Ya tenemos casi todos los elementos en su sitio. Hay que añadir uno que
tiene que ver sobre cómo obtener desde la salida del bloque de decoders la
palabra que se debe generar. Pues más o menos se sigue el camino contrario
de cuando obtenemos de una palabra un embeddig.

El último decoder genera, como todos los demás, un vector con muchas
componentes. Pero de ese vector tenemos que obtener un valor que nos indique
que palabra generar. Si nos acordamos de la codificación one hot, lo que
deberíamos obtener es un vector de tamaño igual que nuestro diccionario de
palabras, donde cada componente de ese vector esté asociado a cada una de las
palabras de ese diccionario. La palabra que deberíamos generar es la palaba
130
asociada a la componente que tenga un valor distinto de cero.

Pues ese proceso se obtiene gracias a una red neuronal muy grande y densa que
tiene como entrada el vector de salida del último decoder. Este módulo recibe el
nombre de “Linear” y obtiene de salida un vector de gran tamaño (teóricamente
del tamaño que tiene el diccionario de palabras utilizado) que recibe el nombre de
vector de logits. Este vector tiene en cada celda un valor asociado a cada una de
las palabras posibles. Para pasar los valores a probabilidades se usa una capa de
normalización softmax. Ese vector se denomina “log_probs” y tiene en cada celda la
probabilidad que tiene cada palabra de ser la siguiente en la cadena.

Entonces se selecciona la celda con mayor probabilidad, y por tanto,


la salida es la palabra asociada a esa celda:

Ahora ya podemos poner un esquema genera de untransformer que


tiene dos encoders y dos decoders:

131
Después de todo este camino ya puede ser entendible el esquema
del transformer:

Aparece en el artículo fundacional de esta arquitectura 48 (53) .

En este caso, solo aparece la estructura interna de un encoder y de un decoder,


pero podemos ver que al lado de cada uno de ellos aparece el término “Nx” lo que
indica que ese módulo (el encoder o el decoder) se repite N veces. Vemos como se
suma la codificación posicional a las entradas de cada uno de los bloques. Ya
podemos entender por qué el módulo de codificación personal incluye un símbolo
de una función sinusoidal.

Aparece la estructura interna de los encoders y decoders, con los mecanismos de


auto-atención, atención encoder-decoder (fíjate en las flechas que van desde el
encoder hasta el decoder) y el feed forward. Como vemos, los mecanismos de
atención son Multi-Head. También podemos ver las conexiones residuales que
suman la salida de cada módulo y la señal de entrada, normalizándola después. Y
finalmente, los módulos de Linear y softmax para generar, desde la salida, la
palabra resultante.

Falta un pequeño aspecto que todavía no se ha mencionado y es que el decoder


tiene un módulo de autoatención un poco modificado: “Masked Multi-Head
Attention”. El término multihead ya lo entendemos, pero el término “ Masked” es
nuevo. Podemos entenderlo si tenemos en cuenta cómo se entrena y se ejecuta el
transformer.

132
Fase de entrenamiento Fase de generación (inferencia)

(54) (55)

Ahora podemos explicar el término de “ Masked Multi-head Attention” (Atención


Multi-Cabezal enmascarada). Tanto en la fase de entrenamiento como en la fase
de generación, el decoder va recibiendo una a una todas las palabrasde la frase de
entrenamiento o de la frase que se va generando, y también las va generando
paso a paso. Pero para no perder la secuencialidad y hacer que en el
entrenamiento no se fije en las palabras que se generarán en el futuro, es
necesario que el mecanismo de atención “enmascare” las palabras futuras.

Veámoslo con un ejemplo:

133
Fase de entrenamiento:

Tenemos la frase “Je sui étudiant” que debe generar la frase “ I am a student”.
Estas son las frases que recibe como entrada para entrenarse:

<sos>
<sos> I
<sos> I am
<sos> I am a
<sos> I am a student

En la primera frase, el decoder aprende a responder con “I”. En el siguiente


paso, recibe “<sos> I” y genera “am”. Ahora recibirá “<sos> I am”. Paremos
aquí un momento.

Si el decoder no tuviera esa máscara, podría aprender a generar la palabra “ am”


a partir de la palabra “<sos>”, en vez de la palabra “ I”, por lo que, en la
generación, cuando recibiera la palabra “<sos>” generaría la palabra “ am” en
vez de la palabra “I”. Y todo ello porque en el mecanismo de atención la
palabra “<sos>” ha prestado atención a la palabra “ am”, que es una palabra
que se debería generar en pasos posteriores y de la que no debería haber
información cuando llegara la palabra “<sos>” al decoder.

Teniendo esto en cuenta, se genera una máscara para que cada palabra solo
pueda atender a las que se entregan en pasos anteriores del entrenamiento.
Podemos poner la máscara de atención que cada palabra tendría cuando
como entrada tuviera toda la frase menos una palabra:

Por ejemplo, la palabra “ I” solo atienda a ella misma y a las anteriores. Y la


palabra “a” atiende a todas las palabras.

134
Fase de generación (inferencia):

En la generación, por las mismas razones, se necesita que, al irse añadiendo


cada palabra generada, en el mecanismo de auto-atención cada palabra solo
preste atención a sí misma y a las palabras anteriores en la secuencia. Primero
para que la generación funcione de la misma manera que en el entrenamiento,
y segundo para que tampoco adelante palabras futuras de la secuencia y
provoque una desordenación de la frase que destruya el significado de la
misma.

Y hasta aquí hemos intentado explicar los Transformers, un tipo de


arquitectura que ha revolucionado la escena de la inteligencia artificial y ha
permitido crear soluciones como ChatGPT, Bert, Claude y otros servicios.

37 (40)

Para ver el artículo de referencia puedes ir a


[Link] un artículo escrito por varias personas que
trabajaban para Google.

38 (41)

Si te acuerdas de algunas matemáticas básicas, como el teorema de


Pitágoras, podrás ver que la distancia entre las palabras en este caso será de
.

39 (42)

Se calcula que el español tiene unas 93.000 palabras, son contar


conjugaciones y la utilización de prefijos y
sufijos: [Link]

135
40 (43)

La forma más sencilla de poder calcular la cercanía entre dos “frutas” es usar
el producto escalar de los dos vectores. Cuanto más alto sea este valor, más
cercanas estarán. Ver: [Link]

41 (44)

El artículo original está


en: [Link]
[Link]

42 (45)

Lo que se hace en esta web es reducir todavía más la dimensionalidad de


este espacio de embeddings para que pueda representarse en 2D o 3D,
haciendo que las palabras que están cerca en el espacio multidimensional
también lo estén en una representación gráfica que podamos ver.

43 (46)

Ver: [Link]

136
Diccionario discreto (47)

Diccionario continuo (48)

44 (49)

El artículo que dio origen a esta arquitectura de red neuronal se puede


encontrar en: [Link]

137
45 (50)

Ver: [Link]

46 (51)

Para más detalle, cada valor normalizado se obtiene aplicando está fórmula
a cada componente del vector resultante de la suma:

Siendo el valor normalizado, el valor sin normalizar, la


media de todos los valores que aparecen en el resultado de la suma, y
la desviación estándar de todos los valores que aparecen en el
resultado de la suma. Si has dado estadística, esta forma de normalización es
similar a la que se hace para estandarizar una distribución normal a una
distribución normal de media 0 y desviación estándar 1 ( N(0,1) ).

138
47 (52)

La codificación que se utiliza en el diseño original de los Transformers utiliza


las funciones periódicas cos() y sen():

Donde:

pos es la posición del token en la secuencia.


i es la posición dentro del vector de embedding.
dmodel es la dimensión del espacio de embeddings, el número de
componentes que tienen los embeddings (típicamente 512 o 1024 en
los Transformers).

Usándose la primera fórmula para meter la codificación en las componentes


pares de los embeddings y la segunda para las componentes impares.

48 (53)

Recordemos otra vez el link al artículo: [Link]

Fase de entrenamiento (54)

139
Primer paso:

En la fase de entrenamiento se pasan frases al encoder, que de una vez


lee toda la frase y genera las Keys y Values correspondientes que tienen
la información de toda la frase de entrada. Remarcar de nuevo que se
hace de una sola vez, lo que optimiza muchísimo esta fase:

140
Segundo paso:

Ahora el decoder tiene las Keys y


Values del encoder y va a
comenzar a entrenarse en la
salida. La generación de salida se
va a hacer palabra a palabra, y
cada vez se le pasara en orden
una palabra nueva de la frase a
conseguir. Como fase de entrada
al decoder se le va a pasar la
frase que queremos que genere,
pero como hemos dicho palabra
a palabra. Por ello le pasaremos
la frase traducida, pero
“desplazada a la derecha”, es
decir, se añade al principio un
carácter inicio de frase <start of
sentence> o <sos> (se puede ver
esta fase como “Output (shifted
right)” en el esquema general la
entrada del decoder).
Preparamos la frase de entrada
“<sos> I am a student”, y
pasamos la primera palabra
“<sos>”.

Los decoders entonces generan la primera palabra de salida.


Supongamos que lo hacen bien y genera “I”.

141
Siguientes pasos:

En los siguientes pasos se van añadiendo más palabras de la frase a


encontrar. Es decir, siguiendo el ejemplo, en el siguiente paso se
introduce la cadena “<sos> I”. Entonces el decoder genera una nueva
palabra, supongamos que lo hace bien y genera “am”. Generamos otro
paso con todas las palabras encontradas “<sos> I am” y dejamos que
genere la salida. Así, palabra a palabra, le vamos pasando toda la frase
de salida y el decoder aprende a generar la salida correcta. Finaliza
cuando le llega una señal de fin de frase.

Corrección de errores:

Ante errores en la salida del decoder, se mide el error y se optimizan


todos los parámetros tanto de los encoders como de los decoders. Es
esencial también trabajar con el encoder porque también tienen que
aprender a generar la mejor representación de la frase para que los
decoders puedan trabajar más eficientemente.

Fase de generación (inferencia) (55)

142
Primer paso:

Similar a la fase de entrenamiento, se le pasa al encoder toda la frase a


traducir. Supongamos que le pasamos la frase “ Il est sportif”/”He is an
athlete”. El encoder lee toda la frase a la vez y genera las Keys y Values
correspondientes que tienen la información de toda la frase de entrada.
Remarcar de nuevo que se hace de una sola vez, lo que optimiza
también la fase de generación:

Segundo paso:

Ahora el decoder tiene las Keys y


Values del encoder y va a
comenzar a generar la salida. La
generación de salida se va a
hacer palabra a palabra, y cada
una de las palabras que genera
se volverán a meter de nuevo
como entrada.

Como fase de entrada al decoder


se le va a pasar el carácter inicio
de frase <start of sentence>. Los
decoders entonces generan la
primera palabra de salida.
Genera la palabra “He”.

143
Siguientes pasos:

En los siguientes pasos se van añadiendo las palabras que se van


generando. Es decir, siguiendo el ejemplo, en el siguiente paso se
introduce la cadena “<sos> He”. Entonces el decoder genera una nueva
palabra “is”. Generamos otro paso con todas las palabras generadas
“<sos> He is” y dejamos que genere otra salida.

Así, palabra a palabra, le vamos pasando toda la frase de salida y el


decoder genera la salida paso a paso, introduciendo en el siguiente paso
todas las palabras generadas. Finaliza cuando le llega una señal de fin de
frase.

144
8.6. Modelos de difusión: sacar el ángel de la
piedra
Se dice 49 (56) que Miguel Ángel Buonarroti dijo sobre su gran obra “ David”:

“Ho visto un angelo nel marmo e ho scolpito fino a


liberarlo”
“He visto un ángel en el mármol y lo he esculpido para
liberarlo”

Al igual que con el lenguaje, parecía una tarea imposible por parte de la
inteligencia artificial crear imágenes con contenido artístico. Ya había
probado la inteligencia artificial que era excelente para analizar, clasificar y
transformar el contenido de imágenes, fotografías, dibujos etc. (sobre todo a
las redes convolucionales). Sin embargo, también en los últimos años se ha
experimentado un enorme desarrollo en sistemas de inteligencia artificial que
generan imágenes e incluso vídeos. Y, aunque no era la idea origina l, es
verdad que se encargan de sacar esas imágenes de la nada. Aunque en este
caso la “nada” se trata más bien de ruido.

Los modelos de generación de imágenes se basan en lo que se denominan


modelos de difusión. La base de estos modelos puede entenderse gracias a un
artículo publicado por los creadores de Stable Diffusion, uno de los modelos de
generación de imágenes de código abierto50 (57) .

8.6.1. Proceso de difusión


El proceso central de estos sistemas
es el proceso de difusión51 (58) . En
este proceso a las imágenes originales
se les va añadiendo ruido en pasos
sucesivos. Si la cantidad de ruido que
se añade en cada paso es pequeña,
pero lo hacemos muchas veces, al
145
final tendremos una imagen que será
completamente ruido gausiano. Si se
siguen ciertas reglas, también
seremos capaces de obtener la
imagen original desde esa imagen de
ruido. Adicionalmente, también
podemos interpolar entre pasos. Es
decir, si tenemos, por ejemplo, la
imagen con ruido en el paso 2 y en el
paso 4, mediante interpolación
podemos obtener la imagen en el
paso 3:

Como vemos en el esquema, a la imagen original x 0 se le va añadiendo un poco de


ruido en cada paso, para que al final aparezca una imagen que es ruido gausiano
totalmente aleatorio. Pero como hemos dicho, si se ha añadido el ruido siguiendo
unas reglas, se puede a partir de la imagen xT obtenerla imagen x T-1, y de la
imagen xT-1 la imagen x T-2 y así llegar hasta la imagen x 0.

¿Cómo podemos entonces hacer el proceso contrario utilizando la inteligencia


artificial? Lo que hacemos es entrenar una red neuronal en cada uno de los pasos
para que estime qué ruido hay en cada imagen. Haciéndolo paso a paso, ya que el
ruido en cada paso es pequeño, podemos controlar el error y hacer que la red
neuronal aprenda poco a poco a estimar el ruido en ese paso, y quitando el ruido,
podemos recorrer el camino contrario y llegar a la imagen real.

Para entrenar a esta red neuronal en cada uno de los pasos entonces seguiremos
estas fases:

146
Generamos datos de entrenamiento

Cogemos la imagen de entrada a un paso, generamos ruido y se lo añadimos.


En este caso lo hemos hecho para la imagen y el paso x0 pero vale para
cualquier imagen en cualquier paso.

Entrenamos a la red neuronal para que detecte el ruido que le hemos añadido
a la imagen

Esto se hace de forma gradual, la red en la primera pasada detecta una


cantidad de ruido. Comparamos esa salida con el ruido original que hemos
añadido (y que conocemos perfectamente). Si es igual, terminamos el
entrenamiento. Si no, volvemos hacia atrás y la red neuronal se autoajusta
para dar una salida más parecida al ruido original:

Repetimos este proceso en todos los pasos

Esto lo hacemos para todos los pasos y así tendremos para cada paso una red
neuronal adaptada que detecta el ruido en cada paso.

147
Para crear la imagen original a partir del ruido

Lo que haremos será aplicar las diferentes redes neuronales paso a paso.
Cogeremos la imagen del paso xT, detectaremos el ruido con la red neuronal
del paso T, y se lo restaremos para conseguir la imagen xT-1. Así lo haremos
hacia atrás hasta llegar a la imagen original:

8.6.2. Red U-Net


La red neuronal que vamos
a utilizar a tratarse de
imágenes será un caso
particular de red
convolucional, que vimos
que eran especialmente
buenas para el tratamiento
de la imagen. Exactamente
utilizaremos la red
denomina U-Net 52 (59) .

Este tipo de redes se han utilizado con mucho éxito en la segmentación de


imágenes. Teniendo una imagen como entrada, la segmentación consiste en
asignar cada pixel de la imagen a un grupo de píxeles que forman una zona
característica de la misma. En la imagen de ejemplo podemos ver que a partir de la
imagen original se han detectado varias zonas, como el puente la calzada, los
edificios, y el modelo ha asignado cada punto de la imagen a una de estas zonas.

La arquitectura U-Net se basa en el uso de redes convolucionales. Mediante la


combinación de varias capas de convolución y de agrupación (pooling) la red

148
aprende primero a reducir toda la información de la imagen para, a partir de ahí,
crear una nueva imagen, en este caso el ruido que tiene, a partir de la operación
inversa y simétrica. Por tanto, al U-Net tiene dos fases diferenciadas, el
codificador y el descodificador que le da su aspecto característico de “U”:

En la fase de codificación la imagen pasa por varias etapas de convolución y


submuestreo. Como hemos visto, la etapa de convolución crea muchas capas y la
etapa de submuestreo (en este caso con maxpool) reduce el tamaño de las mismas.
La salida de cada etapa se vuelve a pasar por otra etapa de convolución y
submuestreo, hasta que a final queda resumida la información de la imagen.

En la fase de descodificación, esa información pasa por proceso contrario.


Mediante etapas de sobremuestreo y convolución transpuesta se va generando
una imagen cada vez más grande, hasta llegar a la salida. Las “ skip connection”
permiten que información de las diferentes etapas de codificación lleguen a la
etapa de descodificación, donde se concatenan con la salida de la etapa anterior y
sirven para hacer más precisa la salida.

8.6.3. Modelo Stable Diffusion


Una vez explicado el proceso de difusión y cómo funciona una red U-net,
podemos acercarnos a la explicación de los modelos de difusión53 (60) . Según el
artículo original de los creadores de Stable Diffusion, un modelo de difusión tendría
esta arquitectura:

149
Parece complicado, pero vamos a explicarlo teniendo en cuenta que se puede
entender como varios procesos funcionando conjuntamente:

Proceso de autoencoder

El último elemento realmente es un módulo accesorio, pero que


simplifica mucho los procesos de difusión.

El entrenamiento y la generación son procesos


muy costosos en términos de procesamiento. Que
estos procesos se hagan sobre imágenes muy
grandes implicaría tener ordenadores muy
potentes, y el modelo Stable Diffusion está
diseñado para que se pueda ejecutar en
ordenadores personales, aunque eso sí, con
grandes tarjetas GPUs.

Por este motivo, este módulo denominado


autoencoder lo que hace es en un primer
150
autoencoder lo que hace es en un primer
momento, comprimir las imágenes de
entrenamiento para que en un tamaño más
pequeño se pueda mantener toda la información
de las mismas (la caja marcada como

, un embudo que reduce la imagen).

En una segunda fase lo que hace es recoger la


información generada por la última red U-Net del
proceso de difusión inversa, y como tiene
también un tamaño inferior, la amplia hasta el
tamaño “normal” (la caja marcada como D, un
embudo que amplía la imagen). Estas dos cajas
son en realidad otras redes neuronales
entrenadas para realizar esta compresión
151 y
entrenadas para realizar esta compresión y
descompresión. Se entrenan también al mismo
tiempo que se entrenan los diferentes módulos
(proceso de difusión de entrenamiento y
condicionamiento textual). De esta manera, se
consigue una optimización perfecta.

Teniendo en cuenta esto, se dice que se trabaja en dos espacios


distintos. El espacio de píxeles es el espacio original de las
imágenes, con los tamaños originales. Y el espacio latente es el
espacio interior al modelo donde se usan y se generan
imágenes comprimidas por el autoencoder.

Proceso de difusión (Entrenamiento)

Esta fase aquí representada es la que hemos visto antes cuando


se hablaba de cómo introducir ruido en las imágenes para que
las redes U-Net aprendan a cómo detectarlo y quitarlo de las
imágenes. Podemos ver, como ya hemos explicado, que este
proceso consiste en muchos pasos en lo que se va añadiendo
ruido hasta que conseguimos llegar a una imagen que solo es
ruido gausiano. Esos pasos están representados por los estados
z y zT.

Como ya se ha introducido, en esta fase se utiliza el


condicionamiento textual para que también se aprenda a
relacionar las diferentes palabras de la descripción. En esta fase
se aprenden las matrices de obtención de las Queries, Keys y
Values que se utilizarán para guiar la generación de la imagen a
través de un proceso de “Atención Cruzada” (Cross-atention). Es
un proceso similar al que se sigue en los Transformers en los
decoders para integrar la información que llega de los encoders.

152
Condicionamiento textual

Cuando hemos entrenado las redes U-Net que


conforman el proceso de difusión, esas redes
están preparadas para generar imágenes a partir
de ruido. Pero si metiéramos ruido directamente,
empezaría a generar imágenes basadas en las que
se utilizaron en su entrenamiento, pero de una
forma aleatoria. Para poder dirigir la generación
de imágenes, en la fase de entrenamiento
también se mete información de la descripción de
las imágenes de entrenamiento. En los conjuntos
de datos de entrenamiento también se incluyen
palabras, descripciones de esas imágenes hechas
por seres humanos.

Para poder usar esas descripciones y guiar el


aprendizaje, se utiliza un modelo de red neuronal
(por ejemplo, CLIP54), que lo que hace es
transformar la descripción textual asociada a las
imágenes con las características de esas mismas
imágenes. Para ello, se calcula embeddings para la
descripción textual, de la misma forma que hemos
visto para los modelos de lenguaje, y también
calcular embeddings (representaciones) para las
imágenes, lo que resume la información de la
imagen. El modelo consigue que ambas
descripciones (la “textual” y “visual”) coincidan en
ese espacio multidimensional. Esos embeddings
calculados serán utilizados tanto en la fase de
entrenamiento, para que el modelo aprenda a
asociar el proceso de difusión con la descripción
textual, como para la fase de generación, guiando
la generación de la imagen desde el ruido inicial.

153
Proceso de difusión (Generación)

En este elemento es cuando se hace el proceso inverso de


difusión, es decir, el proceso que desde una imagen con ruido
se transforma en la imagen buscada, gracias a las diversas
etapas U-Net que se han entrenado.

Este proceso se ve en la parte mostrada. Consiste en muchas


unidades U-Net secuenciales que hacen el proceso inverso (de
zT a z). Como entrada a este módulo de difusión inversa se
recibe una imagen de ruido gausiano aleatorio y la información
del módulo de condicionamiento textual generada a partir del
texto con la descripción de la imagen a generar. La imagen
muestra una U-Net ampliada. Los trapezoides que primero se
hacen más pequeños y luego crecen simbolizan la estructura en
“U” de la red neuronal. Las flechas discontinuas en gris son las
“skip connnections” que antes hemos mencionado en la
explicación de las U-Net.

La única diferencia con lo que allí explicamos son los


rectángulos en amarillo con las letras Q-K-V. Indican que las U-
Net usan el condicionamiento textual para dirigir el proceso de
difusión inversa. A partir del módulo de condicionamiento
textual obtienen las claves (Keys – K) y los valores ( Values – V),
que serán utilizados junto con las consultas (Queries – Q) que se
obtengan de las diferentes imágenes parciales que vayan
generando cada unidad U-Net 55. De esta forma el proceso de
difusión se dirige hacia la imagen descrita por el texto
introducido como descripción de la imagen a generar. Esta
información, como se ve (flechas negras que salen del módulo
de condicionamiento contextual) llega a todas las unidades U-
Net, que poco a poco van transformando el ruido en la imagen
buscada.

154
49 (56)

Realmente parece que esta frase y otras sobre “sacar” las esculturas que ya
estaban en la piedra parece que no fueron dichas por el gran Miguel Ángel,
pero “se non è vero è ben trovato”. Otra frase en el mismo sentido “En cada
bloque de mármol veo una estatua tan claramente como si estuviese frente a mi
formada y perfecta en actitud y acción. Solo tengo que eliminar las paredes de
piedra que la aprisionan, y revelar a otros ojos lo que los míos ya han visto”
parece ser de un poeta americano llamado Henry Wadsworth Longfellow en
su obra “Michel Angelo” Parte 3 Escena VI.

50 (57)

Es el artículo High-Resolution Image Synthesis with Latent Diffusion


Models: [Link]

51 (58)

Si se quiere ampliar los fundamentos matemáticos, puede verse el vídeo:


[Link]

52 (59)

Para saber un poco más puedes ir a: [Link]


que-tienes-que-saber

53 (60)

Si se quiere profundizar se puede ver: [Link]


stable-diffusion/

155
8.7. Generando vídeos: combinamos los
Transformers y los procesos de difusión

Cuando ya hemos llegado hasta aquí, una vez


vistos los modelos de difusión, se podía pensar
que para la generación de vídeos se pueden
utilizar las arquitecturas de estos mismos
modelos. Si un vídeo no es más que una secuencia
de imágenes fijas, podríamos usar los modelos de
difusión para que generaran cada una de las
imágenes que compondrían el vídeo final.

Pero se nos presenta una dificultad añadida. En las imágenes estáticas, cada
punto de la imagen está correlacionado fuertemente con los puntos que tiene
alrededor, por lo que la utilización de U-Nets, una arquitectura basada en redes
convolucionales, es idónea y capaz de extraer estas correlaciones espaciales.

Sin embargo, aparece otra dimensión añadida: el


tiempo. Cada punto de la imagen también tiene
relación con la información contenida en ese mismo
punto y los que tiene alrededor, pero de otras
imágenes anteriores y posteriores. Por eso, sería
necesario que tuviera en cuenta esa información, es
decir que “prestara atención” a esos puntos.

Escribe aquí tu texto.

Y si has visto esas palabras, enseguida te


habrán venido a la mente los
Transformers. Pues básicamente, los
últimos modelos de generación de vídeo
como Sora56 (61) , lo que utilizan es una
arquitectura que combina los modelos
de difusión y los transformes.
Específicamente es un modelo de
difusión que utiliza en vez de U-Nets
unidades Transformers. Esta arquitectura
se suele denominar como DiT (Diffusion

156
Transformers). La estructura de estos
modelos es la de esta imagen57 (62) :

No vamos a profundizar en la arquitectura, pero sí vamos a explicar un poco cómo


se gestiona esa nueva dimensión temporal. Para poder procesar el vídeo, lo que se
hace es transformar todas las imágenes del vídeo en una estructura
tridimensional, como si fuera un gran prisma. Ese gran prisma es dividido en lo que
se llama patches (parches), que son unidades más pequeñas en la dimensión
espacial y en la temporal. En este ejemplo se generan patches de 32x32x4, lo que
significa que son cuadros de 32x32 píxeles de 4 fotogramas consecutivos.
Podemos imaginar este proceso como si con el vídeo generáramos un cubo de
Rubik, siendo cada una de las piezas cada uno de los patches. En esta imagen se
puede ver que al final es como un cubo dividido en cubitos más pequeños. Luego
estos cubitos se ponen uno detrás de otros para enviarlos al modelo.

Las unidades de Transformer utilizan un módulo de auto-atención multicabezal.


Para que funcionen eficazmente, se utiliza una codificación posicional que
combina la posición espacial y la temporal. Se suele usar una posición basada en
funciones de seno y coseno (como se ha explicado en el capítulo de los
Transformers). Además, también se añade la información del condicionamiento
textual. Para entrenar al modelo, se trabaja igual que con los modelos de difusión.
A los vídeos de entrenamiento se les añade ruido en la dimensión espacial y
también en la temporal en pasos sucesivos. En cada paso, la unidad Transformer se
entrena para detectar el ruido introducido. Así se entrenan las diferentes unidades
transformer en cascada. Para generar el vídeo, se introduce un vídeo que es ruido
aleatorio. Este vídeo es codificado en el espacio latente a través de un
autoencoder. Se añade también la codificación posicional y el condicionamiento
textual. Ese vídeo va pasando por las diversas unidades Transformer, quitando en
cada paso el ruido detectado hasta que se origina la imagen final. Estas
estructuras para la generación de vídeo se han demostrado escalables. Esto quiere
decir que se ha demostrado que la calidad de la salida mejora con la subida de la
capacidad computacional que se utilice en el modelo, lo que permite una línea de
mejora a explotar.

157
56 (61)

Ver: [Link]

57 (62)

El artículo original donde se hablan de estos modelos está en:


[Link]

158
Bibliografía

Al ser Big Data un concepto muy amplio, la información más actualizada y más en
detalle se encuentran en las mismas webs de las empresas que desarrollan las
soluciones, en foros y blogs online. Se han puesto referencias en los diferentes
apartados que pueden servir de información para ampliar cada punto.

De todas formas, se indican algunos libros generalistas:

De la Serie “Big Data para Dummies”

“Big Data para Dummies” – Judith Hurwitz , Alan Nugent, Fern Halper,
Marcia Kaufman
“Data Sciencie for Dummies” – Lillian Pierson
“Big Data Analytics Infrastructure for dummies” – Barry Schoenborn
“Big Data” – Bernard Marr
“Las bases del Big Data” – Rafael Caballero y Enrique Martín
“Big Data. El poder de los datos” – Bill Schmarzo
“Big Data. La Revolución de los Datos Masivos” – Kenneth Cukier y Viktor
Mayer-Schönberger
“Big Data en la práctica” – Bernard Marr
“Big Data para directivos” – Genís Roca y Albert Solana
“Big Data” – Luis Joyanes Aguilar
“Big Data: Atrapando al Consumidor” – Josep Francesc Valls
“Big Data para CEOs y Directores de Marketing: Cómo dominar Big Data
Analytics en 5 semanas para directivos” – Isaac Gonzalez Diaz

Para los últimos apartados de inteligencia artificial se recomienda seguir o acudir a


estos canales o páginas web:

Instituto Humai:

Su github con código, cursos y muchísimo material


[Link]
Su página web [Link]
Y su canal de youtube
159
[Link]
Carlos Santana (DotCSV): uno de los mayores divulgadores de IA en español

Su canal en youtube [Link]


Su perfil de X: [Link]
Javi López: emprendedor y autodidacta en IA

Su perfil de X: [Link]

160
Fin de módulo

¡Enhorabuena!

Has finalizado este módulo.

161

También podría gustarte