Prefacio

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

¿Qué contiene este libro?

Los cuatro primeros capítulos de este libro se centran en la teoría y los fundamentos suficientes para proporcionarte a ti, el profesional, una base de trabajo para el resto del libro. A continuación, los últimos cinco capítulos trabajan a partir de estos conceptos para conducirte por una serie de caminos prácticos en el aprendizaje profundo utilizando DL4J:

  • Construir redes profundas
  • Técnicas avanzadas de ajuste
  • Vectorización para distintos tipos de datos
  • Ejecutar flujos de trabajo de aprendizaje profundo en Spark

DL4J como abreviatura de Deeplearning4j

En este libro utilizamos indistintamente los nombres DL4J y Deeplearning4j. Ambos términos se refieren al conjunto de herramientas de la biblioteca Deeplearning4j.

Diseñamos el libro de esta manera porque pensamos que era necesario un libro que cubriera "suficiente teoría" y que, al mismo tiempo, fuera lo suficientemente práctico como para crear flujos de trabajo de aprendizaje profundo de clase de producción. Creemos que este enfoque híbrido de la cobertura del libro se ajusta bien a este espacio.

El Capítulo 1 es un repaso de los conceptos del aprendizaje automático en general y del aprendizaje profundo en particular, para poner al día a cualquier lector sobre los fundamentos necesarios para comprender el resto del libro. Añadimos este capítulo porque a muchos principiantes les vendría bien un repaso o una introducción a estos conceptos, y queríamos que el proyecto fuera accesible al mayor público posible.

El Capítulo 2 se basa en los conceptos del Capítulo 1 y te proporciona los fundamentos de las redes neuronales. Es, en gran medida, un capítulo de teoría de redes neuronales, pero nuestro objetivo es presentar la información de forma accesible. El Capítulo 3 se basa en los dos primeros capítulos para ponerte al día sobre cómo evolucionaron las redes profundas a partir de los fundamentos de las redes neuronales. A continuación, el Capítulo 4 presenta las cuatro arquitecturas principales de las redes profundas y te proporciona la base para el resto del libro.

En el Capítulo 5, te llevamos a través de una serie de ejemplos de código Java utilizando las técnicas de la primera mitad del libro. Los capítulos 6 y 7 examinan los fundamentos del ajuste de redes neuronales generales y, a continuación, cómo ajustar arquitecturas específicas de redes profundas. Estos capítulos son independientes de la plataforma y serán aplicables al profesional de cualquier biblioteca de aprendizaje profundo. El capítulo 8 es un repaso de las técnicas de vectorización y los fundamentos sobre cómo utilizar DataVec (la herramienta de flujo de trabajo de ETL y vectorización de DL4J). El capítulo 9 concluye el cuerpo principal del libro con un repaso sobre cómo utilizar DL4J de forma nativa en Spark y Hadoop, e ilustra tres ejemplos reales que puedes ejecutar en tus propios clusters de Spark.

El libro tiene muchos capítulos apéndice para temas que eran relevantes pero que no encajaban directamente en los capítulos principales. Los temas incluyen:

  • Inteligencia Artificial
  • Utilizar Maven con proyectos DL4J
  • Trabajar con GPUs
  • Utilizar la API de ND4J
  • y más

¿Quién es "el profesional"?

Hoy en día, el término "ciencia de datos" no tiene una definición clara y a menudo se utiliza de muchas formas diferentes. El mundo de la ciencia de los datos y la inteligencia artificial (IA) es tan amplio y difuso como cualquiera de los términos de la informática actual. Esto se debe en gran medida a que el mundo del aprendizaje automático se ha enredado en casi todas las disciplinas.

Este enredo generalizado tiene paralelismos históricos con cuando la World Wide Web (90) entretejió el HTML en todas las disciplinas e introdujo a mucha gente nueva en el terreno de la tecnología. Del mismo modo, todo tipo de personas -ingenieros, estadísticos, analistas, artistas- se incorporan cada día al aprendizaje automático. Con este libro, nuestro objetivo es democratizar el aprendizaje profundo (y el aprendizaje automático) y llevarlo al público más amplio posible.

Si el tema te parece interesante y estás leyendo este prefacio, túeres el profesional y este libro es para ti.

¿Quién debería leer este libro?

En lugar de empezar con ejemplos de juguete y construir en torno a ellos, hemos optado por iniciar el libro con una serie de fundamentos que te lleven a un viaje completo por el aprendizaje profundo.

Creemos que demasiados libros omiten temas básicos que el profesional de empresa suele necesitar para un repaso rápido. Basándonos en nuestra experiencia en el campo del aprendizaje automático, hemos decidido empezar con los materiales que los profesionales principiantes a menudo necesitan repasar para apoyar mejor sus proyectos de aprendizaje profundo.

Puede que quieras saltarte los Capítulos 1 y 2 e ir directamente a los fundamentos del aprendizaje profundo. Sin embargo, esperamos que aprecies tener el material por adelantado para que puedas tener un camino de deslizamiento suave hacia los temas más difíciles del aprendizaje profundo que se basan en estos principios. En las secciones siguientes, te sugerimos algunas estrategias de lectura para distintos contextos.

El Profesional del Aprendizaje Automático en la Empresa

Dividimos esta categoría en dos subgrupos:

  • Científico de datos en ejercicio
  • Ingeniero Java

El científico de datos en ejercicio

Este grupo normalmente ya construye modelos y domina el ámbito de la ciencia de datos. Si este es tu caso, probablemente puedas saltarte el Capítulo 1 y querrás hojear ligeramente el Capítulo 2. Te sugerimos que pases al Capítulo 3 porque probablemente estarás preparado para saltar a los fundamentos de las redes profundas.

El ingeniero Java

Los ingenieros de Java suelen encargarse de integrar el código de aprendizaje automático con los sistemas de producción. Si éste es tu caso, empezar por el Capítulo 1 te resultará interesante porque te permitirá comprender mejor la jerga de la ciencia de datos. El Apéndice E también debería interesarte porque el código de integración para la puntuación de modelos normalmente tocará directamente la API de ND4J.

El Ejecutivo de Empresa

Algunos de nuestros revisores eran ejecutivos de grandes empresas de Fortune 500 y apreciaron el contenido desde la perspectiva de comprender mejor lo que está ocurriendo en el aprendizaje profundo. Un ejecutivo comentó que "había pasado un minuto" desde la universidad, y que el Capítulo 1 era un buen repaso de conceptos. Si eres un ejecutivo, te sugerimos que empieces con un rápido repaso del Capítulo 1 para reaclimatarte a cierta terminología. Sin embargo, es posible que quieras saltarte los capítulos en los que abundan las API y los ejemplos.

El académico

Si eres un académico, es probable que quieras saltarte los capítulos 1 y 2 porque la escuela de posgrado ya habrá cubierto estos temas. Los capítulos sobre el ajuste de las redes neuronales en general y luego el ajuste específico de la arquitectura te interesarán mucho porque esta información se basa en la investigación y trasciende cualquier implementación específica del aprendizaje profundo. La cobertura de ND4J también te interesará si prefieres hacer álgebra lineal de alto rendimiento en la máquina virtual Java (JVM).

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 para listados de programas, así como dentro de 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. También se utiliza para nombres de módulos y paquetes, y para mostrar comandos u otro texto que deba ser tecleado literalmente por el usuario y la salida de los comandos.

Constant width italic

Muestra el texto que debe sustituirse por valores proporcionados por el usuario o por valores determinados por el contexto.

Consejo

Este elemento significa un consejo o sugerencia.

Nota

Este elemento significa una nota general.

Advertencia

Este elemento significa una advertencia o precaución.

Utilizar ejemplos de código

El material complementario (máquina virtual, datos, scripts y herramientas personalizadas de línea de comandos, etc.) se puede descargar en https://github.com/deeplearning4j/oreilly-book-dl4j-examples.

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 un CD-ROM de 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, pero no exigimos, la atribución. Una atribución suele incluir el título, el autor, la editorial y el ISBN. Por ejemplo "Aprendizaje profundo: A Practitioner's Approach por Josh Patterson y Adam Gibson (O'Reilly). Copyright 2017 Josh Patterson y Adam Gibson, 978-1-4919-1425-0".

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

Notas administrativas

En los ejemplos de código Java de , a menudo omitimos las sentencias import. Puedes ver los listados de importación completos en el repositorio de código real. La información de la API para DL4J, ND4J, DataVec y otros está disponible en este sitio web:

Puedes encontrar todos los ejemplos de código en

Para más recursos sobre la familia de herramientas DL4J, consulta este sitio web:

Safari O'Reilly

Nota

Safari (antes Safari Books Online) es una plataforma de formación y referencia basada en membresías para empresas, administraciones públicas, educadores y particulares.

Los miembros tienen acceso a miles de libros, vídeos de formación, rutas de aprendizaje, tutoriales interactivos y listas de reproducción de más de 250 editoriales, como O'Reilly Media, Harvard Business Review, Prentice Hall Professional, Addison-Wesley Professional, Microsoft Press, Sams, Que, Peachpit Press, Adobe, Focal Press, Cisco Press, John Wiley & Sons, Syngress, Morgan Kaufmann, IBM Redbooks, Packt, Adobe Press, FT Press, Apress, Manning, New Riders, Jones & Bartlett y Course Technology, entre otras. Sons, Syngress, Morgan Kaufmann, IBM Redbooks, Packt, Adobe Press, FT Press, Apress, Manning, New Riders, McGraw-Hill, Jones & Bartlett y Course Technology, entre otras.

Para más información, visita http://oreilly.com/safari.

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)

Para hacer comentarios o preguntas técnicas sobre este libro, envía un correo electrónico a Si detectas algún error u omisión flagrante, si encuentras algo confuso o si tienes alguna idea para mejorar el libro, envía un correo electrónico a Josh Patterson a jpatterson@floe.tv.

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 http://bit.ly/deep_learning_oreilly.

Para más información sobre nuestros libros, cursos, conferencias y noticias, consulta nuestro sitio web en http://www.oreilly.com.

Encuéntranos en Facebook: http://facebook.com/oreilly

Síguenos en Twitter: http://twitter.com/oreillymedia

Míranos en YouTube: http://www.youtube.com/oreillymedia

Sigue a Josh Patterson en Twitter: @jpatanooga

Sigue a Adam Gibson en Twitter: @agibsonccc

Agradecimientos

Josh

Yo conté con muchas personas mucho más inteligentes que yo para ayudar a dar forma a las ideas y revisar el contenido de este libro. Ningún proyecto de la envergadura de DL4J funciona en el vacío, y me he apoyado en muchos de los expertos de la comunidad e ingenieros de Skymind para construir muchas de las ideas y directrices de este libro.

Poco me imaginaba que hackear lo que se convirtió en DL4J con Adam (tras un encuentro casual en la MLConf) acabaría convirtiéndose en un libro. Para ser justos, aunque yo estuve desde el principio en DL4J, Adam hizo muchos más commits que yo. Así pues, a Adam le estoy considerablemente agradecido por su compromiso con el proyecto, por su compromiso con la idea del aprendizaje profundo en la JVM y por mantener el rumbo durante unos primeros días considerablemente inciertos. Y, sí, tenías razón: ND4J fue una buena idea.

Escribir puede ser un camino largo y solitario, y me gustaría agradecer específicamente a Alex Black sus considerables esfuerzos, no sólo en la revisión del libro, sino también por contribuir con contenido en los apéndices. El conocimiento enciclopédico de Alex sobre la literatura publicada sobre redes neuronales fue clave para elaborar muchos de los pequeños detalles de este libro y asegurarse de que todas las cosas grandes y pequeñas eran correctas. Los capítulos 6 y 7 no serían ni la mitad de lo que llegaron a ser sin Alex Black.

Susan Eraly fue clave para ayudar a construir la sección de funciones de pérdida y también contribuyó con material de apéndices (muchas de las ecuaciones de este libro tienen una deuda de corrección con Susan), junto con muchas notas de revisión detalladas. Melanie Warrick fue clave en la revisión de los primeros borradores del libro, aportando comentarios y notas sobre el funcionamiento interno de las Redes Neuronales Convolucionales (CNN).

David Kale fue un frecuente revisor ad hoc y me mantuvo alerta sobre muchos detalles clave de la red y las referencias de los documentos. Dave siempre estaba ahí para aportar el punto de vista del académico sobre el grado de rigor que debíamos proporcionar, al tiempo que comprendía a qué tipo de público nos dirigíamos.

James Long fue un oído crítico para mis desvaríos sobre lo que debía o no debía figurar en el libro, y fue capaz de aportar un punto de vista práctico desde el punto de vista de un estadístico en ejercicio. Muchas veces no había una respuesta correcta clara sobre cómo comunicar un tema complejo, y James era mi caja de resonancia para argumentar el caso desde múltiples puntos de vista. Mientras que David Kale y Alex Black me recordaban con frecuencia la necesidad del rigor matemático, James a menudo hacía de abogado del diablo racional sobre cuánto de él necesitábamos antes de "ahogar al lector en matemáticas".

Vyacheslav "Raver" Kokorin aportó una visión de calidad al desarrollo de los ejemplos de Procesamiento del Lenguaje Natural (PLN) y Word2Vec.

Me gustaría destacar el apoyo que recibimos de nuestro director general en Skymind, Chris Nicholson. Chris apoyó este libro en todo momento y, en gran medida, nos ayudó con el tiempo y los recursos necesarios para hacerlo realidad.

Me gustaría dar las gracias a las personas que han contribuido a los capítulos de los apéndices: Alex Black (Backprop, DataVec), Vyacheslav "Raver" Kokorin (GPU), Susan Eraly (GPU) y Ruben Fiszel (Aprendizaje por Refuerzo). Otros revisores del libro en distintas fases son Grant Ingersol, Dean Wampler, Robert Chong, Ted Malaska, Ryan Geno, Lars George, Suneel Marthi, François Garillot y Don Brown. Cualquier error que puedas descubrir en este libro debes achacarlo directamente a mí.

Me gustaría dar las gracias a nuestro estimado editor, Tim McGovern, por sus comentarios, notas y, en general, por su paciencia con un proyecto que ha durado años y ha crecido en tres capítulos. Creo que nos dio el espacio necesario para hacerlo bien, y se lo agradecemos.

Me gustaría reconocer a otras personas que influyeron en mi carrera hasta la publicación de este libro: mis padres (Lewis y Connie), el Dr. Andy Novobiliski (escuela de posgrado), la Dra. Mina Sartipi (directora de tesis), el Dr. Billy Harris (algoritmos de posgrado), el Dr. Joe Dumas (escuela de posgrado), Ritchie Carroll (creador de openPDC), Paul Trachian, Christophe Bisciglian y Mike Olson (por contratarme para Cloudera), Malcom Joe Dumas (posgrado), Ritchie Carroll (creador del openPDC), Paul Trachian, Christophe Bisciglia y Mike Olson (por contratarme para Cloudera), Malcom Ramey (por mi primer trabajo real de programación), la Universidad de Tennessee en Chattanooga y Lupi's Pizza (por alimentarme durante el posgrado).

Por último, y no por ello menos importante, me gustaría dar las gracias a mi mujer Leslie y a mis hijos Ethan, Griffin y Dane por su paciencia mientras trabajaba hasta tarde, a menudo y a veces de vacaciones.

Adam

Me gustaría dar las gracias a mi equipo de Skymind por todo el trabajo que realizaron para ayudarme con la revisión del libro y el contenido mientras seguíamos iterando sobre el libro. Me gustaría dar las gracias especialmente a Chris, que toleró mi loca idea de escribir un libro mientras intentaba hacer una startup.

DL4J comenzó en 2013 con un encuentro casual con Josh en la MLConf y ha crecido hasta convertirse en un proyecto que ahora se utiliza en todo el mundo. DL4J me ha llevado por todo el mundo y realmente ha abierto mi mundo a montones de nuevas experiencias.

En primer lugar, me gustaría dar las gracias a mi coautor Josh Patterson, que hizo la mayor parte del libro y merece gran parte del crédito. Trabajó noches y fines de semana para sacar el libro a la luz mientras yo seguía trabajando en el código base y adaptando el contenido a las nuevas funciones a lo largo de los años.

Haciéndome eco de Josh, muchos de nuestros compañeros de equipo y colaboradores que se unieron al principio, como Alex, Melanie, Vyacheslav "Raver" Kokorin, y más tarde gente como Dave, que nos ayudaron como un par de ojos más en la diligencia debida matemática.

Tim McGovern ha sido un gran oyente para algunas de mis locas ideas sobre contenidos para O'Reilly y también fue increíble al dejarme ponerle nombre al libro.

Get Aprendizaje profundo 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.