 
¡Hola a todos y bienvenidos a Codificando
Bits! El lugar donde aprenderán todo
acerca de la Inteligencia Artificial, el
Deep Learning y la Ciencia de los Datos.
Les recuerdo que si quieren ver más
detalles pueden visitar mi sitio web
codificandobits.github.io. Hoy vamos a
hablar de las "Deep Neural Networks" que
son una de las arquitecturas más
importantes usadas en el Deeb Learning.
¡Así que comencemos!
En un vídeo anterior, cuando hablamos de
la Regresión Logística, hablamos de un
elemento esencial acá en las Deep Neural
Networks que son las neuronas simples.
Esencialmente la
neurona sencilla tiene una entrada "x"
y genera una salida, que en este caso
vamos a llamar la activación. Esa
activación contiene dos elementos o es
el resultado de dos operaciones: un
proceso de transformación,
que es el que estamos señalando acá,
donde el dato de entrada "x" se multiplica
por unos coeficientes "w" y a ese dato se
le suma otro
coeficiente llamado "b".
El objetivo de esta transformación,
cuando hablamos de procesos de
clasificación, es comenzar a separar los
datos y con el cálculo adecuado de estos
parámetros "w" se logra empezar a hacer
esa separación.
Recuerden que esos dos no necesariamente son dos,
depende de los datos de entrada. Esos
coeficientes "w" se calculan por medio del
proceso de entrenamiento. Después de
hacer esa transformación se aplica una
función que se llama "función de
activación" (más adelante en un vídeo
hablaremos específicamente de los
principales tipos de función de
activación)y esa función de activación
tiene una característica importante: es
que es una función no lineal
y es la que permite en últimas a esos
datos transformados inicialmente
ubicarlos en una categoría determinada.
Entonces eso es lo que hace una neurona
simple. Cuando hablábamos de la Regresión
Logística y de la Regresión Multiclase,
en esos dos métodos estamos usando
neuronas simples y veíamos que el gran
problema de esos métodos es que usan o
generan algo que se llaman las "fronteras
de decisión" que permiten separar una
categoría de la otra; pero esas fronteras
de decisión, por tener una simple neurona,
siempre van a ser lineales. En la figura
de abajo les muestro entonces del lado
izquierdo la frontera de decisión que se
obtiene con la Regresión Logística, es
una línea recta que separa las dos
categorías (rojo y gris) y del lado
derecho vemos lo que ocurriría al usar
una neurona sencilla, pero en la
Regresión Multiclase, donde vemos que
las tres fronteras de decisión son tres
líneas rectas que permiten separar los
datos. Esta es una limitación de
estos dos métodos, la Regresión
Multiclase y Regresión Logística, que
usan una simple neurona. ¿Por qué es esto
una limitación? Porque realmente los
datos, cuando los clasificamos, no
necesariamente tienen fronteras de
separación totalmente lineales, no son
linealmente separables. Acá vemos un set
de datos que tiene forma de espiral y
tiene tres categorías: rojo, gris y
amarillo, y vemos que las fronteras para
separar una categoría de la otra no son
líneas rectas sino que son curvas.
Entonces, en este caso, si intentamos por
ejemplo usar la Regresión Multiclase,
porque son tres categorías, obtendríamos
estas fronteras de decisión que se ven
en la gráfica. Siguen siendo líneas
rectas y vemos por ejemplo que parte de
los datos de color gris están en la zona
de color morado, están clasificados como
pertenecientes a la otra categoría, parte
de los datos de color rojo
está en la zona de color rojo, pero otros
están también en la zona de color gris y
la zona de color morado. Entonces la gran
limitación de usar una simple neurona es
que las fronteras de decisión no se
adaptan adecuadamente a los datos que
queremos clasificar. Por eso entonces es
que aparece el concepto de una Red
Neuronal.  Entonces ¿qué es una red
neuronal? ¡Pues es el resultado de tomar varias de esas
neuronas simples e interconectarlas!
Aquí vemos el ejemplo para el
set de datos que teníamos anteriormente,
tenemos una capa de entrada
porque cada uno de los datos que
dibujamos en ese set con forma de
espiral tiene dos datos realmente, dos
características "x1" y "x2", la capa de
salida en color rojo tiene tres neuronas
o tres elementos porque son tres
categorías (rojo, gris y amarillo) pero en
lo que llamamos ahora la capa oculta,
esta es la denominación que se le da a
esa capa oculta. Anteriormente en la
Regresión Multiclase teníamos una única
neurona un solo círculo de color
amarillo, ahora entonces empezamos a
agregar más neuronas: en este caso
tenemos 10 neuronas en total en esa capa
oculta. ¿Cuál es el resultado de comenzar
a agregar neuronas? Recuerden que una
neurona tiene una función de activación
no lineal.
Cuando yo coloco más de una neurona y
las interconectó lo que estoy generando
son fronteras de decisión que van a dejar de
ser lineales (cuando se tenía una sola
neurona) y van a comenzar a ser curvas,
y la curvatura que tengan esas fronteras
de decisión va a depender de cuántas
neuronas vayamos agregando a esa capa
oculta. Entonces, si usamos esta red
neuronal para clasificar ese set de
datos acá ya vemos un comportamiento
totalmente diferente: vemos que en parte
sí se tienen todavía algunas fronteras
de decisión lineales, pero observemos que
ya empiezan a ser curvas en algunas
secciones. Por ejemplo acá en esta
frontera en esta parte de la separación
entre los datos de color gris y de color
rojo ya comienza a ser mejor la
separación y fíjense que ya los datos
están mucho mejor clasificados. Todavía
no es perfecta la clasificación pero va
mejorando. 
¿Cómo podemos lograr una mejor
clasificación? Lo que podemos
decir es que en lugar de agregar una
capa oculta vamos a tener múltiples
capas ocultas y cuando tenemos una red
neuronal con múltiples capas ocultas, en
este caso les muestro una gráfica con
tres capas ocultas, ya aquí el nombre que
le damos es el de RED NEURONAL PROFUNDA
y el término Deep Neural Network hace
referencia a que precisamente estamos
agregando más complejidad a esa red
neuronal al poner más capas ocultas.
Entonces Deep Neural Network hace
referencia a redes neuronales que
usualmente tienen dos, tres o más capas
ocultas.
Al agregar más capas ocultas y más
neuronas a este modelo pues cada vez se
van definiendo mucho mejor esas
fronteras de decisión. Entonces vemos
cómo esta red neuronal clasifica los
datos, pues vemos que la clasificación es
casi perfecta. De pronto acá hay unos
datos que están clasificados
erróneamente, pero la mayor parte de los
datos son separados perfectamente por
esa frontera de decisión curva que
estamos obteniendo cuando combinamos
múltiples neuronas en cada una de las
capas y agregamos múltiples capas a esa
red neuronal. Este es el
concepto de Deep Neural Networks, que es una
de las principales arquitecturas usadas
en la actualidad en los modelos de
Deep Learning. Han tenido un crecimiento
vertiginoso en los últimos años porque
el aspecto relevante en este tipo de
redes es que como tienen tantas neuronas
la cantidad de parámetros que se
requieren durante el entrenamiento es
muy alta y por tanto los equipos de
cómputo deben que tener una capacidad
bastante alta, 
cosa que hemos podido lograr hasta los
últimos años.
Bien, esto es todo. Gracias por haberme
acompañado, no olviden que en la
descripción del vídeo encontrarán el
enlace correspondiente a codificandobits.github.io,
donde van a encontrar más
detalles sobre este concepto de las de
Deep Neural Networks. Gracias por haberme
acompañado, no olviden suscribirse al
canal y visitar mi sitio web codificandobits.github.io. ¡Hasta luego!
