jueves, 3 de mayo de 2018

Pesos y umbrales

Puede descargar el archivo pesosUmbrales.xlsm

He leído el siguiente artículo que es una introducción a la inteligencia artificial.


En el artículo se plantea un caso sencillo que podría resolver un perceptrón. Se trata de entender el comportamiento de una única neurona que tiene dos entradas con sus pesos omega 1 (ω1) y omega 2 (ω2), y un umbral de activación.

Planteamiento del problema

Un profesor realiza dos exámenes y pone la calificación final sin explicar cómo ha obtenido ésta. En la calificación final únicamente dice si el alumno ha aprobado o ha suspendido. Los alumnos desean averiguar que pesos da el profesor en cada examen (ω1 y ω2) para obtener la calificación media y con que nota media aprueba el profesor. Esa nota de corte sería el umbral de activación. Por ejemplo, una respuesta al problema podría ser la siguiente.

ω1=0,30 → El primer examen pesa un 30% en la nota final
ω2=0,70 → El segundo examen pesa un 70% en la nota final
u=0,4 → La asignatura se aprueba con un 4

Los pesos ω1 y ω2 se expresan en tanto por uno y su suma siempre es 1, que equivale al 100%.
La notas de los exámenes van entre 0 y 10, pero se divididen entre 10 para que su rango de variación esté entre 0 y 1. Lo mismo sucede con el umbral de activación (u), también se divide entre 10, por lo que aprobar con un 4 equivale a tener un umbral de 0,4.

Solución en Excel

No vamos a plantear la resolución en Excel mediante el uso de redes neuronales. Simplemente pretendemos plantear este caso sencillo mediante el uso de la hoja de cálculo. Es una pequeña aproximación a los fundamentos que rigen el comportamiento de una única neurona en un perceptrón sencillo de una capa. En lugar de ir buscando el camino más apropiado para llegar a la solución lo que hacemos es explorar todos los casos dentro de los valores que damos a ω1, ω2 y u.


Hacemos variar ω1 entre 0 y 1 en intervalos de 0,1. Como ω2 es la parte complementaria (ambas omegas suman 1), obtendremos que ω2 varía en el mismo intervalo, pero justo en orden inverso.

Hacemos variar el umbral u entre 0,1 y 0,9 con intervalos de 0,1.

Paso 1

Disponemos en la Hoja1 de los datos de los exámenes. Tenemos una tabla con las calificaciones obtenidas por los alumnos en el examen 1 y en el examen 2 (columnas C y D). En color naranja tenemos los pesos que ha asignado el profesor a cada examen y la nota de corte o umbral utilizado para aprobar.


Nuestro sistema será alimentado con los valores de color rosa correspondientes a 30 alumnos. Las columnas G y H contienen las notas de los dos exámenes divididas entre 10, ya que al perceptrón se le alimenta con datos estandarizados que van entre 0 y 1. La columna I indica si se ha aprobado el examen (1) o se ha supendido (0). La columan I es la misma que la columan F.



Paso 2

A la Hoja2 llevamos las notas de 30 alumnos, para ello copiamos y pegamos con pegado especial valores las tres columnas de color rosa.



Para cada uno de los 30 alumnos vamos a calcular la nota final ponderando con los valores de ω1y ω2 que van entre 0 y 1 con variación de 0,1. De esta forma se crea una tabla en las columnas de la E hasta la O. Así, la fórmula de la celda E7 es la siguiente fórmula matricial.

=SUMAPRODUCTO(TRANSPONER(E$4:E$5);$B7:$C7)

Esta fórmula multiplica la nota del examen 1 por el peso ω1 más el producto de la nota 2 por el peso ω2. También podríamos haber conseguido el mismo resultado con la fórmula siguiente para la celda E7.

=$B7*E$4+$C7*E$5



Paso 3


En las columnas desde la P hasta la Z, vamos a calcular la calificación de aprobado (1) o suspenso (0) teniendo en cuenta la nota media calculada en la tabla anterior y el umbral (u) que se encuentra en la celda P2. Si el umbral es 0,4 quiere decir que se aprueba con un 4 en la nota media.



La fórmula de la celda P7 es un condicional que nos dice si se aprubeba o no según se supere o no el umbral.

=SI(E7>=$P$2;1;0)


Paso 4

Ahora vamos a calcular los errores cometidos comparando el vector de ceros y unos de cada una de las columnas P:Z con los valores de la columna D que contienen los aprobados y suspensos publicados por el profesor.



La celda AA7 contiene la siguiente fórmula que nos permite realizar la comparación .

=--(P7<>$D7)

Si obtenemos un vector completamente de ceros lo vamos a colorear en amarillo usando Formato condicional.

En la fila 1, en el rango AA1:AK1 calculamos la suma de los errores cometidos en cada una de la columnas. Lo que nos interesa es detectar que el error sea cero. En AN1 calculamos el mínimo de ese rango y si llegamos a obtener un cero quiere decir que estamos ante un caso donde los valores de ω1, ω2 y u explican bien las calificaciones publicadas por el profesor.

Pero tenemos que calcular esta tabla para cada uno de los posibles valores de u desde 0,1 hasta 0,9. Para realizar este cálculo sin tener que ir variando el valor de forma manual o sin tener que hacer más tablas hemos recurrido a una estupenda herramienta de Excel denominada Tabla de datos y su resultado se muestra en el rango AM6:AN17.

Con ayuda de Formato condicional para los colores y con un par de botones que lanzan macros, podemos obtener la solución que buscamos. Si en el rango AP6:AP9 obtenemos las cuatro celdas con valores VERDADERO quiere decir que hemos encontrado la solución a un caso.

Si deseamos hacer un nuevo caso pulsaremos el botón denominado "cambia pesos" que lo que hace es cambiar los valores de los omegas y el umbral en la Hoja1, y lanzando la macro que intenta resolver el caso. El caso queda resuelto cando obtenemos los cuatro verdaderos.

Pero existe la posibilidad de que las 30 notas de los alumnos no sean suficientes para resolver el caso y entonces necesitemos otra muestra de valores. Esto se consigue pulsando el botón "Toma datos", que habrá que pulsar reiteradamente en algunas ocasiones para llegar a conseguir los cuatro verdaderos y por tanto la solución final del problema planteado.




No hay comentarios:

Publicar un comentario