El aprendizaje automático, o machine learning en inglés, es una rama de la inteligencia artificial (IA) que se ocupa del desarrollo de algoritmos y modelos que permiten a las computadoras aprender patrones y realizar tareas específicas sin ser programadas explícitamente. En lugar de seguir instrucciones detalladas, las máquinas pueden mejorar su rendimiento a través de la experiencia.
En lugar de ser programadas con reglas específicas para realizar una tarea, las máquinas de aprendizaje automático utilizan datos para entrenarse y mejorar su rendimiento con el tiempo. Estos algoritmos se dividen principalmente en tres tipos de aprendizaje:
Aprendizaje Supervisado: El modelo se entrena con un conjunto de datos que incluye ejemplos etiquetados, es decir, pares de entrada y salida. El objetivo es aprender la relación entre las entradas y las salidas para poder hacer predicciones sobre datos no vistos.
Aprendizaje No Supervisado: En este caso, el modelo se entrena con datos que no están etiquetados. El objetivo es encontrar patrones, estructuras o relaciones intrínsecas en los datos sin tener información explícita sobre las salidas esperadas.
Aprendizaje por Reforzamiento: La máquina toma decisiones secuenciales en un entorno y recibe retroalimentación en términos de recompensas o penalizaciones. El objetivo es aprender a tomar decisiones que maximicen las recompensas a lo largo del tiempo.
El aprendizaje automático tiene aplicaciones en una amplia variedad de campos, como reconocimiento de voz, visión por computadora, procesamiento del lenguaje natural, diagnóstico médico, predicción de comportamientos y mucho más. Se ha vuelto esencial en la resolución de problemas complejos y en la automatización de tareas en diversas industrias.
TensorFlow
TensorFlow es una biblioteca de código abierto desarrollada por Google para implementar y entrenar modelos de aprendizaje automático y aprendizaje profundo. Utiliza representaciones de modelos como grafos computacionales, donde los nodos representan operaciones matemáticas y los bordes indican el flujo de datos entre estas operaciones. Con énfasis en la flexibilidad y escalabilidad, TensorFlow es conocido por su capacidad para manejar tareas diversas, desde clasificación hasta procesamiento del lenguaje natural. Además, es compatible con una variedad de hardware, lo que permite acelerar el entrenamiento y la inferencia en diferentes plataformas. La biblioteca tiene una comunidad activa que contribuye con código, tutoriales y recursos educativos. TensorFlow Lite es una versión específicamente diseñada para el despliegue en dispositivos móviles y sistemas integrados.
Ventajas del uso de TensorFlow
TensorFlow es una biblioteca popular en el campo del aprendizaje automático y aprendizaje profundo, pero no es la única opción disponible. Aquí hay algunas ventajas que TensorFlow tiene sobre otras bibliotecas, aunque es importante destacar que la elección de una biblioteca depende en gran medida de los requisitos específicos del proyecto y las preferencias del usuario:
Soporte para Aprendizaje Profundo: TensorFlow fue desarrollado con un enfoque particular en el aprendizaje profundo, y ha sido utilizado en numerosos proyectos exitosos en esta área. Su amplio conjunto de herramientas facilita la construcción, entrenamiento y despliegue de modelos de redes neuronales profundas.
Compatibilidad con Hardware: TensorFlow es compatible con varios tipos de hardware, incluyendo CPU, GPU y TPU (Tensor Processing Unit). Esta capacidad de trabajar con diferentes tipos de hardware permite una mayor flexibilidad y rendimiento, especialmente en entornos de computación distribuida.
Escalabilidad: TensorFlow es escalable y puede manejar proyectos que varían en tamaño desde pequeños experimentos hasta implementaciones a gran escala en entornos distribuidos. Su capacidad para escalar facilita su uso en proyectos de cualquier magnitud.
TensorBoard: TensorFlow viene con TensorBoard, una herramienta de visualización que facilita la comprensión y la depuración de modelos. Proporciona información sobre métricas, gráficos de entrenamiento, y permite visualizar la estructura del modelo.
TensorFlow Serving: Esta característica permite el despliegue eficiente de modelos en producción, facilitando la implementación de modelos entrenados en entornos del mundo real.
TensorFlow Lite: TensorFlow Lite es una versión diseñada para dispositivos móviles y sistemas integrados, lo que facilita la implementación de modelos en aplicaciones móviles.
Interfaz Keras Integrada: TensorFlow 2.x incluye Keras como una interfaz de alto nivel para construir y entrenar modelos de manera rápida y sencilla. Esto simplifica la construcción de modelos para aquellos que están familiarizados con Keras.
Comunidad Activa: TensorFlow cuenta con una gran comunidad de usuarios y desarrolladores, lo que significa que hay una abundancia de recursos, tutoriales y soluciones a problemas comunes disponibles en línea.
Diferencias entre Programación Regular y Machine Learning
En la programación regular nosotros generamos elementos de entrada (input)
y mediante reglas y logica creamos una salida o resultado final (output).

Por otro lado en el aprendizaje automatico o machine learning en ingles tenemos un conjunto de entrada y salida pero no necesariamente tenemos un algoritmo o furmula a seguir,es decir no sabemos como convertir esas entradas en salidas.

El real objetivo del machine learning es que el sofware tome los elementos de entrada y los valores esperados y pueda aprender por si solo el algoritmo necesario para hacer la conversion.
Uso de la libreria TensorFlow
Ejemplo:
Este código en Python utiliza TensorFlow para crear y entrenar un modelo simple de regresión lineal que convierte temperaturas de Celsius a Fahrenheit. Aquí está el desglose paso a paso:
Importación de bibliotecas: import tensorflow as tf import numpy as np Se importan las bibliotecas necesarias, incluyendo TensorFlow y NumPy. TensorFlow se usa para construir y entrenar el modelo, y NumPy se utiliza para trabajar con matrices y datos.
Definición de datos de entrada: celsius = np.array([63, 98, 208, 43, 108, 58], dtype=float) farenheit = np.array([145.4, 208.4, 406.4, 109.4, 226.4, 136.4], dtype=float) Se crean dos arreglos NumPy para representar pares de temperaturas en Celsius y Fahrenheit. Estos datos se utilizarán para entrenar el modelo.
Definición del modelo: capa = tf.keras.layers.Dense(units=1, input_shape=[1]) modelo = tf.keras.Sequential([capa]) Se crea un modelo secuencial simple con una capa densa que tiene un solo nodo (units=1) y toma un solo valor de entrada (input_shape=[1]).
Compilación del modelo: modelo.compile( optimizer=tf.keras.optimizers.Adam(0.1), loss='mean_squared_error' ) Se compila el modelo con un optimizador Adam y la función de pérdida de error cuadrático medio (mean_squared_error).
Entrenamiento del modelo: print("Comenzando entrenamiento...") historial = modelo.fit(celsius, farenheit, epochs=500, verbose=False) print("Entrenamiento terminado") Se entrena el modelo con los datos de entrada (celsius y farenheit) durante 500 épocas o vueltas utilizando el optimizador y la función de pérdida especificados.
Visualización del historial de pérdida: import matplotlib.pyplot as plt plt.xlabel("# Epoca") plt.ylabel("Magnitud de pérdida") plt.plot(historial.history["loss"])

Se utiliza Matplotlib para visualizar cómo cambia la pérdida a lo largo de las épocas durante el entrenamiento. Basicamente nos dice que tan mal estan los resultados de la red en cada vuelta que dio
7.Predicción de nuevos valores: print("Probemos con valores distintos") valor_a_probar = 79 # Cambia esto por el valor que desees probar resultado = modelo.predict([valor_a_probar]) print("El resultado es " + str(resultado) + " Fahrenheit") Se prueba el modelo con un nuevo valor (valor_a_probar) y se imprime el resultado de la predicción en Fahrenheit.
Codigo Ejecutado:

En resumen, este código crea, entrena y prueba un modelo simple de regresión lineal para convertir temperaturas de Celsius a Fahrenheit utilizando TensorFlow.
Comments