ebook img

Deep Learning with Python. A Hands-on Introduction PDF

164 Pages·2017·5.847 MB·english
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Deep Learning with Python. A Hands-on Introduction

Deep Learning with Python A Hands-on Introduction Nikhil Ketkar Deep Learning with Python: A Hands-on Introduction Nikhil Ketkar Bangalore, Karnataka, India ISBN-13 (pbk): 978-1-4842-2765-7 ISBN-13 (electronic): 978-1-4842-2766-4 DOI 10.1007/978-1-4842-2766-4 Library of Congress Control Number: 2017939734 Copyright © 2017 by Nikhil Ketkar Any source code or other supplementary material referenced by the author in this book is available to readers on GitHub via the book’s product page, located at www.apress.com/9781484227657. For more detailed information, please visit http://www.apress.com/source-code. Contents at a Glance ■ Chapter 1: Introduction to Deep Learning �������������������������������������������������������������1 ■ Chapter 2: Machine Learning Fundamentals ���������������������������������������������������������5 ■ Chapter 3: Feed Forward Neural Networks ���������������������������������������������������������15 ■ Chapter 4: Introduction to Theano �����������������������������������������������������������������������33 ■ Chapter 5: Convolutional Neural Networks ���������������������������������������������������������61 ■ Chapter 6: Recurrent Neural Networks ���������������������������������������������������������������77 ■ Chapter 7: Introduction to Keras �������������������������������������������������������������������������95 ■ Chapter 8: Stochastic Gradient Descent ������������������������������������������������������������111 ■ Chapter 9: Automatic Differentiation �����������������������������������������������������������������131 ■ Chapter 10: Introduction to GPUs ����������������������������������������������������������������������147 Index ���������������������������������������������������������������������������������������������������������������������157 Contents ■ Chapter 1: Introduction to Deep Learning �������������������������������������������������������������1 Historical Context �������������������������������������������������������������������������������������������������������������1 Advances in Related Fields ����������������������������������������������������������������������������������������������3 Prerequisites �������������������������������������������������������������������������������������������������������������������3 Overview of Subsequent Chapters �����������������������������������������������������������������������������������4 Installing the Required Libraries �������������������������������������������������������������������������������������4 ■ Chapter 2: Machine Learning Fundamentals ���������������������������������������������������������5 Intuition ����������������������������������������������������������������������������������������������������������������������������5 Binary Classification ���������������������������������������������������������������������������������������������������������5 Regression �����������������������������������������������������������������������������������������������������������������������6 Generalization ������������������������������������������������������������������������������������������������������������������7 Regularization ����������������������������������������������������������������������������������������������������������������12 Summary ������������������������������������������������������������������������������������������������������������������������14 ■ Chapter 3: Feed Forward Neural Networks ���������������������������������������������������������15 Unit ���������������������������������������������������������������������������������������������������������������������������������15 Overall Structure of a Neural Network ��������������������������������������������������������������������������������������������������17 Expressing the Neural Network in Vector Form ������������������������������������������������������������������������������������18 Evaluating the output of the Neural Network ���������������������������������������������������������������������������������������19 Training the Neural Network �����������������������������������������������������������������������������������������������������������������21 Deriving Cost Functions using Maximum Likelihood ������������������������������������������������������22 Binary Cross Entropy ����������������������������������������������������������������������������������������������������������������������������23 Cross Entropy ���������������������������������������������������������������������������������������������������������������������������������������23 Squared Error ���������������������������������������������������������������������������������������������������������������������������������������24 Summary of Loss Functions �����������������������������������������������������������������������������������������������������������������25 Types of Units/Activation Functions/Layers ��������������������������������������������������������������������25 Linear Unit ��������������������������������������������������������������������������������������������������������������������������������������������26 Sigmoid Unit �����������������������������������������������������������������������������������������������������������������������������������������26 Softmax Layer ���������������������������������������������������������������������������������������������������������������������������������������27 Rectified Linear Unit (ReLU) ������������������������������������������������������������������������������������������������������������������27 Hyperbolic Tangent �������������������������������������������������������������������������������������������������������������������������������28 Neural Network Hands-on with AutoGrad ����������������������������������������������������������������������31 Summary ������������������������������������������������������������������������������������������������������������������������31 ■ Chapter 4: Introduction to Theano �����������������������������������������������������������������������33 What is Theano ���������������������������������������������������������������������������������������������������������������33 Theano Hands-On �����������������������������������������������������������������������������������������������������������34 Summary ������������������������������������������������������������������������������������������������������������������������59 ■ Chapter 5: Convolutional Neural Networks ���������������������������������������������������������61 Convolution Operation ����������������������������������������������������������������������������������������������������61 Pooling Operation �����������������������������������������������������������������������������������������������������������68 Convolution-Detector-Pooling Building Block�����������������������������������������������������������������70 Convolution Variants �������������������������������������������������������������������������������������������������������74 Intuition behind CNNs �����������������������������������������������������������������������������������������������������75 Summary ������������������������������������������������������������������������������������������������������������������������76 ■ Chapter 6: Recurrent Neural Networks ���������������������������������������������������������������77 RNN Basics ���������������������������������������������������������������������������������������������������������������������77 Training RNNs �����������������������������������������������������������������������������������������������������������������82 Bidirectional RNNs ���������������������������������������������������������������������������������������������������������89 Gradient Explosion and Vanishing ����������������������������������������������������������������������������������90 Gradient Clipping ������������������������������������������������������������������������������������������������������������91 Long Short Term Memory �����������������������������������������������������������������������������������������������93 Summary ������������������������������������������������������������������������������������������������������������������������94 ■ Chapter 7: Introduction to Keras �������������������������������������������������������������������������95 Summary ����������������������������������������������������������������������������������������������������������������������109 ■ Chapter 8: Stochastic Gradient Descent ������������������������������������������������������������111 Optimization Problems �������������������������������������������������������������������������������������������������111 Method of Steepest Descent ����������������������������������������������������������������������������������������112 Batch, Stochastic (Single and Mini-batch) Descent �����������������������������������������������������113 Batch ��������������������������������������������������������������������������������������������������������������������������������������������������114 Stochastic Single Example �����������������������������������������������������������������������������������������������������������������114 Stochastic Mini-batch �������������������������������������������������������������������������������������������������������������������������114 Batch vs� Stochastic ���������������������������������������������������������������������������������������������������������������������������114 Challenges with SGD ����������������������������������������������������������������������������������������������������114 Local Minima ��������������������������������������������������������������������������������������������������������������������������������������114 Saddle Points ��������������������������������������������������������������������������������������������������������������������������������������115 Selecting the Learning Rate ���������������������������������������������������������������������������������������������������������������116 Slow Progress in Narrow Valleys ��������������������������������������������������������������������������������������������������������117 Algorithmic Variations on SGD ��������������������������������������������������������������������������������������117 Momentum �����������������������������������������������������������������������������������������������������������������������������������������118 Nesterov Accelerated Gradient (NAS) �������������������������������������������������������������������������������������������������119 Annealing and Learning Rate Schedules ��������������������������������������������������������������������������������������������119 Adagrad ����������������������������������������������������������������������������������������������������������������������������������������������119 RMSProp ���������������������������������������������������������������������������������������������������������������������������������������������120 Adadelta ���������������������������������������������������������������������������������������������������������������������������������������������121 Adam ��������������������������������������������������������������������������������������������������������������������������������������������������121 Resilient Backpropagation ������������������������������������������������������������������������������������������������������������������121 Equilibrated SGD ���������������������������������������������������������������������������������������������������������������������������������122 Tricks and Tips for using SGD ���������������������������������������������������������������������������������������122 Preprocessing Input Data �������������������������������������������������������������������������������������������������������������������122 Choice of Activation Function �������������������������������������������������������������������������������������������������������������122 Preprocessing Target Value ����������������������������������������������������������������������������������������������������������������123 Initializing Parameters ������������������������������������������������������������������������������������������������������������������������123 Shuffling Data �������������������������������������������������������������������������������������������������������������������������������������123 Batch Normalization ���������������������������������������������������������������������������������������������������������������������������123 Early Stopping ������������������������������������������������������������������������������������������������������������������������������������123 Gradient Noise ������������������������������������������������������������������������������������������������������������������������������������123 Parallel and Distributed SGD ����������������������������������������������������������������������������������������124 Hogwild �����������������������������������������������������������������������������������������������������������������������������������������������124 Downpour �������������������������������������������������������������������������������������������������������������������������������������������124 Hands-on SGD with Downhill ���������������������������������������������������������������������������������������125 Summary ����������������������������������������������������������������������������������������������������������������������130 ■ Chapter 9: Automatic Differentiation �����������������������������������������������������������������131 Numerical Differentiation ���������������������������������������������������������������������������������������������131 Symbolic Differentiation �����������������������������������������������������������������������������������������������132 Automatic Differentiation Fundamentals ����������������������������������������������������������������������133 Forward/Tangent Linear Mode ������������������������������������������������������������������������������������������������������������134 Reverse/Cotangent/Adjoint Linear Mode ��������������������������������������������������������������������������������������������138 Implementation of Automatic Differentiation ��������������������������������������������������������������������������������������141 Hands-on Automatic Differentiation with Autograd ������������������������������������������������������143 Summary ����������������������������������������������������������������������������������������������������������������������146 ■ Chapter 10: Introduction to GPUs ����������������������������������������������������������������������147 Summary ����������������������������������������������������������������������������������������������������������������������156 Index ���������������������������������������������������������������������������������������������������������������������157 CHAPTER 1 Introduction to Deep Learning This chapter gives a broad overview and a historical context around the subject of deep learning. It also gives the reader a roadmap for navigating the book, the prerequisites, and further reading to dive deeper into the subject matter. Historical Context The field of Artificial Intelligence (AI), which can definitely be considered to be the parent field of deep learning, has a rich history going back to 1950. While we will not cover this history in much detail, we will go over some of the key turning points in the field, which will lead us to deep learning. Tasks that AI focused on in its early days were tasks that could be easily described formally, like the game of checkers or chess. This notion of being able to easily describe the task formally is at the heart of what can or cannot be done easily by a computer program. For instance, consider the game of chess. The formal description of the game of chess would be the representation of the board, a description of how each of the pieces move, the starting configuration, and a description of the configuration wherein the game terminates. With these notions formalized, it's relatively easy to model a chess-playing AI program as a search and, given sufficient computational resources, it’s possible to produces a relatively good chess-playing AI. The first era of AI focused on such tasks with a fair amount of success. At the heart of the methodology was a symbolic representation of the domain and the manipulation of symbols based on given rules (with increasingly sophisticated algorithms for searching the solution space to arrive at a solution). It must be noted that the formal definitions of such rules were done manually. However, such early AI systems were fairly general purpose task/problem solvers in the sense that any problem that could be described formally could be solved with the generic approach. The key limitation about such systems is that the game of chess is a relatively easy problem for AI simply because the problem setting is relatively simple and can be easily formalized. This is not the case with many of the problems human beings solve on a day-to-day basis (natural intelligence). For instance, consider diagnosing a disease (as a physician does) or transcribing human speech to text. These tasks, like most other tasks human beings master easily, are hard to describe formally and presented a challenge in the early days of AI. Human beings address such tasks by leveraging a large amount of knowledge about the task/problem domain. Given this observation, subsequent AI systems relied on a large knowledge base which captured the knowledge about the problem/task domain. One point to be noted is the term used here is knowledge, not information or data. By knowledge we simply mean data/information that a program/algorithm can reason about. An example of this could be a graph representation of a map with edges labeled with distances and about traffic (which is being constantly updated), which allows a program to reason about the shortest path between points. Chapter 1 ■ IntroduCtIon to deep LearnIng Such knowledge-based systems wherein the knowledge was compiled by experts and represented in a way which allowed algorithms/programs to reason about it represent the second generation of AI. At the heart of such approaches were increasingly sophisticated approaches for representing and reasoning about knowledge to solve tasks/problems which required such knowledge. Examples of such sophistication include the use of first order logic to encode knowledge and probabilistic representations to capture and reason where uncertainty is inherent to the domain. One of the key challenges that such systems faced and addressed to some extent was the uncertainty inherent in many domains. Human beings are relatively good at reasoning in environments with unknowns and uncertainty. One key observation here is that even the knowledge we hold about a domain is not black or white but gray. A lot of progress was made in this era on representing and reasoning about unknowns and uncertainty. There were some limited successes in tasks like diagnosing a disease, which relied on leveraging and reasoning using a knowledge base in the presence of unknowns and uncertainty. The key limitation of such systems was the need to hand compile the knowledge about the domain from experts. Collecting, compiling, and maintaining such knowledge bases rendered such systems unpractical. In certain domains, it was extremely hard to even collect and compile such knowledge (for instance, transcribing speech to text or translating documents from one language to another). While human beings can easily learn to do such tasks, it's extremely challenging to hand compile and encode the knowledge related to the tasks (for instance, the knowledge of the English language and grammar, accents, and subject matter). Human beings address such tasks by acquiring knowledge about a task/problem domain, a process which is referred to as learning. Given this observation, the focus of subsequent work in AI shifted over a decade or two to algorithms that improved their performance based on data provided to them. The focus of this subfield was to develop algorithms that acquired relevant knowledge for a task/problem domain given data. It is important to note that this knowledge acquisition relied on labeled data and a suitable representation of labeled data as defined by a human being. For instance, consider the problem of diagnosing a disease. For such a task, a human expert would collect a lot of cases where a patient had and did not have the disease in question. Then, the human expert would identify a number of features that would aid making the prediction like, say, the age of the patient, the gender, and results from a number of diagnostic tests like blood pressure, blood sugar, etc. The human expert would compile all this data and represent it in a suitable way like scaling/normalizing the data, etc. Once this data was prepared, a machine learning algorithm can learn how to infer whether the patient has the disease or not by generalizing from the labeled data. Note that the labeled data consisted of patients that both have and do not have the disease. So, in essence, the underlying ML algorithm is essentially doing the job of finding a mathematical function that can produce the right outcome (disease or no disease) given the inputs (features like age, gender, data from diagnostic tests, etc.). Finding the simplest mathematical function that predicts the outputs with required level of accuracy is at the heart of the field of ML. Specific questions like how many examples are required to learn a task or the time complexity of the algorithm, etc., are specific questions on which the field of ML has provided answers with theoretical justification. The field has matured to a point where, given enough data, computer resources, and human resources to engineer features, a large class of problems are solvable. The key limitation of mainstream ML algorithms is that applying them to a new problem domain requires a massive amount of feature engineering. For instance, consider the problem of recognizing objects in images. Using traditional ML techniques, such a problem will require a massive feature engineering effort wherein experts would identify and generate features which would be used by the ML algorithm. In a sense, the true intelligence is in the identification of features and what the ML algorithm is doing is simply learning how to combine these features to arrive at the correct answer. This identification of features or the representation of data which domain experts do before ML algorithms are applied is both a conceptual and practical bottleneck in AI. It’s a conceptual bottleneck because if features are being identified by domain experts, and the ML algorithm is simply learning to combine and draw conclusions from this, is this really AI? It’s a practical bottleneck because the process of building models via traditional ML is bottlenecked by the amount of feature engineering required; there are limits to how much human effort can be thrown at the problem. 2 Chapter 1 ■ IntroduCtIon to deep LearnIng Human beings learn concepts starting from raw data. For instance, a child shown a few examples/ instances of a particular animal (like, say, cats) will soon learn to identify cats. The learning process does not involve a parent identifying features like does it have whiskers or does it have fur or does it have a tail. Human learning goes from raw data to a conclusion without the explicit step where features are identified and provided to the learner. In a sense, human beings learn the appropriate representation of data from the data itself. Furthermore, they organize concepts as a hierarchy where complicated concepts are expressed using primitive concepts. The field of deep learning has its primary focus on learning appropriate representations of data such that these could be used to draw conclusions. The word deep in deep learning refers to the idea of learning the hierarchy of concepts directly from raw data. A more technically appropriate term for deep learning would be representation learning, and a more practical term for the same would be automated feature engineering. Advances in Related Fields It is important to make a note of advances in other fields that have played a key role in the recent interest and success of deep learning. The following points are to be noted. 1. The ability to collect, store, and operate over large amounts of data has greatly advanced over the last decade (for instance, the Apache Hadoop Ecosystem). 2. The ability to generate supervised training data (which is basically data with labels—an example of this would be pictures annotated with the objects in the picture) has improved a lot with the availability of crowd-sourcing services (like Amazon Mechanical Turk). 3. The massive improvements in computational horsepower brought about by Graphical Processor Units. 4. The advances in both theory and software implementation of automatic differentiation (like Theano). While these advancements are peripheral to deep learning, they have played a big role in enabling advances in deep learning. Prerequisites The key prerequisites for reading this book are a working knowledge of Python and some course work on linear algebra, calculus, and probability. It is recommended that readers refer to the following in case they need to cover these prerequisites. 1. Dive Into Python by Mark Pilgrim for Python. 2. Linear Algebra by Gilbert Strang for linear algebra. 3. Calculus by Gilbert Strang for calculus. 4. All of Statistics by Larry Wasserman for probability (Section 1, Chapters 1-5). 3

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.