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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
kaityo256
PRO
March 26, 2018
Programming
370
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
手書き数字認識とイデアハック
ChainerでMNISTを学習させたモデルの気持ちを調べる
kaityo256
PRO
March 26, 2018
More Decks by kaityo256
See All by kaityo256
勾配ブースティングと決定木の話 / gradient boosting and decision trees
kaityo256
PRO
7
1.6k
GNU Makeの使い方 / How to use GNU Make
kaityo256
PRO
16
5.8k
この講義について / 00-setup
kaityo256
PRO
2
450
GitHubによるWebアプリケーションのデプロイ / 07-github-deploy
kaityo256
PRO
2
360
演習:Gitの基本操作 / 04-git-basic
kaityo256
PRO
1
580
演習:Gitの応用操作 / 05-git-advanced
kaityo256
PRO
1
350
演習:GitHubの基本操作 / 06-github-basic
kaityo256
PRO
1
410
バージョン管理とは / 01-a-vcs
kaityo256
PRO
2
390
Gitの仕組みと用語 / 01-b-term
kaityo256
PRO
1
480
Other Decks in Programming
See All in Programming
【やさしく解説 設計編 #1】「ドメイン駆動」と「実装駆動」ってなに? 〜設計の考え方を、たとえ話で学ぼう〜
panda728
PRO
1
120
1B+ /day規模のログを管理する技術
broadleaf
0
140
광주소프트웨어마이스터고등학교 DevFest 특강 - 바이브 코딩 시대에서 주니어 개발자로 살아남는 방법
utilforever
1
130
吝嗇家のためのAI活用 / AI development for miser - ChatGPT + Issue Driven Development
tooppoo
0
190
Foundation Models frameworkで画像分析
ryodeveloper
1
120
壊れたパーサから始める関数型設計と構成的なパーサ #fp_matsuri
raiga0310
2
230
20260623_Loop Engineeringで自分の分身の問い合わせBotを作る
ryugen04
0
220
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
360
Hatena Engineer Seminar #37「言語モデルの活用に関する研究」
slashnephy
0
520
どこまでゆるくて許されるのか
tk3fftk
0
490
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1.5k
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
2
1.5k
Featured
See All Featured
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Practical Orchestrator
shlominoach
191
11k
Optimising Largest Contentful Paint
csswizardry
37
3.8k
BBQ
matthewcrist
89
10k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
240
The Curious Case for Waylosing
cassininazir
1
430
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Scaling GitHub
holman
464
140k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
350
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
510
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