Prefacio
Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com
He sido testigo de tres grandes revoluciones técnicas a lo largo de mi vida: primero el ordenador personal, luego Internet y, por último, el smartphone. El aprendizaje automático (AM) y la IA son tan fundamentales como las tres y tendrán un impacto igualmente profundo en nuestras vidas.
Empecé a interesarme por el aprendizaje automático el día que la compañía de mi tarjeta de crédito llamó para confirmar que estaba intentando comprar un collar de 700 $. No era cierto, pero tenía curiosidad: ¿cómo sabían que no era yo? Utilizo mi tarjeta en todo el mundo y, para que conste , de vez en cuando le compro cosas bonitas a mi mujer. Ni una sola vez la empresa de la tarjeta de crédito había rechazado una compra legítima, pero varias veces habían marcado correctamente compras fraudulentas, siendo la anterior un intento de alguien de Brasil de utilizar mi tarjeta para comprar un billete de avión. Esta vez era diferente: la joyería estaba a 3 km de mi casa. Intenté imaginar un algoritmo que pudiera detectar con tanta fiabilidad el fraude con tarjeta de crédito en el punto de venta. No tardé en darme cuenta de que había algo más poderoso que un simple algoritmo.
Resultó que la empresa de la tarjeta de crédito ejecuta cada transacción a través de un sofisticado modelo de aprendizaje automático que es increíblemente hábil para detectar el fraude. Ese momento cambió mi vida. Es un espléndido ejemplo de cómo el ML y la IA están haciendo del mundo un lugar mejor. Además, comprender cómo el ML podía analizar las transacciones de las tarjetas de crédito en tiempo real y seleccionar las malas, permitiendo al mismo tiempo que se realizaran los cargos legítimos, se convirtió en una montaña que tuve que escalar.
Quién debería leer este libro
Hace poco, recibí una llamada del jefe de ingeniería de una empresa de fabricación. Empezó la conversación así "Hasta la semana pasada, no sabía lo que significaban ML e IA. Ahora mi director general me ha encargado que averigüe cómo pueden mejorar nuestro negocio, y que lo haga antes de que nuestros competidores se nos adelanten. Estoy empezando desde cero. ¿Puedes ayudarme?"
La siguiente llamada procedía de una empresa de contratación pública interesada en utilizar el aprendizaje automático para detectar el fraude fiscal y el blanqueo de dinero. El equipo estaba razonablemente versado en la teoría del aprendizaje automático, pero se preguntaba cuál era la mejor manera de construir los modelos que necesitaban.
Los profesionales de todo el mundo se están dando cuenta de que el ML y la IA representan un tsunami tecnológico, y están intentando subirse a la ola antes de que se estrelle sobre ellos. Este libro es para ellos: ingenieros, desarrolladores de software, directores de TI y otras personas cuyo objetivo es construir una comprensión práctica del ML y la IA y poner ese conocimiento al servicio de la resolución de problemas que antes eran difíciles o incluso intratables. Trata de impartir una comprensión intuitiva y recurre a las ecuaciones sólo cuando es necesario. A pesar de lo que puedas haber oído, no hace falta ser un experto en cálculo o álgebra lineal para construir sistemas que reconozcan objetos en fotos, traduzcan del inglés al francés o desenmascaren a narcotraficantes y defraudadores fiscales.
Por qué escribí este libro
Dentro de cada autor hay un pequeño gremlin que dice que puede contar la historia de una forma que nadie más lo ha hecho. Escribí mi primer libro de informática hace más de 30 años y el último hace más de 20, y no tenía intención de escribir otro. Pero ahora tengo una historia que contar. Es una historia importante, que todo ingeniero y desarrollador de software debería escuchar. No estoy del todo satisfecho con la forma en que otros la han contado, así que escribí el libro que me hubiera gustado tener cuando estaba aprendiendo el oficio. Empieza por lo básico y te lleva de viaje a las alturas del ML y la IA. Al final, entenderás cómo las empresas de tarjetas de crédito detectan el fraude, cómo las empresas aeronáuticas utilizan el aprendizaje automático para realizar el mantenimiento predictivo de los motores a reacción, cómo los coches autoconducidos ven el mundo que les rodea, cómo Google Translate traduce texto entre idiomas y cómo funcionan los sistemas de reconocimiento facial. Además, serás capaz de construir tú mismo sistemas como éstos, o de utilizar sistemas existentes para infundir IA en las aplicaciones que escribas.
Hoy en día, los modelos de aprendizaje automático más avanzados se entrenan en ordenadores equipados con unidades de procesamiento gráfico (GPU) o unidades de procesamiento tensorial (TPU), a menudo con gran gasto de tiempo y dinero. Un punto destacado de este libro es la presentación de ejemplos que pueden construirse en un PC o portátil típico sin GPU. Cuando abordemos los modelos de visión por ordenador que reconocen objetos en fotos, describiré cómo funcionan dichos modelos y cómo se entrenan con millones de imágenes en clusters de GPU. Pero luego te mostraré cómo utilizar una técnica llamada aprendizaje por transferencia para reutilizar modelos existentes para resolver problemas específicos del dominio y entrenarlos en un portátil normal.
Este libro se basa en gran medida en las clases y talleres que imparto en empresas e instituciones de investigación de todo el mundo. Me encanta enseñar porque me encanta ver cómo se encienden las bombillas. A menudo empiezo las clases sobre ML e IA diciendo que no estoy aquí para enseñar, sino para cambiar tu vida. Espero que tu vida sea un poco diferente y un poco mejor de lo que era antes de leer este libro.
Ejecutar los ejemplos de código del libro
Los ingenieros aprenden mejor haciendo, no simplemente leyendo. Este libro contiene numerosos ejemplos de código que puedes ejecutar para reforzar los conceptos presentados en cada capítulo. La mayoría están escritos en Python y utilizan librerías populares de código abierto como Scikit-Learn, Keras y TensorFlow. Todas están disponibles en un repositorio público de GitHub. Es la única fuente de verdad para los ejemplos de código, porque puedo actualizarlo en cualquier momento.
Existen plataformas de aprendizaje automático que te permiten construir y entrenar modelos sin código. Pero la mejor manera de entender lo que hacen estas plataformas y cómo lo hacen es escribir código. Python es un lenguaje de programación sencillo. Es fácil de aprender. Los ingenieros de hoy en día tienen que sentirse cómodos escribiendo código. Puedes aprender Python sobre la marcha trabajando con los ejemplos de este libro, y si ya te sientes cómodo con Python (y con la programación en general), entonces llevas ventaja.
Para ejecutar mis muestras en tu PC o portátil, necesitas una versión de 64 bits de Python 3.7 o superior. Puedes descargar un runtime de Python desde Python.org, o puedes instalar una distribución de Python como Anaconda. También debes asegurarte de que están instalados los siguientes paquetes y sus dependencias:
-
Scikit-Learn y TensorFlow para construir modelos de aprendizaje automático
-
Pandas, Matplotlib y Seaborn para la manipulación y visualización de datos
-
OpenCV y Pillow para manejar imágenes
-
Flask y Requests para llamar a API REST y crear servicios web
-
Sklearn-onnx y Onnxruntime para modelos Open Neural Network Exchange (ONNX)
-
Librosa para generar imágenes de espectrogramas a partir de archivos de audio
-
MTCNN y Keras-vggface para construir sistemas de reconocimiento facial
-
KerasNLP, Transformadores, Conjuntos de datos y PyTorch para construir modelos de procesamiento del lenguaje natural (PLN)
-
Azure-cognitiveservices-vision-computervision, Azure-ai-textanalytics y Azure-cognitiveservices-speech para llamar a Azure Cognitive Services
Puedes instalar la mayoría de estos paquetes con los comandos pip install
. Si instalaste Anaconda, muchos de estos paquetes ya están allí, y puedes instalar el resto utilizando los comandos conda install
o un equivalente.
Hablando de entornos, nunca es mala idea utilizar entornos virtuales de Python para evitar que las instalaciones de paquetes entren en conflicto con otras instalaciones de paquetes. Si no estás familiarizado con los entornos virtuales, puedes leer sobre ellos en Python.org. Si utilizas Anaconda, los entornos virtuales están integrados.
La mayoría de de mis muestras de código se crearon para cuadernos Jupyter, que proporcionan una plataforma interactiva para escribir y ejecutar código Python. Los cuadernos son increíblemente populares en la comunidad de la ciencia de datos para explorar datos y entrenar modelos de aprendizaje automático. Puedes ejecutar cuadernos Jupyter localmente instalando paquetes como Notebook o JupyterLab, o puedes utilizar entornos alojados en la nube como Google Colab. Una de las ventajas de Colab es que no tienes que instalar nada en tu ordenador, ni siquiera Python. Y en los raros casos en que mis muestras requieren una GPU, Colab te la proporciona.
Los entornos de desarrollo de Python son notoriamente complicados de configurar y mantener, especialmente en Windows. Si prefieres no tener que crear un entorno de este tipo, o si lo has intentado pero no has conseguido que funcione, la ayuda está a sólo una descarga de distancia. He empaquetado un entorno de desarrollo completo adecuado para ejecutar todos los ejemplos de este libro en una imagen de contenedor Docker. Suponiendo que tengas el motor Docker instalado en tu ordenador, puedes lanzar el contenedor con el siguiente comando:
docker run -it -p 8888:8888 jeffpro/applied-machine-learning:latest
Navega en tu navegador hasta la URL que aparece en la salida. Aterrizarás en un entorno Jupyter completo con todos mis ejemplos de código y todo lo necesario para ejecutarlos. Están en una carpeta llamada Applied-Machine-Learning clonada del repositorio de GitHub del mismo nombre. El inconveniente de utilizar un contenedor es que los cambios que realices no se conservan por defecto. Una forma de remediarlo es utilizar el modificador -v
en el comando docker
para enlazar con un directorio local. Para más información, consulta "Utilizar montajes enlazados" en la documentación de Docker.
Convenciones utilizadas en este libro
En este libro se utilizan las siguientes convenciones tipográficas:
- Cursiva
-
Indica nuevos términos, URL, direcciones de correo electrónico, nombres de archivo y extensiones de archivo.
Constant width
-
Se utiliza en los listados de programas, así como dentro de los párrafos para referirse a elementos del programa como nombres de variables o funciones, bases de datos, tipos de datos, variables de entorno, sentencias y palabras clave.
Constant width bold
-
Muestra comandos u otros textos que deben ser tecleados literalmente por el usuario.
Consejo
Este elemento significa un consejo o sugerencia.
Nota
Este elemento significa una nota general.
Advertencia
Este elemento indica una advertencia o precaución.
Utilizar ejemplos de código
Como ya se ha mencionado, el material complementario (ejemplos de código, ejercicios, etc.) está disponible para su descarga en https://oreil.ly/applied-machine-learning-code.
Si tienes una pregunta técnica o un problema al utilizar los ejemplos de código, envía un correo electrónico a bookquestions@oreilly.com.
Este libro está aquí para ayudarte a hacer tu trabajo. En general, si se ofrece código de ejemplo con este libro, puedes utilizarlo en tus programas y documentación. No es necesario que te pongas en contacto con nosotros para pedirnos permiso, a menos que estés reproduciendo una parte importante del código. Por ejemplo, escribir un programa que utilice varios trozos de código de este libro no requiere permiso. Vender o distribuir ejemplos de los libros de O'Reilly sí requiere permiso. Responder a una pregunta citando este libro y el código de ejemplo no requiere permiso. Incorporar una cantidad significativa de código de ejemplo de este libro en la documentación de tu producto sí requiere permiso.
Agradecemos la atribución, pero en general no la exigimos. Una atribución suele incluir el título, el autor, la editorial y el ISBN. Por ejemplo "Aprendizaje Automático Aplicado e IA para Ingenieros por Jeff Prosise (O'Reilly). Copyright 2023 Jeff Prosise, 978-1-492-09805-8".
Si crees que el uso que haces de los ejemplos de código no se ajusta al uso legítimo o al permiso concedido anteriormente, no dudes en ponerte en contacto con nosotros en permissions@oreilly.com.
Aprendizaje en línea O'Reilly
Nota
Durante más de 40 años, O'Reilly Media ha proporcionado formación tecnológica y empresarial, conocimientos y perspectivas para ayudar a las empresas a alcanzar el éxito.
Nuestra red única de expertos e innovadores comparten sus conocimientos y experiencia a través de libros, artículos y nuestra plataforma de aprendizaje online. La plataforma de aprendizaje en línea de O'Reilly te ofrece acceso bajo demanda a cursos de formación en directo, rutas de aprendizaje en profundidad, entornos de codificación interactivos y una amplia colección de textos y vídeos de O'Reilly y de más de 200 editoriales. Para más información, visita https://oreilly.com.
Cómo contactar con nosotros
Dirige tus comentarios y preguntas sobre este libro a la editorial:
- O'Reilly Media, Inc.
- 1005 Gravenstein Highway Norte
- Sebastopol, CA 95472
- 800-998-9938 (en Estados Unidos o Canadá)
- 707-829-0515 (internacional o local)
- 707-829-0104 (fax)
Tenemos una página web para este libro, donde se enumeran erratas, ejemplos y cualquier información adicional. Puedes acceder a esta página en https://oreil.ly/applied-machine-learning.
Envía un correo electrónico a bookquestions@oreilly.com para comentar o hacer preguntas técnicas sobre este libro.
Para obtener noticias e información sobre nuestros libros y cursos, visita https://oreilly.com.
Encuéntranos en LinkedIn: https://linkedin.com/company/oreilly-media
Síguenos en Twitter: https://twitter.com/oreillymedia
Míranos en YouTube: https://youtube.com/oreillymedia
Agradecimientos
Escribir y publicar un libro es un trabajo de equipo. Empieza con el autor, pero antes de que llegue a las estanterías, pasa por revisores, editores de desarrollo, correctores, artistas y personal de producción.
Me gustaría dar las gracias a varios amigos y familiares por revisar los capítulos a medida que los escribía y proporcionarme comentarios constructivos. Son ingenieros, matemáticos, analistas de datos y profesores, y resultan estar entre las personas más inteligentes que conozco: Larry Clement, Manjeet Dahiya, Tom Marshall, Don Meyer, Goku Mohandas, Ken Muse, Lipi Deepaakshi Patnaik, Charles Petzold, Abby Prosise, Adam Prosise, Jeffrey Richter, Bruce Schecter, Vishwesh Ravi Shrimali, Brian Spiering y Ron Sumida.
Un gran agradecimiento también al equipo de O'Reilly, por convertir mis palabras en prosa y mis bocetos en arte. Esto incluye a Jill Leonard, Audrey Doyle, Gregory Hyman, David Futato, Karen Montgomery y Nicole Butterfield. Un saludo especial a Jon Hassell, que escuchó mi visión de este libro y dijo: "Hagámoslo". He tenido el privilegio de trabajar con grandes equipos editoriales a lo largo de los años. Ninguno ha sido mejor que éste.
Por último, a Lori, mi esposa, compañera de viaje y compañera de fechorías durante los últimos 40 años. No podría haberlo hecho sin ti. Y prometo que éste será el último libro que escriba.
Get Aprendizaje Automático Aplicado e IA para Ingenieros now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.