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
Python ではじめるスパースモデリング
Search
Hacarus Inc.
May 19, 2018
Technology
3.2k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Python ではじめるスパースモデリング
Presentation Slides at PyCon mini Osaka 2018
https://osaka.pycon.jp/
Hacarus Inc.
May 19, 2018
More Decks by Hacarus Inc.
See All by Hacarus Inc.
GitLab CI/CD で C#/WPFアプリケーションのテストとインストーラーのビルド・デプロイを自動化する
hacarus
0
1.4k
QA4AIに則ったMLOpsツールの活用
hacarus
0
760
0から協働ロボット外観検査システムを3ヵ月で具現化した軌跡
hacarus
0
300
ワンちゃんの健康を願う皆様に送る 犬心電図AI解析プロダクト紹介_AWS DevDay2022
hacarus
0
230
犬の心電AI解析プロダクト開発奮闘記 _クラウドからハード開発までてんこ盛り
hacarus
0
2.2k
ExplainableAIの概要とAmazon SageMaker Clarifyでの実装例
hacarus
0
1.2k
AWS Step Functions を用いた非同期学習処理の例
hacarus
0
1.5k
Dashでmyダッシュボードを作ろう ーpytrendsで見るコロナの感染拡大時期ー
hacarus
0
1.6k
Interpretable Machine Learning: モデル非依存な解釈手法の紹介
hacarus
0
1.3k
Other Decks in Technology
See All in Technology
GoCon2026 - Open Source, Open World
sanposhiho
2
560
2026-09-11 【Snowflake World Tour Tokyo 2026】Snowflakeを起点に、AI Agentが自律稼働し続ける未来へ / Driving AI Agents with Snowflake
civitaspo
0
220
作り直せるコードは迅速に 作り直せないDBは慎重に - AI時代のプロダクトエンジニアが「判断の不可逆性」で開発速度を変える話
kinosuke01
0
280
When Does a Local Qwen Start to Break
morshoto
0
190
Adaptive Warehouse を今すぐ導入すべき理由と迷ったときの判断基準
__allllllllez__
0
120
From Vanilla Kubernetes to a Batteries-Included Platform: Developer Experience at 1,300+ Clusters
yosshi_
0
630
WAF 運用改善の承認サイクル/SRE_BizReach_MIXI_1
visional_engineering_and_design
2
370
『止めない』を設計する — 制約の中で、事業の根幹を支える判断
hiroyaterui
0
230
こんなアーキテクチャ図は嫌だ BEYOND THE TIME: 半年後の自分へ贈る15のメッセージ / 15 of Anti-pattern in AWS Architecture Diagrams
naospon
3
270
omasushiというライブラリを作った
polidog
PRO
0
150
多層防御と最⼩権限で実現する、安全なAIエージェント設計パターン
lycorptech_jp
PRO
1
220
AIとペアプロを始める。人とのペアプロをやめる。ペアプロの良さを改めて知る。もっと好きになった。 / Rediscovering Pair Programming
honyanya
1
290
Featured
See All Featured
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
270
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
690
The Pragmatic Product Professional
lauravandoore
37
7.4k
Un-Boring Meetings
codingconduct
0
410
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
930
WCS-LA-2024
lcolladotor
0
820
The Mindset for Success: Future Career Progression
greggifford
PRO
0
490
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
290
Ruling the World: When Life Gets Gamed
codingconduct
0
330
Mind Mapping
helmedeiros
1
350
Transcript
Python ではじめるスパースモデリング 2018年5月19日 PyCon mini Osaka @ ヤフー株式会社 GFOオフィス
છాوࢤ ͦΊ͔ͩͨ͠ • גࣜձࣾϋΧϧε औక$50 • 1ZUIPOྺ • .BDIJOF-FBSOJOH.FFUVQ,"/4"*
্ཱͪ͛ • IUUQTNMNLBOTBJDPOOQBTTDPN
ϋΧϧεͱ • ϥΠϑαΠΤϯεɾ࢈ۀ Y"* • εύʔεϞσϦϯάΛ࣠ͱͨ͠σʔλղੳ • ౦େֶɾେؔਅ೭।ڭत͕ΞυόΠβʔ
ຊͷΰʔϧ • εύʔεϞσϦϯάΛͬͯΒ͏ • 1ZUIPOͰͷΞϧΰϦζϜ࣮ΛΈͯΒ͏ • ߟ͑ํɾಛʹڵຯΛͬͯΒ͏
εύʔεϞσϦϯάͱ
εύʔεϞσϦϯά • σʔλʹࡏ͢Δεύʔεੑʹணͯ͠ɺࣄ ΛϞσϧԽ͢Δख๏ • ୯ҰͷΞϧΰϦζϜΛࢦ͢Θ͚Ͱͳ͍ • ࠒ͔Β׆ൃʹݚڀ͞Ε͍ͯΔ
σϞ • Χϝϥ͔Βͷը૾Λֶश • എܠΛਪఆ • ҠಈମΛݕग़
ػցֶशͷಋೖ࣌ͷ՝ • ࣗಈԽ͍͕ͨ͠ɺઆ໌͋Δ • σʔλऩूͷ࣌ؒίετ͕େ͖͍ • ϋʔυΣΞͷίετ͍͑ͨ
εύʔεϞσϦϯάͷظ • ೖྗಛྔͷதͷॏཁͳͷ͕Θ͔Δ • গྔͷใ͔ΒਪఆΛߦ͑Δ • (16ڥҎ֎Ͱಈ࡞͢Δ
ઢܗճؼͰͷεύʔεϞσϦϯά • લఏ • ग़ྗ Z ɺೖྗ Yͷઢܗ݁߹ͱ؍ଌϊΠζЏͰදݱ͞ΕΔ • ೖྗ
Y N ࣍ݩɺ؍ଌ͞Εͨ Z O ݸ͋Δͱ͢Δ ! = #$ %$ + ⋯ + #( %( + ) 㱺 Z Λ͍͍ײ͡ʹઆ໌͢Δ X ΛΓ͍ͨ
ઢܗճؼͰͷεύʔεϞσϦϯά • ղ͖͘ • ؍ଌ Z ͱਪఆͨ͠ X ͔Βܭࢉ͞ΕΔͷೋޡࠩΛ࠷খԽ min
1 2 & − () * 㱺 Z ͷαϯϓϧ͕ Y ͷ࣍ݩΑΓখ͍͞߹ʁ
εύʔε੍ͷՃ • ະͷΑΓํఔࣜͷ͕গͳ͍࿈ཱํఔࣜ • Yʹର͢Δεύʔεͳ੍ΛՃͯ͠ղ͘ • ʮͳΔ͘গͳ͍ Y Ͱ݅Λຬͨ͢ʯ 㱺ʮͳΔ͘ଟ͘ͷ
X Λ ʹ͢Δʯ • ૉʹΔͱɺΈ߹Θͤ࠷దԽ㽊
-ϊϧϜ࠷దԽ • ੍݅Λ؇ • ʮX ͷઈରͷ૯ΛͳΔ͘খ͘͢͞Δʯ • ؇ͯ͠େҬత࠷దղ͕ಘΒΕΔ • తʹղ͘͜ͱ͕Ͱ͖Δ
• -FBTU"CTPMVUF4ISJOLBHFBOE4FMFDUJPO 0QFSBUPS ͷུ • -ϊϧϜΛਖ਼ଇԽ߲ͱͯ͠Ճͨ͠తؔ -BTTP min 1 2
& − () * + , ( - 㱺 ਖ਼ଇԽύϥϝʔλЕͰεύʔε੍ͷޮ͖Λௐ
छʑͷΞϧΰϦζϜ • ࠲ඪ߱Լ๏ $PPSEJOBUF%FTDFOU • ࠷খ֯ճؼ -FBTU"OHMF3FHSFTTJPO • ෮ॖখᮢΞϧΰϦζϜ *45"
• ަޓํ๏ "%..
ྫɿ࠲ඪ߱Լ๏ͷΞϧΰϦζϜ 1. #$ % = 1, … , ) ΛॳظԽ
2. + #$ = , - . /0 . 1 , 2 Ͱߋ৽ 3($) = 6 − 8 9:$ ; 9 #9 ͱ͠ɺ, ೈᮢ࡞༻ૉͱ͢Δ 3. ऩଋ݅·Ͱ܁Γฦ͠
ೈᮢ࡞༻ૉ • Λθϩʹ͚ۙͮΔ࡞༻Λ࣋ͭ S ", $ = & " −
$, (" ≥ $) 0, (−$ < " < $) " + $, (" ≤ −$)
ྫɿ࠲ඪ߱Լ๏ͷ࣮ྫ # def soft_threshold(X, thresh): return np.where(np.abs(X) <= thresh,
0, X - thresh * np.sign(X)) # w_cd = np.zeros(n_features) for _ in range(n_iter): for j in range(n_features): w_cd[j] = 0.0 r_j = y - np.dot(X, w_cd) w_cd[j] = soft_threshold(np.dot(X[:, j], r_j) / n_samples, alpha)
࣮ߦ݁Ռ ೖྗಛྔͷ࣍ݩ ඇθϩཁૉ αϯϓϧ
ͦͷଞͷ࣮ • TDJLJUMFBSO • ࠲ඪ߱Լ๏ͱ࠷খ֯ճؼ • IUUQTDJLJUMFBSOPSHTUBCMFNPEVMFTHFOFSBUFETLMFBSOMJOFBS@NPEFM-BTTPIUNM • IUUQTDJLJUMFBSOPSHTUBCMFNPEVMFTHFOFSBUFETLMFBSOMJOFBS@NPEFM-BTTP-BSTIUNM •
TQNJNBHF • ަޓํ๏ • IUUQTHJUIVCDPNIBDBSVTTQNJNBHFCMPCEFWFMPQNFOUTQNJNBHFMJOFBS@NPEFMBENNQZ
TQNJNBHF • εύʔεϞσϦϯά༻ϥΠϒϥϦ • ը૾ղੳʹ༻͍ΒΕΔΞϧΰϦζϜΛத৺ʹ • TDJLJUMFBSOΠϯλʔϑΣʔεʹ४ڌ • IUUQTHJUIVCDPNIBDBSVTTQNJNBHF
ը૾ॲཧͷద༻ • جຊΞΠσΟΞ • ը૾͔ΒύονΛΓग़͢ • ύονΛಉαΠζͷࣙॻجఈͷઢܕ݁߹Ͱදݱ͢Δ • ը૾શମΛදݱ͢ΔͨΊࣙॻֶश͢Δ
ը૾ॲཧͷద༻ :ը૾ "ࣙॻ ! "# $# 9
ࣙॻʹΑΔ࠶ߏ Yύον جఈͰͷ࠶ߏ݁Ռ
ྫɿࣙॻֶशͱ࠶ߏ # patches = extract_simple_patches_2d(img, patch_size) #
patches = patches.reshape(patches.shape[0], -1).astype(np.float64) intercept = np.mean(patches, axis=0) patches -= intercept patches /= np.std(patches, axis=0) # model = MiniBatchDictionaryLearning(n_components=n_basis, alpha=1, n_iter=n_iter, n_jobs=1) model.fit(patches) # reconstructed_patches = np.dot(code, model.components_) reconstructed_patches = reconstructed_patches.reshape(len(patches), *patch_size) reconstructed = reconstruct_from_simple_patches_2d(reconstructed_patches, img.shape)
ܽଛิͷద༻ ܽଛΛߟྀͨࣙ͠ॻֶशʹΑΔใ෮ݩ ը૾ :ʹର͠ྼԽ࡞༻ૉ .͕͔͔Δͱߟ͑ͯॲཧΛߦ͏
·ͱΊ
εύʔεϞσϦϯάͱ • ೖྗಛྔͷதͷॏཁͳͷ͕Θ͔Δ • গྔͷใͰ͡ΊΔ͜ͱ͕Ͱ͖Δ • طଘ࣮ΛͬͯؾܰʹࢼͤΔ • TDJLJUMFBSO TQNJNBHF
• ຊͷ༰ ˠ IUUQTHJUJPWQY2