¿Te gustó el sitio?

Módulo 0 - Hablemos el mismo idioma

Introducción

Antes de hablar de redes neuronales, perceptrones, funciones de activación y demás conceptos que pueden sonar un poco extraños al principio, vamos a ponernos de acuerdo en algunas ideas sencillas que servirán de base para todo lo que viene después.

Puede que ya las conozcas de sobra o que haga tiempo que no las veías. No pasa nada.

El propósito de este módulo es repasar lo fundamental: qué son los operadores aritméticos, los de comparación y los lógicos. Todo explicado con claridad, sin definiciones enredadas para que hablemos el mismo idioma cuando profundicemos en temas más complejos.

Si algo no te suena, tómate el tiempo de releer. Y si ya lo dominas, igual vale la pena darles un vistazo rápido: nunca está de más refrescar la memoria.

Bien, manos a la obra.

Operadores: más que números

Comencemos por lo sencillo para ir entrando en calor. Veamos las operaciones aritméticas, esas de toda la vida (suma, resta, multiplicación y división), pero desde una perspectiva distinta.

Cuando iniciamos las primeras clases de matemáticas en la escuela, todo lo que vemos son símbolos y números, lo que para la mayoría, incluyéndome, puede ser un fastidio. Las matemáticas no son memorizar procedimientos y tablas de multiplicar: son un lenguaje para expresar ideas. Y para esto, debemos empezar a ver los operadores como algo más que simples símbolos abstractos. Son instrucciones que nos dicen qué debemos hacer con los elementos sobre los que actúan: los operandos.

Si pensamos en el símbolo de suma (+), este nos está dando una instrucción muy específica: junta el elemento de la izquierda con el elemento de la derecha. Por lo tanto, si tenemos
2 + 3, al juntarlos obtenemos un 5. Pero también podríamos tener fruta + leche, y el resultado sería un licuado.

Si seguimos con el resto de operaciones, verás que la lógica es la misma: cada operador es una instrucción. La resta (−) indica que de un elemento del conjunto se debe eliminar: si quitamos el ron de un Cuba Libre tendras un refresco. La multiplicación (×) es repetir sumas: si multiplicas por 2 cada ingrediente de una receta, tendrás el doble de porciones. Mientras que la división (÷) nos pide repartir algo en partes iguales, como cuando haces un modelo a escala de un avión y reduces todas sus dimensiones por el mismo número.

Aunque normalmente los usamos con números, es importante entender que estos operadores funcionan con cualquier concepto que pueda combinarse de manera coherente. Por eso, más adelante, cuando entremos en otros temas, verás que la idea de "instrucción sobre elementos" se mantiene, aunque cambien los símbolos o los tipos de datos.

Operadores de comparación: preguntas disfrazadas de símbolos

Ahora vamos a recordar a los grandes olvidados: los operadores de comparación. Seguramente los viste en la escuela, pero casi siempre se enseñan de manera aislada, como un tema que aparece un día y luego desaparece. Sin embargo, son fundamentales, porque nos permiten responder preguntas que se pueden contestar con "verdadero" o "falso".

Los operadores de comparación sirven para establecer relaciones entre dos valores. Por ejemplo:

  • El símbolo > compara si un valor es mayor que otro.
  • < indica menor que.
  • ≥ significa mayor o igual que.
  • ≤ menor o igual que.
  • = igual que.
  • ≠ distinto que.

Aunque no los veamos todo el tiempo, los usamos de manera informal a diario: cuando decides si un camino es más corto, si un producto es más barato o si el café está demasiado caliente. En cada caso, estás comparando cantidades o cualidades, y obteniendo un resultado que solo puede ser verdadero o falso.

También es importante notar que cuando usamos el operador de igualdad =, estamos diciendo que dos expresiones deben coincidir. En una operación aritmética, asumimos que esa igualdad es cierta y organizamos todo para que se cumpla. Por ejemplo, si escribes x + 3 = 5, la pregunta implícita es: ¿qué valor debe tener x para que esto sea verdad?

Así que más que simples símbolos, estos operadores son instrucciones que plantean preguntas y devuelven respuestas claras. Más adelante veremos cómo estas comparaciones se convierten en las piezas básicas de decisiones más complejas.

Operadores lógicos: la base de la informática

Ya viste cómo los operadores de comparación pueden convertir números en respuestas más complejas. Y hasta ahora, tal vez no te parezca gran cosa, pero ¿y si te dijera que también puedes operar con esas respuestas, de forma parecida a como lo haces con los números? Aquí es donde entran en juego los operadores lógicos.

Un operador lógico realiza operaciones que recuerdan a las aritméticas, pero con una diferencia importante: sus operandos no son números, sino valores de “verdadero” o “falso”. A veces también se representan como “sí” o “no”, o simplemente como “1” y “0”. El resultado de la operación es también un valor de este tipo.

Para que te quede claro, vamos a empezar por los más sencillos. Verás que, al final, son probablemente las matemáticas más simples que hayas aprendido.

El primer operador que conocerás es el operador NOT. Como su nombre en inglés indica, se encarga de negar el valor que recibe. Si algo es verdadero, lo convierte en falso, y si es falso, lo convierte en verdadero. Para que quede más claro veamos la siguiente tabla de verdad:

NOT

Entrada Salida
verdadero falso
falso verdadero

Después de conocer NOT, vamos a ver otros dos operadores igual de importantes: AND y OR. Ambos trabajan con dos entradas y devuelven un único resultado.

El operador AND (en inglés, “y”) solo devuelve verdadero si la entrada 1 Y la entrada 2 son verdaderas. Si alguna es falsa, el resultado será falso.

El operador OR (en inglés, “o”) devuelve verdadero si la entrada 1 O la entrada 2 son verdaderas, es decir, basta que al menos una de las dos sea verdadera para que el resultado sea verdadero.

Para que lo visualices más fácil, en las tablas que siguen verás que se usa el número 1 en lugar de “verdadero” y el 0 en lugar de “falso”. Esta forma de representar los valores es muy común porque simplifica bastante el manejo de la información.

A AND B

A B Salida
0 0 0
0 1 0
1 0 0
1 1 1

A OR B

A B Salida
0 0 0
0 1 1
1 0 1
1 1 1

Hagamos un pequeño interludio antes de seguir viendo más operaciones lógicas. Vamos a enlazar todo lo que hemos aprendido hasta ahora para que veas cómo trabajan estos conceptos en conjunto.

Empezamos con las operaciones aritméticas. Ya sabes que puedes encadenar varios operadores para obtener un resultado. Después, el resultado de estas operaciones se puede comparar con otro valor, y esa comparación te devuelve una respuesta lógica. A su vez, puedes encadenar varias comparaciones usando operadores lógicos. El orden de operación siempre es el mismo: primero haces cuentas, luego comparas, y finalmente combinas las respuestas.

Vamos a verlo con un ejemplo más cercano:

Si estás planeando un viaje a la playa, tendrás que decidir qué cosas necesitas llevar y en qué parte del equipaje van. Algunas irán en el equipaje de mano y otras en el equipaje documentado. Esto se decide en función del peso total de todo lo que empaques.

Digamos que el máximo permitido en el equipaje de mano es 5 kg, y en el equipaje documentado es 25 kg, para evitar cargos extra por sobrepeso. Esto se podría expresar así:

  • Primero sumas el peso de todo: TOTAL = toalla + traje + bronceador + …
  • Luego, con ese resultado, verificas si tu equipaje entra en el rango permitido de peso: (TOTAL > 5 kg) AND (TOTAL < 25 kg) = verdadero
  • Si el TOTAL es menor a 5 kg, puedes llevarlo como equipaje de mano. Si es mayor a 25 kg, tendrás que sacar algo hasta que se cumpla la condición y no te cobren de más.

Con esto en mente, también es posible encadenar operaciones lógicas. Por ejemplo, los operadores NAND y NOR hacen justo eso: combinan AND u OR con una negación. Es decir, NAND es lo mismo que NOT (A AND B) y NOR es lo mismo que NOT (A OR B). Como resultado, sus tablas de verdad son los opuestos de las que vimos para AND y OR.

A NAND B

A B Salida
0 0 1
0 1 1
1 0 1
1 1 0

A NOR B

A B Salida
0 0 1
0 1 0
1 0 0
1 1 0

Ahora que ya viste algunas operaciones lógicas, quizá te preguntes cuántas operaciones posibles pueden existir si tienes dos entradas.

Para entenderlo, primero recuerda que con cada entrada puedes tener dos estados: 0 o 1. Si tienes dos entradas, el total de combinaciones posibles es:

22 = 4

(Por ejemplo: 0-0, 0-1, 1-0 y 1-1)

Hasta aquí, todo bien.

Ahora imagina que giramos la tabla de verdad 90 grados. En lugar de pensar en las combinaciones como filas, piensa que cada columna de resultados posibles es como un patrón distinto de respuestas que la operación puede devolver.

Como cada combinación de entrada puede devolver un 0 o un 1, tienes que contar cuántas formas distintas hay de llenar esas 4 casillas de salida.

Así que en total:

24 = 16

Es decir, existen 16 operaciones diferentes con dos entradas.

De estas 16, algunas son un poco absurdas (por ejemplo, las que siempre devuelven 0 o siempre devuelven 1, sin importar qué entradas les des). Otras simplemente copian una de las entradas o su negación, ignorando por completo la otra. En total, estas operaciones poco útiles suman 6:

  • 2 que siempre devuelven el mismo resultado (todo 0 o todo 1)
  • 4 que solo dependen de una entrada (ya sea A o B, directa o negada)

Entonces, si de las 16 posibles restamos estas 6 operaciones obvias y también las 4 que ya conoces (AND, OR, NAND y NOR), verás que en realidad solo quedan 6 más por aprender y con lo que hemos visto será fácil que las comprendas, así que aquí te las enlisto:

  • Veamos el siguiente par; la función XOR la cual responde verdadero cuando sus entradas son diferentes entre si, y su negacion XNOR que responde verdadero cuando las entradas son iguales:

A XOR B

A B Salida
0 0 0
0 1 1
1 0 1
1 1 0

A XNOR B

A B Salida
0 0 1
0 1 0
1 0 0
1 1 1
  • Continuemos con la operacion de conjuncion excluyente logica, un nombre un tanto rimbombante para nombrar estas operaciones las cuales niegan una de sus entradas antes de hacer la operacion AND: A AND NOT B y NOT A AND B. Para que quede más claro usemos un pequeño ejemplo, supongamos la apertura de una puerta automatica, esta se abre si hay una persona que quiere entrar pero solo si la tienda NO ESTÁ CERRADA, asi si no hay nadie que quiera entrar, es irrelevante que hora sea, pero si alguien quiere entrar, la tienda no debe estar cerrada para permitir el acceso, aqui te dejo sus tablas de verdad:

NOT A AND B

A B Salida
0 0 0
0 1 1
1 0 0
1 1 0

A AND NOT B

A B Salida
0 0 0
0 1 0
1 0 1
1 1 0
  • Para finalizar, verás la implicación lógica. Puedes pensarla como una operación que solo devuelve falso en una situación concreta: cuando una entrada ocurre y la otra no. Según cómo la escribas (NOT A OR B o A OR NOT B), ese “desacuerdo” cambia de lado. En todo lo demás, siempre responde verdadero.

NOT(NOT A AND B)

A B Salida
0 0 1
0 1 0
1 0 1
1 1 1

NOT(A AND NOT B)

A B Salida
0 0 1
0 1 1
1 0 0
1 1 1

¿Y todo esto para qué?

Ahora puede que te estés preguntando:
“Bueno, ¿y qué gano con entender todas estas operaciones?”.

La respuesta corta es que comprendas cómo algo tan simple como encadenar operaciones puede transformar cualquier dato en algo útil. Por ejemplo, casi todo lo que ves o escuchas en un dispositivo se puede expresar como números: los colores en un formato RGB, un sonido en un archivo WAV, un texto codificado con algún estándar.

Si puedes convertir un dato en un número, puedes pasarlo al sistema binario, que es sólo una forma de decir que ese número se descompone en una secuencia de unos y ceros. Y con esas secuencias puedes crear un árbol de decisiones lógicas que, combinadas de la manera correcta, terminan generando una respuesta muy específica: verdadero o falso, encendido o apagado.

Cuando esas operaciones se repiten millones de veces por segundo, el resultado es lo que tienes ahora mismo frente a ti: píxeles con colores, animaciones, texto, audio. Todo surge de sumar, comparar y combinar ceros y unos.

Piensa en el juego de Adivina Quién. Cada pregunta que haces —¿Tiene sombrero? ¿Usa lentes? ¿Es rubio?— descarta opciones y acerca la respuesta correcta. Al final, una serie de preguntas de sí o no termina describiendo algo mucho más complejo. En electrónica pasa igual: decisiones binarias, apiladas una sobre otra, son capaces de construir cualquier proceso.

¿Y dónde están esos ceros y unos? Son sólo señales eléctricas que circulan por circuitos, se almacenan en capacitores o activan transistores que determinan si otra señal pasa o no pasa. Así se forman cadenas enormes de pequeñas decisiones lógicas.

Puede que pienses que sería un trabajo imposible tener que mover cada bit de forma manual. Y tendrías razón. Por eso existen los lenguajes de programación. Un lenguaje es como un vocabulario que le pone nombre a ciertas combinaciones de instrucciones, y define reglas claras para que podamos decirle a la máquina qué hacer sin necesidad de diseñar cada circuito a mano.

El lenguaje que usaremos durante el taller es C. Aprenderás sólo las partes necesarias para poder comunicarte con el computador y darle instrucciones claras. Piensa en ello como aprender un idioma básico para poder viajar a un país: al principio te alcanza con pedir comida o preguntar direcciones, y más adelante vas puliendo el resto.

Aquí no se trata de que memorices todo de golpe. Este proyecto no es un curso de programación en sí mismo, sino una guía para que entiendas cómo, con la combinación correcta de operaciones, se pueden construir sistemas que parezcan inteligentes.

Hablando de eso, es buen momento para presentarte al protagonista del siguiente módulo: el perceptrón. Si nunca habías oído el nombre, suena a algo extraño, pero en realidad es sencillo. No es una función fija, sino un modelo que aprende por sí mismo. Tú le das ejemplos y él ajusta su forma de tomar decisiones para que la salida coincida con lo que esperas. Si lo miras desde la perspectiva lógica, es como darle una tabla de verdad, y el perceptrón aprende a comportarse como la operación lógica que le corresponde.

Si conectas varios perceptrones, cada uno puede especializarse en distinguir algo diferente. Juntos, forman una red capaz de resolver operaciones lógicas complejas sin que tú tengas que programar todas las reglas a mano.

Te prometo que el próximo módulo será mucho más práctico.
Gracias por llegar hasta aquí.