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
手書き数字認識とイデアハック
Search
kaityo256
March 26, 2018
Programming
0
340
手書き数字認識とイデアハック
ChainerでMNISTを学習させたモデルの気持ちを調べる
kaityo256
March 26, 2018
Tweet
Share
More Decks by kaityo256
See All by kaityo256
論文紹介のやり方 / How to review
kaityo256
14
76k
デバッグの話 / Debugging for Beginners
kaityo256
9
1.3k
ビット演算の話 / Let's play with bit operations
kaityo256
5
380
GNU Makeの使い方 / How to use GNU Make
kaityo256
15
5.1k
制限ボルツマンマシンの話 / Introduction of RBM
kaityo256
3
1.1k
論文の読み方 / How to survey
kaityo256
219
160k
リンゴゲームと貧富の差 / Origin of the disparity of wealth
kaityo256
14
14k
渡辺研Slackの使い方 / Slack Local Rule
kaityo256
9
8.9k
時間の矢について / Time's arrow
kaityo256
12
17k
Other Decks in Programming
See All in Programming
Generating OpenAPI schema from serializers throughout the Rails stack - Kyobashi.rb #5
envek
1
420
Expoによるアプリ開発の現在地とReact Server Componentsが切り開く未来
yukukotani
1
210
LINE messaging APIを使ってGoogleカレンダーと連携した予約ツールを作ってみた
takumakoike
0
130
メンテが命: PHPフレームワークのコンテナ化とアップグレード戦略
shunta27
0
320
データベースのオペレーターであるCloudNativePGがStatefulSetを使わない理由に迫る
nnaka2992
0
250
pylint custom ruleで始めるレビュー自動化
shogoujiie
0
160
ABEMA iOS 大規模プロジェクトにおける段階的な技術刷新 / ABEMA iOS Technology Upgrade
akkyie
1
240
5分で理解する SOLID 原則 #phpcon_nagoya
shogogg
1
410
iOSでQRコード生成奮闘記
ktcryomm
2
120
未経験でSRE、はじめました! 組織を支える役割と軌跡
curekoshimizu
1
200
仕様変更に耐えるための"今の"DRY原則を考える
mkmk884
9
3.3k
なぜイベント駆動が必要なのか - CQRS/ESで解く複雑系システムの課題 -
j5ik2o
14
4.8k
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
30
4.6k
Testing 201, or: Great Expectations
jmmastey
42
7.2k
Designing for Performance
lara
605
68k
Six Lessons from altMBA
skipperchong
27
3.6k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.8k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
4
440
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
What's in a price? How to price your products and services
michaelherold
244
12k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.2k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.4k
VelocityConf: Rendering Performance Case Studies
addyosmani
328
24k
Transcript
手書き数字認識とイデアハック @kaityo256
はじめに 機械学習をやってみて、なんか収束はしているっぽい のに、いざ実際に使うとうまくいかないことが多い そもそも学習がどう行われて、モデルがどう入力を解釈 しているのかがいまいちわからない MNIST(手書き数字データ)を使って「学習済みモデルの 気持ち」を探ってみよう
MNIST: 手書き数字学習用データセット イメージ: 28×28ピクセル 0から1までのfloat(単精度実数) ラベル: 0から9 (整数)
学習 784 0 1 8 9 10 学習用データ: 6万 テスト用データ:1万
バッチサイズ:1000 エポック: 20 三層全結合 (768, 768, 10) 学習方法: Adam 活性化関数:LeRU
学習済みモデルに手書き数字を食わせる https://kaityo256.github.io/mnist_check/ この例では認識されたが・・・
学習済みモデルに手書き数字を食わせる ・・・かなり認識率が低い この入力は認識失敗
仮説: モデルは学習により「数字のイデア」を構築し、実質 的に入力とイデアとの重なりを調べているのでは? モデル 4 なんで認識率が低いんだろう? 数字のイデア 入力 一番「重なり」が 大きいイデアを探す
少し修正 0 1 8 9 モデルの「イデア」を調べる たとえば「1」の出力が大きくなるように入力を調整していく ランダム入力 もし「目的の重みが大きくなったら修正を採用 そうでなければ不採用
フィードバックループ ※ 最初は真面目にアニーリングしようと思ったが、適当に最急勾配でやっても大丈夫っぽかったのでそうした
「5」のイデア 5のイデア:この学習済みモデルが「もっとも『5』っぽい」と思う入力イメージ
0 1 2 3 4 5 6 7 8 9
得られた イデア達
イデアハック 我々は「モデルのイデア」を知っているので、逆にどういう イメージを与えればモデルが「4」と認識するかわかる
イデアハック 4のイデア 「イデア」をカンニングして入力 4と認識された
イデアハック 9のイデア 「イデア」をカンニングして入力 0っぽい入力を9と認識させることもできる
まとめ 手書き数字を学習させたモデルの「理想の数字 (イデア)」を調べた 敵対的サンプル(Adversarial examples)の一種といえなくもない・・・? イデアを見ることで、「人間には別の数字に見え る形を別の数字に誤認識させた 参考URL https://kaityo256.github.io/mnist_check/ オンラインテスト
https://github.com/kaityo256/mnist_check リポジトリ ChainerでMNISTを学習させた結果を使ってブラウザで手描き数字認識 https://qiita.com/kaityo256/items/8c7c9a32bd4ae5c0b500 Qiitaの記事 MNISTを学習させたモデルの気持ちを調べる https://qiita.com/kaityo256/items/438ee87a0ef1346071b9