Skip to content
This repository has been archived by the owner on Aug 27, 2020. It is now read-only.

Commit

Permalink
Material for Week 4 - first pass (#39)
Browse files Browse the repository at this point in the history
* skeleton of week 4 README

* moving and editing material from google doc syllabus

* Update 04_diy_neural_network/README.md

Co-Authored-By: Ellen Nickles <[email protected]>

* Update 04_diy_neural_network/README.md

Co-Authored-By: Ellen Nickles <[email protected]>

* adding video tutorials, moving new ImageNet works

The new ImageNet works suggested by @ellennickles  are excellent. I am  going to put them with the ImageNet materials from earlier weeks since they match with that material better (this week is about non-image data) and then highlight them in class.

* adding Excavating AI work thanks to @ellennickles

* while i'm at it, adding Humans of AI by @philippschmitt

* adding wattenberg and viegas talk #29

* adding nature of code chapter 10 #9

* removing two articles to reduce load

could consider adding these back in later or somewhere else, etc. The nature.com article includes a lot of sophisticated statistics and math concepts / notation so is likely be beyond the scope of this course.

cc @lydiajessup

* [How to Make A.I. That’s Good for People](https://www.nytimes.com/2018/03/07/opinion/artificial-intelligence-human.html) by Fei-Fei Li
* [Estimating the success of re-identifications in incomplete datasets using generative models](https://www.nature.com/articles/s41467-019-10933-3) from nature.com

* ready for merge, still lots of work to do
  • Loading branch information
shiffman authored Sep 23, 2019
1 parent 9c6d68a commit 58f7670
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 2 deletions.
4 changes: 3 additions & 1 deletion 02_ml_models/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
1. Read Andrey Kurenkov's ['Brief' History of Neural Nets and Deep Learning](http://www.andreykurenkov.com/writing/a-brief-history-of-neural-nets-and-deep-learning/)
2. Read [ImageNet: The Data That Transformed AI Research—and Possibly the World](https://qz.com/1034972/the-data-that-changed-the-direction-of-ai-research-and-possibly-the-world/) by Dave Gershgorn (Note: Fei-Fei Li is no longer at Google; she is currently Co-Director of the Stanford Human-Centered AI Institute)


### Assignment 2A
1. Explore [ImageNet](http://image-net.org/index). What surprises you about this data set? What questions do you have? Thinking back to last week’s assignment, can you think of any ethical considerations around how this data was collected Are there privacy considerations with the data?
2. Using the [ml5.js examples above](https://github.com/ml5js/Intro-ML-Arts-IMA/tree/source/02_ml_models#ml5-code-editor-examples), try running image classification on a variety of images. Pick at least 10 objects in your room. How many of these does it recognize? What other aspects of the image affect the classification, including but not limited to position, scale, lighting, etc.
Expand Down Expand Up @@ -80,9 +81,10 @@
### Reading / Viewing:
1. Watch [But what *is* a Neural Network?](https://youtu.be/aircAruvnKk) by 3Blue1Brown
2. Read [How to Build a Teachable Machine with TensorFlow.js](https://observablehq.com/@nsthorat/how-to-build-a-teachable-machine-with-tensorflow-js)
3. Read [Excavating AI: The Politics of Images in Machine Learning Training Sets](https://www.excavating.ai) by Kate Crawford and Trevor Paglen (See: [ImageNet Roulette](https://imagenet-roulette.paglen.com) - going offline Sept 27, 2019).

### Assignment 2B:
1. 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 (see links provided over e-mail) 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.
1. 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 (see links provided over e-mail) 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.
* [Teachable Machine ml5.js example for Image Classification](https://editor.p5js.org/ima_ml/sketches/8Wmwnig7-)
* [Teachable Machine ml5.js example for Sound Classification](https://editor.p5js.org/ima_ml/sketches/xcdqphiVj)
2. Document your exercise in a blog post and add a link to the post and your p5 sketch on the [Assignment 2B Wiki](https://github.com/ml5js/Intro-ML-Arts-IMA/wiki/Assignment-2b). In your blog post, include visual documentation such as a recorded screen capture / video of your training session and sketch running in the browser.
3 changes: 2 additions & 1 deletion 03_ml_models/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
* [UNet Image Segmentation](https://editor.p5js.org/ima_ml/sketches/ii30sqpgL)
* [BodyPix Image Segmentation](https://editor.p5js.org/ima_ml/sketches/-R3ybO0uz)


### Related Projects
* [Sidewalk Orchestra](https://twitter.com/c_valenzuelab/status/979131716907536384) by Cristóbal Valenzuela
* [Pose Music](https://codepen.io/teropa/full/QxLrMp/) by Tero Parviainen
Expand Down Expand Up @@ -85,12 +84,14 @@ For the above examples, if nothing happens on the Arduino when you start the p5.
* [PomPom Mirror](https://vimeo.com/128375543) by Danny Rozin
* [Now You Are In the Conversation](https://chelseachenchen.com/portfolio/now-you-are-in-the-conversation/) by Chelsea Chen Chen
* [The Hand (Rock Paper Scissors)](https://tongwumedia.com/blog/the-hand) by Tong Wu and Nick Wallace
*. [Humans of AI](https://humans-of.ai/) by Philipp Schmitt


### Assignment 3 Due Sunday September 22 at 12pm:
1. Read [Real-Time Human Pose Estimation in the Browser with TensorFlow.js](https://medium.com/tensorflow/real-time-human-pose-estimation-in-the-browser-with-tensorflow-js-7dd0bc881cd5) by Dan Oved, with editing and illustrations by Irene Alvarado and Alexis Gallo.
2. Read [Mixing movement and machine](https://medium.com/artists-and-machine-intelligence/mixing-movement-and-machine-848095ea5596) by Maya Man
4. Read [Review of Deep Learning Algorithms for Image Semantic Segmentation](https://medium.com/@arthur_ouaknine/review-of-deep-learning-algorithms-for-image-semantic-segmentation-509a600f7b57) by Arthur Ouaknine
3. Read [Humans of AI](https://humans-of.ai/editorial) by Philipp Schmitt
3. Explore [COCO Dataset](http://cocodataset.org/#explore). What surprises you about this data set? How is it similar or different to ImageNet? What questions do you have? Can you think of any ethical considerations around how this data was collected? Are there privacy considerations with the data?
4. Work in groups of 2 (see [assignment 3 wiki](https://github.com/ml5js/Intro-ML-Arts-IMA/wiki/Assignment-3)) to prototype a physical interaction as the output of a machine learning model using any of the tools or techniques demonstrated in weeks 2 and 3. This can be a new idea or build off of your week 2 assignment. Here are some questions to explore:
* How might you use confidence score data as a type of creative input?
Expand Down
52 changes: 52 additions & 0 deletions 04_diy_neural_network/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# DIY Neural Network

## Session A: Data Collection

### Objectives:
* Understand the full story of building a ML model for classification or regression.
* Understand how data is formatted and downloaded including CSV and JSON.
* Consider how to frame the problem and collect data.
* Understand critical questions to ask (e.g. Who is this for? What’s the context?)
* Understand the questions to ask about sourcing and collecting data.
* Learn how to prepare a data set, including how to normalize and properly format it.
* Diagram the components of a two layer "vanilla" neural network.

### Tutorials
* [Data Wrangling Tutorial](https://github.com/ml5js/Intro-ML-Arts-IMA/blob/source/04_diy_neural/data-tutorial.md) by Lydia Jessup.
* Tabular Data (CSV)
* [Tabular Data](https://youtu.be/RfMkdvN-23o) from Coding Train "Data + APIs" tutorial (lots of extra stuff here the first few minutes is probably most relevant?)
* [Tabular Data](https://youtu.be/woaR-CJEwqc) Coding Train Processing tutorial (code is not JS!)
* JSON Data
* [What is JSON Part 1](https://youtu.be/_NFkzw6oFtQ) - Coding Train p5.js tutorial
* [What is JSON Part 2](https://youtu.be/118sDpLOClw) - Coding Train p5.js tutorial
* [JSON Data](https://youtu.be/uxf0--uiX0I) from Coding Train "Data + APIs" tutorial (same as above, lots of extra unrelated stuff here).
* Nature of Code Chapter 10 - Neural Networks
* [NOC videos](https://youtu.be/XJ7HLz9VYz0?list=PLRqwX-V7Uu6aCibgK1PTWWu9by6XFdCfh) - 10.1 to 10.3 cover the "Perceptron", a model of a single neuron. The Perceptron forms the basis of modern multi-layer deep learning networks.
* [NOC chapter 10](https://natureofcode.com/book/chapter-10-neural-networks/) - written explanation of Perceptron and accompanying code in 10.1 to 10.4.

### Related Projects
* [Feminist Data Set](https://carolinesinders.com/feminist-data-set/) by Caroline Sinders
* [Gender Shades: How well do IBM, Microsoft, and Face++ AI services guess the gender of a face?](http://gendershades.org/) by Joy Buolamwini and Timnit Gebru

### Reading and Viewing
* [This is how AI bias really happens—and why it’s so hard to fix](https://www.technologyreview.com/s/612876/this-is-how-ai-bias-really-happensand-why-its-so-hard-to-fix/) by Karen Hao
* Video: [Analyzing & Preventing Unconscious Bias in Machine Learning](https://www.infoq.com/presentations/unconscious-bias-machine-learning) by Rachel Thomas
* Video: [Data visualization for machine learning](https://vimeo.com/304131671)

### Assignment 4A due Wednesday, Sept 24, 9am
* TBA (find and link to a dataset)

## Session B: Training the Model

### Objectives:
* Learn steps to construct a vanilla neural network and train a classification model with ml5.js.
* Understand the terminology of the training process:
* Training, testing, and validation.
* “hyper parameters” (We are using “best guess” defaults!)
* Epochs
* Batch size
* Loss
* Understand the difference between training and inference

### Assignment 4 Due Sunday September 29 at 12pm
* TBA

0 comments on commit 58f7670

Please sign in to comment.