Design my own syllabus for self-study during the program.
themes: techniques in generative text; learning song representations; language/sequence modeling enhanced by reinforcement learning or GANs
[OpenAI Scholars intro blog post] [Designing a syllabus blog post]
Get and understand data; set up environment; build an n-gram model as a ‘shallow’ baseline; read LSTM, seq2seq, PyTorch tutorials
Resources:
- Deep Learning book, chapter 5 (machine learning basics)
- Speech and Language Processing book, chapter 4 (language modeling with n-grams)
- "The unreasonable effectiveness of Character-level Language Models (and why RNNs are still cool)" by Yoav Goldberg [blog]
- Deep Learning with PyTorch: A 60 Minute Blitz [tutorial]
Optional:
- "The Unreasonable Effectiveness of Recurrent Neural Networks" by Andrej Karpathy [blog]
- Goodman, J. (2001). A Bit of Progress in Language Modeling. [paper]
- Practical PyTorch Series 1: RNNs for NLP [tutorial]
- Good recommended reading section as well
- Speech and Language Processing book, chapter 8 (neural networks and neural language models)
Define metrics for evaluating language model (LM) output; train an RNN (LSTM) on some sequential text data
Resources:
- Deep Learning book, chapters 10 (sequence modeling) and 11 (practical methodology)
- Graves, A. (2013). Generating sequences with recurrent neural networks. [paper]
- Merity, S., Keskar, N. S., Socher, R (2017). Regularizing and Optimizing LSTM Language Models. [paper] [code]
- PyTorch: Generating Names with a Character-Level RNN [tutorial]
- Deep Learning for NLP with PyTorch [tutorial]
- Natural Language Processing book (draft), chapter 6 (language models)
Optional:
- course.fast.ai lessons 6 (rnns) + 7 (grus, lstms)
- Karpathy, A. (2015). Visualizing and Understanding Recurrent Networks. [video] [paper]
- Colah, C. (2014). Deep Learning, NLP, and Representations. [blog]
- Bengio, Y (2003). A Neural Probabilistic Language Model. [blog] [paper]
- Genres from Genius.com
- Audio features from Spotify
Resources:
- Learning song representations with deep learning for structured data
Fun extra blog post #1: Train an LSTM on song titles and something stodgy, like deep learning paper titles
- Inspired by ‘AI scream for ice cream’ (aiweirdness generating metal band ice cream flavors)
- Related posts: AIWeirdness: 'Generated ice cream flavors: now it’s my turn'; Kottke: ‘Ask an Ice Cream Professional’; Janelle’s Twitter thread on it
Resources:
- Deep Learning book, chapter 14 (autoencoders)
- Sutskever, I., Vinyals, O., and Le, Q. V. (2014). Sequence to sequence learning with neural networks. [paper]
- Bowman, S. R., Vilnis, L., Vinyals, O., Dai, A.M., Jozefowicz, R., Bengio, S (2016). Generating Sentences from a Continuous Space. [paper]
- Introduction to Variational Autoencoders [video]
- course.fast.ai lesson 11 (seq2seq, attention)
Optional:
- OpenAI: Generative Models [blog]
- Introducing Variational Autoencoders (in Prose and Code) [blog]
- Under the Hood of the Variational Autoencoder (in Prose and Code) [blog]
- Kingma, D.P., Welling, M (2014). Auto-Encoding Variational Bayes. [paper]
- Practical PyTorch: Translation with a Sequence to Sequence Network and Attention [tutorial]
Resources:
- Bahdanau, D., Cho, K., Bengio, Y (2014). Neural Machine Translation by Jointly Learning to Align and Translate. [paper]
- Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., Kaiser, L., Polosukhin, I (2017). Attention Is All You Need. [transformer paper] [blog]
- course.fast.ai lesson 11 (seq2seq, attention)
- Distill.pub: Attention and Augmented Recurrent Neural Networks [blog]
Optional:
- Howard, J., Ruder, S (2018). Universal Language Model Fine-tuning for Text Classification. [paper] [blog] [code]
- How to Visualize Your Recurrent Neural Network with Attention in Keras [blog]
- textgenrnn
- LIME/Anchor/SHAP
- Input gradients
- "Seeing what a neuron sees" à la Karpathy's char-rnn [blog] [paper]
Resources:
- Distill.pub: The Building Blocks of Interpretability [blog]
- Ribeiro, M.T., Singh, S., Guestrin, C. Why Should I Trust You?: Explaining the Predictions of Any Classifier. [LIME project] [paper]
- Ross, A. S., Hughes, M. C., Doshi-Velez, F. Right for the Right Reasons: Training Differentiable Models by Constraining their Explanations. [input gradients paper]
- Ribeiro, M.T., Singh, S., Guestrin, C. Anchors: High-Precision Model-Agnostic Explanations. [Anchor project] [paper]
Optional:
- "Awesome Interpretable Machine Learning": an opinionated list of resources facilitating model interpretability (introspection, simplification, visualization, explanation) [repo]
- How neural networks learn - Part I: Feature Visualization [video]
- DeepMind: Understanding deep learning through neuron deletion [blog]
- Selection bias from source text
- Inspect embeddings and latent dimensions, à la David Ha's World Models
Resources:
- World Models: Can agents learn inside of their own dreams? [demo]
- "Many opportunities for discrimination in deploying machine learning systems" by Hal Daumé III [blog]
Optional:
- Hardt, M., Price, E., Srebro, N. Equality of Opportunity in Supervised Learning. [paper]
Resources:
- Engel, J., Hoffman, M., Roberts, A. (2017). Latent Constraints: Learning to Generate Conditionally from Unconditional Generative Models. [paper]
- Goodfellow, I., Pouget-Abadie, J., Mirza, M., Xu, B., Warde-Farley, D., Ozair, S., Courville, A., and Bengio, Y. (2014). Generative adversarial nets. [paper]
- Jaques, N., McCleary, J., Engel, J., Ha, D., Bertsch, F., Eck, D., Picard, R (2018). Learning via social awareness: Improving a deep generative sketching model with facial feedback. [paper]
- course.fast.ai lesson 12 (gans)
Optional:
- Deep Learning book, chapter 20 (deep generative models)
- Yoav Goldberg. "Adversarial training for discrete sequences (like RNN generators) is hard" [blog]
Note that the Week 8 project will lead directly into my final (4-week) project!
[Project notes 1: genre and inspiration] [Project notes 2: topic modeling]
- Structured, topical, specific to attributes of the song (similar to ‘essay writing’ goals).
- Conditioned on song representation, source blog (?), sentiment...
- Could choose a limited set of source blogs ("voices"): e.g., Pitchfork, most consistent blogger on HypeM Time Machine, etc.
- Datasets: blog scrape, Spotify API track audio analysis and audio features, Genius API’s song tags, description, lyrics
- Structured, topical, specific to attributes of the song. Genius annotate-ability as a measure of interesting-ness (?)
- Conditioned on song representation
- Datasets: https://www.kaggle.com/rakannimer/billboard-lyrics, Spotify API track audio analysis and audio features, Genius API’s song tags, description
What do I mean by song representation? I want to encode data from the Spotify/Genius knowledge graph for the song (e.g., title, genre, similarity to other songs, audio features, lyrics, description...) and use it to condition/seed the generated text.