Autor: Jhonathan Borda Moreno

  • Conceptos matemáticos de Deeplearning

    Conceptos matemáticos de Deeplearning

    Como vimos en el anterior post, a medida que vamos agregando complejidad a las operaciones necesitamos agregar capas ocultas, estas capas nos van a permitir detectar patrones y correlaciones; cada neurona se va a especializar en un patrón, es decir, se activara cuando reconozca ese patrón o relación, como una compuerta lógica.

    Pero antes de continuar veamos a pequeña escala en que fundamentos matemáticos se basa para crear estos patrones y en que consiste el entrenamiento, para esto vamos a utilizar la pequeña red que habíamos mostrado para ejemplificar una compuerta de tipo XOR. Otra pequeña aclaración es que solo vamos a ver los aspectos fundamentales del entrenamiento, aclaro esto ya que a medida que avancemos vamos a ir robusteciendo estas bases agregando hiperparámetros y otros procesos a medida que sea necesarios.

    Forward propagation

    La propagación hacia adelante consiste en tomar los valores de entrada para validar que neuronas se activan hasta llegar a la capa de salida. Suena fácil, pero vamos a complicarlo un poquito viendo que pasa en detalle por cada una de estas capas.

    Estamos muy acostumbrados a ver redes neuronales gigantes, con muchos hiperparámetros y entradas, pero claramente para aprender es mas conveniente trabajar con pocas entradas, por lo que vamos a crear nuestra pequeña red neural.

    Tenemos nuestras entradas definidas por la variable x_i, estas van a interactuar con nuestras primeras neuronas, recordemos que el valor que va a llegar a la siguiente neurona esta determinado por \sum w_ix_i+b ¿De donde salen los valores para w y b? Pues en nuestra primera iteración estos valores son generados para toda la red aleatoriamente, es decir que claramente nuestra predicción \hat{y} va ser errónea, pero eso lo iremos ajustando.

    Por ahora sabemos que llega un valor a nuestra neurona y esta debe decidir si se activa o no, es decir que debemos darle un umbral de decisión, aquí es donde nos apoyamos de nuestra función de activación. Una función de activación nos va a servir para determinar si el valor recibido cumple y puede continuar a la siguiente capa, a esto lo consideramos una activación.

    Aquí te dejo una lista de las funciones mas usadas. Actualmente la mas utilizada es la ReLU.

    Este proceso lo vamos a hacer por cada neurona, las salidas activación de nuestras neuronas serán la entrada en nuestra siguiente capa.

    En las capas ocultas lo mas probable es que tengamos funciones de activación ReLU, estas son muy comunes ya que todo lo que sea menor a 0 lo deja como 0 y estandariza el resto de valores entre 0 y 1. Sin embargo, para nuestra neurona de salida utilizamos una función de activación diferente y esto depende del tipo de problema en el que estemos trabajando. Por ejemplo, para una predicción de tipo regresión utilizamos una función linear, para un problema de clasificación usaremos la función softmax para casos de selección múltiple y la función sigmoide para clasificación binaria(una sola neurona a la salida).

    Una vez tenemos nuestra predicción \hat{y} podemos continuar con nuestro siguiente paso.

    Ground truth y cálculo del error

    El Ground truth hace referencia al resultado ideal esperado. Es nuestro punto de referencia para validar que tan precisas son nuestras estimaciones, por lo que inmediatamente la podemos asociar con nuestro set de datos de entrenamiento, es decir, el Ground truth esta formado por todas las mediciones de datos que se han recopilado para el entrenamiento.

    Vamos a empezar por calcular el error E, que en este caso será un medio por la diferencia al cuadrado del Ground truth y menos la predicción \hat{y}. Sin embargo recordar que tenemos diferentes opciones para calcular el error.

    Backpropagation

    Al iniciar el proceso se mencionó que los pesos entre neuronas se da aleatoriamente y es de esperar que el error sea alto; una vez tenemos ese error calculado debemos devolvernos y comunicar el valor del error para ajustar los pesos. El ajuste de pesos lo hacemos calculando la derivada parcial de la función aplicada, analizamos como varia el error en función de los pesos.

    Tenemos que utilizar una medida de learning rate  \eta (taza de aprendizaje), que me va a modular que tanto cambio los pesos, ya que la idea no es cambiarlos bruscamente si no que se dibuje una curva suave en donde se muestre como disminuye el error para alcanzar la convergencia.

    Veamos como seria el calculo del nuevo peso para la primera neurona en retro propagación.

    w_{1,1}^{2}(t+1)=w_{1,1}^{2}(t)-\eta \frac{\partial E}{\partial w_{1,1}^{2}}

    Lo que estamos indicando es que el peso para esa neurona en nuestra siguiente iteración t, es igual peso que tiene actualmente, menos el learning rate   \eta por la variación del peso con respecto al error.

    Este proceso se debe aplicar para cada uno de los pesos de la neurona, sin embargo, no se pueden calcular los pesos individualmente, ya que los pesos de una capa anterior influye en los pesos de la capa actual. Para solventar esto debemos calcular los pesos con la regla de la cadena, quedándonos la derivada de w_{1,1}^{2}(t+1) de la siguiente manera:

    \frac{\partial E}{\partial w_{1,1}^{2}}=\frac{\partial E}{\partial a_{1}^{3}}\cdot \frac{{\partial a_{1}^{3}}}{\partial Z_{1}^{3}}\cdot \frac{{\partial Z_{1}^{3}}}{\partial W_{1,1}^{2}}

    Finalmente podemos aplicar los cambios requeridos para ajustar cada neurona y así se repite este proceso iterativamente hasta hacer que nuestros valores deseados sean lo mas cercanos posible.


    ¡Conviértete en un experto tecnológico! 🚀 Suscríbete a nuestro newsletter y recibe las últimas noticias, análisis y tendencias directamente en tu bandeja de entrada. No te pierdas las actualizaciones que harán que tu experiencia tecnológica sea aún más emocionante. ¡Únete a nuestra comunidad hoy! 📧✨

  • ¿Vale la pena comprar un reloj o manilla inteligente? Descubre mi experiencia y las características irresistibles

    ¿Vale la pena comprar un reloj o manilla inteligente? Descubre mi experiencia y las características irresistibles

    Hace un par de años, decidí aventurarme llevándome a casa un reloj inteligente. No fue una compra planificada, más bien una curiosidad por probar algo nuevo. Pero, para mi sorpresa, este pequeño dispositivo se convirtió en algo mucho más valioso de lo que inicialmente imaginé. En este artículo, compartiré mi experiencia y exploraremos juntos si realmente vale la pena invertir en un reloj o manilla inteligente. En resumen SI, pero vamos a ver el por que.

    Una Agradable Sorpresa: Mantente Informado y Activo

    La primera impresión al usar un reloj inteligente fue la facilidad con la que me mantuve informado. Las notificaciones en la muñeca fueron un cambio de juego, permitiéndome estar al tanto de mensajes, llamadas y alertas sin tener que sacar el teléfono constantemente. Esto no solo ahorra tiempo, sino que también brinda una sensación de conexión constante con el mundo digital.

    Pero la verdadera sorpresa vino cuando me di cuenta de cómo el reloj inteligente me motivaba a ser más activo. Los recordatorios para moverme, la monitorización de la actividad física y la posibilidad de establecer metas diarias me animaron a mantener un estilo de vida más saludable. ¡Y sí, confieso que me he vuelto adicto a alcanzar esos objetivos de actividad física a diario!

    Cuida de Ti: Funciones que Hacen la Diferencia

    Otro aspecto que me conquistó fue la gama de funciones dedicadas a la salud y el bienestar. El monitoreo del sueño, la medición del ritmo cardíaco y la capacidad de registrar las actividades físicas brindan una visión completa de tu salud. Contar con esta información en tiempo real no solo es útil, sino que también puede ser crucial para tomar decisiones más informadas sobre tu bienestar.

    Las indicaciones para meditación se han convertido en un componente esencial, ofreciendo la posibilidad de incorporar prácticas de atención plena, te ayuda a despejarte y conectar contigo mismo. Estos relojes suelen proporcionar recordatorios programables para sesiones de meditación, guiando a los usuarios a través de ejercicios de respiración y ofreciendo feedback en tiempo real sobre la calidad de la práctica. Además, algunas plataformas también permiten el seguimiento de la variabilidad de la frecuencia cardíaca durante la meditación, brindando insights sobre la respuesta fisiológica al estrés y facilitando una mayor comprensión de los beneficios para la salud mental.

    En cuanto al seguimiento de actividades deportivas, los relojes inteligentes desempeñan un papel crucial al ofrecer una amplia gama de funciones para monitorear el rendimiento físico. Estos dispositivos registran datos detallados sobre entrenamientos, como la distancia recorrida, el ritmo, la frecuencia cardíaca y las calorías quemadas. Algunos relojes también incorporan sensores específicos para actividades como la natación o el ciclismo, brindando mediciones precisas en entornos específicos. La capacidad de analizar estos datos a lo largo del tiempo permite a los usuarios evaluar su progreso, identificar áreas de mejora y ajustar sus rutinas de entrenamiento para alcanzar metas específicas. Por ejemplo haciendo varias pruebas me di cuenta que saltar la cuerda es una de mis actividades favoritas y que mas rápido me ayuda a cumplir mis objetivos de actividad física diaria.

    En última instancia, la combinación de estas funciones en los relojes inteligentes no solo potencia la práctica de la meditación y la actividad física, sino que también fomenta un enfoque más holístico hacia la salud y el bienestar personal.

    La Sincronización Perfecta: Integración con tu Estilo de Vida

    La utilidad de los relojes inteligentes se extiende más allá del ámbito deportivo y de salud, ya que ofrecen una variedad de funciones que facilitan la gestión diaria. La capacidad de encontrar fácilmente mi teléfono cuando lo pierdo entre el sofá es una característica conveniente que elimina el estrés de perder el dispositivo. Además, la posibilidad de crear notas de voz y recordatorios de manera rápida y sencilla es muy valioso para no olvidar tareas importantes en cualquier momento y lugar.

    La sincronización fluida con otras aplicaciones y dispositivos también brinda la posibilidad de acceder y gestionar información clave en cualquier momento. Ya sea consultando o guardando ideas creativas, notas importantes o fechas de vencimiento de tareas, la versatilidad de estos relojes inteligentes permite una conexión instantánea con el contenido digital relevante. Además, la capacidad de recibir notificaciones y alertas en tiempo real directamente en la muñeca facilita la gestión de la agenda y mejora la eficiencia en la toma de decisiones durante el día a día. O simplemente cuando me aburro le pido que me cuente un chiste y me desconecta menos que pedírselo al celular. En conjunto, estas funciones adicionales hacen que los relojes inteligentes se conviertan en compañeros esenciales para simplificar y organizar las tareas cotidianas de manera eficaz.

    Características Irresistibles: Más Allá del Tiempo

    La capacidad de personalizar la pantalla del reloj añade un nivel adicional de individualidad y estilo. Esta función permite elegir entre una amplia variedad de diseños, adaptándose al gusto del usuario y permitiendo tener un reloj único para cada día o situación. Desde esferas elegantes para ocasiones formales hasta opciones más vibrantes y creativas para momentos casuales, la personalización de la apariencia del reloj se convierte en una expresión personal que va más allá de la simple función de mostrar la hora. En el caso de las manilla si son un poco mas restrictivas, pero a muchas se les puede cambiar las correas al igual que a los relojes.

    Además de la capacidad estética, la integración de pronósticos meteorológicos directamente brinda una conveniencia excepcional. Al visualizar rápidamente las condiciones climáticas actuales y las previsiones a futuro, se puede planificar las actividades diarias de manera más informada.

    Otro detalle distintivo es la capacidad de realizar pagos directamente desde la muñeca. La inclusión de tecnología de pago sin contacto permite efectuar transacciones de forma rápida y segura, sin necesidad de sacar la billetera o el teléfono. Esta funcionalidad no solo aporta comodidad, sino también una capa adicional de seguridad al utilizar métodos de autenticación incorporados en el reloj, sin embargo he de admitir que en donde resido son pocas las veces que he podido usar esta funcionalidad, ya que es poco común que integren estos medios de pago.

    Conclusión: Más que Recomendado

    Puedo afirmar con certeza que la compra de un reloj o manilla inteligente vale la pena. No solo por la comodidad de tener información esencial a la mano, sino por el impulso diario para mantenerse activo y saludable. Estos dispositivos no solo son un accesorio tecnológico, sino un compañero de bienestar que puede marcar una gran diferencia en tu estilo de vida. Así que, ¿vale la pena comprar uno? Mi respuesta sigue siendo un rotundo sí. ¡Descúbrelo por ti mismo y eleva tu experiencia tecnológica a un nivel superior! No olvides compartir tu experiencia y compartirnos tus apps favoritas para el reloj.


    ¡Conviértete en un experto tecnológico! 🚀 Suscríbete a nuestro newsletter y recibe las últimas noticias, análisis y tendencias directamente en tu bandeja de entrada. No te pierdas las actualizaciones que harán que tu experiencia tecnológica sea aún más emocionante. ¡Únete a nuestra comunidad hoy! 📧✨

  • ¿Qué es GO? Descubriendo las Maravillas de Golang, mi experiencia de desarrollo

    ¿Qué es GO? Descubriendo las Maravillas de Golang, mi experiencia de desarrollo

    Cada lenguaje tiene su propio encanto y propósito. Sin embargo, uno que ha ganado popularidad rápidamente en los últimos años es Go, también conocido como Golang. Este proyecto de código abierto ha capturado la atención de desarrolladores por sus características únicas y su enfoque eficiente. En este artículo, nos sumergiremos en el fascinante mundo de Go, explicando por qué deberías considerar aprender este lenguaje de programación, destacando sus características más prominentes y poniendo especial atención en las famosas gorutinas, que para mi fue el gancho que me atrapo.

    Go: Más Allá del Código Abierto

    Go no es simplemente un lenguaje de programación, es un proyecto de código abierto respaldado por algunas de las mentes más brillantes en el mundo de la informática. Su sintaxis, similar a la de C, facilita la transición para aquellos familiarizados con este último. Además, Go emplea tipado estático, proporcionando seguridad y eficiencia en el código.

    ¿Es orientado a objetos?

    En la programación orientada a objetos (POO), la controversia sobre la esencia de la herencia y las clases sigue siendo tema de debate. Algunos expertos sostienen que estos elementos no son fundamentales, sino simplemente herramientas de implementación, por ejemplo Javascript desafían la norma al basarse en prototipos en lugar de clases.

    Por otro lado, Go, el lenguaje de programación desarrollado por Google, adopta un enfoque distinto al permitir un estilo de programación orientado a objetos sin recurrir a clases. En lugar de herencia, Go favorece el patrón de composición, donde las estructuras se utilizan para construir jerarquías sin soporte explícito para subclases. Con conceptos como interfaces de tipo implícito y la flexibilidad de métodos generales, Go redefine la experiencia de la programación orientada a objetos, ofreciendo una alternativa fresca y poderosa a los tradicionales paradigmas de herencia y clases. ¡Explorar estas innovaciones en la POO es todo un viaje; al principio me pareció intimidante pero luego vez la practicidad y logras entender el flujo de trabajo. Así que si esperas clases como tal, aquí no existen, pero se pueden aplicar los principios SOLID sin problema.

    Compilación Cruzada y Eficiencia Nativa

    Uno de los rasgos distintivos de Go es su capacidad de compilación cruzada de manera nativa. Al igual que sus compañeros C y C++, los binarios de Go son portables y se pueden ejecutar en diferentes plataformas sin necesidad de recompilación. Esto no solo facilita la distribución del software, sino que también contribuye a la eficiencia del desarrollo. En otras palabras, implica compilar un programa en el entorno de desarrollo que puede diferir del entorno en el que se ejecutará el programa final, imaginémoslo como generar aplicaciones portables.

    La compilación cruzada es útil en situaciones donde el hardware de destino no es accesible desde el entorno de desarrollo, o cuando se busca optimizar el rendimiento del código para una arquitectura específica. Este enfoque es común en el desarrollo de sistemas embebidos, dispositivos móviles y otros escenarios donde la portabilidad del código es esencial. En mi caso lo he probado para optimizar microservicios, algo que me ha parecido una locura al utilizar la gorutinas, vamos a ver que son.

    Gorutinas: La Magia de la concurrencia en Go

    Una de las razones fundamentales para sumergirse en el mundo de Go es su enfoque único en la concurrencia a través de las gorutinas. Estas son unidades ligeras de ejecución que permiten realizar tareas simultáneas de manera eficiente. A diferencia de otros lenguajes, Go facilita la creación y gestión de múltiples hilos de ejecución sin complicaciones, lo que resulta en un código más rápido y menos propenso a bloqueos. La verdad suena simple y es que es así, Go lo implementa de una manera genial, además de proveernos herramientas para trabajar de manera asíncrona y evitar bloqueos de lectura o escritura.

    Orientado a la Eficiencia en Sistemas Múltiples

    Go está especialmente diseñado para aprovechar sistemas con múltiples procesadores y procesamiento en red. Su capacidad para gestionar eficientemente la concurrencia lo convierte en una opción destacada para aplicaciones distribuidas y servicios en la nube. Si buscas un lenguaje que se adapte a la velocidad y la escalabilidad, Go es tu elección.

    Dinamismo y Flexibilidad: Duck Typing en Go

    Aunque Go utiliza tipado estático, sorprendentemente admite la tipificación dinámica de datos, en lugar de basarse en la herencia o en la implementación de una interfaz específica, el Duck Typing se centra en el comportamiento de un objeto. Si un objeto puede realizar las acciones requeridas, es considerado adecuado, sin importar su tipo. Esto proporciona flexibilidad en el desarrollo, permitiendo adaptarse a cambios en tiempo de ejecución sin sacrificar la seguridad del tipo.

    Delegación, Polimorfismo y Elegancia en la Programación

    Go ofrece una implementación única de la programación orientada a objetos. Aunque carece de herencia de tipos, permite la delegación a través de valores embebidos y el polimorfismo mediante interfaces. La definición de tipos se realiza de manera clara y concisa, fomentando un código elegante y fácil de entender.

    En resumen, aprender Go no solo significa adquirir habilidades en un nuevo lenguaje de programación, sino sumergirse en una experiencia de desarrollo única. Con su enfoque en la eficiencia, la concurrencia sencilla y la portabilidad nativa, Go se ha ganado su lugar entre los lenguajes de programación más destacados. Y ahora solo me queda invitarte a que me acompañes a sumergirnos en este lenguaje, por que créeme que es super genial optimizar cada segundo de respuesta. Es una barbaridad. Espero estés atento al blog por que subiré mas contenido de GO y claro deja tus dudas, y cometarios.


    ¡Conviértete en un experto tecnológico! 🚀 Suscríbete a nuestro newsletter y recibe las últimas noticias, análisis y tendencias directamente en tu bandeja de entrada. No te pierdas las actualizaciones que harán que tu experiencia tecnológica sea aún más emocionante. ¡Únete a nuestra comunidad hoy! 📧✨

  • Año Nuevo Chino: La Excusa Perfecta para Aprender Kali Linux en el Año del Dragón

    Año Nuevo Chino: La Excusa Perfecta para Aprender Kali Linux en el Año del Dragón

    En el marco del Año Nuevo Chino, celebrado con alegría y tradición en todo el mundo, ¿por qué no darle un giro tecnológico y aprovechar la oportunidad para aprender algo nuevo y emocionante? Este año, te propongo que des un paso hacia el fascinante mundo de la ciberseguridad y el hacking ético, ¡y qué mejor manera de hacerlo que sumergiéndote en el universo de Kali Linux!

    El Contexto Cultural: Celebrando el Año del Dragón

    En medio de la celebración del Año Nuevo Chino, que este año comenzó el 2 de febrero, celebrando el año 4722, es fascinante sumergirse en las tradiciones milenarias que rodean esta festividad. Mientras las familias chinas se reúnen para la “Cena de la Reunión” y encienden sus linternas de papel pensé que seria buena idea aprender Kali Linux, y es que llámenme simple pero Año del Dragon es igual al Año para aprender Ciberseguridad. En nada me influyo el logo JAJA!

    Vamos a darle un acercamiento mas pensado: Con aproximadamente 50 millones de chinos viviendo en el extranjero, la celebración del Año Nuevo Chino se ha vuelto verdaderamente global. Equiparable a la población total de España, estas comunidades chinas en todo el mundo se unen en desfiles, exhibiciones culturales y eventos especiales, transformando la festividad en una experiencia internacional. Por lo cual las interacciones sociales como digitales aumentan para u unirse a este festejo, incluso Google saco su Doddle por esta celebración; así que es indudable que en este contexto, la ciberseguridad se convierte en un componente esencial para proteger la conexión digital de personas que participan en estos eventos desde diferentes partes del mundo. ¡Ahora si nos quedo trabajado!

    ¿Qué es Kali Linux y por qué deberías aprenderlo?

    Kali Linux es una distribución de Linux especializada diseñada para pruebas de penetración y seguridad informática. Es la herramienta predilecta de los profesionales de ciberseguridad y hackers éticos para evaluar la seguridad de sistemas y redes. Aprender Kali Linux te proporcionará habilidades fundamentales en el ámbito de la ciberseguridad, una disciplina cada vez más crucial en nuestro mundo digital.

    Pasos para Empezar tu Viaje con Kali Linux:

      1. Instalación de Kali Linux: Sigue los sencillos pasos de instalación disponibles en la documentación oficial de Kali Linux. Puedes instalarlo en una máquina virtual o en un equipo dedicado.
      2. Explorando las Herramientas: Familiarízate con las potentes herramientas de Kali Linux, diseñadas para la auditoría de seguridad, análisis forense y pruebas de penetración. Te dejare una lista de algunas de las mas usadas para que veas el campo de acción que puedes lograr:
          • Nmap: Escáner de red que permite descubrir hosts y servicios en una red.
          • Wireshark: Herramienta de análisis de tráfico de red que permite capturar y analizar paquetes.
          • Metasploit Framework: Marco de desarrollo para pruebas de penetración y explotación de vulnerabilidades.
          • Aircrack-ng: Suite de herramientas para auditorías de seguridad en redes inalámbricas, incluyendo la capacidad de crackear contraseñas de Wi-Fi.
          • Burp Suite: Herramienta para realizar pruebas de seguridad en aplicaciones web, incluyendo escaneo de vulnerabilidades y pruebas de intrusión.
          • Hydra: Herramienta de prueba de contraseña que realiza ataques de fuerza bruta o ataques de diccionario.
          • John the Ripper: Herramienta para la recuperación de contraseñas mediante ataques de fuerza bruta y otros métodos.
          • Hashcat: Herramienta avanzada para el crackeo de contraseñas basada en GPU.
          • OWASP ZAP: Herramienta de seguridad para encontrar vulnerabilidades en aplicaciones web.
          • Sqlmap: Herramienta automatizada para la explotación y toma de control de bases de datos SQL.
          • Maltego: Herramienta de inteligencia de código abierto para la recopilación y análisis de información sobre objetivos.
          • Nikto: Escáner de vulnerabilidades en servidores web.
          • Ettercap: Herramienta para el análisis de tráfico en redes, incluyendo ataques de hombre en el medio (MITM).
          • Snort: Sistema de detección de intrusiones (IDS) y prevención de intrusiones (IPS).
          • Hping: Herramienta de envío de paquetes personalizables que se utiliza para realizar pruebas de penetración y diagnóstico de red.

          Estas son solo algunas de las herramientas que puedes encontrar en Kali Linux. Es importante destacar que el uso de estas herramientas debe realizarse de manera ética y legal, con el permiso explícito del propietario del sistema o red que estás evaluando.

      3. ¿Cómo aprender?: Esta de mas decir que en YouTube existe una gran cantidad de tutoriales donde te explican paso a paso, así que puedes unirte a comunidades en línea, foros y grupos de redes sociales donde los entusiastas y profesionales de la ciberseguridad comparten conocimientos y experiencias. Personalmente me gusta mucho seguir a DragonJAR, Son una empresa enfocada en ciberseguridad y postean contenido muy genial y suelen hacer Meetings en Colombia. También recomiendo mucho seguir a Chema Alonso, en su blog un informático en el lado del mal hace tutoriales increíbles y ha escrito y colaborado con libros que se han convertido en mi biblia de ciberseguridad, 100% recomendado.

    También te propongo que si comentas y te interesa algún curso de Kali o de alguna de sus herramientas dejes tu comentario para así poder realizar contenido que sea de utilidad. Podemos dejarlo aquí en el Blog y hacer la practica en video y dejarlo en mi canal de YouTube, que por cierto ya antes había dejado una conferencia de Kali en mi canal, te la dejo a continuación. No olvides comentar que quieres aprender de Kali para subir contenido.

    Beneficios de Aprender Kali Linux:

    Aprender Kali Linux puede proporcionar varios beneficios, especialmente si estás interesado en el ámbito de la ciberseguridad y pruebas de penetración. Aquí hay algunos beneficios clave:

    • Desarrollo de habilidades esenciales en ciberseguridad.
    • Mayor comprensión de la seguridad de redes y sistemas.
    • Posibilidad de explorar carreras en ciberseguridad y hacking ético.
    • Debes hacerlo por medio de la practica, por lo que se hace muy divertido y tutorizado.
    • La comunidad es gigantesca y de seguro encontraras amigos y personas dispuestas a ayudarte.
    • Podrás lucir con orgullo el titulo de hacker.
    • Finalmente y mas importante, + 1 punto en sensualidad.

    Un Año de Desafíos y Aprendizaje

    Este Año del Dragón, dale un toque tecnológico a tus metas y desafíos personales. Aprender Kali Linux no solo te abrirá las puertas al emocionante mundo de la ciberseguridad, sino que también te permitirá celebrar el Año Nuevo Chino con un enfoque innovador y audaz. ¡Que este año sea un viaje de descubrimiento, aprendizaje y éxito en el fascinante universo de la tecnología y la ciberseguridad! ¡Feliz Año Nuevo Chino! 🐉🎉


    ¡Conviértete en un experto tecnológico! 🚀 Suscríbete a nuestro newsletter y recibe las últimas noticias, análisis y tendencias directamente en tu bandeja de entrada. No te pierdas las actualizaciones que harán que tu experiencia tecnológica sea aún más emocionante. ¡Únete a nuestra comunidad hoy! 📧✨

  • Desconectando cables y conectando emociones: Soledad informática

    Desconectando cables y conectando emociones: Soledad informática

    Estaba haciendo una introspección y no pude dejar de notar que mi circulo social es reducido, y que además muchos de las personas jóvenes con quien trabajo en tecnología están solos o tienen relaciones algo toxicas. Hoy en día, no es un secreto que existe un fenómeno paradójico donde entre mas conexión digital tenemos mas desconexión humana existe, se a incrementado la soledad y las personas tienden a sentirse menos felices y poco realizadas. Podemos hablar sobre sus causas, sobre la influencia de las redes, las tendencias, tópicos y si eres tan friki como yo, hasta podríamos integrar la ecuación de Drake para cuantificar por que estamos solos(LOL), pero en este post quiero simplemente dar una opinión ligera, divertida y algunos tips para hacer update a nuestra cpu y lograr ser parte de la red de la vida y no solo limitarnos a compartir memes.

    Código solitario

    Es bien sabido que los informáticos tienen una relación íntima con sus computadoras. Pero, ¿Por qué prefieren la compañía de líneas de código en lugar de personas? La respuesta es más sencilla de lo que parece: ¡El código no te pide prestado dinero, ni te deja plantado en la cafetería! Fin del análisis…

    Pero enserio, la naturaleza de nuestro trabajo, centrada en la lógica y la resolución de problemas, puede llevar a una inmersión profunda nuestros propios pensamientos, creando una barrera invisible con el resto del mundo. A veces, el código puede ser un mejor compañero de conversación que el vecino del otro piso; yo también he pasado horas peleando con una instrucción o buscando como solucionar un bug entre mundos de respuestas de Stackoverflow y cuando llegas a la solución es la mejor sensación, te olvidas de todas esas horas y te felicitas como el campeón que eres. Y esto no se limita a los informáticos, la verdad es que muchas profesiones y sobre todo después de pandemia, nos acostumbramos a la comodidad de la casa y explorar el mundo por medio de un dispositivo. Lo digo por experiencia propia, por ejemplo me entere de la pandemia fue por el miedo a perder los sabores, amo comer y mi mayor terror fue perder el gusto, por lo demás ya vivía aislado y encerrado en mis temas y proyectos.

    Y hoy salgo aquí gritando al mundo que esta mal encerrarnos, esta mal dejar pasar la vida y no sacar nada de ella, independientemente de que creas, como vivas y que esperas para tu futuro debes tomar esas pequeñas oportunidades que aparecen cada día. Carpe diem. Y es que no soy una historia de redención, sigo luchando con salir, con dejar la comodidad y buscar la aventura.

    Cada día suelo hablar con una amiga que se ha convertido en mi gurú en este cambio, he tenido altas y bajas y quienes me conocen saben que soy muy introvertido, aun así cada vez que salgo alguna payasada me ocurre y me he dado cuenta que esas situaciones y compartirlas con los demás es lo que mas alegría me da.

    Habilidades blandas en el mundo binario

    Las habilidades blandas, esas que no tienen nada que ver con la suavidad de las almohadas, son la clave para romper este hielo digital. Comunicación, empatía, trabajo en equipo y otras habilidades sociales pueden parecer tan ajenas como un lenguaje de programación exótico, pero son esenciales para salir del modo “solitario” y abrazar el modo “social”.

    Pequeños cambios día a día van haciendo hábitos y van creando una hermosa historia que dejar plasmada en Wikipedia. A veces tratamos y nos cuesta pero esos pequeños amigos que se quedan te impulsan a buscar mas y a ir tras las aventuras. Muchas veces me repito: No lo haces por ti lo haces por las historias. Y creo que esa es una excelente manera, busca tu motivación, busca tu ancla para no perderte solo en internet.

    Desenchufando la soledad

    Primero ten en cuenta que nuestra droga es digital y que parece que no genera ningún perjuicio, así que es difícil tratarla y lleva tiempo. Ahora como logramos salir de la guarida y sumergirnos en el mundo real? Aquí van algunos consejos prácticos:

    • Outsourcing: Debemos hacernos con un par de amigos que nos motiven a salir, que no sean solo chats y juegos de computadora. Lo peor que puedes hacer es buscar mas amigos digitales, tener un millón de amigos en Facebook es equivalente a estar en un edificio de solo chismosos, nada bueno sacaras escuchando babosadas.
    • Agregar a lista de deseados: Este particularmente me ha servido, y es que encontrar esas cosas que te gustan te motivan a salir. En mi caso a sido la fotografía, acampar, la astronomía y ver a mi perro huir de perros mas pequeños. Por cierto, las mascotas son un gran aliado para empezar a socializar por si te sientes intimidado de hablar con otros.
    • -f: Fuérzate a buscar esas aventuras.

    También me gustaría incluir algunos puntos que podemos practicar en la oficina, podrías implementar con tus compañeros.

    • Eventos tecnológicos con toque humano: Organiza eventos tecnológicos que no se centren solo en códigos y algoritmos, sino también en historias y experiencias. ¡Que se hable de los fallos más épicos o de los proyectos más locos!
    • Talleres de habilidades blandas: Ofrece talleres que combinen la tecnología con el desarrollo personal. Aprender a trabajar en equipo puede ser tan emocionante como descubrir un nuevo framework.
    • Mentoría intergeneracional: Fomenta la conexión entre informáticos más experimentados y aquellos que están dando sus primeros pasos en el mundo tecnológico. La sabiduría de la experiencia puede ser tan valiosa como el código más eficiente.

    Código abierto, corazón abierto

    En resumen, la clave está en balancear el amor por el código con la apertura al mundo exterior. Los informáticos, como cualquier ser humano, también necesitan socializar y compartir experiencias. Desenchufemos esos cables de la soledad y conectemos en el mundo real. Y si no eres informático pero estas vinculado al mundo de la tecnología también es probable que estés cayendo en el ostracismo informático, así que ponte las pilas, sal mas al mundo real y que no te de miedo compartir quien res al mundo.

    Así que ya sabes, la próxima vez que veas a un informático absorto en su pantalla, invítale un café y pregúntale sobre su código favorito. ¡Te sorprenderá la cantidad de historias que pueden contar más allá de las líneas de código! ¡Feliz navegación en este maravilloso océano digital! 🚀💻


    ¡Conviértete en un experto tecnológico! 🚀 Suscríbete a nuestro newsletter y recibe las últimas noticias, análisis y tendencias directamente en tu bandeja de entrada. No te pierdas las actualizaciones que harán que tu experiencia tecnológica sea aún más emocionante. ¡Únete a nuestra comunidad hoy! 📧✨

  • Google Gemini: El nuevo competidor de la Inteligencia Artificial

    Google Gemini: El nuevo competidor de la Inteligencia Artificial

    En el apasionante universo de la inteligencia artificial, Google ha sacado a relucir su as bajo la manga con el lanzamiento de su proyecto más reciente e innovador: ¡Google Gemini! Este flamante modelo de IA tiene como objetivo liderar la competencia y dejar atrás a sus contrincantes, incluyendo al famoso GPT-4 de OpenAI.

    Google Gemini no es solo otra aplicación o chatbot; es un modelo multimodal que va más allá del mero procesamiento de texto. Puede sumergirse en el mundo de las imágenes, el audio y hasta el código de programación. Su enfoque flexible lo convierte en una opción poderosa y versátil en el fascinante paisaje de la inteligencia artificial.

    La magia detrás de Google Gemini reside en su proceso de entrenamiento único. A diferencia de otros modelos, Gemini ha sido creado desde cero como un modelo multimodal, lo que significa que puede comprender y combinar diversas fuentes de información de manera natural. Este enfoque integral le permite hacer malabares con objetos en tiempo real, sugerir canciones e incluso mejorar la generación de código gracias a su innovador sistema AlphaCode2.

    El modelo se presenta en tres versiones: Ultra, Pro y Nano. La Ultra brilla como la más avanzada y multimodal, mientras que la Nano, aparentemente más modesta, revoluciona al integrarse directamente en dispositivos móviles sin necesidad de una conexión constante a un servidor externo.

    Al compararlo con el gigante de OpenAI, GPT, Gemini Ultra emerge como el digno competidor de GPT-4, superándolo en las pruebas actuales. Gemini Pro compite con GPT-3.5, y aunque Gemini Nano aún no tiene su equivalente directo, destaca como una solución especialmente diseñada para dispositivos con restricciones de computación y memoria. Sin embargo no olvidemos que GPT Plus ha decidido elevar su juego con una emocionante actualización. Ahora, este asistente virtual puede ver, escuchar y hablar; sin embargo Gemini, con su diseño multimodal desde cero, puede destacar en su manera de relacionar los diferentes inputs.

    Tanto Google Gemini como ChatGPT adoptan una implementación gradual de sus nuevas funciones. Gemini Pro ya ha hecho su entrada triunfal en Google Bard, con disponibilidad en español. Además, se avecina el lanzamiento de una versión mejorada de Google Bard, llamada Bard Advance, que integrará Gemini Ultra a partir del próximo año.

    OpenAI, por su parte hace las actualizaciones y destaca su compromiso con construir una Inteligencia Artificial General (AGI) segura y útil. Ambos equipos reconocen los desafíos y riesgos adicionales que presentan estas tecnologías emergentes y han tomado medidas para abordarlos.

    Estamos viviendo un emocionante momento en la evolución de la inteligencia artificial, donde Google Gemini y ChatGPT de OpenAI compiten por la vanguardia. ¿Tienes alguna pregunta sobre cómo estas tecnologías están redefiniendo la interacción humano-máquina? ¿Te intriga saber más sobre las capacidades específicas de Gemini o las últimas actualizaciones de ChatGPT? ¡Queremos escucharte! Deja tus comentarios y preguntas a continuación; estamos ansiosos por sumergirnos en una conversación fascinante sobre el futuro de la IA y responder a todas tus inquietudes. ¡La revolución tecnológica está en marcha, y tu participación en esta conversación hace que sea aún más emocionante!


    ¡Conviértete en un experto tecnológico! 🚀 Suscríbete a nuestro newsletter y recibe las últimas noticias, análisis y tendencias directamente en tu bandeja de entrada. No te pierdas las actualizaciones que harán que tu experiencia tecnológica sea aún más emocionante. ¡Únete a nuestra comunidad hoy! 📧✨

  • Explorando el Rabbit R1: Un vistazo a la revolución de la Inteligencia Artificial

    Explorando el Rabbit R1: Un vistazo a la revolución de la Inteligencia Artificial

    En el vasto mundo de la tecnología y la inteligencia artificial, cada día emergen innovaciones que prometen transformar la forma en que interactuamos con el mundo digital. En este emocionante viaje hacia el futuro, una de las joyas más recientes que ha capturado la atención de la comunidad tecnológica es Rabbit R1. En este artículo, exploraremos qué es Rabbit R1, cómo funciona, y me encantaría compartir una pequeña reflexión sobre el dispositivo y el camino de la inteligencia artificial.

    ¿Qué es Rabbit R1?

    Rabbit R1 es un dispositivo compacto con dimensiones de 7,8cm x 7,8cm x 1,3cm y un peso de 115g. Ofrece una vida útil de la batería de al menos 500 ciclos, con una retención del 80%, y se carga con una corriente de 500mA, con una capacidad de carga máxima de 1000mAh.

    En cuanto a la conectividad, el dispositivo es compatible con Bluetooth 5.0, Wi-Fi de 2.4GHz + 5GHz y 4G LTE. Presenta un llamativo color naranja brillante y tiene una salida de altavoz de 2W, así como micrófono.

    El dispositivo cuenta con una pantalla táctil TFT de 2.88 pulgadas y está impulsado por un procesador MediaTek MT6765 Octa-core (Helio P35) con una frecuencia máxima de CPU de 2.3GHz. Ofrece 4GB de memoria RAM y una generosa capacidad de almacenamiento interno de 128GB.

    En términos de localización, el dispositivo incorpora un magnetómetro y GPS, y cuenta con sensores de movimiento como acelerómetro y giroscopio. Puede operar en temperaturas que van desde 0°C a 45°C (32º a 113º F).

    El dispositivo se carga y se expande a través de un conector USB-C, puede tomar fotografías con una resolución de 8MP (3264×2448) y una resolución de video de 24fps a 1080p. También tiene una ranura para tarjeta SIM.

    Si quieres echarle un vistazo al sitio web oficial te dejo el enlace aquí.

    Con un diseño compacto y características robustas, el hardware proporciona la base sólida de nuestro dispositivo, pero es en el reino del software donde su verdadera magia cobra vida. En el corazón de esta innovación se encuentra un modelo de inteligencia artificial bautizado como LAM(Large Action Model), básicamente es el pilar fundamental del sistema operativo Rabbit OS, donde su objetivo es comprender las intenciones humanas en entornos informáticos y llevarlas a cabo.

    Sinceramente yo no tengo el dispositivo, ni he tenido oportunidad de probarlo personalmente, pero e invertido un buen tiempo en ver los reviews y en visitar su sitio web para entender como lo hace. Se ve muy bueno y en los videos aparecen instrucciones sorprendentes, por ejemplo una persona delante del ordenador le dice al dispositivo que replique una serie de cambios de una imagen a las demás, esa instrucción ya implica un montón de procesos que realmente son muy interesantes. ¡Vamos a diseccionarlo!

    ¿Qué hace el Rabbit R1?

    El Rabbit R1 es un computador pequeño accionado por voz, va a responder tus preguntas, leer tus mensajes, agendar tus citas… En pocas palabras es un asistente robot que pretenden que lo lleves a todo lado. La verdadera innovación de este producto es crear un modelo de IA capaz de interpretar las intenciones y poderlas ejecutar en cualquier interfaz, hay que ver si es asi.

    Pero vamos a ir  un paso mas allá y ver que implica poder hacer esto. Lo primero es que al activar el dispositivo por medio de un botón se nos activa la entrada de audio, es decir que el dispositivo entra en modo de escucha a la espera de nuestras instrucciones.

    Aquí empieza la magia del modelo de IA. Lo primero que vemos es que una de las características destacadas de Rabbit R1 es su habilidad para comprender y generar texto de manera natural. A través de técnicas avanzadas de procesamiento del lenguaje natural, Rabbit R1 puede interpretar preguntas, responder de manera coherente y generar contenido humano similar. Es indudable que cuenta con un modelo de procesamiento de Voz y NLP ya sea propio o existente.

    El modelo procesamiento de voz crea las entradas para que el modelo de NLP genere las instrucciones que luego son procesadas por el modelo de acciones LAM, que lo que va a hacer en primera instancia es comprender nuestra intención, y tener en cuenta que podemos tener varias como lo han demostrado en los videos.

    Las intenciones anteriores pueden desencadenar que primero abra la aplicación de Google maps y también Spotify, donde claramente debe saber manejarse por las aplicaciones y mostrarnos la información que es relevante para nosotros. LAM viene preentrenado con las aplicaciones mas usadas, sin embargo tiene un modo de enseñanza, donde se puede activar la cámara del dispositivo e irle mostrando paso a paso una interfaz y proveerle lo necesario para que pueda replicarlo, pero este modo es experimental y yo dudaría un poco de que se adapte tan bien como lo prometieron, sin embargo hay que esperar y ojala me equivoque y funcione de maravilla.

    Rabbit R1 es muy práctico

    Vuelvo a mencionar que todo esto ha sido en base a los videos, así que hay que esperar a que nos llegue el producto final. El producto muestra que se puede simplificar tareas cotidianas y ofrecer soluciones eficientes, además de ofrecernos una interfaz que es mucho mas practica y humana por medio de la interacción con la voz. Además de que si cumple con la interacción con diferentes interfaces y el proceso de enseñanza es cómodo de seguro muchos dispositivos apuntaran hacia este nuevo modelo. Aunque a nivel de Hardware si lo cambiaria a algo mas practico como un reloj o pulsera, así seria mas intuitivo ver nuestra muñeca para ver los datos que necesitemos y no estar sacando el pequeño aparato. Aunque no me quejo, sin duda por el precio y lo que ofrece es un super producto.

    Delegación total a las IA

    No soy un Heater de la IA, al contrario, en este blog comparto lo que voy aprendiendo y me encanta como evoluciona, sin embargo si me parece preocupante que la automatización nos coja desprevenidos, y es que claro estas tecnologías permiten una eficiencia y automatización muy buenas y como lo dije anteriormente muy practicas pero nos acostumbran a consumir sin pensar, a delegar decisiones que pueden ser o no relevantes y nosotros somos los que en realidad tenemos el poder de calificar estas desiciones.

    Imaginemos la siguiente situación,  le pedimos a Rabbit R1 que pida una pizza, al recibirla debo notificarle al dispositivo la recepción para que concluya la transacción. Asumiremos que el dispositivo tenia en cuenta un tiempo promedio de entrega y el repartidor supero ese tiempo debido a un accidente que tuvo pero se disculpó he informo de la situación, sin embargo el dispositivo al no tener este contexto califico negativamente al repartidor y no nos informa de ello ya que no es información relevante para el usuario.

    Claro, es una situación hipotética y se pueden colocar controles para ello, sin embargo algo que nos ha demostrado la IA es que esta sesgada a los parámetros de entrenamiento y que son altamente vulnerables a los cambios y falta de contexto humano.

    Otro punto también es la falta de responsabilidad y transparencia de las empresas frente a sus modelos, ya que ovinamente administran su producto como tal pero se olvidan de las repercusiones sociales de este.

    Y finalmente quisiera también dejar en la mesa una inquietud ¿Cómo podrían las startups o nuevos servicios posicionarse cuando un dispositivo elige en vez de las personas? No hay peligro de crear oligopolios? ¿Qué hay con el tema de seguridad? Ellos mencionan que nada se guarda, pero que pasa con las credenciales, con los datos si mi dispositivo lo extravío… Dudas que supongo se resolverán sobre la marcha.

    En resumen, Rabbit R1 y su innovador Large Action Model (LAM) ofrecen una experiencia revolucionaria al comprender nuestras intenciones y simplificando nuestras interacciones digitales de manera asombrosa.

    Nos encantaría conocer tu opinión sobre esta emocionante convergencia entre hardware y software, y cómo visualizas el futuro de la inteligencia artificial en la vida cotidiana. ¿Qué tareas te gustaría delegar a Rabbit R1? ¿Cuáles son tus expectativas y preocupaciones? ¡Déjanos tus comentarios a continuación! Tu perspectiva es valiosa mientras continuamos explorando las fronteras de la tecnología y la inteligencia artificial. ¡Hasta la próxima interacción!


    ¡Conviértete en un experto tecnológico! 🚀 Suscríbete a nuestro newsletter y recibe las últimas noticias, análisis y tendencias directamente en tu bandeja de entrada. No te pierdas las actualizaciones que harán que tu experiencia tecnológica sea aún más emocionante. ¡Únete a nuestra comunidad hoy! 📧✨

  • Conceptos básicos de Deeplearning

    Conceptos básicos de Deeplearning

    Perceptrón

    Esta definición es clave para entender los conceptos matemáticos de una red neuronal. Fue creada por Frank Rosenblatt en 1957 pero debido a las limitantes técnicas no se pudo avanzar en su desarrollo. Sin embargo sus bases teóricas son las mismas.

    Un perceptrón es la unidad lógica básica de una red neuronal, es decir, es una neurona. Su funcionamiento es muy sencillo.

    Consta de una capa de entrada(inputs) y una neurona, esta neurona procesa una función(f) de activación, donde se transforma el bias(b) + el sumatorio de las entradas-inputs(x) * los pesos(w).

    La función de activación cambia dependiendo del tipo de problema que vayamos a resolver; pero eso lo veremos en otro post.

    El peso se refiere a la estimulación o nivel de interacción que tendrá el input, esto quiere decir cual es la importancia de ese dato de entrada en el calculo final.

    Ahora para entender el bias vamos a hacer unas representaciones de los datos y del funcionamiento del perceptrón.

    Imaginemos que tenemos un sensor que registra dos datos de entrada, los cuales pueden tomar valor 1 o 0, si queremos que nuestra neurona se active con uno de los dos datos de entrada tomaría la funcionalidad de una compuerta lógica OR, si por el contrario queremos que se active cuando ambos valores son 1 funcionaria como una compuerta de tipo AND. También tenemos un caso especial con la puerta lógica XOR, es cuando queremos la activación de la neurona únicamente cuando una de las salidas es 1. Vamos a hacer sus correspondientes tablas de verdad para entender su funcionamiento.

    OR

    X1
    X2 0 1
    1 1 1
    0 0 1

    AND

    X1
    X2 0 1
    1 0 1
    0 0 0

    XOR

    X1
    X2 0 1
    1 1 0
    0 0 1

    Vemos con la tabla de verdad que los datos en las compuertas lógicas OR y AND son linealmente separables, es decir, con una única línea puedo separar el espacio de valores.

    El bias, corresponde justamente al valor donde se intercepta el origen y la línea de división de los datos. Este bias puede variar para restringir alguno de los espacios. Sin embargo esta definición es para una función de activación o separación lineal, estos temas los veremos mas adelante; por ahora nos quedaremos con que este valor nos ayuda a controlar la activación de la neurona.

    El objetivo es ajustar los pesos y el bias para que separen los datos de la mejor manera posible. Esto lo podemos hacer en un proceso iterativo donde nos vamos acercando a los mejores valores.

    En una única neurona tenemos un montón de posibles valores correctos, sin embargo como vimos, ¿que pasa con el caso de la compuerta lógica XOR? Donde necesitamos de dos líneas para separar los datos.

    Perceptrón multicapa

    Para dar solución al problema de XOR se añade una capa oculta, es decir una línea nueva de neuronas antes de la neurona de salida, estas se encargaran de procesar los valores de los inputs para luego ser ponderados y procesados por la neurona de salida. Básicamente esta es la definición de un perceptrón multicapa, es decir le añadimos capas ocultas para aumentar la segmentación de los datos.

    Sin embargo ahora tenemos una cuestión mas importante. Se menciono que tenemos  muchos valores que ajustar, y vemos que a medida que vamos añadiendo capas, estos valores crecen, y se debe encontrar los valores mas óptimos para la solución del problema. Vemos el paso a paso del proceso que conocemos como Entrenamiento.

    Los valores que podemos modificar de manera global durante el proceso de entrenamiento los llamamos Hiperparámetros. Y los valores que modifica la propia red durante este proceso se llaman Parámetros.

    Época

    Anteriormente mencionamos que el proceso de entrenamiento es iterativo, es decir que lo repetimos un numero concreto de veces, que esta determinado por una función o valor de un hiperparámetro; a cada una de estas iteraciones la conocemos cómo época.

    Una época esta formada por los siguientes pasos:

      1. Forward propagation
      2. Comparación con el ground truth
      3. Cálculo del error
      4. Backpropagation

    Para profundizar en este y otros conceptos lo haremos en el siguiente post. Estará la explicación matemática de la selección de estos valores.

  • Introducción lógica borrosa

    Introducción lógica borrosa

    Conceptos básicos

    Dato: Representación parcial o total de algo. Tenemos diferentes tipos de datos. Suelen almacenarse en un datalake(repositorio de datos diversos en bruto) para extraer información.

    Información: conjunto de datos, Aprovechamiento inteligente de datos masivos.

    Conocimiento: Reglas aplicadas a los datos o información. Abstracción o patrones de un algo. Es la base del sistema de inteligencia de negocio.

    • Sistemas de ayuda a la decisión
    • Sistemas de recomendación
    • Análisis de series temporales (predicción(estimación) y pronostico(hecho puntual, sigue una tendencia))

    Tipos básicos de analítica de datos

    • Descriptivo: Describe que ocurrió o esta ocurriendo
    • Diagnostico: Indaga las causas de lo que esta ocurriendo y valida que evidentemente ocurre lo que se afirma que esta sucediendo.
    • Descubrimiento
    • Predictivo: ¿Qué es lo mas probable que ocurre?
    • Prescriptivo ¿Qué es lo mejor que se puede hacer?

    SOFTComputing

    Asociación de diferentes técnicas, donde cada una aporta desde su campo fuerte, los principales componentes son:

    • Lógica borrosa
    • Redes neuronales
    • Razonamiento probabilístico (redes de creencias)
    • Algoritmos genéticos
    • Teoría del caos
    • Teoría de aprendizaje

    Ingeniería del conocimiento

    Se encarga de analizar, pulir y extraer información de los datos por medio de sistemas expertos.

    Abducción: Razonamiento aproximado.

    Deducción: Inducción de los ejemplos a la generalización.

    Correlación a causalidad (Razonamiento por analogía)

    • Una causa tiene una relación con un efecto
    • Una causa puede tener una relación de similitud con otra causa, por ejemplo la gripe SARS tiene una relación de similitud con el Covid, por lo que podemos crear una relación para estimar los efectos.

    Conjunto clásico o CRISP

    Un conjunto es una lista, también lo podemos especificar a través de propiedades o reglas, por ejemplo el conjunto de los números pares.

    La función de característica indica si un elemento hace parte o no de un conjunto.

    El numero de elementos que pertenece a un conjunto A se llama cardinalidad del conjunto |A|

    La familia de conjuntos que incluye todos los subconjuntos de un conjunto se denomina conjunto potencia. El numero de elementos del conjunto potencia será: |P(A)|=2^{|A|}

    Lógica borrosa

    Proporciona bases para el razonamiento aproximado, incluye:

    • Predicados borrosos(caro, alto, raro, peligroso, …)
    • Cuantificadores borrosos (mucho, parecido, casi todo, …)
    • Valores de verdad borrosos (muy cierto, mas o menos cierto, …)
    • Cercas semánticas (muy, algo, …)
    Conjunto CRISP vs conjunto borroso
    Conjunto CRISP vs conjunto borroso

    El soporte de un conjunto borroso A es el conjunto crisp que contiene todos los elementos del domino que tienen un grado de pertenencia no nulo en A.

    Altura de un conjunto borroso es el mayor grado de pertenencia que tiene cualquiera de los elementos del conjunto borroso.

    Núcleo de un conjunto borroso es el conjunto de elementos del soporte que tienen el máximo grado de pertenencia al conjunto borroso.

    Un conjunto borroso es normalizado cuando al menos uno de sus elementos alcanza el grado de pertenencia 1.

    \alpha-corte de un conjunto borroso A es un conjunto crisp que contiene todos los elementos de conjunto universal X que que tienen un grado de pertenencia en A mayor o igual que el valor \alpha.

    Conjunto nivel de un conjunto borroso A es el conjunto de sus distintos \alpha-cortes o niveles \Alpha\in[0,1].

    Cardinalidad escalar de un conjunto borroso A definido en un conjunto de universo finito se define como la suma de los grados de pertenencia de todos los elementos del dominio en A

    \left|A\right|=\sum_{x\in X}\mu_A(x)

    Cardinalidad borrosa es un conjunto borroso cuya función de pertenencia se define como:

     \mu_{\left|{A}' \right|}(\left|A_\alpha\right|)=\sum_{i=1,n}\alpha_i/n_i

    Indica cuantos elementos quedan por encima de un \alpha-corte.

    Un conjunto borroso A es convexo sí y solo sí cada uno de sus \alpha-cortes es un conjunto convexo en sentido crisp.

    Número borroso es un conjunto borroso convexo y normalizado cuya función de pertenencia es continua.

    Ejemplo número borroso 0
    Ejemplo número borroso 0

    Operadores

    Or \vee=\cup Unión

    And \wedge=\cap Intersección

    Implica \to=\subseteq Inclusión

    Negación \lnot A=\tilde{A} Complementario

  • Aprendizaje supervisado – Clasificación

    Aprendizaje supervisado – Clasificación

    Regresión logística

    LOGR o regresión logit, a pesar de su nombre no tiene nada que ver con algoritmos de regresión, si no que es un algoritmo de clasificación. Funciona creando una frontera lineal entre dos clases, es decir que nos da una probabilidad de que la predicción pertenezca a una determinada clase, suele ser P>0.5=1 pero podemos fijar este criterio de decisión dependiendo de nuestra necesidad.

    Una de las métricas mas utilizadas para medir la bondad de los clasificadores es la métrica AUC(área bajo la curva). La curva ROC mide la relación entre las tasas de aciertos y de falsos positivos en función del umbral de clasificación. Cuanto mayor sea el área bajo la curva ROC, mejor será el clasificador. Un clasificador perfecto tendrá un valor de AUC = 1.

    Como mencionamos anteriormente, este algoritmo separa en dos clases, es decir que cuando tenemos un problema multiclase lo que hace es validar una clase frente a todos los demás, si no corresponde toma la siguiente clase y vuelve a comparar, algo como un switch case iterativo, separa todos los items de una clase, luego la siguiente y así sucesivamente hasta que crea una línea de separación por cada clase, lo que significa que tenemos un subproblema por cada clase a predecir; con cada línea(corete de frontera) se calculan las bisectrices.

    Para llevar a cabo el entrenamiento utilizamos una función matemática que permite devolver predicciones a partir de la transformación exponencial de una combinación lineal de los atributos.

    \hat{y}=\frac{1}{1+e^{-W_0-W_1\cdot X_1-\cdots -W_p\cdot X_p}}

    Como mencionamos es un proceso iterativo, en donde cada época los coeficientes se van actualizando para acercarse al resultado deseado(separar la clase de las demás). El valor optimo de estos coeficientes son aquellos que maximizan la siguiente función objetivo(función de verosimilitud):

    f(W_0,\cdots,W_p)=\sum_{i=1}^{n}y_i\cdot ln(\hat{y_i})+(1-y_i)\cdot ln(1-\hat{y_i})

    Ventajas:

    • Simplicidad
    • Fácil de interpretar las predicciones
    • Tiempo de entrenamiento razonable
    • Tiempo de predicción casi instantáneo

    Desventajas:

    • Se asume que los atributos son independientes, no tienen una correlación significativa
    • Modelo muy simple, solo permite crear una línea de decisión entre dos clases

    Árboles de decisión

    Es un modelo de conocimiento que puede generarse a partir de datos y puede usarse tanto para clasificación como regresión. Se divide el conjunto de datos de manera jerárquica en trozos menores hasta lograr llegar a una única clase.

    A Tutorial to Understand Decision Tree ID3 Learning Algorithm

    Antes de ver la implementación vamos a conocer el índice de Gini, veamos un ejemplo.

    En este caso vamos a calcular el índice Gini por género.

    p_g=\frac{9}{16}=0.56

    q_g=1-p_g=0.44

    G_g=p_{g}^2+q_{g}^2=0.50

    p_b=\frac{6}{14}=0.42

    q_b=1-p_b=0.58

    G_b=p_{b}^2+q_{b}^2=0.51

    Tenemos el índice de Gini para las chicas y los chicos, ahora para sacar el ponderado por genero lo que hacemos es sumar ambos índices por la frecuencia de las posibilidades.

    Gini_G=\frac{16}{30}\cdot G_g+\frac{14}{30}\cdot G_b

    Gini_G=\frac{16}{30}\cdot 0.50+\frac{14}{30}\cdot 0.51

    Gini_G=0.50

    En este caso solo lo hicimos con un atributo, pero la idea es hacerlo por todos los atributos, por ejemplo altura, edad, etc. Este valor nos sirve para detectar los atributos mas discriminativos, es decir calculamos el índice Gini para cada condición y la que tenga mas valor es la que tiene mayor rango en la jerarquía.

    Ventajas:

    • Simplicidad
    • Fácil de interpretar las predicciones
    • Tiempo de entrenamiento razonable
    • Tiempo de predicción muy rápido
    • Flexibilidad en la características de los datos

    Desventajas:

    • Riesgo de sobreajuste
    • Sensibilidad al desbalanceo de las clases

    Support Vector Machine(SVN)

    Este algoritmo funciona a partir de funciones discriminales lineales, es decir que se limita a discriminar entre dos clases, sin embargo no significa que debamos huir a problemas multiclase, lo que hacemos es un one vs all para abordar estos problemas.

    Consiste en hallar un hiperplano optimo capaz de separar el espacio muestral en dos regiones de manera que cada región pertenezca a una clase, donde el optimo es el que maximiza el margen.

    A los dos puntos mas cercanos que tocan el limite del margen se les llama vectores de soporte. Definiendo un hiperplano positivo y uno negativo.

    Dada una muestra (x_i,y_i) y un hiperplano denotado por un vector w y un bias b, el objetivo es determinar la distancia de x_i al hiperplano.

    \beta =w\cdot x +b

    D=\{|(x_i,y_i)|x_i\in\mathbb{R}^{n}, y_1\in\{-1,1\}\}_{i=1}^{m}\to \textrm{}_{i=1\cdots m}^{B=\textrm{min}\beta_i}

    Al utilizar esta función nos encontramos con el problema del signo negativo, donde en la anterior imagen al minimizar \beta pareciera que cualquiera de las dos opciones funciona pero solo hay un hiperplano optimo.

    Para solucionar esto se introduce la variable y de manera que:

    • Si el resultado es positivo la clasificación es correcta
    • Si el resultado es negativo la clasificacion es incorrecta

    Ahora el objetivo a minimizar es:

    F=\textrm{}_{i=1\cdots m}^{B=\textrm{min }y_i(w\cdot x_i+b)}

    Tenemos adicionalmente otro problema, por ejemplo, un vector w_1=(2,1) y b_1=5 representa el mismo hiperplano que el vector w_2=(20,10) y b_2=50. Vemos que en el caso de w_2 tenemos una F diez veces mayor. A esto se le conoce como problema de escala. La solucion es dividir el vector w y el bias b, por su norma; por lo que la función objetivo a minimizar seria:

    M=\textrm{}_{i=1\cdots m}^{B=\textrm{min}}y_i(\frac{w}{||w||}\cdot x+\frac{b}{||w||})

    Minimizando:

    \textrm{min}\frac{1}{2}||w||^2 donde y_i(w\cdot x_i)+b\geq 1,i=1,\cdots,m

    Hasta ahora este proceso me genera un hard margin SVN que requiere que mis datos sean linealmente separables y que no haya distorcion en los datos; para solventar esto surge soft margin SVN.

    El soft margin SVN introduce una variable de holgura capaz de minimizar los errores de predicción, permitiendo cometer mas errores de clasificación durante el entrenamiento, su función a minimizar es:

    \textrm{min}\frac{1}{2}||w||^2+C\sum_{i=1}^{m}\zeta_i

    Donde

    y_i(w\cdot x_i+b)\geq 1-\zeta_i
    \zeta_i\geq0 para cualquier i=1,\cdots,m

    C(box constraint) es un parámetro de regularización que controla la compensación entre la penalización de las clasificaciones erróneas(teniendo en cuenta las variables de holgura) y el ancho del margen.

    Usando hard margin SVN podemos generar un problema de overfiting, ya que el hiperplano optimo se ajustara a nuestros datos.

    Usando la librería de SKlearn al colocar la C, entre mas alto menos importancia le damos a los errores y por lo tanto hay mas permisividad pero puedo caer en underfiting.

    Mencionamos que se puede utilizar en datos linealmente separables, pero cuando no lo son podemos aplicar el kernel trick usando una función kernel(cuadrático, gaussiano, etc); esto permite proyectar un espacio muestral D-dimensional a otro espacio M-dimensional, donde M>D

    \varnothing:\mathbb{R}^{D}\to\mathbb{R}^{M}

    Esto permite separar de manera lineal aquellos datos que originalmente no eran separables.

    Cuando trabajamos con kernel otro hiperparámetro que podemos usar es Gamma, se utiliza con la función RBF(radial basiss function) de kernel gaussiano. Este permite definir el grado de curvatura de la frontera de decisión. Normalmente se usan valores de gamma entre 0.01 y 100

    \gamma=\frac{1}{2\sigma^2}

    RBF=e^{-\gamma\cdot||x-x'||}

    menos permisivo –> más importancia a errores de entrenamiento

    más permisivo –> menos importancia a errores de entrenamiento

    Bagging – Bootstrap aggregating

    1. Divide en varios subconjuntos los datos de entrenamiento.
    2. Se crea un modelo(clasificador) por cada subdataset. Se puede utilizar cualquier clasificador pero el mas usado son los arboles de decisión dando el método mas conocido, random forest. Se utilizan también distinto numero de características en cada subdataset. El uso del modelo se basa en  weak learners (clasificadores con al menos un 51% de éxito) para construir el strong learner
    3. La clasificación final se obtiene del promedio de todos los clasificadores. De esta manera este algoritmo reduce la varianza y minimiza el overfitting.

    Ventajas:

    • Eficiente sin ajustar hiperparámetros en problemas de clasificación y regresión
    • Estabilidad y robustez en la predicción, ya que al utilizar muchos árboles prevalece el promedio de las votaciones.
    • Posibilidad de utilizar gran cantidad de características
    • Tiende a reducir el riesgo de overfitting.

    Desventajas:

    • Coste computacional más elevado que construir un solo árbol de decisión.
    • Inconsistencia cuando se utilizan datasets pequeños.

    BOOSTING

    El entrenamiento se realiza creando también varios modelos, pero en esta ocasión lo hace en serie y en cada iteración conserva el error cometido en la anterior iteración para mejorar el modelo actual.

    Aquí también se utiliza mucho los arboles de decisión como método de decisión. Y su método mas conocido es Adaboost.

    1. Adaboost solo se crea árboles compuestos por un solo nodo, es decir evaluá una característica y saca dos posibles predicciones, lo que se denomina stump; de esta manera, se crea lo que se conoce como Forest of StumpsLos stumps no son buenos clasificadores por sí solos, por eso son weak learners. La idea es utilizar el stump que tenga un menor índice Gini.
    2. Adaboost aplica la técnica de majority voting de manera ponderada, por lo que algunos árboles contribuyen más que otros en la decisión final. Esta ponderación se hace con la siguiente ecuación:
      \textrm{Importancia}=\frac{1}{2}log(\frac{1-\textrm{Total Error}}{\textrm{Total Error}})
      *El error es igual al número de fallos cometidos entre el total de los registros

    E_\gamma =\frac{1}{8}=0.125

    \textrm{Importancia}=\frac{1}{2}log(\frac{1-0.125}{0.125})=0.973

    1. En los registros donde se cometen errores otorgamos mayor peso \textrm{weight}_{t+1}=\textrm{weight}_t\cdot e^{\textrm{importancia}}
      Donde no se cometen errores \textrm{weight}_{t+1}=\textrm{weight}_t\cdot e^{-\textrm{importancia}}
      Tomando el ejemplo anterior:
      \textrm{weight}_{2}=\frac{1}{8}\cdot e^{0.97}=0.33 para el caso incorrecto
      \textrm{weight}_{2}=\frac{1}{8}\cdot e^{-0.97}=0.05 para los casos correctos
    2. Se normalizan los pesos dividiendo cada valor entre el sumatorio de los nuevos pesos. Los pesos normalizados constituirán el nuevo sample weight.
    3. Se define un conjunto de datos vacío de las mismas dimensiones que el original.  Después, se selecciona aleatoriamente un valor entre 0 y 1, y se añade el registro correspondiente en función de la suma ponderada de la columna de sample weight.

    Ventajas:

    • Fácil implementación.
    • Permite corregir errores de manera iterativa usando weak classifiers.
    • Mejora el rendimiento combinando weak learners.
    • No produce overfitting.

    Desventajas:

    • Es sensible a datos ruidosos.
    • Es poco robusto frente a outliers
¡Hola a todos los entusiastas de la tecnología! Quería informarles que en mi blog utilizamos cookies para mejorar la experiencia de usuario. Estas pequeñas herramientas nos ayudan a personalizar el contenido y ofrecer funciones específicas. Al continuar explorando el sitio, aceptas nuestro uso de cookies. Puedes obtener más información sobre cómo las utilizamos en nuestra política de privacidad. ¡Gracias por ser parte de esta comunidad tecnológica! 🍪    Más información
Privacidad