CursosEmpresasBlogLiveConfPrecios

Un Ejemplo Concreto: Aprendiendo la Función XOR

Clase 4 de 9 • Curso de Redes Neuronales y Backpropagation 2017

Contenido del curso

Retropropagación: Visión general

  • 1
    Cómo funciona el aprendizaje supervisado en una Red Neuronal

    Cómo funciona el aprendizaje supervisado en una Red Neuronal

    10:21 min
  • 2

    Un LEGO a la vez: Explicando las matemáticas de cómo aprenden las Redes Neuronales

    02:25 min

Evaluación de errores

  • 3
    Función de costo, supuestos y probabilidad

    Función de costo, supuestos y probabilidad

    04:51 min
  • 4

    Un Ejemplo Concreto: Aprendiendo la Función XOR

    Viendo ahora

Optimización matemática

  • 5
    Cuál es el algoritmo de retropropagación

    Cuál es el algoritmo de retropropagación

    06:26 min
  • 6
    Actualizar los pesos de la red neuronal utilizando gradientes

    Actualizar los pesos de la red neuronal utilizando gradientes

    10:19 min
  • 7

    Propagación hacia atrás

    01:29 min
  • 8
    Demo: aprendiendo a separar clases

    Demo: aprendiendo a separar clases

    14:08 min
  • 9

    Implementación y ejemplos de redes neuronales funcionando

    01:35 min
Tomar examen

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads

      Abramos la caja negra. Construiremos a continuación una red neuronal desde cero que aprende la función XOR. La elección de esta función no lineal no es por casualidad. Sin backpropagation seria difícil aprender a separar clases con una línea recta.

      Para ilustrar este importante concepto, note a continuación cómo una línea recta no puede separar 0s y 1s, las salidas de la función XOR. Los problemas reales también son linealmente no separables.

      La topología de la red es simple:

      • Entrada X es un vector de dos dimensiones
      • Pesos W1 son una matriz de 2x3 dimensiones con valores inicializados de forma aleatoria
      • Capa escondida h1 consiste de 3 neuronas. Cada neurona recibe como entrada la suma de sus observaciones escaladas por sus pesos, este es el producto punto resaltado en verde en la figura de abajo: z1 = [x1, x2][w1, w2]
      • Pesos W2 son una matriz de 3x2 con valores inicializados de forma aleatoria
      • Capa de salida h2 consiste de 2 neuronas ya que la función XOR retorna 0 (y1=[0,1]) o 1 (y2 = [1,0]) Mas visualmente:

      Entrenemos ahora el modelo. En nuestro ejemplo los valores entrenables son los pesos, pero tenga en cuenta que la investigación actual está explorando nuevos tipos de parámetros a ser optimizados. Por ejemplo: atajos entre capas, distribuciones estables en las capas, topologías, velocidades de aprendizaje, etc.

      Backpropagation es un método para actualizar los pesos en la dirección (gradiente) que minimiza una métrica de error predefinida, conocida como Función de Pérdida on función de costo, dado un conjunto de observaciones etiquetadas. Este algoritmo ha sido repetidamente redescubierto y es un caso especial de una técnica mas general llamada diferenciación automática en modo acumulativo reverso.

      Inicialización de la red

      Inicialicemos los pesos de la red con valores aleatorios.

      Propagación hacia adelante:

      El objetivo de este paso es propagar hacia delante la entrada X a cada capa de la red hasta calcular un vector en la capa de salida h2.

      Es así como sucede:

      • Se proyecta linealmente la entrada X usando pesos W1 a manera de kernel:
      • Se escala esta suma z1 con una función Sigmoid para obtener valores de la primera capa escondida. Note que el vector original de 2D ha sido proyectado ahora a 3D.
      • Un proceso similar toma lugar para la segunda capa h2. Calculemos primero la suma z2 de la primera capa escondida, la cual es ahora un vector de entrada.
      • Y luego calculemos su activación Sigmoid. Este vector [0.37166596 0.45414264] representa el logaritmo de la probabilidad o vector predecido, calculado por la red dado los datos de entrada X.

      Calculando el error total

      También conocido como "valor real menos predecido", el objetivo de la función de pérdida es cuantificar la distancia entre el vector predecido h2 y la etiqueta real proveída por un ser humano, y.

      Note que la función de pérdida contiene un componente de regularización que penaliza valores de los pesos muy altos a manera de una regresión L2. En otras palabras, grandes valores cuadrados de los pesos incrementaran la función de pérdida, una métrica de error que en realidad queremos reducir.

      Andres Leonardo Arevalo

      Andres Leonardo Arevalo

      student•
      hace 8 años
      Osmandi Gomez

      Osmandi Gomez

      student•
      hace 8 años
        Luis Carlos Parra Raffán

        Luis Carlos Parra Raffán

        student•
        hace 8 años
        Osmandi Gomez

        Osmandi Gomez

        student•
        hace 8 años
      johan Stever Rodriguez Molina

      johan Stever Rodriguez Molina

      student•
      hace 6 años
      Carlos Nexans

      Carlos Nexans

      student•
      hace 7 años
      Hebert  lughi villafuerte ccacala

      Hebert lughi villafuerte ccacala

      student•
      hace 8 años
      Cristian Orozco Benjumea

      Cristian Orozco Benjumea

      student•
      hace 7 años
        Omar Florez

        Omar Florez

        teacher•
        hace 7 años
        Cristian Orozco Benjumea

        Cristian Orozco Benjumea

        student•
        hace 7 años
      Maximiliano Rodríguez Porras

      Maximiliano Rodríguez Porras

      student•
      hace 8 años
      Juan Sebastian Torres

      Juan Sebastian Torres

      student•
      hace 5 años
      Gustavo David Guillen Gutierrez

      Gustavo David Guillen Gutierrez

      student•
      hace 8 años
        Diego Forero

        Diego Forero

        Team Platzi•
        hace 8 años
        Gustavo David Guillen Gutierrez

        Gustavo David Guillen Gutierrez

        student•
        hace 8 años
      Cristhian Bernal

      Cristhian Bernal

      student•
      hace 8 años

      La función sigmoide que se calcula corresponde a la siguiente:


      Mayor explicación acerca de la función

      Hola profesor Omar,

      Es una manera muy práctica de explicar algo tan complejo.

      Una pregunta, ¿el valor de las matrices es el resultado de las derivadas del algoritmo en el slide?

      No, las matrices W son valores generados aleatoriamente, los valores de X son los valores de entrada de la red neuronal y por su puesto Y son los valores de salida de la red neuronal.

      Por otro lado cuando aplicas la función Sigmoid en ese momento estas realizando o más bien simulando el proceso neuronal del cerebro humano, lo que significa aplicar la función que en videos anteriores se explicó en clase.

      Hola Luis, gracias por tu respuesta.

      ¿Lograste correr el demo con las gráficas?

      Aquí es donde me siento feliz de ser matemático.

      La función XOR es simplemente la operación lógica disyunción exclusiva, en Python podríamos escribir:

      def xor(p, q): return (p or q) and not (p and q)

      que crjs es esto xd…! a estudiar matematicas xdxd!!!

      Para aclarar unos conceptos les dejo un video de DotCSV en donde explica una red neuronal y las compuertas lógicas.

      Profe ésta clase se me dificulto hubiera sido mejor construir la red desde cero y no sólo compartilo en GitHub.

      Te refieres a esto? https://platzi.com/clases/redes-neuronales/concepto/optimizacion-matematica/demo-aprendiendo-a-separar-clases/material/?time=459

      Si luego vi que lo explicas en la siguiente clase.

      Para los que tienen problemas para ejecutar el ejemplo, seguir estos pasos en ubuntu (Pueden hacer una máquina virtual):

      Tener instalado la última versión de python 2.7.

      Debes de tener instalado git y descargar el archivo como se indica.

      Hay que sacar el archivo scratch_mlp.py a una carpeta superior. (Si miras el código, busca dentro de la carpeta “scratch_mlp”, eso está mal)
      Si hiciera un listado del directorio quedaría así:

      └── redes_neuronales ├── scratch_mlp.py ├── scratch_mlp ├── docs ├── __init__.py ├── __init__.pyc ├── plots ├── __pycache__ ├── slides ├── utils.py └── utils.pyc

      Te recomiendo correr en virtualenv, pero si no sabes cómo, no hay problema.

      Lirerias

      Para poder correr el ejemplo tendrás que instalar python-tk. Código para instalarlo en linux:

      apt-get install python-tk

      Tendrás que tener instalado pip, puedes instalarlo en ubuntu con:

      $ sudo apt-get install python-pip python-dev build-essential $ sudo pip install --upgrade pip $ sudo pip install --upgrade virtualenv

      Y necesitarás instalar las siguientes librerias:

      pip install numpy, matplotlib, ipdb, imageio
      Saludos.

      Faltó el tener el cuenta el vector de sesgos o bias el cual representa el bias correspondiente a cada neurona de la capa en la que se encuentre.

      Screen Shot 2021-01-05 at 8.38.33 PM.png

      Tengo el siguiente error cuando intento ejecutar

      Epoch 9999 Loss: 0.246042 Average L1 error: 0.492016 Accuracy: 0.540000 Traceback (most recent call last): File "scratch_mlp/scratch_mlp.py", line 125, in <module> run() File "scratch_mlp/scratch_mlp.py", line 118, in run utils.plot_decision_boundary(X, y_actual, lambda x: inference(x, [w1, w2]), NameError: name 'utils' is not defined If you suspect this is an IPython bug, please report it at: https://github.com/ipython/ipython/issues or send an email to the mailing list at ipython-dev@python.org You can print a more detailed traceback right now with "%tb", or use "%debug" to interactively debug it. Extra-detailed tracebacks for bug-reporting purposes can be enabled via: %config Application.verbose_crash=True

      Sin ver el código es difícil ayudarte, lo que muestra el error es que estas usando utils pero no esta definido, ya sea porque falta importarlo o porque estas importando mal.

      Pero si precisamente realize un git clone.

      git clone https://github.com/omar-florez/scratch_mlp/ python scratch_mlp/scratch_mlp.py

      O sea en teoria deberiafuncionar, pq no he tocado nada.

      _¿Cuál es la razón para que la salida [0 1] sea 0 y [1 0] sea 1?
      _Si la salida toma el valor [0 0] o [1 1] ¿Cuál sería su representación en la Tabla binaria del XOR?