lunes, 1 de junio de 2020

Cuatro problemas éticos ligados al Procesamiento del Lenguaje Natural (NLP)


La ética es un tema que cada vez recibe más atención en relación con la Inteligencia Artificial, a veces con claridad de ideas, y a veces no tanto. Pero parece más un tema de webinars, eventos, debates o libros de divulgación, más que de obras de contenido tecnológico.

Y sin embargo, me he topado recientemente con ese tipo de consideraciones éticas en un libro por lo demás muy técnico y además centrado no en la Inteligencia Artificial como tal, sino específicamente en el Procesamiento de Lenguage Natural (NLP, 'Natural Language Processing') como es el 'Introduction to Natural Language Processing' de Jacob Eisenstein.

En el primer capítulo, donde el autor aporta unas ideas de carácter general, dedica una 'esquinita' a mencionar cuatro problemáticas éticas del procesamiento del lenguaje natural. Son estas:

  • Accesibilidad: Es decir, si el tratamiento del lenguaje se hace de forma general o para colectivos específicos. Por ejemplo, ¿Qué idiomas se tratan mediante lenguaje natural? ¿Puede abrir esto alguna forma de brecha digital entre países o culturas?

  • Sesgos: Es uno de los problemas mencionados habitualmente en las consideraciones éticas sobre la Inteligencia Artificial. En este caso, y como hablamos específicamente de procesamiento de lenguaje natural, lo que el autor insinúa es que es posible que se trasladen al tratamiento automatizado del lenguaje sesgos existentes en nuestra forma de hablar, pensando, me imagino en, por ejemplo, 'dejes' no inclusivos de algún tipo.

  • Fuerza de trabajo: Debo reconocer que no estoy seguro de entender del todo lo que plantea el autor en este caso concreto. En esencia, se pregunta dos cosas que no veo del todo conectadas. Por un lado, el origen de los conjuntos de datos y anotaciones sobre las que se trabaja para entrenar al algoritmo. Por otro, si el beneficio que se obtenga del procesamiento de lenguaje natural se comparte con todos aquellos que han aportado algo (no se si se refiere a trabajadores como tal, o a personas que han aportado sus conversaciones o textos l que conectaría con la primera cuestión).

  • Privacidad y libertad de Internet: ¿Afecta el procesamiento de lenguaje natural a gran escala al derecho a comunicaciones privadas y gratuitas? ¿Qué papel puede jugar esta tecnología en regímenes totalitarios o intervencionistas?

No veo del todo nítidas todas las problemáticas que el autor intenta plantear pero me ha llamado la atención este foco ético en NLP que además me parece saludable. Seguiré atento al desarrollo que Eisenstein pueda hacer más adelante en el libro o que pueda encontrar en otra fuente.

viernes, 29 de mayo de 2020

El brillante maridaje de la Inteligencia Artificial y el Cloud Computing


Más de una vez hemos comentado en artículos de este blog algunos de los motivos que impulsan el crecimiento actual de la Inteligencia Artificial. Hace algo más de un mes, por ejemplo, veíamos los argumentos que aportaba François Chollet para el caso específico del Deep Learning donde nos hablaba de progresos en el hardware y la algoritmia y también de disponibilidad de datos. Pero hay otro factor, creo, a tener muy en cuenta en este desarrollo, y tiene que ver con el Cloud Computing.

En efecto, el Cloud Computing, y sobre todo, la apuesta de los grandes del mundo de la Inteligencia Artificial por el Cloud Computing, son un factor democratizador y acelerador de la Inteligencia Artificial, no sólo a nivel de desarrollo científico sino, sobre todo, de accesibilidad para las empresas y entidades de formación y para la realización de implantaciones.

Y es que esos 'grandes' ponen a disposición de terceros, de una forma muy accesible, cuando no gratuita, servicios y capacidades cognitivas. Ya vimos en un artículo anterior, por ejemplo, una muestra de los servicios cognitivos en Azure. Y también, hace no tanto hablábamos de la importancia del cloud computing y la apuesta de 'los grandes' en el caso específico de los chatbots.

Esa apuesta por el Cloud Computing como soporte para la Inteligencia Artificial posibilita, en primer lugar, esa disponibilidad de algoritmos ya entrenados para su empleo en soluciones personalizadas. Pero también da acceso a unas capacidades computacionales amplias que en otro caso serían costosas. Así, por ejemplo, de cara a entrenar un algoritmo de Deep learning podemos disponer de GPUs ('Graphical Processing Unit')... sin disponer de ellas. Porque los proveedores de Cloud sí disponen de GPUs en sus Centros de Proceso de Datos y servicios que permiten a cualquiera entrenar a sus algoritmos sobre esas GPUs. Y es sabido que la velocidad de trabajo de una GPU para cálculos como los necesarios en Deep Learning es muy superior al de una CPU de las máquinas de que habitualmente disponemos los particulares y las empresas.

A la importancia de acceder a esa capacidad de computación que se encuentra en la nube, se refiere Jordi Torres al final de su libro 'Python Deep Learning' cuando dice:

estamos ante una nueva era de crecimiento e innovación del Deep Learning en las empresas gracias al Cloud Computing que no solo ha democratizado la computación sino que también lo está haciendo con el Deep Learning. En el documento AI Index Report se describe que en solo un año y medio, el tiempo requerido para entrenar un sistema de clasificación de imágenes en el cloud se ha reducido a unas tres horas (en Octubre de 2017) a unos 88 segundos (en Julio de 2019). El motivo es que los grandes proveedores de Cloud se han embarcado en una carrera frenética para dominar el mercado de Deep Learning ofreciendo cada vez más servicios en esta área.

La curva del AI Index Report que visualiza los datos a que se refiere Jordi Torres es la siguiente:


Tiempo de entrenamiento de un algoritmo de clasificación de imágenes


Tengo que reconocer que hace ya unos cuantos años, cuando comencé a entrar en contacto con el concepto del cloud computing, cuando éste era más una idea y una promesa que una realidad, no hubiera creído que se iba a desarrollar tan correctamente, tan ampliamente y con tanto impacto como está sucediendo. El cloud computing está cambiando de forma profunda, aunque casi inadvertida, la forma de gestionar las Tecnología de la Información, y la forma de desarrollar e implantar soluciones. Pero no sólo eso, como demuestra su maridaje con la Inteligencia Artificial, está convirtiéndose en un fantástico motor de progreso tecnológico, especialmente en lo que a difusión e implantación se refiere.

En ocasiones, las promesas grandilocuentes de las posibilidades tecnológicas se han convertido en decepciones y fiascos, pero en el caso del Cloud Computing, creo que es una brillante realidad.

miércoles, 27 de mayo de 2020

Catálogo de componentes de redes neuronales (y IV): optimizadores


Vamos a cerrar, al menos por el momento, esta serie de artículos dedicados a censar elementos de diseño de las redes neuronales, y lo haremos hablando de los optimizadores, es decir, esa pieza nuclear del aprendizaje que, tomando como dato de entrada el valor de la función de pérdida, decide cómo modificar los pesos de la red para conseguir que el resultado se acerque, en cada paso, un poquito más al objetivo deseado.

Ya anticipamos el algoritmo más 'típico' que podemos en este caso que el descenso de gradiente ('Gradient descent') cuando comentamos las intuiciones sencillas que existen tras muchos algoritmos en apariencia, y quizá no tan en apariencia, complejos.

Vimos que, en el fondo, el descenso de gradiente no es más, como intuición, que imaginar el perfil de la función de pérdida como una curva o superficie e ir 'bajando' en pequeños pasos por esa curva/superficie, en la dirección de máxima inclinación, hasta encontrar el 'valle', el punto más bajo, momento en que habríamos minimizado el error.

El descenso de gradiente ('Gradient Descent', GD) es un optimizador popular y la base de algunos otros. Vamos a ver, brevemente, el censo de otros optimizadores.

  • BGD ('Batch Gradient Descent'): Es una variante del gradient descent en que, en cada iteración, tomamos el conjunto entero de datos de aprendizaje para calcular el valor del gradiente. Es un algoritmo relativamente sencillo de entender, pero de convergencia lenta.

  • SGD ('Stochastic Gradient Descent'): Es el extremo contrario: en lugar de usar todo el conjunto de datos para calcular el gradiente y actualizar pesos como hace BGD, en este caso en cada iteración utilizamos un único punto de datos con lo que tenemos una convergencia mucho más rápida. A cambio, tiende a presentar ciertas inestabilidades y fluctuaciones.

  • 'Mini-batch Gradient Descent': Es el punto intermedio entre los dos anteriores. En este caso, en cada iteración elegimos un conjunto más o menos reducido de puntos de datos.

  • Nadam ('Nesterov-accelerated adaptive moment stimation') Este es un optimizador que utiliza el concepto de 'momento'. La idea intuitiva es acelerar más o menos el descenso de la curva de gradiente, según la pendiente de la misma, yendo más rápido en las direcciones en que la curva de la función de pérdida es más escarpada y más lento en las direcciones en que la curva presenta un perfil más suave. Y la forma de hacerlo matemáticamente es teniendo en cuenta, no sólo la pendiente actual, sino también la pendiente de las iteraciones anteriores con lo cual tenemos una cierta estimación de aceleración o deceleración.

  • Adagrad ('ADAptive GRADient algorithm') Un método que introduce el aprendizaje adaptativo, en que el nivel de variación de los parámetros depende de estos. La idea geométrica es que, si en el descenso de gradiente avanzamos en la dirección de la mayor pendiente en cada momento, pudiendo esa pendiente no apuntar directamente al mínimo global, en Adagrad intentamos que la dirección de descenso, aunque no sea la máxima, sí apunte más en la dirección del mínimo. Presenta, eso si, el problema de una tasa de aprendizaje cada vez menor, que es lo que intentan resolver los siguientes optimizadores.

  • RMSprop ('Root Mean Square prop'): Utiliza una media móvil de los cuadrados del gradiente y normaliza ese valor empleando para ello las magnitudes recientes de los gradientes anteriores. La normalización se realiza, evidentemente, por que si no, el hecho de elevar al cuadrado hace que, caso de no normalizar, tengamos un valor de gradiente exageradamente alto (el cuadrado, en concreto).

  • Adam ('ADAptive Moment stimation'): Viene a ser una combinación de Adagrad y RMSprop. Utiliza una media móvil exponencial de los gradientes para ajustar las tasas de aprendizaje. Es un algoritmo computacionalmente eficiente y que usa poca memoria. Y es uno de los optimizadores más populares hoy día.

  • Adadelta: Una extensión de Adagrad más robusta que usa una ventana móvil de actualizaciones de gradientes.

  • Adamax: Una variante algo sutil de Adam, en que en lugar de un momento de segundo orden, se utiliza un momento de orden infinito.

Por detrás de los optimizadores, ya se intuye, existe un cierto aparataje matemático y no es fácil describirlos de una forma realmente sencilla. En mi caso, y para realizar este post, me ha sido útil el artículo sobre optimizadores 'Machine Learning: Gradient Descent' y 'Overview of differente optimizers for neural netowrks', publicados ambos por Renu Khandelwal en Medium.

Y con esto cierro, como decía, esta serie de cuatro artículos sobre elementos de diseño que tenemos en redes neuronales, y catalogar de forma sencilla las principales opciones existentes.

No se agotan aquí los elementos de diseño disponibles pero, para una primera visión, he preferido centrarme en conocer e intentar consolidar éstos: capas, funciones de activación, funciones de périda y optimizadores.


Artículos de este blog relacionados

lunes, 25 de mayo de 2020

Catálogo de componentes de redes neuronales (III): funciones de pérdida


Continuando con el catálogo de elementos de diseño, en este post vamos a hacer un catalogado básico de las funciones de pérdida ('loss functions').

¿Qué es una función de pérdida?

La función de pérdida, también denominada función objetivo, en esencia, nos dice, durante el proceso de entrenamiento de la red, lo lejos que está en un momento dado, lo que la red nos ofrece como salida y el resultado que nosotros consideramos que es el correcto o deseado. El valor de la función de pérdida será luego un dato de entrada en el algoritmo de aprendizaje.

Dado que los algoritmos de aprendizaje como el descenso de gradiente, calculan la derivada de la función de pérdida, ésta debe ser una función continua y derivable. 

Hay una gran variedad de funciones de pérdida posibles pero para nuestro catálogo sencillo, y basándonos en los libros 'Deep Learning con Python' de François Choillet y 'Python Deep Learning' de Jordi Torres, seleccionamos las siguientes:

  • Error Cuadrático Medio ('Mean Square Error', MSE): Una función muy conocida que calcula la distancia 'geométrica' al valor objetivo. Hablar de distancia geométrica es una forma de visualizarlo que nos orienta cuando pensamos en dos o tres dimensiones. Más allá de esas dimensiones, es sólo una forma de entenderlo. Además, decimos distancia, pero en realidad es la distancia elevada al cuadrado. Una variante de ésta seria la que, en lugar del cuadrado de la distancia, elige el valor absoluto ('Absolute Error'). MSE se puede usar, por ejemplo, en problemas de regresión a valores arbitrarios y con una última capa sin función de activación.

  • Entropía cruzada Categórica ('Categorical Cross Entropy'): Sin entrar en detalles, la entropía cruzada, en general, es una medida de la distancia entre distribuciones de probabilidad. La entropía cruzada suele ser adecuada en modelos de redes cuya salida representa una probabilidad, como cuando hacemos una clasificación categórica con función de activación 'softmax'. Se puede utilizar, por ejemplo, en problemas de clasificación categórica con una sola etiqueta de salida y precedida de una función de activación 'Softmax'.

  • Entropía cruzada binaria ('Binary Cross Entropy'):  Una variante de la anterior pero en que tratamos con clasificación binaria y , por tanto, la función de activación sería una sigmoide.

  • Entropía Cruzada Categórica Dispersa ('Sparse Categorical Cross Entropy'): Una variante que se suele usar en el caso de trabajar con números enteros.

Hay mucho más aparato matemático detrás de las funciones de pérdida, y más opciones posibles pero, en aras de la simplicidad que busco, también en mi propio provecho, dejaremos nuestro catálogo limitado estas cuatro y sin entrar en la formulación matemática exacta de las funciones.

En el próximo artículo de este catálogo ya atacaremos al aprendizaje propiamente dicho. 

Artículos de este blog relacionados

miércoles, 20 de mayo de 2020

Catálogo de componentes de redes neuronales (II): funciones de activación


En el artículo anterior de este blog, hablamos sobre los tipos de capas más habituales que se utilizan en redes neuronales, empezando así un breve trabajo de catalogado de las opciones de diseño de que se dispone en redes neuronales, pensando muy especialmente en Deep Learning.

Neurona artificial. Fuente: Jordi Torres
En este segundo artículo de esta breve serie, vamos a hablar de las funciones de activación. Como se recoge en la figura (autoría de Jordi Torres) y que ya utilizamos en el artículo anterior, una neurona artificial habitualmente divide su procesamiento en dos partes. Por un lado un tratamiento de las entradas (que puede ser, por ejemplo, una suma ponderada como se muestra en la figura o una convolución) y, al resultado de esa primera función, aplicarle otra pequeña transformación para obtener el valor de salida de nuestra neurona. Esa segunda transformación, esa segunda función que en la figura se representa dentro de un rectángulo, es a lo que se denomina función de activación y es un segundo elemento de diseño relevante.

Existe una cierta variedad de funciones de activación, algunas de las cuales se muestran en la figura.



No vamos a verlas todas, pero sí mencionar algunas de las más habituales.

  • Función Lineal: Se trata, quizá, del caso más simple, en que la función de activación básicamente, da una salida igual a la entrada, es decir, actúa como función identidad trasladando a su salida el resultado obtenido en la primera parte del procesamiento de la neurona (la suma ponderada de entradas, por ejemplo).

  • Función Rectified Linear Unit ('ReLU'): Aunque el nombre pueda llamar a engaño, se trata en realidad de una función no lineal. En este caso, el valor de la función de activación es igual a su entrada mientras ésta sea mayor que cero (en ese caso sí actúa como lineal) pero, en caso contrario, el valor de activación es nulo. Su labor, en el fondo, no es más que eliminar valores negativos. Es difícil de explicar brevemente, pero este tipo de no linealidades aumenta las posibilidades de la red. En concreto, esta función, muy popular, da buenos resultados, por ejemplo, en redes de convolución y, por tanto, en tareas como visión artificial o reconocimiento de voz. Aparte de la ReLU, existen otras muchas funciones de activación que juegan con la linealidad y no linealidad de forma parecida, como pueden ser, por ejemplo, la 'Leaky ReLU' en que para los valores negativos se proporciona una pendiente diferente (más tendida) que para los positivos o la 'Exponential LU'.

  • Función Sigmoidea (logística): Se trata de una función continua y derivable (importante en los algoritmos de aprendizaje), con un rango entre 0 y 1 y generalmente cerca de esos extremos (0 ó 1). Esto la hace muy adecuada para problemas de clasificación. Por ejemplo, para una clasificación binaria, una única neurona de salida con esta función de activación sigmoidea tendería a dar muy bien el resultado (cercano a uno una categoría, cercana a cero la otra). También se utiliza en problemas de regresión con salida entre 0 y 1.

  • Función Tangente Hiperbólica: Una función con una forma parecida a la sigmoidea pero que, en este caso, proporciona valores entre 1 y -1, es decir, admite valores negativos en la salida.

  • Función 'softmax' (función exponencial normalizada): Es una función de activación un poco particular, puesto que la salida no sólo depende de las entradas de la neurona sino también de la salida de las otras neuronas de la misma capa. Cuando se aplica una función de activación, la suma de las activaciones de la capa debe ser 1. Se utiliza en problemas de clasificación en múltiples categorías y etiquetas, en las que cada neurona de salida representa una categoría. La que tiene el valor más alto es la que representa con más probabilidad la categoría que corresponde a los datos mostrados en la entrada de la red.

Existen más funciones de activación, claro, pero con éstas mencionadas creo que se cubren los casos más habituales, así que podemos cerrar por ahora el catalogado. En el siguiente paso iremos a por los algoritmos de aprendizaje.


Artículos de este blog relacionados

lunes, 18 de mayo de 2020

Catálogo de componentes de redes neuronales (I): capas


En un artículo publicado recientemente en este blog y titulado 'Estructura de una red neuronal y el inicio de una catalogación sencilla', anunciaba una serie de posts en que resumiría las opciones básicas que se pueden elegir a la hora de diseñar una red neuronal. La idea es censar un catálogo corto y comprensible, pero razonablemente explicativo y abarcador, que ayude a entender este tipo de algoritmos avanzados y conocer las principales opciones de diseño disponibles.

Y éste es el primero de los posts de esa serie, y que dedicaré a las capas.

Neurona Artificial. Fuente: Jordi Torres
La unidad mínima en una red neuronal sería, en teoría, la neurona, que conceptualmente se corresponde con una unidad que recibe unos datos de entrada (en la metáfora neuronal serían las salidas de otras neuronas) y proporciona un valor de salida. Matemáticamente la podríamos considerar como una función aunque internamente suele encadenar dos funciones: por un lado una primera función que combina de forma ponderada (modulada por pesos) sus entradas y una función de activación que proporciona una salida en función de esa operación ponderada previa

Sin embargo, a la hora de trabajar, más que con neuronas individuales, se trabaja con capas que se corresponden intuitivamente con lo que la palabra capa indica, es decir, un conjunto de neuronas en un mismo, digamos, nivel, que tienen características homogéneas entre sí y que se conectan con las neuronas de la capa precedente. Desde un punto de vista matemático, en realidad, una capa se traduce en un módulo de procesamiento matemático que toma como entrada un tensor (que sería la salida de la capa anterior) y devuelve como salida otro tensor.

Entre los elementos que definen la tipología de una capa tenemos, por supuesto, el tipo de cálculos que aplican sus neuronas, pero también el patrón de conexión entre sí y, sobre todo, con la capa precedente.

Siguiendo a François Chollet en su libro 'Deep Learning con Python' incluiremos en nuestro catálogo tres familias de capas, a saber:
  • Densa (Perceptrón): En ellas todas las neuronas de una capa están conectadas a todas las neuronas de la capa anterior. Son capas que no asumen ningún tipo de estructura específica en las características de entrada. Se utilizan fundamentalmente en problemas de clasificación ya sea asumiendo la totalidad de las capas de la red o bien como fase final de clasificación en una red con capas de otros tipos.

  • Convolución: redes que aplican transformaciones geométricas locales en espacios acotados de sus datos de entrada. Es decir, recorren sus datos de entrada aplicando sucesivamente pequeñas transformaciones a subconjuntos pequeños de ese espacio de entrada hasta finalizar el recorrido. Su comportamiento tiende a ir extrayendo, mediante la acción de capas sucesivas, características significativas del espacio de entrada. Suelen apoyarse en otros tipos de capas auxiliares como son las capas de 'pooling' (reducción del espacio de datos) y 'flatten' (conversión de tensores n-dimensionales en vectores).Su aplicación más típica es en tratamiento de imágenes y visión artificial, pero también su utilizan en procesamiento de sonidos, de textos u otro tipo de datos secuenciales.

  • Recurrente (RNR): Capa específicamente diseñada para el tratamiento de secuencias de entradas, típicamente temporales. Las capas recurrentes se denominan así porque su salida en un momento dado depende, no sólo de las entradas en ese momento, sino de su salida en el paso anterior. Son capas que, además, conservan un estado. Se utilizan en todo tipo de tratamiento de series temporales, siendo quizá lo más relevante, todo lo que tiene que ver con el procesamiento de texto y lenguaje o el análisis de sentimiento, pero también, por ejemplo, en la predicción del tiempo e incluso en redes generativas de texto. Existen algunas variantes de las que las más comunes son las dos siguientes:

    • Long Short-Term Memory (LSTM): En que la información recurrente se transmite no sólo al paso anterior sino a varios pasos anteriores.

    • Gated Recurrent Unit (GRU): siguen la misma idea que las LSTM pero son computacionalmente más eficientes.

Este catálogo, seguro, no es completo, y además, las arquitecturas de redes neuronales más avanzadas no se limitan a un mero apilamiento de capas por lo que, el conocer las modalidades de capas no es suficiente para tener una base completa de las opciones en redes neuronales, pero disponer de este catálogo con los tipos de capas más habituales, me parece que orienta bastante en los primeros pasos (al menos a mi, me sirve como estructura de conocimiento).

En próximos posts veremos otros elementos relevantes del catálogo de componentes. El próximo paso: funciones de activación.

domingo, 17 de mayo de 2020

Meta-principios de humanismo digital


Como decía en un artículo que publiqué hace algo más de un mes, he iniciado una búsqueda, una exploración, casi una investigación, para dar forma y desarrollar el llamado humanismo digital.

No tengo realmente todavía ninguna conclusión definitiva ni ningún gran avance (sí alguno pequeño) pero he pensado que es bueno que, aunque sea de forma muy previa, aunque no sean más que esbozos y borradores, ponga alguna idea por escrito. Eso ayuda a la clarificación, al rigor y abre la posibilidad de los comentarios y opiniones.

Son ideas mudables, sometidas a posibles cambios fruto del aprendizaje, de la mayor reflexión, o incluso del eventual 'feedback' que pueda recibir. Se trata de algo así como un producto mínimo viable en materia de ideas y pensamiento sobre humanismo digital. 

Y se trata, como toda esta búsqueda, de una visión personal, no necesariamente alineada con las ideas de otros o con un eventual 'mainstream' en materia de humanismo digital, que creo que no existe todavía.

Y lo que voy a ofrecer en este post es un primer amago de definición de humanismo digital y un borrador de principios de humanismo digital, una especie de principio de principios que, jugando con las palabras, y de una forma no del todo linguísticamente correcta, llamo meta-principios.


Un amago de definición de humanismo digital


Como un primer intento de definición voy a proponer, voy a proponerme, el siguiente amago de definición:


El humanismo digital es un disciplina que integra los saberes científicos, tecnológicos y humanísticos buscando entender y orientar la ciencia y la tecnología de forma que ambas no solo impulsen el desarrollo económico, sino que además, respeten y potencien los valores intrínsecamente humanos y sociales.


Ahí lo dejo. Me gustaría un poco más compacta...pero de momento no me parece mal como punto de partida. ¿Y a ti, estimado lector?


Los meta-principios de humanismo digital


Y ahora los principios, que podrían ser un primer borrador de manifiesto de humanismo digital. De momento he condensado las ideas que rondan mi cabeza en seis principios

  • VALORES: El humanismo digital está regido por valores que, a la espera de elaboración, se delegan transitoriamente en la declaración universal de derechos humanos.

  • INDIVIDUALIDAD: El humanismo digital apuesta por el valor de la individualidad humana, aunque integrada en un marco político y social regido por valores.

  • NEUTRALIDAD RELIGIOSA E IDEOLÓGICA: El humanismo digital no se adscribe a ninguna confesión religiosa ni ideología política concreta, aunque tampoco las niega ni menos aún las combate.

  • MULTIDISCIPLINARIEDAD: El humanismo digital se concibe como multidisciplinar integrando conocimientos del campo de la tecnología (especialmente tecnología digital, y con más foco aún en inteligencia artificial y analítica de datos) de la ciencia (en especial lo relativo a genómica y neurociencia) y las disciplinas humanísticas como filosofía, ética, sociología, antropología, derecho y política.

  • HUMANIDAD DE CIENCIA Y TECNOLOGÍA: El humanismo digital considera a la ciencia y la tecnología como disciplinas plenamente humanas, sin más conflicto o contradicción con la naturaleza y valores humanos que los que puedan derivar de un mal uso de las mismas.

  • AFIRMACIÓN DE CIENCIA Y TECNOLOGÍA: El humanismo digital tiene una visión positiva de ciencia y tecnología y entiende que, adecuadamente orientadas y gestionadas, sólo pueden redundar en el bienestar y progreso de individuos y sociedades.

Creo que los seis principios transmiten bien mis primeras ideas, pero también tengo la aguda sensación de estarme dejando cosas en el tintero, cosas que incluso puede que haya pensado alguna vez pero que no había escrito y ahora no acuden a mi.

Pero bueno, esto son metaprincipios, un producto mínimo viable de pensamiento en materia de humanismo digital y, por tanto, siempre puedo hacerlos crecer, modificarlos o pivotar. Esto no deja de ser una especie de innovación intelectual y, por tanto, es de naturaleza iterativa.


Artículos de este blog relacionados