Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Domo Arigato, Mr. Roboto: Machine Learning with...
Search
Eric Weinstein
November 10, 2016
Technology
1
1.3k
Domo Arigato, Mr. Roboto: Machine Learning with Ruby
Slides for my RubyConf 2016 talk on machine learning.
Eric Weinstein
November 10, 2016
Tweet
Share
More Decks by Eric Weinstein
See All by Eric Weinstein
Interview Them Where They Are
ericqweinstein
0
100
Value Your Types!
ericqweinstein
0
60
Being Good: An Introduction to Robo- and Machine Ethics
ericqweinstein
1
1.7k
What If...?: Ruby 3
ericqweinstein
1
180
Infinite State Machine
ericqweinstein
1
93
Do Androids Dream of Electronic Dance Music?
ericqweinstein
1
78
Machine Learning with Elixir and Phoenix
ericqweinstein
1
870
Machine Learning with Clojure and Apache Spark
ericqweinstein
1
340
A Nil Device, A Lonely Operator, and a Voyage to the Void Star
ericqweinstein
1
850
Other Decks in Technology
See All in Technology
App Router を実プロダクトで採用して見えてきた勘所をちょっとだけ紹介
marokanatani
1
920
AI でアップデートする既存テクノロジーと、クラウドエンジニアの生きる道
soracom
PRO
2
550
持続可能なソフトウェア開発を支える『GitHub CI/CD実践ガイド』
tmknom
6
1.3k
不動産売買取引におけるAIの可能性とプロダクトでのAI活用
zabio3
0
260
Agile in Automotive Industry, puzzles and lights.
hiranabe
3
1.3k
DuckDB雑紹介(1.1対応版)@DuckDB座談会
ktz
6
1.4k
o1のAPIで実験してみたが 制限きつすぎて辛かった話
pharma_x_tech
0
120
Fediverse Discovery Providers overview
andypiper
0
160
なにもしてないのにNew Relicのデータ転送量が増えていたときに確認したこと
tk3fftk
2
220
ついに出た!OpenAIの最新モデル「o1」って何がすごいの?
minorun365
PRO
3
730
開発生産性を始める前に開発チームができること / optim-improve-development-productivity.pdf
optim
0
100
OR学会2024秋_短期収益と将来のオフ方策評価性能を考慮したクーポン割当方策混合比の決定
recruitengineers
PRO
4
460
Featured
See All Featured
Robots, Beer and Maslow
schacon
PRO
157
8.2k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
0
97
How to train your dragon (web standard)
notwaldorf
85
5.6k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
230
17k
A designer walks into a library…
pauljervisheath
201
24k
A Tale of Four Properties
chriscoyier
155
22k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
45
4.8k
The Cult of Friendly URLs
andyhume
76
6k
Building an army of robots
kneath
302
42k
Rails Girls Zürich Keynote
gr2m
93
13k
What's in a price? How to price your products and services
michaelherold
242
11k
Testing 201, or: Great Expectations
jmmastey
36
7k
Transcript
Dōmo arigatō, Mr. Roboto: Machine Learning with Ruby # Eric
Weinstein # RubyConf 2016 # Cincinnati, Ohio # 10 November 2016
for Joshua
Part 0: Hello!
About Me eric_weinstein = { employer: 'Hulu', github: 'ericqweinstein', twitter:
'ericqweinstein', website: 'ericweinste.in' } 30% off with RUBYCONF30!
Agenda • What is machine learning? • What is supervised
learning? • What’s a neural network? • Machine learning with Ruby and the MNIST dataset
Part 1: Machine Learning
None
What’s machine learning?
In a word:
Generalization
What’s Supervised Learning? Classification or regression, generalizing from labeled data
to unlabeled data
Features && Labels • Raw pixel features (vectors of intensities)
• Digit (0..9)
Features && Labels • Raw pixel features (vectors of intensities)
• Digit (0..9)
Image credit: https://www.tensorflow.org/versions/r0.9/tutorials/mnist/ beginners/index.html
What’s a neural network?
Image credit: https://github.com/cdipaolo/goml/tree/master/perceptron
Image credit: https://en.wikipedia.org/wiki/Artificial_neural_network
Part 2: The MNIST Dataset
Our Data • Images of handwritten digits, size-normalized and centered
• Training: 60,000 examples, test: 10,000 • http://yann.lecun.com/exdb/mnist/
Image credit: https://www.researchgate.net/
How’d We Do? • Correct: 9328 / 10_000 • Incorrect:
672 / 10_000 • Overall: 93.28% accuracy
Developing the App
Front End submit() { fetch('/submit', { method: 'POST', body: this.state.canvas.toDataURL('image/png')
}).then(response => { return response.json(); }).then(j => { this.setState({ prediction: j.prediction }); }); }
Front End render() { return( <div> <EditableCanvas canvas={this.state.canvas} ctx={this.state.ctx} ref='editableCanvas'
/> <Prediction number={this.state.prediction} /> <div> <Button onClick={this.submit} value='Submit' /> <Button onClick={this.clear} value='Clear' /> </div> </div> ); }
Back End train = RubyFann::TrainData.new(inputs: features, desired_outputs: labels) fann =
RubyFann::Standard.new(num_inputs: 576, hidden_neurons: [300], num_outputs: 10) fann.train_on_data(train, 1000, 10, 0.01)
STOP #demotime
Summary • Machine learning is generalization • Supervised learning is
labeled data -> unlabeled data • Neural networks are awesome • You can do all this with Ruby!
Takeaways (TL;DPA) • We can do machine learning with Ruby
• Contribute to tools like Ruby FANN (github.com/tangledpath/ruby-fann) and sciruby (http://sciruby.com/) • Check it out: http://ruby-mnist.herokuapp.com/ • PRs welcome! github.com/ericqweinstein/ruby- mnist
Thank You!
Questions? eric_weinstein = { employer: 'Hulu', github: 'ericqweinstein', twitter: 'ericqweinstein',
website: 'ericweinste.in' } 30% off with RUBYCONF30!