{
  "id": "e63a1e66232d",
  "url": "https://lilianweng.github.io/posts/2017-06-21-overview/",
  "source_excel_row": 1601,
  "source_url": "https://lilianweng.github.io/posts/2017-06-21-overview/",
  "is_paid_flag": "",
  "images": [
    {
      "status": "ok",
      "url": "https://lilianweng.github.io/posts/2017-06-21-overview/ANN.png",
      "bytes": 189766,
      "reused": false,
      "content_type": "image/png",
      "local_path": "attachments/e63a1e66232d/images/body-afc61371a02b455239c2.png",
      "src": "https://lilianweng.github.io/posts/2017-06-21-overview/ANN.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://lilianweng.github.io/posts/2017-06-21-overview/data_size_vs_model_performance.png",
      "bytes": 13941,
      "reused": false,
      "content_type": "image/png",
      "local_path": "attachments/e63a1e66232d/images/body-9d81c38b488b3632ed8d.png",
      "src": "https://lilianweng.github.io/posts/2017-06-21-overview/data_size_vs_model_performance.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://lilianweng.github.io/posts/2017-06-21-overview/visual_cortex_system.png",
      "bytes": 339657,
      "reused": false,
      "content_type": "image/png",
      "local_path": "attachments/e63a1e66232d/images/body-c3b89516ea58d513c6e4.png",
      "src": "https://lilianweng.github.io/posts/2017-06-21-overview/visual_cortex_system.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://lilianweng.github.io/posts/2017-06-21-overview/lenet.png",
      "bytes": 46457,
      "reused": false,
      "content_type": "image/png",
      "local_path": "attachments/e63a1e66232d/images/body-5e6d7c0353c6dcedff22.png",
      "src": "https://lilianweng.github.io/posts/2017-06-21-overview/lenet.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://lilianweng.github.io/posts/2017-06-21-overview/RNN.png",
      "bytes": 55893,
      "reused": false,
      "content_type": "image/png",
      "local_path": "attachments/e63a1e66232d/images/body-7f08154f4714c6af05cf.png",
      "src": "https://lilianweng.github.io/posts/2017-06-21-overview/RNN.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://lilianweng.github.io/posts/2017-06-21-overview/LSTM.png",
      "bytes": 77504,
      "reused": false,
      "content_type": "image/png",
      "local_path": "attachments/e63a1e66232d/images/body-c47361447354e9dc9408.png",
      "src": "https://lilianweng.github.io/posts/2017-06-21-overview/LSTM.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://lilianweng.github.io/posts/2017-06-21-overview/rnn_shakespeare.png",
      "bytes": 141447,
      "reused": false,
      "content_type": "image/png",
      "local_path": "attachments/e63a1e66232d/images/body-128df9c78ce434cf9940.png",
      "src": "https://lilianweng.github.io/posts/2017-06-21-overview/rnn_shakespeare.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://lilianweng.github.io/posts/2017-06-21-overview/seq2seq_gmail.png",
      "bytes": 42173,
      "reused": false,
      "content_type": "image/png",
      "local_path": "attachments/e63a1e66232d/images/body-f5c3b685a188e7a1f7ea.png",
      "src": "https://lilianweng.github.io/posts/2017-06-21-overview/seq2seq_gmail.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://lilianweng.github.io/posts/2017-06-21-overview/autoencoder.png",
      "bytes": 87321,
      "reused": false,
      "content_type": "image/png",
      "local_path": "attachments/e63a1e66232d/images/body-bb941fda00c0e424d832.png",
      "src": "https://lilianweng.github.io/posts/2017-06-21-overview/autoencoder.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://lilianweng.github.io/posts/2017-06-21-overview/autoencoder_experiment.png",
      "bytes": 1969955,
      "reused": false,
      "content_type": "image/png",
      "local_path": "attachments/e63a1e66232d/images/body-1c06e799c7666968bc4d.png",
      "src": "https://lilianweng.github.io/posts/2017-06-21-overview/autoencoder_experiment.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://lilianweng.github.io/posts/2017-06-21-overview/alphago_paper.png",
      "bytes": 709079,
      "reused": false,
      "content_type": "image/png",
      "local_path": "attachments/e63a1e66232d/images/body-35ad6bb4c9b5f2023552.png",
      "src": "https://lilianweng.github.io/posts/2017-06-21-overview/alphago_paper.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://lilianweng.github.io/posts/2017-06-21-overview/alphago_model.png",
      "bytes": 313503,
      "reused": false,
      "content_type": "image/png",
      "local_path": "attachments/e63a1e66232d/images/body-69879f285ee667db6764.png",
      "src": "https://lilianweng.github.io/posts/2017-06-21-overview/alphago_model.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://lilianweng.github.io/posts/2017-06-21-overview/GAN.png",
      "bytes": 157401,
      "reused": false,
      "content_type": "image/png",
      "local_path": "attachments/e63a1e66232d/images/body-2ee071176ef01990b7b2.png",
      "src": "https://lilianweng.github.io/posts/2017-06-21-overview/GAN.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://lilianweng.github.io/posts/2017-06-21-overview/deep_learning_toolkits.png",
      "bytes": 134727,
      "reused": false,
      "content_type": "image/png",
      "local_path": "attachments/e63a1e66232d/images/body-b639597a6e7d3aecf854.png",
      "src": "https://lilianweng.github.io/posts/2017-06-21-overview/deep_learning_toolkits.png",
      "alt": "",
      "downloaded": true
    }
  ],
  "videos": [
    {
      "url": "https://www.youtube.com/watch?v=vFr3K2DORc8",
      "src": "https://youtu.be/vFr3K2DORc8",
      "status": "ok",
      "kind": "single_video",
      "local_path": "attachments/e63a1e66232d/videos/repair-vFr3K2DORc8.mp4",
      "bytes": 753957028,
      "valid": true,
      "height": 1080,
      "width": 1920,
      "duration": "14106.021000",
      "reused": false
    },
    {
      "url": "https://www.youtube.com/watch?v=F1ka6a13S9I",
      "src": "https://youtu.be/F1ka6a13S9I",
      "status": "ok",
      "kind": "single_video",
      "local_path": "attachments/e63a1e66232d/videos/repair-F1ka6a13S9I.mp4",
      "bytes": 456526601,
      "valid": true,
      "height": 720,
      "width": 1280,
      "duration": "4787.481000",
      "reused": false
    },
    {
      "url": "https://www.youtube.com/watch?v=uAu3jQWaN6E",
      "src": "https://youtu.be/uAu3jQWaN6E",
      "status": "ok",
      "kind": "single_video",
      "local_path": "attachments/e63a1e66232d/videos/repair-uAu3jQWaN6E.mp4",
      "bytes": 183061332,
      "valid": true,
      "height": 1080,
      "width": 1920,
      "duration": "438.401000",
      "reused": false
    }
  ],
  "body_markdown": "(The post was originated from my talk for\nWiMLDS x Fintech meetup\nhosted by\nAffirm\n.)\nI believe many of you have watched or heard of the\ngames\nbetween AlphaGo and professional Go player\nLee Sedol\nin 2016. Lee has the highest rank of nine dan and many world championships. No doubt, he is one of the best Go players in the world, but he\nlost by 1-4\nin this series versus AlphaGo. Before this, Go was considered to be an intractable game for computers to master, as its simple rules lay out an exponential number of variations in the board positions, many more than what in Chess. This event surely highlighted 2016 as a big year for AI. Because of AlphaGo, much attention has been attracted to the progress of AI.\nMeanwhile, many companies are spending resources on pushing the edges of AI applications, that indeed have the potential to change or even revolutionize how we are gonna live. Familiar examples include self-driving cars, chatbots, home assistant devices and many others. One of the secret receipts behind the progress we have had in recent years is deep learning.\nWhy Does Deep Learning Work Now?\n#\nDeep learning models, in simple words, are large and deep artificial neural nets. A neural network (“NN”) can be well presented in a\ndirected acyclic graph\n: the input layer takes in signal vectors; one or multiple hidden layers process the outputs of the previous layer. The initial concept of a neural network can be traced back to more than\nhalf a century ago\n. But why does it work now? Why do people start talking about them all of a sudden?\nA three-layer artificial neural network. (Image source:\nhttp://cs231n.github.io/convolutional-networks/#conv\n)\nThe reason is surprisingly simple:\nWe have a lot\nmore data\n.\nWe have\nmuch powerful computers\n.\nA large and deep neural network has many more layers + many more nodes in each layer, which results in exponentially many more parameters to tune. Without enough data, we cannot learn parameters efficiently. Without powerful computers, learning would be too slow and insufficient.\nHere is an interesting plot presenting the relationship between the data scale and the model performance, proposed by Andrew Ng in his “\nNuts and Bolts of Applying Deep Learning\n” talk. On a small dataset, traditional algorithms (Regression, Random Forests, SVM, GBM, etc.) or statistical learning does a great job, but once the data scale goes up to the sky, the large NN outperforms others. Partially because compared to a traditional ML model, a neural network model has many more parameters and has the capability to learn complicated nonlinear patterns. Thus we expect the model to pick the most helpful features by itself without too much expert-involved manual feature engineering.\nThe data scale versus the model performance. (Recreated based on:\nhttps://youtu.be/F1ka6a13S9I\n)\nDeep Learning Models\n#\nNext, let’s go through a few classical deep learning models.\nConvolutional Neural Network\n#\nConvolutional neural networks, short for “CNN”, is a type of feed-forward artificial neural networks, in which the connectivity pattern between its neurons is inspired by the organization of the visual cortex system. The primary visual cortex (V1) does edge detection out of the raw visual input from the retina. The secondary visual cortex (V2), also called prestriate cortex, receives the edge features from V1 and extracts simple visual properties such as orientation, spatial frequency, and color. The visual area V4 handles more complicated object attributes. All the processed visual features flow into the final logic unit, inferior temporal gyrus (IT), for object recognition. The shortcut between V1 and V4 inspires a special type of CNN with connections between non-adjacent layers: Residual Net (\nHe, et al. 2016\n) containing “Residual Block” which supports some input of one layer to be passed to the component two layers later.\nIllustration of the human visual cortex system. (Image source:\nWang & Raj 2017\n)\nConvolution is a mathematical term, here referring to an operation between two matrices. The convolutional layer has a fixed small matrix defined, also called kernel or filter. As the kernel is sliding, or convolving, across the matrix representation of the input image, it is computing the element-wise multiplication of the values in the kernel matrix and the original image values.\nSpecially designed kernels\ncan process images for common purposes like blurring, sharpening, edge detection and many others, fast and efficiently.\nThe LeNet architecture consists of two sets of convolutional, activation, and pooling layers, followed by a fully-connected layer, activation, another fully-connected layer, and finally a softmax classifier (Image source:\nhttp://deeplearning.net/tutorial/lenet.html\n)\nConvolutional\nand\npooling\n(or “sub-sampling” in Fig. 4) layers act like the V1, V2 and V4 visual cortex units, responding to feature extraction. The object recognition reasoning happens in the later fully-connected layers which consume the extracted features.\nRecurrent Neural Network\n#\nA sequence model is usually designed to transform an input sequence into an output sequence that lives in a different domain. Recurrent neural network, short for “RNN”, is suitable for this purpose and has shown tremendous improvement in problems like handwriting recognition, speech recognition, and machine translation (\nSutskever et al. 2011\n,\nLiwicki et al. 2007\n).\nA recurrent neural network model is born with the capability to process long sequential data and to tackle tasks with context spreading in time. The model processes one element in the sequence at one time step. After computation, the newly updated unit state is passed down to the next time step to facilitate the computation of the next element. Imagine the case when an RNN model reads all the Wikipedia articles, character by character, and then it can predict the following words given the context.\nA recurrent neural network with one hidden unit (left) and its unrolling version in time (right). The unrolling version illustrates what happens in time: $s\\_{t-1}$, $s\\_{t}$, and $s\\_{t+1}$ are the same unit with different states at different time steps $t-1$, $t$, and $t+1$. (Image source:\nLeCun, Bengio, and Hinton, 2015\n;\nFig. 5\n)\nHowever, simple perceptron neurons that linearly combine the current input element and the last unit state may easily lose the long-term dependencies. For example, we start a sentence with “Alice is working at …” and later after a whole paragraph, we want to start the next sentence with “She” or “He” correctly. If the model forgets the character’s name “Alice”, we can never know. To resolve the issue, researchers created a special neuron with a much more complicated internal structure for memorizing long-term context, named\n“Long-short term memory (LSTM)”\ncell. It is smart enough to learn for how long it should memorize the old information, when to forget, when to make use of the new data, and how to combine the old memory with new input. This\nintroduction\nis so well written that I recommend everyone with interest in LSTM to read it. It has been officially promoted in the\nTensorflow documentation\n;-)\nThe structure of a LSTM cell. (Image source:\nhttp://colah.github.io/posts/2015-08-Understanding-LSTMs\n)\nTo demonstrate the power of RNNs,\nAndrej Karpathy\nbuilt a character-based language model using RNN with LSTM cells.  Without knowing any English vocabulary beforehand, the model could learn the relationship between characters to form words and then the relationship between words to form sentences. It could achieve a decent performance even without a huge set of training data.\nA character-based recurrent neural network model writes like a Shakespeare. (Image source:\nhttp://karpathy.github.io/2015/05/21/rnn-effectiveness\n)\nRNN: Sequence-to-Sequence Model\n#\nThe\nsequence-to-sequence model\nis an extended version of RNN, but its application field is distinguishable enough that I would like to list it in a separated section. Same as RNN, a sequence-to-sequence model operates on sequential data, but particularly it is commonly used to develop chatbots or personal assistants, both generating meaningful response for input questions. A sequence-to-sequence model consists of two RNNs, encoder and decoder. The encoder learns the contextual information from the input words and then hands over the knowledge to the decoder side through a “\ncontext vector\n” (or “thought vector”, as shown in Fig 8.). Finally, the decoder consumes the context vector and generates proper responses.\nA sequence-to-sequence model for generating Gmail auto replies. (Image source:\nhttps://research.googleblog.com/2015/11/computer-respond-to-this-email.html\n)\nAutoencoders\n#\nDifferent from the previous models, autoencoders are for unsupervised learning. It is designed to learn a\nlow-dimensional\nrepresentation of a\nhigh-dimensional\ndata set, similar to what\nPrincipal Components Analysis (PCA)\ndoes. The autoencoder model tries to learn an approximation function $ f(x) \\approx x $ to reproduce the input data. However, it is restricted by a bottleneck layer in the middle with a very small number of nodes. With limited capacity, the model is forced to form a very efficient encoding of the data, that is essentially the low-dimensional code we learned.\nAn autoencoder model has a bottleneck layer with only a few neurons. (Image source: Geoffrey Hinton’s Coursera class\n\"Neural Networks for Machine Learning\"\n-\nWeek 15\n)\nHinton and Salakhutdinov\nused autoencoders to compress documents on a variety of topics. As shown in Fig 10, when both PCA and autoencoder were applied to reduce the documents onto two dimensions, autoencoder demonstrated a much better outcome. With the help of autoencoder, we can do efficient data compression to speed up the information retrieval including both documents and images.\nThe outputs of PCA (left) and autoencoder (right) when both try to compress documents into two numbers. (Image source:\nHinton & Salakhutdinov 2006\n)\nReinforcement (Deep) Learning\n#\nSince I started my post with AlphaGo, let us dig a bit more on why AlphaGo worked out.\nReinforcement learning (“RL”)\nis one of the secrets behind its success. RL is a subfield of machine learning which allows machines and software agents to automatically determine the optimal behavior within a given context, with a goal to maximize the long-term performance measured by a given metric.\nAlphaGo neural network training pipeline and architecture. (Image source:\nSilver et al. 2016\n)\nThe AlphaGo system starts with a supervised learning process to train a fast rollout policy and a policy network, relying on the manually curated training dataset of professional players’ games. It learns what is the best strategy given the current position on the game board. Then it applies reinforcement learning by setting up self-play games. The RL policy network gets improved when it wins more and more games against previous versions of the policy network. In the self-play stage, AlphaGo becomes stronger and stronger by playing against itself without requiring additional external training data.\nGenerative Adversarial Network\n#\nGenerative adversarial network\n, short for “GAN”, is a type of deep generative models. GAN is able to create new examples after learning through the real data.  It is consist of two models competing against each other in a zero-sum game framework. The famous deep learning researcher\nYann LeCun\ngave it a super high praise: Generative Adversarial Network is the most interesting idea in the last ten years in machine learning. (See the Quora question:\n“What are some recent and potentially upcoming breakthroughs in deep learning?”\n)\nThe architecture of a generative adversarial network. (Image source:\nhttp://www.kdnuggets.com/2017/01/generative-adversarial-networks-hot-topic-machine-learning.html\n)\nIn the\noriginal GAN paper\n, GAN was proposed to generate meaningful images after learning from real photos. It comprises two independent models: the\nGenerator\nand the\nDiscriminator\n. The generator produces fake images and sends the output to the discriminator model. The discriminator works like a judge, as it is optimized for identifying the real photos from the fake ones. The generator model is trying hard to cheat the discriminator while the judge is trying hard not to be cheated. This interesting zero-sum game between these two models motivates both to develop their designed skills and improve their functionalities. Eventually, we take the generator model for producing new images.\nToolkits and Libraries\n#\nAfter learning all these models, you may start wondering how you can implement the models and use them for real. Fortunately, we have many open source toolkits and libraries for building deep learning models.\nTensorflow\nis fairly new but has attracted a lot of popularity. It turns out, TensorFlow was\nthe most forked Github project of 2015\n. All that happened in a period of 2 months after its release in Nov 2015.\nHow to Learn?\n#\nIf you are very new to the field and willing to devote some time to studying deep learning in a more systematic way, I would recommend you to start with the book\nDeep Learning\nby Ian Goodfellow, Yoshua Bengio, and Aaron Courville. The Coursera course\n“Neural Networks for Machine Learning”\nby Geoffrey Hinton (\nGodfather of deep learning!\n). The content for the course was prepared around 2006, pretty old, but it helps you build up a solid foundation for understanding deep learning models and expedite further exploration.\nMeanwhile, maintain your curiosity and passion. The field is making progress every day. Even classical or widely adopted deep learning models may just have been proposed 1-2 years ago. Reading academic papers can help you learn stuff in depth and keep up with the cutting-edge findings.\nUseful resources\n#\nGoogle Scholar:\nhttp://scholar.google.com\narXiv cs section:\nhttps://arxiv.org/list/cs/recent\nUnsupervised Feature Learning and Deep Learning Tutorial\nTensorflow Tutorials\nData Science Weekly\nKDnuggets\nTons of blog posts and online tutorials\nRelated\nCousera\ncourses\nawesome-deep-learning-papers\nBlog posts mentioned\n#\nExplained Visually: Image Kernels\nUnderstanding LSTM Networks\nThe Unreasonable Effectiveness of Recurrent Neural Networks\nComputer, respond to this email.\nInteresting blogs worthy of checking\n#\nwww.wildml.com\ncolah.github.io\nkarpathy.github.io\nblog.openai.com\nPapers mentioned\n#\n[1] He, Kaiming, et al.\n“Deep residual learning for image recognition.”\nProc. IEEE Conf. on computer vision and pattern recognition. 2016.\n[2] Wang, Haohan, Bhiksha Raj, and Eric P. Xing.\n“On the Origin of Deep Learning.”\narXiv preprint arXiv:1702.07800, 2017.\n[3] Sutskever, Ilya, James Martens, and Geoffrey E. Hinton.\n“Generating text with recurrent neural networks.”\nProc. of the 28th Intl. Conf. on Machine Learning (ICML). 2011.\n[4] Liwicki, Marcus, et al.\n“A novel approach to on-line handwriting recognition based on bidirectional long short-term memory networks.”\nProc. of 9th Intl. Conf. on Document Analysis and Recognition. 2007.\n[5] LeCun, Yann, Yoshua Bengio, and Geoffrey Hinton.\n“Deep learning.”\nNature 521.7553 (2015): 436-444.\n[6] Hochreiter, Sepp, and Jurgen Schmidhuber.\n“Long short-term memory.”\nNeural computation 9.8 (1997): 1735-1780.\n[7] Cho, Kyunghyun. et al.\n“Learning phrase representations using RNN encoder-decoder for statistical machine translation.”\nProc. Conference on Empirical Methods in Natural Language Processing 1724–1734 (2014).\n[8] Hinton, Geoffrey E., and Ruslan R. Salakhutdinov.\n“Reducing the dimensionality of data with neural networks.”\nscience 313.5786 (2006): 504-507.\n[9] Silver, David, et al.\n“Mastering the game of Go with deep neural networks and tree search.”\nNature 529.7587 (2016): 484-489.\n[10] Goodfellow, Ian, et al.\n“Generative adversarial nets.”\nNIPS, 2014.",
  "repair_version": 2,
  "repaired_at": "2026-10-14T11:45:58Z",
  "title": "An Overview of Deep Learning for Curious People | Lil'Log",
  "audio": [],
  "code_blocks": [],
  "papers": [
    {
      "status": "ok",
      "url": "http://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/He_Deep_Residual_Learning_CVPR_2016_paper.pdf",
      "bytes": 603123,
      "reused": false,
      "content_type": "application/pdf",
      "local_path": "papers/repair/ed3b4a363f27c6c78ac0.pdf"
    },
    {
      "status": "ok",
      "url": "https://arxiv.org/pdf/1702.07800",
      "bytes": 5805767,
      "reused": false,
      "content_type": "application/pdf",
      "local_path": "papers/repair/bd56c51399250ef0ff86.pdf"
    },
    {
      "status": "download_error",
      "url": "http://machinelearning.wustl.edu/mlpapers/paper_files/ICML2011Sutskever_524.pdf",
      "reason": "ConnectionError: HTTPConnectionPool(host='machinelearning.wustl.edu', port=80): Max retries exceeded with url: /mlpapers/paper_files/ICML2011Sutskever_524.pdf (Caused by NameResolutionError(\"HTTPCo",
      "retried_at": "2026-10-20T22:23:46Z"
    },
    {
      "status": "invalid_file_type",
      "url": "http://www6.in.tum.de/Main/Publications/Liwicki2007a.pdf",
      "content_type": "text/html; charset=utf-8",
      "retried_at": "2026-10-20T17:50:42Z"
    },
    {
      "status": "ok",
      "url": "http://pages.cs.wisc.edu/~dyer/cs540/handouts/deep-learning-nature2015.pdf",
      "bytes": 2083627,
      "reused": false,
      "content_type": "application/pdf",
      "local_path": "papers/repair/6fc2936fa52baa80ec2c.pdf"
    },
    {
      "status": "download_error",
      "url": "http://web.eecs.utk.edu/~itamar/courses/ECE-692/Bobby_paper1.pdf",
      "reason": "SSLError: HTTPSConnectionPool(host='web.eecs.utk.edu', port=443): Max retries exceeded with url: /~itamar/courses/ECE-692/Bobby_paper1.pdf (Caused by SSLError(SSLCertVerificationError(1, '[S",
      "retried_at": "2026-10-20T22:23:49Z"
    },
    {
      "status": "ok",
      "url": "https://arxiv.org/pdf/1406.1078.pdf",
      "bytes": 1142296,
      "reused": false,
      "content_type": "application/pdf",
      "local_path": "papers/repair/009ff3a0e4de38cf4fd9.pdf"
    },
    {
      "status": "http_404",
      "url": "https://pdfs.semanticscholar.org/7d76/b71b700846901ac4ac119403aa737a285e36.pdf",
      "retried_at": "2026-10-20T17:50:41Z"
    },
    {
      "status": "http_404",
      "url": "https://www.cs.toronto.edu/~hinton/science.pdf",
      "retried_at": "2026-10-20T17:50:41Z"
    },
    {
      "status": "ok",
      "url": "https://arxiv.org/pdf/1406.2661.pdf",
      "bytes": 530482,
      "reused": true,
      "local_path": "papers/repair/ee65f498ce3f3e038de2.pdf"
    },
    {
      "status": "ok",
      "url": "https://arxiv.org/pdf/1702.07800.pdf",
      "bytes": 5805767,
      "reused": true,
      "local_path": "papers/repair/bd21c9c5b15c3410f312.pdf"
    },
    {
      "status": "ok",
      "url": "http://web.iitd.ac.in/~sumeet/Silver16.pdf",
      "bytes": 2682222,
      "reused": false,
      "content_type": "application/pdf",
      "local_path": "papers/repair/478be2320822b77dc4d3.pdf"
    }
  ],
  "actual_video_files": [],
  "body_chars": 15875,
  "expected_body_images": 14,
  "discovery_status": "ok",
  "delivery_status": "partial",
  "missing_reason": "download_error；http_404；invalid_file_type",
  "raw_html": "attachments/e63a1e66232d/pages/source.html",
  "local_html": "attachments/e63a1e66232d/pages/article.html",
  "body_base_path": "attachments/e63a1e66232d/pages/",
  "body_markdown_path": "attachments/e63a1e66232d/pages/article.md",
  "links": [
    {
      "href": "http://wimlds.org/chapters/about-bay-area/",
      "label": "WiMLDS x Fintech meetup",
      "type": "a"
    },
    {
      "href": "https://lilianweng.github.io/posts/2017-06-21-overview/www.affirm.com",
      "label": "Affirm",
      "type": "a"
    },
    {
      "href": "https://youtu.be/vFr3K2DORc8",
      "label": "games",
      "type": "a"
    },
    {
      "href": "https://en.wikipedia.org/wiki/Lee_Sedol",
      "label": "Lee Sedol",
      "type": "a"
    },
    {
      "href": "https://www.scientificamerican.com/article/how-the-computer-beat-the-go-master/",
      "label": "lost by 1-4",
      "type": "a"
    },
    {
      "href": "https://en.wikipedia.org/wiki/Directed_acyclic_graph",
      "label": "directed acyclic graph",
      "type": "a"
    },
    {
      "href": "https://cs.stanford.edu/people/eroberts/courses/soco/projects/neural-networks/History/history1.html",
      "label": "half a century ago",
      "type": "a"
    },
    {
      "href": "http://cs231n.github.io/convolutional-networks/",
      "label": "http://cs231n.github.io/convolutional-networks/#conv",
      "type": "a"
    },
    {
      "href": "https://youtu.be/F1ka6a13S9I",
      "label": "Nuts and Bolts of Applying Deep Learning",
      "type": "a"
    },
    {
      "href": "http://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/He_Deep_Residual_Learning_CVPR_2016_paper.pdf",
      "label": "He, et al. 2016",
      "type": "a"
    },
    {
      "href": "https://arxiv.org/abs/1702.07800",
      "label": "Wang & Raj 2017",
      "type": "a"
    },
    {
      "href": "http://setosa.io/ev/image-kernels/",
      "label": "Specially designed kernels",
      "type": "a"
    },
    {
      "href": "http://deeplearning.net/tutorial/lenet.html",
      "label": "http://deeplearning.net/tutorial/lenet.html",
      "type": "a"
    },
    {
      "href": "http://ufldl.stanford.edu/tutorial/supervised/FeatureExtractionUsingConvolution/",
      "label": "Convolutional",
      "type": "a"
    },
    {
      "href": "http://ufldl.stanford.edu/tutorial/supervised/Pooling/",
      "label": "pooling",
      "type": "a"
    },
    {
      "href": "http://machinelearning.wustl.edu/mlpapers/paper_files/ICML2011Sutskever_524.pdf",
      "label": "Sutskever et al. 2011",
      "type": "a"
    },
    {
      "href": "http://www6.in.tum.de/Main/Publications/Liwicki2007a.pdf",
      "label": "Liwicki et al. 2007",
      "type": "a"
    },
    {
      "href": "http://pages.cs.wisc.edu/~dyer/cs540/handouts/deep-learning-nature2015.pdf",
      "label": "LeCun, Bengio, and Hinton, 2015",
      "type": "a"
    },
    {
      "href": "https://www.nature.com/nature/journal/v521/n7553/fig_tab/nature14539_F5.html",
      "label": "Fig. 5",
      "type": "a"
    },
    {
      "href": "http://web.eecs.utk.edu/~itamar/courses/ECE-692/Bobby_paper1.pdf",
      "label": "“Long-short term memory (LSTM)”",
      "type": "a"
    },
    {
      "href": "http://colah.github.io/posts/2015-08-Understanding-LSTMs/",
      "label": "introduction",
      "type": "a"
    },
    {
      "href": "https://www.tensorflow.org/tutorials/recurrent",
      "label": "Tensorflow documentation",
      "type": "a"
    },
    {
      "href": "http://colah.github.io/posts/2015-08-Understanding-LSTMs",
      "label": "http://colah.github.io/posts/2015-08-Understanding-LSTMs",
      "type": "a"
    },
    {
      "href": "http://karpathy.github.io/2015/05/21/rnn-effectiveness/",
      "label": "Andrej Karpathy",
      "type": "a"
    },
    {
      "href": "http://karpathy.github.io/2015/05/21/rnn-effectiveness",
      "label": "http://karpathy.github.io/2015/05/21/rnn-effectiveness",
      "type": "a"
    },
    {
      "href": "https://arxiv.org/pdf/1406.1078.pdf",
      "label": "sequence-to-sequence model",
      "type": "a"
    },
    {
      "href": "https://research.googleblog.com/2015/11/computer-respond-to-this-email.html",
      "label": "https://research.googleblog.com/2015/11/computer-respond-to-this-email.html",
      "type": "a"
    },
    {
      "href": "https://en.wikipedia.org/wiki/Principal_component_analysis",
      "label": "Principal Components Analysis (PCA)",
      "type": "a"
    },
    {
      "href": "https://www.coursera.org/learn/neural-networks",
      "label": "\"Neural Networks for Machine Learning\"",
      "type": "a"
    },
    {
      "href": "https://www.coursera.org/learn/neural-networks/home/week/15",
      "label": "Week 15",
      "type": "a"
    },
    {
      "href": "https://pdfs.semanticscholar.org/7d76/b71b700846901ac4ac119403aa737a285e36.pdf",
      "label": "Hinton and Salakhutdinov",
      "type": "a"
    },
    {
      "href": "https://www.cs.toronto.edu/~hinton/science.pdf",
      "label": "Hinton & Salakhutdinov 2006",
      "type": "a"
    },
    {
      "href": "https://en.wikipedia.org/wiki/Reinforcement_learning",
      "label": "Reinforcement learning (“RL”)",
      "type": "a"
    },
    {
      "href": "https://www.nature.com/articles/nature16961",
      "label": "Silver et al. 2016",
      "type": "a"
    },
    {
      "href": "https://arxiv.org/pdf/1406.2661.pdf",
      "label": "Generative adversarial network",
      "type": "a"
    },
    {
      "href": "http://yann.lecun.com/",
      "label": "Yann LeCun",
      "type": "a"
    },
    {
      "href": "https://www.quora.com/What-are-some-recent-and-potentially-upcoming-breakthroughs-in-deep-learning",
      "label": "“What are some recent and potentially upcoming breakthroughs in deep learning?”",
      "type": "a"
    },
    {
      "href": "http://www.kdnuggets.com/2017/01/generative-adversarial-networks-hot-topic-machine-learning.html",
      "label": "http://www.kdnuggets.com/2017/01/generative-adversarial-networks-hot-topic-machine-learning.html",
      "type": "a"
    },
    {
      "href": "https://www.tensorflow.org/",
      "label": "Tensorflow",
      "type": "a"
    },
    {
      "href": "http://deliprao.com/archives/168",
      "label": "the most forked Github project of 2015",
      "type": "a"
    },
    {
      "href": "https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618/ref=sr_1_1?s=books&ie=UTF8&qid=1499413305&sr=1-1&keywords=deep+learning",
      "label": "Deep Learning",
      "type": "a"
    },
    {
      "href": "https://youtu.be/uAu3jQWaN6E",
      "label": "Godfather of deep learning!",
      "type": "a"
    },
    {
      "href": "http://scholar.google.com/",
      "label": "http://scholar.google.com",
      "type": "a"
    },
    {
      "href": "https://arxiv.org/list/cs/recent",
      "label": "https://arxiv.org/list/cs/recent",
      "type": "a"
    },
    {
      "href": "http://ufldl.stanford.edu/tutorial/",
      "label": "Unsupervised Feature Learning and Deep Learning Tutorial",
      "type": "a"
    },
    {
      "href": "https://www.tensorflow.org/tutorials/",
      "label": "Tensorflow Tutorials",
      "type": "a"
    },
    {
      "href": "http://coursera.com/",
      "label": "Cousera",
      "type": "a"
    },
    {
      "href": "https://github.com/terryum/awesome-deep-learning-papers",
      "label": "awesome-deep-learning-papers",
      "type": "a"
    },
    {
      "href": "http://setosa.io/ev/image-kernels",
      "label": "Explained Visually: Image Kernels",
      "type": "a"
    },
    {
      "href": "http://www.wildml.com/",
      "label": "www.wildml.com",
      "type": "a"
    },
    {
      "href": "http://colah.github.io/",
      "label": "colah.github.io",
      "type": "a"
    },
    {
      "href": "http://karpathy.github.io/",
      "label": "karpathy.github.io",
      "type": "a"
    },
    {
      "href": "https://blog.openai.com/",
      "label": "blog.openai.com",
      "type": "a"
    },
    {
      "href": "https://arxiv.org/pdf/1702.07800.pdf",
      "label": "“On the Origin of Deep Learning.”",
      "type": "a"
    },
    {
      "href": "http://web.iitd.ac.in/~sumeet/Silver16.pdf",
      "label": "“Mastering the game of Go with deep neural networks and tree search.”",
      "type": "a"
    }
  ],
  "crawl": {
    "success": true,
    "status_code": 200,
    "error": ""
  }
}