logo

Dot CSV

Inteligencia Artificial, Tecnología, Ciencia y Futuro! Bienvenidos a la 4ª Revolución Industrial 🚀 Inteligencia Artificial, Tecnología, Ciencia y Futuro! Bienvenidos a la 4ª Revolución Industrial 🚀

Transcribed podcasts: 213
Time transcribed: 5d 22h 50m 3s

This graph shows how many times the word ______ has been mentioned throughout the history of the program.

Hola chicos y chicas, bienvenidos a DocsCV, tu canal sobre Inteligencia Artificial que te trae todo sobre esta pasionante mundo
y hoy estamos con un nuevo vídeo, un vídeo un poco diferente a todo lo demás y que bueno
viene a ser una continuación de la serie sobre redes neuronales que he ido subiendo en los
pasados meses, como sabrán hay dos vídeos, uno el primero en el que tratábamos un poco lo que eran las
neuronas y cómo funcionaban y cómo nos servían para
para procesar la información y luego una segunda parte que vimos como juntando neuronas pues podemos conseguir
modelar y codificar conocimiento más complejo, ¿vale?
Son dos vídeos que yo creo que explican bastante bien la teoría y a la vez también invitan
al espectador pues a conocer más sobre redes neuronales, pero
creo que todavía falta un poquito de conocer e ir siguiendo desarrollando esta intuición que yo creo que hace falta
tener a la hora de trabajar con redes neuronales y por eso estoy haciendo el vídeo de hoy, ésta se podría considerar una segunda parte
de la segunda parte, un 2.5 por así decirlo y
y en el que básicamente lo que vamos a hacer es
ver una demo que hay en internet que es bastante buena, no sé si la conocerán, se llama Playground Tensor Flow
en el que se puede jugar con una red neuronal modificando la variable, modificando la función de activación
y ver los resultados que esto te genera dentro de la red y yo creo que es algo bastante interesante pues por eso mismo te permite
conocer qué pasa e ir desarrollando esta intuición de
bueno, si modifico este parámetro de la red neuronal pues qué ocurre o ir trabajando un poco los conceptos que hemos visto en los vídeos
y por eso quería invitaros a ver cómo se trabaja con esta herramienta, conocerla un poquito y también ver unos ejemplos porque
sí es cierto que esta herramienta pues ofrece bastantes cosas y a lo mejor puede tener una curva de aprendizaje un poco
compleja para aquellos que no conozcan así de primeras, entonces vamos a simplemente a ver unas pruebas, esto
me hubiera gustado meterlo en el otro vídeo pero si no se quedaba un vídeo muy largo y yo creo que son
o sea yo creo que es necesario dedicarle un poco de tiempo a ver esta herramienta entonces
para que no la conozca la herramienta es esta de aquí que están viendo en pantallas y, en pantallas, en pantalla y
y bueno, ¿qué tenemos? lo primero que tenemos aquí arriba es un mensaje de bienvenida que nos dice
don't worry, you can break it, we promise, que eso está muy bien, que significa tú toca todo lo que tú quieras, juega aquí
que no lo vas a romper, lo prometemos, así que no se preocupen
y bueno, una vez saltas este mensaje lo que tenemos aquí sería nuestra red neuronal, ¿vale?
bueno, no voy a explicar exactamente todos los elementos que tiene esta herramienta porque algunos de ellos tocan
conceptos que veremos en la tercera parte cuando nos
introduzcamos en la parte de cómo aprenden las redes neuronales, pues conceptos como el learning rate, el regularization rate
todas estas cosas pues las dejaremos aparte y la veremos en la tercera parte del vídeo aunque le debería sonar también de
el vídeo de sensor gradiente que también recomiendo ver si no lo han visto
bueno, lo que tenemos aquí son
pues todos los elementos que componen una red neuronal, ¿no? el punto de partida serían nuestros datos, tenemos aquí cuatro ejemplos diferentes como pueden ver
esta sería nuestra nube de puntos, ¿vale?
todos los ejemplos que vamos a ver se corresponden a
clasificación, ¿vale? tener dos nubes de puntos diferentes que queremos separar de alguna manera
el otro ejemplo clásico dentro del mundo del machine learning sería la regresión, que básicamente sería encontrar
pues esa función que se
sería como encontrar esa función que se ajusta a la función que relaciona dos variables diferentes, ¿no? dos conjuntos de variables
pero bueno, no nos vamos a centrar en esto sino en clasificación
y efectivamente pues tenemos aquí cuatro problemas diferentes
de separación de puntos, ¿no? este sería pues la espiral y también el punto de partida
de la espiral y tendríamos que encontrar la forma de separar en
en dos espacios esta nube de puntos en espiral, aquí tendríamos uno sencillito que sería
dos nubes de puntos caucianas
este ejemplo de aquí, bueno, ¿vale? estos serían nuestros datos para comenzar y esta de aquí sería nuestra variable de entrada
como ven en este caso tenemos solamente dos variables de entrada x1 y x2
como pueden ver aquí, x1 viene representado como
el gradiente si nos moviéramos de derecha a izquierda sería el eje x
que si fuéramos en negativo a positivo pues vemos como va cambiando de naranja a azul, ¿vale?
porque como vemos aquí abajo en la leyenda
estoy señalando la pantalla como si pudieran verlo, no
como ven aquí abajo en la leyenda pues
el naranja equivale a valores negativos
el azul equivale a valores positivos
y este sería el valor x1, ¿no?
y este sería el valor x1, ¿no? el correspondiente al eje x
y este sería el correspondiente al eje y, ¿vale?
sería en vertical y iríamos de menos 6 a 6
efectivamente esta sería nuestra variable de entrada
y nuestra variable de salida viene representada en este caso
por lo que se conoce como el espacio
de entrada, ¿no? el input space
estamos visualizando el input space
¿eso qué es? pues sería colocar en los ejes
nuestra variable de entrada, eje x1 y eje x2
y visualizar con colores el resultado que asigna la red neuronal
a cada uno de los valores de nuestros ejes
entonces, una de las cosas que quería dejar claras en este vídeo
era el hecho de que nosotros en la serie estamos viendo mucho la interpretación geométrica de la red neuronal
¿vale? yo les he enseñado una serie de ejemplos como los que vamos a ver aquí
en el que trabajamos con dos variables
y eso está muy bien porque nos permite poder
ver, visualizar qué es lo que ocurre a nivel geométrico dentro de la red neuronal
pero esto no siempre va a ser así
porque como sabrán en una red neuronal
pues tú cuando te enfrentas a problemas más complejos
tus variables de entrada no son solamente dos
que se pueden visualizar en tres dimensiones
sino que puedes tener tres dimensiones
puedes tener cuatro dimensiones, veintiocho dimensiones
o por ejemplo si trabajas con una imagen
en la que cada pixel es una variable de entrada
pues podrías tener
pues yo que sé cuántos pixels puede tener una imagen
millones, pues puedes tener millones de variables de entrada
lo cual como se podrán imaginar
no se puede visualizar correctamente
de ninguna manera
la intuición de lo que se produce
internamente en la red neuronal
esa deformación de nuestro espacio
para encontrar una forma en la que
podemos separar linealmente nuestros datos
eso ocurre tanto a dos dimensiones
como a nueve mil dimensiones
pero solamente podemos visualizarla en dos dimensiones
por lo cual
está bien que trabajemos con dos variables aquí
para poder entender la intuición
pero sepan que eso se puede trasladar luego
a dimensiones más altas
entonces como digo
aquí tenemos solamente dos variables
que serían X1 y X2
pero luego también podríamos añadir
diferentes manipulaciones
de nuestra variable de entrada
así un poco para que entiendan
de qué se tratan
esto sería el equivalente a decir
tengo dos variables de entrada
X1 y X2
pero a lo mejor
si yo trato mi variable de entrada X1
de manera lineal
es decir, X1 simplemente
pues tengo una línea
pero si yo X1 la elevo al cuadrado
estoy haciendo lo que se denomina
una expansión de la función de base
polinomial
que suena muy complicado
pero básicamente significa que si tú
tu variable X1 la elevas al cuadrado
lo que estás consiguiendo
de hecho lo puedo enseñar
es tu plano, estás consiguiendo
transformarlo en una
en una función parabólica
con lo cual ya empiezas a tener
por ejemplo esto de aquí
vale
como ven en este caso
pues tenemos como
lo que estamos visualizando es que está
valor positivo, de repente baja
hacia el cero, es decir, estamos bajando
esta curva de aquí
y vuelve a ser positivo
volvemos a tener el valor azul
con eso podríamos empezar
a añadir ciertas
no linealidades dentro de nuestro problema
sin tener que incurrir en esto de añadir
más capas ocultas y más neuronas
suele ser una estrategia
que se lleva a cabo en Machine Learning
y bueno, podemos ver aquí que le puedes añadir
X cuadrado, X1 al cuadrado
puedes añadir X2 al cuadrado
puedes añadir
interacciones, es decir, si tú multiplicas
X1 y X2 sigues trabajando
con tus dos variables pero las estás multiplicando
y te generaría este patrón de entrada
que si se dan cuenta nos podría servir
para solucionar automáticamente
este problema de aquí y no haría falta de construir
nuestra red
neuronal
y también podemos aplicar otras
operaciones matemáticas como senos
cosenos y nos generaría este patrón
que como saben son
ondulaciones
para nuestro problema vamos a trabajar
simplemente con las dos primeras que son las básicas
y a lo mejor introducimos estas
aquí para que vean cómo nos pueden
facilitar un poco el trabajo
hemos visto la variable
de entrada, hemos visto la variable de salida
y nos falta ver el contenido
del medio de nuestra red neuronal, que son las capas
ocultas, como pueden ver aquí tenemos
un botón en el que podemos añadir una capa oculta
dos capas ocultas y de hecho
todas las que queramos
y de la misma forma también tenemos estos botones
de aquí para añadir más neuronas
a nuestras capas ocultas
con lo cual esto está genial porque ya podemos empezar
a construir de una manera muy sencilla sin tener
que programar nada simplemente
apretando botones aquí pues podemos generar
una red bastante compleja
y ver cómo funcionan, ¿vale?
en este caso no nos
hace falta tanto como para
poder empezar
entonces vamos a coger un problema facilito para comenzar
vamos a coger este de aquí, dos nubes de punto
gaussianas, que como ya
sabrán se parece bastante al ejemplo
que vimos en la primera parte de nuestra serie
y que realmente
tampoco requiere de mucha elaboración
porque esta nube de punto de aquí
esta nube de punto de aquí puede ser
separada linealmente, ¿vale?
esto podríamos coger un modelo muy simple como el
modelo logístico o el
perceptron que vimos en la
parte 1 y eso ya podría
darnos una solución a nuestro problema
en este caso de aquí
pues tenemos nuestra variable x1, x2
y esto se va a computar
en una neurona de salida que sería esta neurona
de aquí, o sea aquí es como si tuviéramos
una neurona y
solamente con esta arquitectura pues ya
debería de funcionar nuestro sistema
vamos a darle al play y automáticamente
vemos como
los parámetros de nuestro modelo
si nos ponemos encima con el ratón podemos ver los valores
asignados y vemos
como con los valores asignados pues efectivamente
se ha generado
la clasificación que estamos buscando
sin necesidad de añadir neuronas
y lo más hemos conseguido es separar nuestra
nube de puntos, perfecto
vamos ahora a un problema
voy a por agua
vamos a pasar ahora a un problema un poquito más complejo
este problema de aquí
como recordarán es el que vimos en la
segunda parte del vídeo, ¿no?
tenemos una nube de puntos exterior en forma de anillos
y tenemos un grupo central que son nuestros
héroes de Juego de Tronos
y lo que queremos encontrar es esta
frontera de separación, está
efectivamente frontera que nos separa
la nube de punto central
con una circunferencia
entonces para hacer esto ya saben que si nosotros
trabajamos la misma arquitectura que teníamos en la primera
parte, en la que solamente
teníamos una línea, pues no vamos
a conseguir ningún resultado
que nos favorezca, ¿no?
aquí podemos ver, no se ve bien
si quisiéramos ver los resultados
pues le podemos dar aquí a discretize
discretize
discretasizar
hacer que se vean bien los
resultados, lo marcamos
y podemos ver como efectivamente nos traza una línea
que realmente no nos está separando nuestra
nube de puntos. ¿Qué necesitamos aquí
para solucionarlo? Pues si recuerdan tenemos que añadir
más neuronas a nuestro problema
y que estas neuronas tengan una capa
de activación, una función de activación
que vaya añadiendo
no linealidades,
distorsiones a nuestro plano
como recuerdan pues
intentar hacer así distorsiones con nuestra
función de activación, que nos permitan
encontrar esa superficie en la que
nuestros puntos efectivamente se pueden separar
si recuerdan esto era
como un montículo en el centro
y la intersección con el plano
pues hacía que de repente
apareciera esa separación, entonces vamos
a buscar esa misma figura
trabajando con esto
vamos a añadir una capa oculta
y vamos a añadir una capa oculta con una única
neurona, si añadimos una única
neurona y le damos al play
vamos a desmarcar esto para verlo de esta manera
efectivamente vemos
que no ocurre nada, no hemos encontrado
ninguna solución porque en este
caso la información
se codifica, es decir
se está concentrando en esta neurona
pero luego de esta neurona a la neurona
de salida no estamos generando
ninguna nueva manipulación
sigue siendo como trabajar con
una única capa, entonces
lo que tenemos que hacer para encontrar un resultado
diferente sería añadir dos neuronas
que va a ocurrir
ahora con dos neuronas, vamos a darle al play
y lo vamos a ver, pero antes
una cosa que se me había olvidado explicar
es que aquí ya cada neurona
pues está
añadiendo una no linealidad
a nuestro modelo
esas funciones de activación de las que hablábamos
en esta herramienta podemos cambiar
el tipo de función de activación
pues aquí arriba tenemos estas cuatro
que serían la relu
la rectilinear unifier
la tangente hiperbólica
que si recuerdan era en forma de ese
en el rango de menos 1 a 1
tenemos la sigmoide que va de 0 a 1
y tenemos una lineal
que yo creo en este caso que eso no añade
ninguna no linealidad, simplemente
colapsa las señales de entrada
y hace una combinación lineal y ya está
eso no te va a generar ninguna distorsión
eso simplemente te genera un plano
de hecho eso lo podemos probar ahora, si añadimos
muchas neuronas con
vamos a probarlo venga
si añadimos muchas capas ocultas
y todas estas
capas ocultas con muchas neuronas
le ponemos una capa
una función de activación lineal
esto debería de ser equivalente a
simplemente tener una
única neurona como vimos en el video
que colapsaba todo porque
la combinación lineal de todas las combinaciones
lineales que se producen aquí es el equivalente
a solamente una neurona
vamos a verlo
y efectivamente vemos que el resultado
discreto de esto, todas estas
neuronas que forman líneas
no dejan de ser simplemente
una única neurona
gigante en la que se colapsa
toda la información y realmente no nos está sirviendo
esto es el equivalente a tener
esta arquitectura de aquí
y efectivamente el resultado sigue siendo una línea
entonces para que
nuestro sistema funcione tenemos que añadir alguna
capa de activación
independientemente podemos elegir cualquiera de estas
vamos a elegir la relu
y vamos a ver el ejemplo de
una única capa de ajuste y
dos neuronas, capa de ajuste
perdón, una capa oculta y dos neuronas
si le damos al play en este caso
ya empezamos a ver una frontera
de separación un poquito más compleja
y esta si ya nos empieza
a separar mejor
la nube de puntos, podemos ver como
todos estos puntos naranjas de aquí están bien clasificados
y esta nube de puntos azules
aquí también está bien clasificada y estos serían
los únicos puntos que nos estarían
generando problemas
hemos encontrado el límite de la
expresividad de nuestra red neuronal
es decir, con dos neuronas
en una única capa oculta
no podemos generar
un polígono completamente
cerrado, sería como intentar generar un
polígono con dos lados, eso no es posible
para poder solucionar el problema
lo que podríamos
hacer sería añadir una tercera capa
una tercera capa no, una tercera neurona
cuando añadimos una
tercera neurona, efectivamente vemos
como ahí estaría
con esto ya hemos generado la estructura
en este espacio
multidimensional
que puede ser intersectada por un
plano y nos puede generar nuestra frontera
de separación que estamos buscando
este es el equivalente
si le añadimos
la capa de activación, en vez de la relu
le ponemos la sigmoide
y le damos al play
vemos como conseguimos un resultado similar
poco a poco, este está
más suavizado porque en este caso
las deformaciones que añade nuestra capa de
activación, la sigmoide, son
suavizadas, están suavizadas
a diferencia de la relu que si recuerdan
era como coger un folio y
doblarlo en un ángulo recto
en un ángulo recto no, sería como
hacer un doble, como doblar el
papel e ir haciendo papiroflexia
efectivamente esto sería una solución
a nuestro problema, y a modo de ejemplo
les quiero enseñar como
aplicando estas
expansiones de la
función de base en nuestra entrada
estas manipulaciones que mencionábamos al principio
pues podemos dar
solución a este mismo problema utilizando una
arquitectura más simple, por ejemplo en este
caso si activáramos x1 al cuadrado
y x2 al cuadrado
automáticamente podríamos quitar
todas estas neuronadas aquí, podríamos quitar incluso
esta capa oculta y veremos
que efectivamente nuestra
red sería capaz de encontrar
solución a este
problema
a ver si con una capa, con una relu
funciona más rápido, ahí estaría
efectivamente
normalmente esto es algo que veremos
en el próximo vídeo, la función de activación
rectilinear unifier
funciona un poco más rápido a la hora de
entrenar a la red, con lo cual
les recomiendo que si hacen pruebas con este
sistema pues trabajen también con la
función de activación relu para que
puedan simularlo más rápido, como pueden
ver en este caso simplemente
sin necesidad de utilizar ninguna neuronada
podemos conseguir
podemos conseguir encontrar esta circunferencia
perfecta, si te estás preguntando
por qué simplemente tienes que acordarte que
la función de una
circunferencia, la función
matemática nos relaciona
x cuadrado con y cuadrado
y en este caso nosotros ya le estamos dando
como valores de entrada x cuadrado
y cuadrado que en este caso
sería x2 cuadrado
con estas dos variables de aquí ya la red
es capaz de encontrar esta
función perfecta, esta función que
sería como un embudo en la que
intersectando pues nos sale perfectamente
la circunferencia que estamos buscando, esta
superficie cónica
y bueno básicamente es un poco
esto lo que quería hacer, enseñarles esta herramienta
y invitarles a que
la utilicen un poco así que jueguen con los elementos
si quieren ir aprendiendo
cada vez más sobre los elementos
que conforman a la red neuronal
les dejo aquí un par de problemas
todavía por resolver, les invito
a que probándolos
encuentren soluciones
a estos dos problemas que son más complejos
que los anteriores, a ver cuántas
capas ocultas y cuántas neuronas hacen falta
para poder separar esta nube de puntos
ya les digo que va a ser un problema un poquito más complicado
que los dos que hemos hecho y que
hemos visto, pero bueno
así yo creo que les puede servir
y pueden seguir aprendiendo un poquito más
que al fin y al cabo de eso se trata el canal
de ir aprendiendo sobre machine learning
e inteligencia artificial, por mi parte
nada más, si les ha gustado este vídeo, esta demo
así rapidita que he hecho hoy
háganmelo saber en los comentarios
y dejen un like que eso siempre ayuda
si eres nuevo en el canal suscríbete
y dale a la campana porque si no no te vas a enterar
de nada y
nada más, oye, que ya hasta aquí
adiós