Traducido del inglés al español - www.onli www.onlinedoctransla nedoctranslator.com tor.com francois C h o l l e t MANEJO Aprendizaje profundo con Python Con licenci a para Con licenci a para Aprendizaje Aprendiza je profundo profu ndo con Python FRANÇOIS CHOLLET MANEJO SHELTERyoISLA Con licenci a para Para obtener información en línea y solicitar este y otros libros de Manning, visite www.manning.com. La editorial ofrece descuentos en este libro cuando se pide en cantidad. Para obtener más información, póngase en contacto Departamento de Ventas Especiales Manning Publications Co. 20 Baldwin Road apartado de correos 761 Shelter Island, Nueva York 11964 Correo electrónico:pedidos@manning electrónico :pedidos@manning .com ©2018 por Manning Publications Co. Todos los derechos reservados. Ninguna par te de esta e sta publicación pub licación puede reprod reproducirse, ucirse, almacen almacenarse arse en un sistema sis tema de de Ningun a parte recuperación o transmitirse de ninguna forma o por medios electrónicos, mecánicos, fotocopiados o de otro modo, sin el permiso p ermiso previo por escrito del editor. vendedor es para distinguir sus Muchas de las designaciones utilizadas por los fabricantes y vendedores productos produ ctos se reclama reclamann como com o marcas marc as comerciale com erciales. s. Donde Do nde esas e sas designaci de signaciones ones aparec a parecen en en el libro, y Manning Publications estaba al tanto de un reclamo r eclamo de marca registrada, las designaciones se han impreso en mayúsculas m ayúsculas iniciales o en mayúsculas. importancia ncia de preservar lo que hasido escrito, es política de Manning Reconociendo la importa imprimir los libros que publicamos en papel libre de ácido, y realizamos nuestros mejores esfuerzos con ese fin. Reconociendo también nuestra responsabilidad de conservar los recursos de nuestro planeta, los libros de Manning se imprimen en papel que es al menos un 15 por ciento reciclado y procesado sin el uso de cloro clor o elemental. Publicaciones de ManningCo.Desarrollo editor: Toni Arritola 20 BaldwinLa carretera Editor de desarrollo técnico: Jerry Gaines apartado de correos761 Editor de reseñas: Aleksandar Dragosavlje Dragosavljevi´c vi´c editora: Tiffany Taylor Shelter Island, Nueva York11964Proyecto Correctora de estilo: Tiffany Taylor Correctora: Katie Tennant Correctores técnicos: Alex Ott y Richard Tobias Tipografista: Dottie Marsico Diseño de portada: Marija Tudor ISBN 9781617294433 Impreso en los Estados Unidos de América 1 2 3 4 5 6 7 8 9 10 – MBE – 22 21 20 19 18 17 Con licenci a para contenidos breves PARTE1F FUNDAMENTALES DE PROFUNDIDADAPRENDIZAJE ........................ 1 1 ■ 2 ■ 3 ■ 4 ■ que es profundoaprendizaje?3 Antes de comenzar: los bloques de construcción matemáticos de neuralredes25 Comenzando con neuralredes56 fundamentos de maquinaaprendizaje93 PARTE2D ............ ......................... .......................... .......................... .......................... .......................... .......................... ................. EEP APRENDIZAJE ENPRÁCTICA ......................................................................................117 5 ■ 6 ■ 7 ■ 8 ■ 9 ■ Aprendizaje profundo para computadoravisión119 Aprendizaje profundo para texto ysecuencias178 Aprendizaje profundo avanzado mejorpracticas233 Profundo generativoaprendizaje269 Conclusiones314 Con licenci a para v Con licenci a para Con licenci a para contenido prefacio xiii expresiones de gratitudXVsobre este libro xvi sobre el autor xxsobre la portada xxi PAGSARTE1F FUNDAMENTALES DE PROFUNDIDADAPRENDIZA PROFUNDIDADAPRENDIZAJE JE ..1 1 que es profundo¿aprendizaje? 3 1.1 Inteligencia artificial, aprendizaje automático y profundidadaprendizaje4 Artificialinteligencia Artificialinteli gencia 4 Máquinaaprendizaje4 Aprendizaje representaciones dedatos 6 El ■ ■ ■ 8 “profundo” en lo profundoaprendizaje Comprender cómo funciona el aprendizaje profundo, entres figuras Lo que ha logrado el aprendizaje profundohasta aquí 11 Nocreer el bombo a corto plazo 12 la promesa deAI 13 ■ ■ 1.2 Antes del aprendizaje profundo: una breve historiaa de la máquinaap histori m áquinaaprendizaje14 rendizaje14 14 probabilísticomo probabi lísticomodelado delado Primeras redes neuronales ■ ■ Núcleométodo Núcleométodos s 15 aleatorios, y aumento Árboles de deci decisión, sión, bosques de gradientemáquinas dieciséis volver a neural redes17 ■ lo que hace profundoaprendiendo diferente El aprendizaje automático modernopaisaje 18 ■ 17 14 9 Con licenci a para viii Con licenci a para viii CONTENIDO 1.3 ¿Por qué aprendizaje profundo? Por quéahora?20 ferreteria 20 datos21 Algoritmos 21 un nuevo Ola deinversión22 democratización zación de lo La democrati profundo aprendizaje23 lo haráúltimo?23 ■ ■ ■ ■ ■ 2 Antes de comenzar c omenzar:: los bloques blo ques de construcci c onstrucción ón matemáticos matemát icos de neuralred n euralredes es 25 2.1 Un primer vistazo a una neuralred27 2.2 Representaciones de datos para neuralredes31 Escalares (0Dtensores) 31 Vectores (tensores 1D) 31Matrices (2Dtensores) 31 tensores 3D y superiores- tensores dimensionales 32 Atributos ■ ■ ■ clave 32 Manipulación de tensores enNumpy34 La noción de datoslotes 34 Ejemplos de datos del mundo real tensores 35 Vectordatos 35 Datos de series temporales tem porales o secuenciadatos 35 Imagendatos36 ■ ■ ■ ■ Videodatos ■ ■ 37 2.3 Los engranajes de las redes neuronales: tensoroperaciones38 Elemento sabioop sabiooperacione eracioness 38 Radiodifusión39 Tensor dot40 Remodelación de tensores 42 Interpretación Interpretac ión 43 Una geométricade tensoroperaciones interpretación geométrica de lo profundo aprendizaje44 ■ ■ ■ ■ ■ 2.4 El motor de las redes neuronales: basado en gradientesoptimización46 Qué es un¿derivado? 47 Derivada de una operación ope ración tensorial: ladegradado 48 Gradiente estocásticodescendencia 48 Encadenamiento de derivadas: la retropropagaciónalgoritmo ■ ■ 51 2.5 Mirando hacia atrás a nuestro primerejemplo53 2.6 Capítuloresumen55 3 Comenzando con neuralredes 3.1 Anatomía de un neuralred58 56 Capas: los componentes básicos de la profundidadaprendizaje profundidadaprendi zaje 58 Modelos: redes decapas 59 Funciones de pérdida y optimizadores: claves configurar el aprendizajeproceso ■ ■ 60 3.2 Introducción aKeras61 Keras, TensorFlow,Teano, yCNTK62 con Keras: un rápidovisión general Desarro Desarrollando llando 62 ■ Con licenci a para Configuración ión de un aprendizaje profundoestación profundoestación de trabajo65 3.3 Configurac Cuadernos Jupyter: la forma preferida de ejecutar el aprendizaje profundo experimentos 65 getting Keras corriendo: dosopciones ■ 66 Con licenci a para ix CONTENIDO Ejecución de trabajos de aprendizaje profundo en la nube: pros ycontras 66 ¿Cuál es la mejor GPU para profundidad?¿aprendizaje? 66 3.4 Clasificación de críticas de películas: un binarioclasificaciónejemplo68 preparando eldatos 69 tuAcercarse 73 Usar una red entrenada para generar predicciones sobre Más lejosexperimentos nuevos datos76 El IMDBconjunto de datos68 Construyendo tula red 70 Validando ■ ■ ■ 77 Envasearriba77 ■ 3.5 Clasificación de los cables de noticias: una clasificación multiclaseejemplo78 multiclaseejemplo78 El Reutersconjunto de datos 78 preparando eldatos 80 Construyendo tula red 79 Validando tuAcercarse Generar predicciones sobre nuevosdatos 83 Una forma diferente de manejar las etiquetas y la pérdida 83 La importancia de tener un intermedio suficientemente grandecapas 83 Más lejos ■ ■ ■ ■ ■ experimentos 84 Envasearriba84 ■ 3.6 Predicció Predicciónn de los precios de la vivienda: una regresiónejemplo85 regresiónejemplo85 El precio de la vivienda en Bostonconjunto de datos prepara ndo eldatos86 Construyendo 85 preparando el datos86 tula red 86 Validando tu enfoque usando K-foldvalidación 87 Envasearriba91 ■ ■ ■ ■ 3.7 Capítuloresumen92 4 fundame ntos de maquina fundamentos maquinaaprend aprendizaje izaje 93 4.1 cuatro ramas deaprendizaje automático94 supervisadoaprendizaje 94 supervisiónaprendizaje Auto-supervisadoaprendizaje adoaprendizaje Auto-supervis Reforzamie ntoaprendizaje Reforzamientoaprendizaje 94 ■ 4.2 Evaluación del aprendizaje automáticomodelos97 Entrenamiento, validación y pruebaconjuntos97 Cosas pa para raMantener dentromente100 ■ 4.3 Preprocesamiento de datos, ingeniería de características y característicasaprendizaje101 Preprocesamiento de datospara neuralredes ingeniería102 Rasgo Rasgoingeniería102 ■ 4.4 Sobreequipamiento yinfravalorar104 Reduciendo la redTalla re dTalla pesoregularización107 agregandoabandono109 ■ 104 Agregando ■ 101 sin ■ 94 95 79 Con licenci a para 4.5 El flujo de trabajo universal de la máquinaaprendizaje111 Definición del problema y montaje mont aje de unconjunto unconjunt o de datos Elegir una medida del éxito 112 Decidirse por un ■ 111 Con licenci a para X CONTENIDO evaluaciónprotocolo 112 Preparando sus datos 112 Desarrollar un modelo que funciona func iona mejor que una línea lí nea de base 113Ampliació Ampliación: n: desarrollo de un modelo mod elo quesobreajustes 114 Regularizando su modelo y afinando suhiperparámetros su hiperparámetros ■ 114 4.6 Capítuloresumen116 PAGSARTE2D ................. .................................. .................................. .................................. ..................... ....EEP APRENDIZAJE ENPRÁCTICA ..................................................................117 5 Aprendizaje prof undo para p ara computado co mputadoravisión ravisión Aprendiz aje profundo 5.1 Introducción aconvnets120 la convoluciónoperación máximaoperación127 122 119 La agrupación ■ 5.2 Entrenando un convnet desde cero en un pequeñoconjunto de datos130 La relevancia eldatos d el del aprendizaj aprendizaje e profundo para pequeños pe queños datosproblemas datosproble mas 130 Descargando datos 131 Construyendo tula red 133 el ■ Datospreproce samiento Datosp reprocesamiento datosaumento138 135 usando ■ 5.3 Usando un preentrenadoconvnet143 Rasgoextracción 143 Ajuste fino152 ■ Envase ■ arriba159 5.4 Visualizando lo que convenceaprender160 visualización intermediaactivaciones 160 Visualizante convnetfiltros 167 Visualización de mapas de calor ■ ■ de clase activación172 5.5 Capítuloresumen177 6 Aprendiz aje profundo Aprendizaje prof undo para p ara texto text o ysecuencias ysecuen cias 6.1 Laboralcon textodatos180 178 Codificación one-hot de palabras ycaracteres 181 Usando incrustaciones de palabras 184 Poniéndolo todo junto: desde crudo texto a palabraincrustaciones 188 ■ ■ Envasearriba195 ■ 6.2 Comprensión de las neuronas recurrentesredes196 Una capa recurrente enKeras 198 Entendiendo el ■ ■ LSTM y GRUcapas202 Un ejemplo concreto de LSTM en Keras 204 Envasearriba206 ■ recurrenteredes207 6.3 Uso avanzado de neural recurrenteredes207 Un pronóstico de temperaturaproblema preparando el datos210 ■ 207 Un sentido común, ■ Con licenci a para sin aprendizaje automático línea base 212 Un aprendizaje automático automáti co básicoAcerca básicoAcercarse rse 213 Un primer recurrent recurrentebase ebase 215 Uso de abandono recurrente ■ ■ Con licenci a para xi CONTENIDO rec urrentecapas lucharsobreajuste 216 Apilamiento recurrentecapas inclusomá s lejos Usando bidirecciona bidireccionalRNN lRNN 219 yendo inclusomás ■ ■ 217 222 Envasearriba223 6.4 Procesamiento de secuencias conconvnets225 Comprender la convolución 1D para la secuenciadatos Agrupación 1D para secuenciadat os 226 p ara secuenciadatos Implementando un 1D convnet226 Combinando CNN y RNN para procesar largas secuencias ■ 225 ■ 228 Envasearriba231 ■ 6.5 Capítuloresumen232 7 Aprendiza je profundo Aprendizaje prof undo avanzad a vanzado o mejorprácticas mejorpr ácticas 233 7.1 Más allá del modelo Secuencial: el funcional de KerasAPI 234 f uncionalAPI 236 Entrada múltiple Introducción a lo funcionalAPI Multi-salidamo delos Multi-salidamodelos modelos238 240 acíclico dirigido gráficos decapas 242 Peso de la ■ ■ ■ ■ ■ Modeloscomocapas capaintercambio Envasearriba248246 Modelos 247 ■ 7.2 Inspeccionar y monitorear modelos de aprendizaje profundo profun do usando usa ndo devolu d evolucione cioness de llam l lamada ada de d e Keras Ker as yTensorTablero 249 Uso de devoluciones de llamada para actuar en un modelo durantecapacitación 249 Introducción a TensorBoard: la visualización de TensorFlow marco252 Envasearriba259 ■ 7.3 Sacar el máximo partido a sumodelos260 Avanzadopatroness de arquitectura Avanzadopatrone arquitectur a hiperparámetro optimización263 264 260 ■ Modeloensamblando Modeloensambl ando ■ Envase arriba266 ■ 7.4 Capítuloresumen268 8 Profund o generativoapr Profundo genera tivoaprendizaje endizaje 269 8.1 Generación de textoconLSTM271 Una breve historia de lo generativorecurrenteredes 271 Cómogeneras secuencia¿datos? 272 La importancia de el muestreoestrategia 272 Implementación de nivel de ■ ■ ■ personaje texto LSTMgeneracion274 Envasearriba279 ■ 8.2 sueño profundo280 Implementando Implementan do DeepDream DeepDrea m enKeras 281 Envasearriba286 ■ Con licenci a para 8.3 estilo neuronaltransferir287 El contenidopérdida 288 La pérdida ■ de estilo 288 estilo neuronaltransferenciaKeras 289 Envasearriba295 ■ ■ Con licenci a para xi CONTENIDO 8.4 Generación de imágenes con variacióncodificadores automáticos296 Muestreo de espacios e spacios latentes latente s de imágenes 296 Vectores conceptualespor imagenedición imagenedic ión 297 Codificadores ■ ■ automáticos variacionales 298 Envasearriba304 8.5 Introducción al adversario generativoredes305 ■ 307 Una bolsa Un GAN esquemáti esquemáticoimplementaci coimplementación ón308 losdiscriminado detrucos 307 losgenerador 309 el adversariored310 como entrenar a ■ ■ tuDCGAN310 ■ Envase arriba312 ■ 8.6 Capítuloresumen313 9 Conclusiones 314 9.1 Conceptos clave enrevisión 315 enfo ques paraAI 315 Lo que hace que el Diversos enfoques aprendizaje profundo especial dentro del campo de la máquinaaprendizaje 315 Cómo ■ ■ 316 Tecnologías piensa en lo profundoaprendizaje profun habilitadoras clave doaprendizaje 317 El aprendizaje automático universalflujo 317 de trabajo 318 red clave arquitecturas 319 El espaciodeposibilidades 322 ■ ■ ■ profundoaprendizaje325 9.2 Las limitaciones de lo profundoaprendizaje325 El riesgo de antropomorfizar el aprendizaje automáticomodelos 325 Generalización local vs extremogeneralización 327 Envasearriba329 profundoaprendizaje330 9.3 El futuro de lo profundoaprendizaje330 Modelos como com o programas 330 Más allá de la ■ retropropagación y diferenciablecapas 332 Aprendizaje automático automatizado 332 Aprendizaje permanente y subrutina modularreutilizar modular reutilizar 333 el largo plazovisión 335 ■ 9.4 Mantenerse al día en un mundo en rápido movimientocampo337 Practica en problemas del mundo real usando Kaggle 337 Lea sobre los últimos desarrollos en arXiv 337 Explora el ecosistema de Keras 338 9.5 Palabras finales 339 apéndiceA Instalación de Keras y sus dependencias enubuntu 340 apéndiceB apéndic eB Ejecución de portátiles Jupyter en una GPU EC2instancia 345 índice353 Con licenci a para prefacio Si ha leído este libro, probablemente sea consciente del extraordinario progreso que ha representado el aprendizaje profundo para el campo de la inteligencia artificial en el pasado reciente. apenas cinco pasado de un areconocimiento de imágenes y una En transcripción de años, voz hemos casi inutilizables un rendimiento sobrehumano en estas tareas. Las consecuencias de este avance repentino se extienden a casi todas las industrias. Pero para comenzar a implementar la tecnología de aprendizaje profundo en todos los problemas que podría resolver, debemos hacerla accesible a tantas personas perso nas como sea posib posible, le, inclu incluidos idos los no expe expertos, rtos, perso personas nas que no son investigadores o estudiantes de posgrado. Para que el aprendizaje profundo alcance su máximo potencial, necesitamos democratizarlo radicalmente. Cuando lancé la primera versión del marco de aprendizaje profundo de Keras en marzo de 2015, la democratización de la IA no era lo que tenía en mente. Había estado investigando sobre aprendizaje automático durante varios años y había creado Keras para que me ayudara con mis propios experimentos. Pero a lo largo de 2015 y 2016, decenas de miles de personas nuevas ingresaron al campo del aprendizaje profundo; muchos de ellos eligieron Keras porque era, y sigue siendo, el marco más fácil para comenzar. Mientras observaba a decenas de recién llegados usar Keras de maneras inesperadas y poderosas, llegué a preocuparme profunda prof undamente mente por la acce accesibili sibilidad dad y la demo democrati cratizació zaciónn de la IA. Me di cuen cuenta ta de que cuanto más difundimos estas tecnologías, más útiles y valiosas se vuelven. La accesibilidad se convirtió rápidamente en un objetivo explícito en el desarrollo de Keras y, en unos pocos años, la comunidad de desarrolladores de Keras ha logrado fantásticos logros en este frente. Hemos puesto el aprendizaje profundo en manos de decenas de miles de personas, quienes a su vez lo están utilizando para resolver prob lemas impor problemas i mportante tantess que ni siquiera siq uiera sabí sabíamos amos que q ue existían ex istían hast hastaa hace hac e poco. poc o. El libro que tiene en sus manos es otro paso en el camino para hacer que el aprendizaje profundo esté disponible para tantas personas como sea posible. Keras siempre había necesitado un curso complementario para Con licenci a para XIII Con licenci a para xiv PREFACIO cubren simultáneamente los fundamentos del aprendizaje profundo, los patrones de uso de Keras y las mejores prácticas de aprendizaje profundo. Este libro es mi mejor esfuerzo para producir tal curso. Lo escribí con un enfoque en hacer que los conceptos detrás del aprendizaje profundo y su implementación sean lo más accesibles posible. Hacerlo no requirió que simplifique nada; creo firmemente que no hay ideas difíciles en el aprendizaje profundo. Espero que este libro le resulte valioso y que le permita comenzar a crear aplicaciones inteligentes y resolver los problemas que le interesan. Con licenci a para expresiones de gratitud Me gustaría agradecer a la comunidad de Keras por hacer posible este libro. Keras ha crecido hasta tener cientos de colaboradores de código abierto y más de 200 000 usuarios. Sus contribuciones y comentarios han convertido a Keras en lo que es hoy. También me gustaría agradecer a Google por respaldar el proyecto Keras. Ha sido fantástico ver la adopción de Keras como la API de alto nivel de TensorFlow. Una integración fluida entre Keras y TensorFlow beneficia enormemente tanto a los usuarios de TensorFlow como a los usuarios de Keras y hace que el aprendizaje profundo sea accesible para la mayoría. Quiero agradecer a la gente de Manning que hizo posible este libro: la editora Marjan Bace y todos los miembros de los equipos editorial y de producción, incluidas Christina Taylor, Janet Vail, Tiffany Taylor, Katie Tennant, Dottie Marsico y muchos otros que trabajaron detrás de escena. . Vamos a la técnico METROningún tmadejas par críticosledbbyyAleksandarDragosavljevic´ — Diego Acuña Rozas, Geoff Barto, David Blumenthal-Barby, Abel Brown, Clark Dorman, Clark Gaylord, Thomas Heiman, Wilson Mar, Sumit Pal, Vladimir Pasman, Gustavo Patino, Peter Rabinovitch, Alvin Raj, Claudio Rodriguez, Srdjan Santic, Richard Tobias, Martin Verzilli, William E. Wheeler y Daniel Williams, y los colaboradores del foro. Sus contribuciones incluyeron detectar errores técnicos, errores de terminología y errores tipográficos, y hacer sugerencias de temas. Cada paso por el proceso de revisión y cad cadaa pieza de retroalimen retroalimentación tación implemen implementada tada a través de los temas del foro dieron forma y moldearon el manuscrito. En el aspecto técnico, un agradecimiento especial para Jerry Gaines, quien se desempeñó como editor técnico del libro; y Alex Ott y Richard Tobias, quienes se desempeñaron como correctores técnicos del libro. Son los mejores editores técnicos que podría haber esperado. Finalmente, me gustaría expresar mi gratitud a mi esposa María por su gran apoyo durante el desarrollo de Keras y la redacción de este libro. Con licenci a para XV Con licenci a para sobre este libro Este libro fue escrito para cualquiera que deseepara explorar el aprendizaje profundo desde cero o ampliar su comprensión del aprendizaje profundo. Tanto si es un ingeniero aprendizajeencontrará automáticovalor en ejercicio, un desarrollador de software o un estudiante de universitario, en estas páginas. Este libro ofrece una exploración práctica del aprendizaje profundo. Evita la notación matemática y prefiere explicar los conceptos cuantitativos a través de fragmentos de código y desarrollar una intuición práctica sobre las ideas centrales del aprendizaje automático y el aprendizaje profundo. Aprenderá de más de 30 ejemplos de código que incluyen comentarios detallados, recomendaciones prácticas y explicaciones simples de alto nivel de todo lo que necesita saber para comenzar a usar el aprendizaje profundo para resolver problemas prob lemas conc concretos retos.. Los ejemplos de código utilizan el marco de trabajo de aprendizaje profundo de Python, Keras, con Tensor-Flow como motor de back-end. Keras, uno de los marcos de aprendizaje profundo más populares y de más rápido crecimiento, es ampliamente recomendado como la mejor herramienta para comenzar con el aprendizaje profundo. Después de leer este libro, tendrá una sólida comprensión de lo que es el aprendizaje profundo, cuándo es aplicable y cuáles son sus limitaciones. Estará familiarizado con el flujo de trabajo estándar para abordar y resolver problemas de aprendizaje automático, y sabrá cómo abordar los problemas más comunes. Podrá utilizar Keras para abordar problemas del mundo real que van desde la visión por computadora hasta el procesamiento del lenguaje natural: clasificación de imágenes, pronóstico pron óstico de serie seriess tempo t emporales rales,, anális a nálisis is de senti sentimien mientos, tos, gene generació raciónn de imáge imágenes nes y texto, y más. Con licenci a para xvi Con licenci a para SOBRE ESTOLIBRO xvii lib ro Quién debería leer leer este libro Este libro está escrito para personas con experiencia en programación de Python que desean comenzar con el aprendizaje automático y el aprendizaje profundo. Pero este libro también puede ser valioso para muchos tipos diferentes de lectores: ◾ ◾ ◾ Si es un científico de datos familiarizado con el aprendizaje automático, este libro le brindará una introducción sólida y práctica al aprendizaje profundo, el subcampo más importante y de más rápido crecimiento del aprendizaje automático. Si es un experto en aprendizaje profundo que busca comenzar con el marco de trabajo de Keras, encontrará que este libro es el mejor curso intensivo de Keras disponible. Si es un estudiante de posgrado que estudia el aprendizaje profundo en un entorno formal, encontrará que este libro es un complemento práctico para su educación, lo que lo ayudará a desarrollar la intuición en torno al comportamiento de las redes neuronales profundas y lo familiarizará con las mejores prácticas clave. Incluso las personas con mentalidad técnica que no programan regularmente encontrarán este libro útil como una introducción a los conceptos básicos y avanzados de aprendizaje profundo. Para usar Keras, necesitará un dominio razonable de Python. Además, será útil familiarizarse con la biblioteca Numpy, aunque no es obligatorio. No necesita experiencia previa con el aprendizaje automático o el aprendizaje profundo: este libro cubre desde cero todos los conceptos básicos necesarios. Tampoco necesita una base matemática avanzada: las matemáticas de nivel secundario deberían ser suficientes para seguir adelante. Mapa vial Este libro está estructurado en dos partes. Si no tiene experiencia previa con el aprendizaje automático, le recomiendo encarecidamente que complete la parte 1 antes de abordar la parte 2. Comenzaremos con ejemplos simples y, a medida que avance el libro, nos acercaremos cada vez más al estado de la cuestión. -Técnicas artísticas. La Parte 1 es una introducción de alto nivel al aprendizaje profundo, brinda contexto y definiciones, y explica todas las nociones necesarias para comenzar con el aprendizaje automático y las redes neuronales: ◾ ◾ ◾ El Capítulo 1 presenta el contexto esencial y el conocimiento previo en torno aAI, aprendizaje automático y aprendizaje profundo. El Capítulo 2 presenta los conceptos fundamentales necesarios para abordar el aprendizaje profundo: tensores, operaciones de tensor, descenso de gradiente y retropropagación. Este capítulo también presenta el primer ejemplo del libro de una red neuronal en funcionamiento. El Capítulo 3 incluye todo lo que necesita para comenzar con las redes neuronales: una introducción a Keras, nuestro marco de aprendizaje profundo elegido; una guía para configurar su estación de trabajo; y tres ejemplos de código fundamental con explicaciones detalladas. Al final de este capítulo, Con licenci a para pod podrá rá entrenar ent renar neur neuronas onas simp simples les Con licenci a para xviii SOBRE ESTE LIBRO ◾ redes para manejar tareas de clasificación y regresión, y tendrá una idea sólida de lo que sucede en segundo plano a medida que las entrena. El capítulo 4 explora el flujo de trabajo de aprendizaje automático canónico. También aprenderá acerca de las trampas comunes y sus soluciones. La Parte 2 profundiza en las aplicaciones prácticas del aprendizaje profundo en la visión artificial y el procesamiento del lenguaje natural. Muchos de los ejemplos presen presentado tadoss en en esta partee se del part pueden pued en usar como plantillas plan tillas resolver resol ver prob problemas lemas que encontrará la práctica aprendizaje profundo en el para mundo real: ◾ ◾ ◾ ◾ ◾ El Capítulo 5 examina una variedad de ejemplos prácticos de visión por computadora, con un enfoque en la clasificación de imágenes. El Capítulo 6 le brinda práctica con técnicas para procesar datos de secuencia, como texto y series de tiempo. El Capítulo 7 presenta técnicas avanzadas para construir modelos de aprendizaje profundo de última generación. ge neración. El Capítulo 8 explica los modelos generativos: modelos de aprendizaje profundo prof undo capac capaces es de crea crearr imág imágenes enes y texto, a veces con resul resultados tados sorprendentemente artísticos. El Capítulo 9 está dedicado a consolidar lo que ha aprendido a lo largo del libro, además de abrir perspectivas sobre las limitaciones del aprendizaje profundo prof undo y explorar exp lorar su futuro fu turo prob p robable. able. software/hardware requisitos Todos los ejemplos de código de este libro utilizan el marco de aprendizaje profundo prof undo de Keras (https:// keras.io keras.io)), que es de código abierto y de descarga gratuita. Necesitará acceso a una máquina UNIX; también es posible usar Windows, pero no lo recom recomiend iendo. o. El Apén Apéndice dice A lo guía a travé travéss de la conf configur iguración ación completa. También le recomiendo que tenga una GPU NVIDIA reciente en su máquina, como TITAN X. Esto de no código es obligatorio, pero mejorará su experiencia permitirle ejecutar los ejemplos varias veces más rápido. Consulte la alsección 3.3 para obte obtener ner más infor información mación sobr sobree cómo conf configura igurarr una esta estación ción de trab trabajo ajo de aprendizaje profundo. Si no tiene acceso a una estación de trabajo local con una GPU NVIDIA reciente, puede usar un entorno de nube en su lugar. En particular, puede usar instancia instanciass de Google Cloud (como una instancia n1-standard-8 con un complemento NVIDIA Tesla K80) o instancias de GPU de Amazon Web Services (AWS) (como una instancia p2.xlarge). El Apéndice A péndice B presenta pres enta en e n detalle deta lle un posible flujo de trabajo tr abajo en e n la nube que q ue ejecuta una instancia de AWS a través de cuadernos Jupyter, accesible en su navegador. Código fuente Todos los ejemplos de código de este libro están disponibles para su descarga como cuadernos de Jupyter desde el sitio web del libro, libro , www.manning.com/books/deeplearning-with-python y en GitHub a https://github.com/fchollet/aprendizajeprofundo-con-notebooks-python . Con licenci a para SOBRE ESTOLIBRO xix Foro de libros La compra de Deep Learning con Python incluye acceso gratuito a un foro web privado administrado por Manning Publications donde puede hacer comentarios sobre el libro, hacer preguntas técnicas y recibir ayuda del autor y de otros usuarios. Para acceder al foro, vaya ahttps://foros.manning.com/forums/aprendizaje-profundo-con-python .También puede obtener más información sobre los foros de Manning y las reglas de conducta en https://foros .manning.com/forums/about. . .manning.com/forums/about El compromiso de Manning con nuestros lectores es proporcionar un lugar donde pueda tener lugar un diálogo significativo entre lectores individuales y entre lectores y el autor. No es un compromiso de participación específica por parte del autor, cuya contribución al foro es voluntaria (y no remunerada). ¡Le sugerimos que intente hacerle algunas preguntas desafiantes para que su interés no se desvíe! El foro y los archivos de debates anteriores estarán accesibles desde el sitio web de la editorial mientras el libro esté impreso. Con licenci a para Sobre el Autor François Chollet trabaja en aprendizaje profundo en Google en Mountain View, CA. Es el creador de la biblioteca de aprendizaje profundo Keras, así como colaborador del marco de aprendizaje automático TensorFlow. También realiza investigaciones de aprendizaje profundo, con un enfoque en la visión por computadora y la aplicación del aprendizaje automático al razonamiento formal. Sus artículos han sido publicadoss en las principale publicado principaless conferenci conferencias as en el campo, incluida la Conferencia sobre visión por computadora y reconocimiento de patrones (CVPR), la Conferencia y el taller sobre información neuronal. tion Processing Systems (NIPS), la Conferencia Internacional sobre Representaciones de Aprendizaje (ICLR) y otros. XX Con licenci a para sobre la portada La figura de la portada de Aprendizaje profundo con Python se titula "Hábito de un persa Señora en 1568.” La ilustración está tomada de A Collection of the Dresses of Different Nations, Ancient and Modern de Thomas Jefferys (cuatro volúmenes), Londres, publicado entre 1757 y 1772. La página del título indica que se trata de grabados en cobre coloreados a mano, realzados con goma arábiga. Thomas Jefferys (1719-1771) fue llamado "Geógrafo del rey Jorge III". Fue un cartógrafo inglés que fue el principal proveedor de mapas de su época. Grabó e imprimió mapas para el gobierno y otros organismos oficiales y produjo una amplia gama de mapas y atlas comerciales, especialmente de América del Norte. Su trabajo como cartógrafo despertó el interés por las costumbres locales de vestimenta de las tierras que estudió y cartografió, que se muestran brillantemente en esta colección. La fascinación por tierras lejanas y los viajes de placer eran fenómenos relativamente nuevos a finales del siglo XVIII, y colecciones como esta eran populares, introduciendo tanto al turista como al viajero de sillón a los habitantes de otros países. La diversidad de los dibujos en los volúmenes de Jefferys habla vívidamente de la singularidad e individualidad de las naciones del mundo hace unos 200 años. Los códigos de vestimenta han cambiado desde entonces, y la diversidad por regiones y países, tan ta n rica en ese momento, mom ento, se ha h a desvanecido. desvaneci do. Ahora a menudo menud o es difícil difí cil distinguir distin guir a los habitantes de un continente de otro. Tal vez, tratando de verlo con optimismo, hemos cambiado una diversidad cultural y visual por una vida personal más variada, o una vida intelectual y técnica más variada e interesante. En un momento en que es difícil distinguir un libro de computadora de otro, Manning celebra la inventiva y la iniciativa del negocio de las computadoras con portadas de libros basadas en la rica diversida diversidadd de la vida regional de hace dos siglos, revividas por las fotografías de Jefferys. . xxx Con licenci a para Con licenci a para Parte 1 Fundamentos del aprendizaje profundoo profund C Los capítulos 1 a 4 de este libro le brindarán una comprensión fundamental de lo que es el aprendizaje profundo, lo que puede lograr y cómo funciona. También lo familiarizará con el flujo de trabajo canónico para resolver problemas de datos mediante el aprendizaje profundo. Si aún no tiene un gran conocimiento sobre el aprendizaje profundo, definitivamente debe comenzar leyendo la parte 1 en su totalidad antes de pasar a las aplicaciones prácticas práct icas en e n la parte p arte 2. 2. Con licenci a para Con licenci a para ¿Qué esdo? el aprendizaje profun profundo? Este cap ítulo cubre ◾ ◾ ◾ Definiciones de alto nivel de conceptos fundamentales Cronología del desarrollo del aprendizaje automático Factoress clave Factore clave detrás detrás del au e del del En los últimos años, la inteligencia artificial (IA) ha sido un tema de intensa publicidad publ icidad medi mediática ática.. El E l apre aprendi ndizaje zaje autom automático ático,, el e l apre aprendiz ndizaje aje prof profundo undo y la IA IA aparecen en innumerables artículos, a menudo fuera de las publicaciones de mentalidad tecnológica. Se nos promete un futuro de chatbots inteligentes, autos autónomos y asistentes virtuales, un futuro a veces pintado con una luz sombría y otras veces utópico, donde los trabajos humanos serán escasos y la mayor parte de la actividad económica estará a cargo de robots o IA. agentes Para un practicant pract icantee futur futuroo o actua actuall del apren aprendizaj dizajee autom automático, ático, es impo important rtantee pod er reconocer la señal en el ruido para que pueda distinguir los desarrollos que cambian el mundo a partir de comunicados de prensa exagerados. Nuestro futuro está en juego, y es un futuro en el que usted tiene un papel activo que desempeñar: después de leer este libro, será uno de los que desarrollen los agentes de IA. Entonces, abordemos estas preguntas: ¿Qué ha logrado el aprendizaje profundo hasta ahora? ¿Qué tan importante es? ¿Hacia dónde nos dirigimos ahora? ¿Deberías creer bombo? esencial en torno a la inteligencia Este capítulo proporciona unelcontexto artificial, el aprendizaje automático y el aprendizaje profundo. 3 Con licenci a para 4 1.1 CPASADO1¿Qué es el aprendizaje profundo? Inteligencia artif icial, aprendizaje automático,y automático, y aprendizaje aprendizaje profundo profu ndo Primero, debemos definir claramente de qué estamos hablando cuando mencionamos la IA. ¿Qué son la inteligencia artificial, el aprendizaje automático y el aprendizaje profundo (consulte la figura 1.1)? ¿Cómo se relacionan entre sí? Inteligenc ia artificial Aprendi zaje Apren dizaje Figura 1.1 Inteligencia artificial, aprendizaje automático y aprendizaje profundo 1.1.1 Artt ifific Ar icial ial inteligencia La inteligencia artificial nació en la década de 1950, cuando un puñado de pioneros del incipiente campo de la informática comenzó a preguntarse si se podía hacer que las computadoras "pensaran", una pregunta cuyas ramificaciones todavía estamos explorando hoy. Una definición concisación concisa ción del campo sería la siguiente: el esfuerzo por automatizar las tareas intelectuales normalmente realizadas por los humanos. Como tal, la IA es un campo general que abarca el aprendizaje automático y el aprendizaje profundo, pero que también incluye muchos más enfoques que no implican implican ningún tipo de aprendizaje. aprendizaje. Los primeros programas de ajedrez, por ejemplo, solo involucraban reglas codificadas creadas por programadores y no calificaban aprendizaje automático. tiempo, muchos expertos creyeron que la como inteligencia artificial a nivelDurante humanobastante podría lograrse haciendo que los programadores crearan a mano un conjunto suficientemente grande de reglas explícitas para manipular el conocimiento. Este enfoque se conoce como IA simbólica y fue el paradigma dominante en la IA desde la década de 1950 hasta finales de la década de 1980. Alcanzó su máxima popularidad durante el auge de los sistemas expertos de la década de 1980. Aunque la IA simbólica demostró ser adecuada para resolver problemas lógicos bien definidos, como jugar al ajedrez, resultó ser intratable descubrir reglas explícitas para resolver problemas más complejos y confusos, como la clasificación de imágenes, el reconocimiento de voz y el lenguaje. traducción. Surgió un nuevo enfoque para tomar el lugar de la IA simbólica: el aprendizaje automático. 1.1.2 Ap rend Apre nd izaj izajee auto au to mát mátic icoo En la Inglaterra victoriana, Lady Ada Lovelace era amiga y colaboradora de Charles Babbage, el inventor de la máquina analítica: la primera computadora mecánica de prop propósito ósito gene general ral cono conocida cida.. Aunq Aunque ue visio visionaria naria y muy adela adelantad ntadaa a su tiemp tiempo, o, la Con licenci a para Analítica Con licenci a para aprendizaje automático y profundidada Inteligencia artificial, aprendizaje profundidadaprendizaje prendizaje 5 Engine no se pensó como una computadora de propósito general cuando se diseñó en las décadas de 1830 y 1840, porque el concepto de computación de propósito general aún no se había inventado. Simplemente pretendía ser una forma de utilizar operaciones mecánicas para automatizar ciertos cálculos del campo del análisis matemático, de ahí el nombre de motor analítico. En 1843, Ada Lovelace comentó sobre la invención: “La máquina analíti ca no tiene ninguna pretensión de originar nada. Puede hacer cualquier cosa que sepamos cómo ordenarle que realice… Su competencia es ayudarnos a poner a nuestra disposición lo que ya conocemos”. Esta observación fue citada posteriormente posteriormente por el pionero de la IA, Alan Turing, como “la objeción de Lady Lovelace” en su artículo histórico de 1950 “Computing Machinery and Intelligence”,1 que introdujo la prueba de Turing, así como los conceptos clave que llegarían a dar forma a la IA. Turing estaba citando a Ada Ad a Lovelace mientras se preguntaba si las computadoras de propósito general podrían ser capaces de aprender y ser originales, y llegó a la conclusión de que sí. El aprendizaje automático surge de esta pregunta: ¿podría una computadora ir más allá de “lo que sabemos cómo ordenarle que realice” y aprender por sí misma cómo realizar una tarea específica? ¿Podría una computadora sorprendernos? En lugar de que los programadores elaboren reglas de procesamiento de datos a mano, ¿podría una computadora aprender automáticamente estas reglas al observar los datos? Esta pregunta abre la puerta a un nuevo paradigma de programación. En la programaci prog ramación ón clásic c lásica, a, el para paradigma digma de la IA I A simból s imbólica, ica, los human h umanos os ingres in gresan an reglas r eglas (un programa) y datos para ser procesados de acuerdo con estas reglas, y obtienen respuestas (ver figura 1.2). Con el aprendizaje automático, los humanos ingresan datos, así como las respuestas esperadas de los datos, y obtienen las reglas. Estas reglas pueden luego aplicarse a nuevos datos para producir respuestas originales. Dato s de programaci ón clásica respuestas regl as Res puestas de datos Aprendi zaje Normas Figura 1.2 Aprendizaje automático: un nuevo paradigma de programación Un sistema de aprendizaje automático se entrena en lugar de programarse explícitamente.. Se presenta con muchos ejemplos relevantes para una tarea y encuentra explícitamente una estructura estadística en estos ejemplos que finalmente permite que el sistema genere para automatizar la tarea. Porpodría ejemplo, si desea la tarea de etiquetarreglas las imágenes de sus vacaciones, presentar un automatizar sistema de aprendizaje automático con muchos ejemplos de imágenes ya etiquetadas por humanos, y el sistema aprendería reglas estadísticas para asociar imágenes im ágenes específicas a etiquetas específicas. Con licenci a para 1 AM Turing, "Maquinaria informática e inteligencia", Mind 59, no. 236 (1950): 433-460.