- Diagram and define the layers of a neural network, introducing the concept of a “convolutional layer.”
- Distinguish between a “feature vector” (aka logits) and the last layer (aka softmax probabilities) of a classification network.
- Understand the process of “transfer learning.”
- Learn to save a trained model for re-use later.
- Week 2 Slides
- From Andrew Ng: "In supervised learning, we are given a data set and already know what our correct output should look like, having the idea that there is a relationship between the input and the output."
- Adapted from Nature of Code Chapter 10: Supervised Learning is a strategy that involves a "teacher" that trains the learning system. For example, consider facial recognition. The "teacher" shows the network a bunch of faces (the teacher already knows the names associated with each face). The learning system makes its guesses and the teacher provides the answers. The learning system can then compare its answers to the known “correct” ones and make adjustments according to its errors.
- Webcam Pacman by Google’s TensorFlow.js Team
- Pong ML by Alejandro Matamala Ortiz
- Regression Curve by Joohyun Park
- Asemic Writing Teachable Machine by Jillian Zhong
- Tiny Sorter
- Getting Alexa to Respond to Sign Language Using Your Webcam and TensorFlow.js, live demo
- Objectifier Spatial Programming
- Project Euphonia
- Teachable Snake
- Teachable Sorter
- Teachable Arcade
- Eyeo Festival 2019 - Coding train, code
- Watch But what is a Neural Network? by 3Blue1Brown
- Read How to Build a Teachable Machine with TensorFlow.js
- Read Excavating AI: The Politics of Images in Machine Learning Training Sets by Kate Crawford and Trevor Paglen.
- Teachable Machine 2.0: Making AI easier for everyone from Google
- Google's Teachable Machine video tutorials
- Coding Train Teachable Machine video tutorials
- ml5.js: Transfer Learning with Feature Extractor - video tutorial
- ml5.js: Feature Extractor Classification - video tutorial
- ml5.js: Feature Extractor Regression - video tutorial
- ml5.js: Save/Load Model - video tutorial
- Read Excavating AI: The Politics of Images in Machine Learning Training Sets by Kate Crawford and Trevor Paglen. Consider the following excerpt from the conclusion:
The artist René Magritte completed a painting of a pipe and coupled it with the words “Ceci n’est pas une pipe.” Magritte called the painting La trahison des images, “The Treachery of Images.”
Magritte’s assumption was almost diametrically opposed: that images in and of themselves have, at best, a very unstable relationship to the things seem to represent, one that can be sculpted by whoever has the power to say what a particular image means. For Magritte, the meaning of images is relational, open to contestation. At first blush, Magritte’s painting might seem like a simple semiotic stunt, but the underlying dynamic Magritte underlines in the painting points to a much broader politics of representation and self-representation.
Reflect on the relationship between labels and images in a machine learning image classification dataset? Who has the power to label images and how do those labels and machine learning models trained on them impact society?
-
Train your own image classifer using transfer learning and ml5.js and apply the model to an interactive p5.js sketch. You can train the model with Teachable Machine or with your own ml5.js code. Feel free to try sound instead of or in addition to images. You may also choose to experiment with a "regression" rather than classification.
-
Document your reading reflections and your coding exercise in a blog post and add a link to the post / your p5 sketch on the Assignment 2 Wiki. In your blog post, include visual documentation such as a recorded screen capture / video / GIFs of training the model and working in p5. You may write include both in one post or write two separate posts if you prefer.