Tu primera red neuronal en Python y Tensorflow
Summary
TLDREste video ofrece una introducción detallada a la creación de una red neuronal desde cero utilizando Python y TensorFlow. A través de un ejemplo sencillo de conversión de grados Celsius a Fahrenheit, el presentador explica cómo funciona el aprendizaje automático en comparación con la programación tradicional. El proceso involucra la inicialización aleatoria de pesos y sesgos, el entrenamiento de la red con datos de entrada y la optimización de estos parámetros para mejorar las predicciones. El video también toca la diferencia entre redes neuronales simples y complejas, y cómo estas últimas pueden aprender algoritmos complejos sin ser explícitamente programadas.
Takeaways
- 🧠 **Aprendizaje automático vs programación regular**: El aprendizaje automático se diferencia de la programación regular en que no se conoce el algoritmo para convertir entradas en resultados, sino que se busca que el modelo aprenda por sí mismo.
- 🌡️ **Ejemplo de conversión de Celsius a Fahrenheit**: La conversión de Celsius a Fahrenheit se utiliza como ejemplo sencillo para explicar cómo funciona una red neuronal y cómo aprende a realizar la conversión sin conocer la fórmula exacta.
- 🔄 **Proceso de aprendizaje**: El aprendizaje automático implica ajustar pesos y sesgos de una red neuronal para que pueda predecir resultados a partir de ejemplos de entrada y salida.
- 🎯 **Inicialización aleatoria de pesos y sesgos**: Al inicio, los pesos y sesgos se inicializan de manera aleatoria, lo que puede resultar en predicciones iniciales no muy precisas.
- 🔧 **Entrenamiento de la red neuronal**: El entrenamiento de la red neuronal implica ajustar los pesos y sesgos a partir de un conjunto de datos de entrada y salida, con el objetivo de minimizar la función de pérdida.
- 📈 **Optimización y tasa de aprendizaje**: El optimizador (como Adam) y la tasa de aprendizaje son parámetros clave en el entrenamiento que influyen en cómo eficientemente la red ajustará sus pesos y sesgos.
- 🔄 **Ejemplo práctico de entrenamiento**: El script proporciona un ejemplo práctico de entrenamiento de una red neuronal utilizando TensorFlow en Google Colab, mostrando cómo se configuran las capas y se realiza el entrenamiento.
- 📊 **Evolución de la función de pérdida**: La función de pérdida muestra cómo la red neuronal mejora a lo largo del tiempo, y es una indicación de si el entrenamiento está funcionando correctamente.
- 🔮 **Predicciones y ajuste de la red**: Después del entrenamiento, la red neuronal puede hacer predicciones, y si son precisas, se puede ajustar o mejorar la red según sea necesario.
- 🌐 **TensorFlow y Google Colab**: TensorFlow es una biblioteca de inteligencia artificial desarrollada por Google, y Google Colab es una plataforma en línea que permite programar en Python y utilizar recursos de computación en la nube sin instalaciones.
- 🔍 **Investigación en inteligencia artificial**: Aunque no siempre es posible entender completamente cómo una red neuronal llega a sus conclusiones, hay una rama de la inteligencia artificial dedicada a investigar y mejorar estos modelos.
Q & A
¿Qué se creará en el video?
-Se creará una red neuronal desde cero utilizando Python y TensorFlow.
¿Cuál es el objetivo principal al crear una red neuronal simple?
-El objetivo es entender cómo funciona una red neuronal y las diferencias entre el aprendizaje automático y la programación regular.
¿Cómo funciona conceptualmente el aprendizaje automático en comparación con la programación regular?
-Mientras que en la programación regular se definen algoritmos explícitos, en el aprendizaje automático se utiliza una lista de entradas y resultados para que el modelo aprenda por sí solo cómo convertir entradas en resultados.
¿Qué ejemplo se utiliza para ilustrar la diferencia entre programación regular y aprendizaje automático?
-Se utiliza el ejemplo de convertir grados Celsius a Fahrenheit, mostrando cómo se aborda con programación regular y cómo se podría aprender con una red neuronal.
¿Cuáles son las capas fundamentales que debe tener una red neuronal?
-Una red neuronal debe tener al menos una capa de entrada para recibir datos y una capa de salida para dar resultados. También puede tener capas ocultas intermedias.
¿Qué es la función de los pesos en una red neuronal?
-Los pesos representan la importancia de la conexión entre las neuronas y se ajustan durante el aprendizaje automático para mejorar las predicciones del modelo.
¿Qué es el sesgo en el contexto de una red neuronal?
-El sesgo es un valor numérico que se suma en la neurona y se ajusta durante el entrenamiento para contribuir al resultado final de la red neuronal.
¿Cómo se ajustan los pesos y sesgos en una red neuronal durante el aprendizaje automático?
-Los pesos y sesgos se ajustan automáticamente a través de un proceso de optimización, donde el modelo recibe ejemplos de entrada y resultados esperados y se ajusta para minimizar la diferencia entre las predicciones y los resultados reales.
¿Qué función de pérdida se utiliza en el ejemplo del video?
-Se utiliza la función de pérdida 'minimo error' o 'error cuadrático medio' para medir la diferencia entre las predicciones de la red y los resultados esperados.
¿Qué se hace con la red neuronal después de entrenarla para mejorar sus predicciones?
-Después de entrenar la red neuronal, se puede hacer predicciones utilizando nuevos datos de entrada y comparar los resultados con los esperados para evaluar la precisión del modelo.
¿Qué se puede hacer con una red neuronal más compleja?
-Una red neuronal más compleja puede aprender algoritmos para resolver problemas más complejos, como clasificar y detectar imágenes, calcular el valor de una casa, clasificar correo no deseado, detectar transacciones fraudulentas, entre otros.
Outlines
😀 Introducción al Aprendizaje Automático y Redes Neuronales
Este párrafo introduce el concepto de aprendizaje automático y redes neuronales, explicando la diferencia entre la programación regular y el aprendizaje automático. Se destaca la creación de una red neuronal simple para comprender su funcionamiento.
🤖 Proceso de Aprendizaje Automático en la Conversión de Grados Celsius a Fahrenheit
Se describe el proceso de aprendizaje automático para la conversión de grados Celsius a Fahrenheit utilizando una red neuronal. Se detallan los datos de entrada, la compilación del modelo, el entrenamiento y la optimización de los pesos y sesgos.
🧠 Predicción y Evaluación del Modelo de Red Neuronal
Este párrafo presenta la predicción del modelo entrenado para convertir grados Celsius a Fahrenheit. Se analiza el rendimiento del modelo mediante la función de pérdida y se realiza una predicción con un nuevo valor de entrada.
🔍 Exploración de la Estructura Interna de la Red Neuronal
Se examina la estructura interna de la red neuronal, revelando los pesos y sesgos asignados a las conexiones después del entrenamiento. Se discute la complejidad de comprender las decisiones de una red neuronal más grande.
📊 Conclusiones y Continuación
El párrafo final resume las lecciones aprendidas y destaca la capacidad de las redes neuronales para resolver problemas simples y complejos. Se anticipa la exploración de temas futuros, como la visión artificial, y se invita a los espectadores a participar.
Mindmap
Keywords
💡Red neuronal
💡Aprendizaje automático
💡TensorFlow
💡Conversión de temperaturas
💡Función de activación
💡Pesos y sesgos
💡Capas ocultas
💡Google Colab
💡Optimizador
💡Función de pérdida
💡Entrenamiento de la red neuronal
Highlights
En este vídeo se crea una red neuronal desde cero utilizando Python y TensorFlow.
El objetivo es explicar en detalle cómo funciona una red neuronal y las diferencias con la programación tradicional.
La red neuronal se utilizará para entender cómo convertir grados Celsius a Fahrenheit sin conocer la fórmula.
La red neuronal simple consistirá en una capa de entrada, una capa de salida y una conexión simple.
Las redes neuronales grandes pueden tener millones de neuronas y tomar decisiones complejas basadas en datos y variables.
El proceso de aprendizaje automático implica ajustar pesos y sesgos para que la red neuronal aprenda por sí sola.
Se utilizan datos de entrada y resultados esperados para entrenar la red neuronal.
La red neuronal ajustará automáticamente los pesos y sesgos para hacer predicciones más precisas.
El entrenamiento de la red neuronal es una parte matemática y cálculo intensiva del aprendizaje automático.
El modelo de red neuronal se compila con un optimizador y una función de pérdida para mejorar el aprendizaje.
La función de pérdida, como el error cuadrático medio, ayuda a medir la exactitud de las predicciones de la red.
La red neuronal logró aprender la fórmula de conversión Celsius a Fahrenheit sin ser explícitamente programada.
Aunque una red neuronal simple puede resolver el problema, una red más compleja aprende más rápido y posiblemente mejor.
El aprendizaje automático permite a las redes neuronales aprender algoritmos complejos sin la necesidad de conocer el proceso detrás.
El ejemplo práctico de conversión de Celsius a Fahrenheit ilustra cómo las redes neuronales pueden aplicarse a problemas de programación.
Transcripts
en este vídeo crearemos una red normal
desde cero utilizando python y tensa
flow no necesitas saber nada para seguir
este vídeo y explicaré todo con detalle
con aprendizaje automático machine
learning podemos hacer muchas cosas
complejas e increíbles sin embargo
quiero centrarme en crear una red
neuronal simple pero que al hacerla nos
haga ver exactamente como el por qué
funciona y nos permite ver las
diferencias que hay entre el aprendizaje
automático y la programación regular
para los que siguen mis vídeos sabrán
que según mi plantilla que viéramos
redes neuronales convolución a leds para
clasificación y detección de imágenes
nada más que como ya todo eso va a ser
comparten decidí primero hacer este como
introducción antes de pasar a esos temas
más complejos muy bien el aprendizaje
automático funciona conceptualmente
diferente a la programación regular en
la programación regular normalmente
nosotros programamos algoritmos para
convertir entradas en resultados
nosotros escribimos las reglas y lógicas
necesarias para lograrlo en el caso del
aprendizaje automático es diferente
contamos con una lista de entradas y
resultados pero no necesariamente
sabemos cómo convertir esas entradas en
los resultados es decir no conocemos el
algoritmo que puede hacer la conversión
lo que queremos es crear un modelo que
pueda
esas entradas los resultados esperados
de cada entrada y puede aprender por sí
solo el algoritmo necesario para hacer
la conversión esa es la diferencia
principal entre programación regular y
el aprendizaje automático veamos un
escenario en acción elegir el ejemplo
más simple posible pero que nos deje
claro cómo funciona imagina que quieres
convertir grados celsius y fahrenheit la
fórmula o algoritmo para hacerlo es la
siguiente par en height iguala celsius
por 1.8 más 32 comenzamos primero viendo
cómo lo haríamos con programación
regular para eso escribiríamos una
función como ésta
esta función recibe como entrada los
grados celsius que queremos transformar
aquí tenemos el algoritmo y finalmente
regresamos el resultado muy bien eso fue
programación regular simple verdad
veamos como lograremos esto utilizando
aprendizaje automático
recordemos que el aprendizaje automática
no sirve cuando no conocemos la fórmula
o algoritmo así que por un momento
imaginemos que no conocemos la fórmula
de conversión contamos solamente con
entradas en celsius y resultados
esperados en fahrenheit y buscamos que
nuestro modelo aprenda por sí solo el
algoritmo utilizaremos los siguientes
datos
esta tabla cuenta con siete ejemplos y
muestra los grados celsius y el
resultado correspondiente en fahrenheit
lograremos esto con una red neuronal una
red neuronal grande puede tener millones
de neuronas conectadas y puede tomar
decisiones muy complejas basadas en
muchos datos y variables
hoy usaremos la red neuronal más simple
que podamos y aprovecharemos para ver a
detalle cómo funcionan las redes
neuronales siguen algunas reglas si
quieres una explicación intuitiva de por
qué existen esas reglas por eso en el
vídeo que te lleva aparecerán en
pantalla sin embargo para este vídeo
veamos qué reglas y conceptos debemos
conocer las redes neuronales se separan
en capas cada capa puede tener una o más
neuronas cualquier red tiene siempre al
menos una capa de entrada que es donde
se reciben los datos de entrada en este
caso los grados celsius que queremos
convertir y también debe tener una capa
de salida donde obtendremos el resultado
calculado en este caso aquí nos debe
decir los grados fahrenheit resultantes
en redes más complejas podemos tener más
capas intermedias llamadas capas ocultas
pero veremos eso después las neuronas se
conectan con conexiones
para nuestro caso simple de hoy
solamente tenemos una conexión
conectando la neurona de entrada con la
de salida cada una de estas conexiones
tiene un peso asignado este peso es un
valor numérico que representa la
importancia de la conexión entre las
neuronas en un momento veremos para qué
sirve este dato
cada neurona a excepción de la capa de
entrada tiene un sesgo el pse es también
un valor numérico y en un momento
veremos cómo será utilizado por último
existe el concepto de función de
activación pero eso lo veremos en
siguientes vídeos de manera simple el
proceso que seguirá esta reunión al es
el siguiente colocaremos los grados
celsius en la primera neurona esos
grados celsius se multiplicarán por el
peso de la conexión y llegarán a la
siguiente neurona ahí se le sumará el
sesgo y ese será nuestro resultado
te parece simple espero que sí a grandes
rasgos así es cómo funcionan las redes
neuronales de este tipo en escenarios
complejos utilizamos redes con muchas
capas miles de neuronas millones de
conexiones pero finalmente todos siguen
un proceso muy similar pero bueno
regresemos a nuestro ejemplo
nuestro modelo actual entonces está de
la siguiente manera al comenzar los
valores del peso y el sesgo se inician
de manera totalmente aleatoria por
ejemplo inicializa mos la red y de
manera aleatoria asigna un peso de 1.5
en la conexión y un valor de 4 para el
sesgo no creo que funcione muy bien pero
vamos a ver
usemos como ejemplo 15 grados celsius
queremos que la red nos diga cuánto es
15 grados celsius y fahrenheit o bueno
al menos cuánto cree que es lo colocamos
en la neurona de entrada se multiplica
por 1.5 que es el peso de la conexión el
resultado es 22.5 ese valor entre en la
siguiente neurona aquí se resume el
sesgo que es 4 y el valor final es de
26.5 por lo tanto en mi red neuronal de
momento predice que 15 grados celsius
son 26.5 fahrenheit será cierto
[Música]
y ser que en realidad deberían de ser 59
como puede la red neuronal aprender los
valores más adecuados para los pesos y
los sesgos no queremos hacerlo
manualmente a prueba y error aquí es
donde entra la magia del aprendizaje
automático como veremos en el momento el
aprendizaje automático aprender a hacer
esta conversión de grados celsius y
fahrenheit este tipo de redes puede
aprender no sólo esto sino también a por
ejemplo calcular el valor de una casa en
base a sus características a
clasificarse un correo spam o no a
detectar transacciones fraudulentas
hacer cálculos de tiempos de envío entre
otro trillón de cosas cómo puede lograr
lo primero que necesitamos es conseguir
suficientes ejemplos de entradas y
resultados usaremos los que vimos hace
un momento ahora queremos darle a la red
neuronal esos ejemplos y que aprendan
por sí solo a la relación es decir que
ajuste automáticamente los pesos y
sesgos para después poder hacer
predicciones lo más acertadas posibles
para lograrlo la red va a tomar todos
esos datos de entrada que yo le di y por
cada uno va a ser una predicción
recordemos que fue inicial izado de
manera aleatoria entonces al final le va
a ir muy mal dependiendo de qué tan mal
le fue ajustará los pesos y los sextos
si le fue muy mal se va a ajustar mucho
si no le fue tan mal
ajustar poquito pero tenemos solo siete
ejemplos podrá entender la relación y
ajustar el peso y sesgo tan sólo con
esos ejemplos veámoslo por nosotros
mismos pasemos ahora si para programar
para que no tengas que instalar nada
haré todo en google cola si no lo has
usado básicamente es una libreta en
línea de google que te permite programar
en python y usar cpu y gpu de una
computadora en la nube totalmente gratis
sin que tengas que instalar nada
necesitas una cuenta de google para
usarlo pero bueno si no quieres hacerlo
así todo esto funciona igual si lo haces
en tu computadora e instalas python y
tensor flow entremos en google colocó en
esta liga y comencemos explicaré todo
paso por paso recordemos que haremos
todo el compayito en python es uno de
los lenguajes más utilizados para
inteligencia artificial y aunque muchos
de mis vídeos utilizan javascript porque
es mucho más simple para lograr cosas
complejas es buena idea trabajar con
byte en la libreta de cola comienza
vacía primero importamos las librerías
que vamos a utilizar tensor flow que es
una librería para inteligencia
artificial hecha por google y también
importaremos nunca y para trabajar
fácilmente con arreglos numéricos
[Música]
ahora declaremos un arreglo de números
donde colocaremos nuestras siete
entradas de grados celsius
ah
[Música]
después queremos otro arreglo con los
resultados en grados fahrenheit
[Música]
estos son los ejemplos que la red usará
para aprender menos 10 grados celsius
son 14 fahrenheit 15 celsius son 59
fahrenheit etcétera
ahora diseñamos nuestro modelo de red
neuronal que vimos anteriormente para
hacerlo además de usar tensor flow usar
el framework que eras queda simplemente
nos permite hacer las redes neuronales
de manera simple nos ahorra muchas
líneas de código en quieres puedo
especificar las dos capas de entrada y
salida por separado no puedo ahorrarme
un paso y especificar solo la capa de
salida como veamos creemos una variable
llamada capa y la iniciaremos como una
capa de tipo densa en que heras las
capas densas son las capas que tienen
conexiones desde cada neurona hacia
todas las neuronas de la siguiente capa
aquí tenemos sólo dos neuronas entonces
no hay mucho más que conectar
ok al registrar la le indico las
unidades o neuronas de la capa esta capa
de salida sólo tiene una neurona aparte
usemos la variable input shape y aquí es
donde le decimos que tenemos una entrada
con una neurona también esto nos auto
registra la capa de entrada con una
neurona estas capas arriba están volando
necesito usar un modelo de quieras para
darle las capas y poder trabajar con él
hay varios tipos de modelo en este caso
usaré el secuencial los otros modelos
son para redes neuronales más avanzadas
que veremos después indiquemos de la
capa que creamos
aunque ya tenemos el modelo listo el
siguiente paso es compilar lo cual
prepara el modelo para hacer entrenar
recordemos que el entrenamiento es la
parte mágica del aprendizaje automático
que no es nada mágico en realidad sino
un gran matemáticas y cálculo pero bueno
tengo yo que decirle algunas propiedades
de cómo quiero que procese esas
matemáticas para poder aprender mejor en
el momento indicaremos solo dos
propiedades en el optimizador y la
función de pérdida para el optimizador
usaremos uno llamado adam puedes leer el
detalle de ese algoritmo en muchos
lugares pero en resumen le permite a la
red saber cómo ajustar los pesos y
sesgos de manera eficiente para que
aprenda y no de esa prenda es decir que
poco a poco vaya mejorando en lugar de
ir empeorando le indicaremos un valor
numérico que es la tasa de aprendizaje
ese número le dice que tanto ajustar los
pesos y sesgos si ponemos un número muy
pequeño los ir ajustando muy poco a poco
y la red aprenderá muy lento pero si el
número es muy grande quizás se pasará
del número esperado y no podrá hacer
cambios suficientemente finos para
llegar a la mejor opción pongamos el
valor de 0.1 pero puedes probar con
otros después si quieres idealmente
serían números más pequeños que este
para la función de pérdida usaremos uno
llamado min
error o error cuadrática medio suena feo
el nombre pero básicamente esta función
considera que una poca cantidad de
errores grandes es peor que una gran
cantidad de errores pequeños muy bien ya
tenemos nuestro modelo compilado y
preparado ahora sí vamos a entrenarlo
para entrenarlo usamos la función fit le
indicamos los datos de entrada y
resultados esperados
es decir los celsius y fahrenheit y
además le decimos cuantas vueltas quiero
que lo intente recordemos que sólo tengo
7 datos una vuelta significa revisar los
7 datos una sola vez tenemos que darle
muchas vueltas a los 7 datos para darle
tiempo de que realmente se optimice lo
más posible de momento indicaré en 1000
y por qué mil no sé veamos cómo funciona
y podemos ajustarlo después además le
pondré verbos igual a false porque si no
me imprime mucho mujer o al estar
entrenando imprimamos por aquí si ya se
entrenó o no
[Música]
y listo el modelo ya está entrenado y
está listo para hacer predicciones
antes de intentar predecir veamos el
resultado de la función de pérdida esta
función básicamente nos dice qué tan mal
están los resultados de la red en cada
vuelta que dio
[Música]
como le dimos mil vueltas esas mil
vueltas nos aparecen aquí abajo
podemos ver que conforme fue haciendo
más vueltas cada vez los errores van
disminuyendo en realidad por lo que
podemos ver no necesitamos mil vueltas
con 500 o 600 vueltas será suficiente
porque después ya no mejora mucho se
queda básicamente donde mismo muy bien
hagamos ahora hace una predicción podrás
decirlo de manera correcta el resultado
de convertir 100 grados celsius a panes
ay no se pierda en el siguiente episodio
del emocionante las crean 100 grados no
los tenemos en nuestros ejemplos que le
dimos entonces si nos da un buen
resultado podemos decir que el
entrenamiento fue exitoso
ok 211 puntos 74 que es tan cierto es la
verdad más de haber núcleo ayúdame aquí
ok 212 quedó bastante cerca lo
suficiente para decir que está muy bien
entrenado podemos hacer más predicciones
pero te dejo que tú juegues con eso lo
que me interesa ahorita es ver la
estructura interna de la red qué datos
se asignaron después del entrenamiento a
la conexión y al sesgo usamos esta
función para que nos imprime los valores
[Música]
a mirar nada más el peso lo asignó en
1.79 y el sesgo 31.9 sigamos el flujo de
nuestra red
tenemos como entrada 100 100 es x 1.79 y
después se le suma 31.9 te das cuenta de
lo que hizo volvamos a ver la fórmula
para convertirse el sespa fahrenheit
1.79 es prácticamente 1.8 y 31.9 es
prácticamente 32 la red sin que le
dijéramos la fórmula pudo llegar a este
resultado que es prácticamente exacto se
ve muy mágico más o menos en este
escenario especificó que se trata de una
función lineal da la casualidad de que
la fórmula de conversión aplica
perfectamente con esta pequeña red hace
primero una multiplicación y una suma
un problema más complejo no podríamos
resolverlo con una red tan simple pero a
ver a ver volvamos un poco qué pasa si
resuelvo este mismo problema pero le
agrego más capas y más neuronas a la red
digamos que agregamos dos capas
intermedias con tres neuronas y hagamos
el mismo proceso veamos
[Música]
no
hagamos el entrenamiento para empezar
vemos que se tarda más
sin embargo podemos ver que el
aprendizaje fue mucho más rápido desde
la época 50 o 60 y ya no aprendió nada
más es decir que en este escenario una
red más compleja nos dan mejores
resultados muy rápido no siempre es el
caso pero bueno aquí todo es
experimental si hacemos la predicción
podemos ver que también nos predice
correctamente sin embargo que pesos y
sesgos que es que haya asignado la
verdad ni idea vamos a imprimirlos
[Música]
no
a ver tenemos este número este número
la verdad y para que los leo tus números
no tiene caso intentar entenderlos
simplemente fue la mejor combinación que
encontró el proceso de optimización para
llegar al resultado de la manera más
acertada esto pasa a veces con grandes
redes neuronales que usan miles de
neuronas y millones de conexiones no
podemos saber exactamente por qué
considera que cierta combinación de
pesos y sesgos es el adecuado y si nos
ponemos a ver uno por uno nos morimos
antes de acabar claro que ramas de esta
industria que se dedican a entender y
mejorar estos procesos crear nuevos
modelos etcétera pero eso ya es otra
rama de la inteligencia artificial más
enfocada en la propia investigación con
este ejemplo podemos ver que aunque el
problema es simple y se puede resolver
con una red neuronal muy simple también
una red neuronal compleja puede aprender
un algoritmo para resolverlo siguiendo
caminos totalmente distintos en
siguientes vídeos continuaré mi serie de
visión artificial y el siguiente paso es
utilizar redes neuronales convolución
'la es un tipo de red neuronal
especializado en entender imágenes para
poder detectarlas y clasificarlas de
muchas maneras en este canal vi a muchas
cosas de programación visión e
inteligencia artificial en la
descripción del vídeo te dejaré algunos
otros vídeos que quizá te interesen y si
te gustan estos temas si no te desespera
mi voz
entonces deje un comentario de que más
te gustaría ver en este canal y
suscríbete hasta pronto
[Música]
2
5.0 / 5 (0 votes)