Uploaded by dlopezvera88

pdf-chollet-2018-espaol compress

advertisement
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.
Download