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
Introduction to Sparse Modeling for Software En...
Search
Hacarus Inc.
October 13, 2018
Technology
1
120
Introduction to Sparse Modeling for Software Engineers
Presentation slides at GDG DevFest Philippines 2018
*
https://devfest.gdgph.org/
Hacarus Inc.
October 13, 2018
Tweet
Share
More Decks by Hacarus Inc.
See All by Hacarus Inc.
GitLab CI/CD で C#/WPFアプリケーションのテストとインストーラーのビルド・デプロイを自動化する
hacarus
0
1.1k
QA4AIに則ったMLOpsツールの活用
hacarus
0
670
0から協働ロボット外観検査システムを3ヵ月で具現化した軌跡
hacarus
0
230
ワンちゃんの健康を願う皆様に送る 犬心電図AI解析プロダクト紹介_AWS DevDay2022
hacarus
0
180
犬の心電AI解析プロダクト開発奮闘記 _クラウドからハード開発までてんこ盛り
hacarus
0
1.7k
ExplainableAIの概要とAmazon SageMaker Clarifyでの実装例
hacarus
0
930
AWS Step Functions を用いた非同期学習処理の例
hacarus
0
1.2k
Dashでmyダッシュボードを作ろう ーpytrendsで見るコロナの感染拡大時期ー
hacarus
0
1.4k
Interpretable Machine Learning: モデル非依存な解釈手法の紹介
hacarus
0
1k
Other Decks in Technology
See All in Technology
セキュリティの民主化は何故必要なのか_AWS WAF 運用の 10 の苦悩から学ぶ
yoh
1
140
Prox Industries株式会社 会社紹介資料
proxindustries
0
290
Абьюзим random_bytes(). Фёдор Кулаков, разработчик Lamoda Tech
lamodatech
0
340
Windows 11 で AWS Documentation MCP Server 接続実践/practical-aws-documentation-mcp-server-connection-on-windows-11
emiki
0
960
AWS テクニカルサポートとエンドカスタマーの中間地点から見えるより良いサポートの活用方法
kazzpapa3
2
540
BrainPadプログラミングコンテスト記念LT会2025_社内イベント&問題解説
brainpadpr
1
160
監視のこれまでとこれから/sakura monitoring seminar 2025
fujiwara3
11
3.9k
Welcome to the LLM Club
koic
0
170
BigQuery Remote FunctionでLooker Studioをインタラクティブ化
cuebic9bic
3
280
変化する開発、進化する体系時代に適応するソフトウェアエンジニアの知識と考え方(JaSST'25 Kansai)
mizunori
1
210
20250625 Snowflake Summit 2025活用事例 レポート / Nowcast Snowflake Summit 2025 Case Study Report
kkuv
1
310
生成AIでwebアプリケーションを作ってみた
tajimon
2
150
Featured
See All Featured
Code Review Best Practice
trishagee
68
18k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
Why Our Code Smells
bkeepers
PRO
337
57k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
5
210
Making the Leap to Tech Lead
cromwellryan
134
9.3k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Rebuilding a faster, lazier Slack
samanthasiow
82
9.1k
Being A Developer After 40
akosma
90
590k
Practical Orchestrator
shlominoach
188
11k
The Invisible Side of Design
smashingmag
299
51k
Transcript
,8 0 0 2 1 , 1 0 2 00
3 0 0 3 88 0
5BLBTIJ4PNFEB !ULTNE • $50BU)BDBSVT *OD • .BTUFS`TEFHSFFPG*OGPSNBUJPO4DJFODFBU ,ZPUP6OJWFSTJUZ • )PTUTEBUBTDJFOUJTUDPNNVOJUZJO,"/4"*
• IUUQTNMNLBOTBJDPOOQBTTDPN
"CPVU)BDBSVT • 5BDLMFNFEJDBM JOEVTUSJBMJTTVFTCZ"* • 'PDVTPO4QBSTF.PEFMJOH • 4VQQPSUFECZQSPGFTTPST • .S.BTBZVLJ0I[FLJ
GSPN5PIPLV6OJWFSTJUZ • .S,BPSV,BXBNPUPGSPN4IJHB6OJWFSTJUZ
"MJUUMFNPSFBCPVUVT
5BLFBXBZT • (FUCBTJDDPODFQUPG4QBSTF.PEFMJOH • ,OPXBDUVBMJNQMFNFOUBUJPOJO1ZUIPO • )PQFZPVHFUJOUFSFTUFEJOJU
8IBU`T4QBSTF.PEFMJOH
4QBSTF.PEFMJOH • .PEFMJOHBQQSPBDIUPVTFTQBSTJUZ • "DUJWFEJTDVTTJPOTTUBSUFEBU • *NBHFBOBMZTJTJTXFMMLOPXOBQQMJDBUJPO
$PNNPO.-JTTVFTJOCVTJOFTT • /FFEUPFYQMBJO IPXXIZ"*HJWFTSFTVMU • /FFE NPOFZBOEPSUJNF UPDPMMFDUEBUB • /FFE
JOJUJBMDPTUGPS(16IBSEXBSF IUUQTIBDBSVTDPNJOGPSNBUJPOUFDITQBSTFNPEFMJOHGPSJUFOHJOFFST
&YQMBJOBCMFWT1SFEJDUBCMF • /PTJMWFSCVMMFUT USBEFPGGFYJTUT • 'BJMXJUIPVUUIJOLJOHCVTJOFTTSFRVJSFNFOUT • 69PG"*TZTUFNCFDPNFTJNQPSUBOU
"EWBOUBHFPG4QBSTF.PEFMJOH • 4FMFDUJNQPSUBOUGFBUVSFTGSPNJOQVU • 8PSLXJUI FWFO TNBMMBNPVOUPGEBUB • 3VOPOMJNJUFEIBSEXBSFSFTPVSDF
*OUSPEVDUJPOPG-BTTP
-JOFBSSFHSFTTJPO • 1SPCMFNEFTDSJQUJPO • 0VUQVUZ DBOCFFYQSFTTFEBTMJOFBSDPNCJOBUJPOPGY XJUIPCTFSWBUJPOOPJTFЏ • XIFSFY JTN
EJNFOTJPOBMBOETBNQMFTJ[FPGZ JTO ! = #$ %$ + ⋯ + #( %( + ) 㱺 &TUJNBUFX XIJDIFYQSFTTFT ZXFMM
-JOFBSSFHSFTTJPO • #BTJDBQQSPBDI • .JOJNJ[FMFBTUTRVBSFFSSPSTPGZ BOENVMUJQMJFSTPG Y BOEFTUJNBUFEX min 1
2 & − () * 㱺 XIBUJGXFEPO`UIBWFFOPVHITBNQMFTPGZ ʁ
6OEFSEFUFSNJOFE4ZTUFN .BUSJY&YQSFTTJPO 8IFOTBNQMFTJ[F . JTMFTTUIBO JOQVUEJNFOTJPOPG9 / Z8Y DBOOPUCFTPMWFE "EEJOHTQBSTJUZDPOTUSBJOU
*GOVNCFSPGOPO[FSPWBMVFPGY , JTMFTTUIBO. 8FDBOTPMWF UIJTQSPCMFN W W
-OPSNPQUJNJ[BUJPO • 6TFNJOJNVNOVNCFSPGY UPTBUJTGZ FRVBUJPO • 'JOEX UPNJOJNJ[FOVNCFSPGOPO[FSP FMFNFOUT •
$PNCJOBUJPOBMPQUJNJ[BUJPO • /1IBSEBOEOPUGFBTJCMFL
-OPSNPQUJNJ[BUJPO • 3FMBY-DPOTUSBJOUUP • 'JOEX UPNJOJNJ[FTVNPGJUTBCTPMVUFWBMVFT • (MPCBMTPMVUJPODBO TUJMM CFSFBDIFE
• 4PMWFEXJUIJOQSBDUJDBMUJNF
&Y7JTVBMFYQSFTTJPO -OPSN !" + !$ = &
• -FBTU"CTPMVUF4ISJOLBHFBOE4FMFDUJPO0QFSBUPS • 0CKFDUJWFGVODUJPOXJUI-OPSNBTSFHVMBSJ[BUJPO UFSN -BTTP min 1 2 &
− () * + , ( - 㱺 3FHVMBSJ[BUJPOQBSBNFUFS Е DPOUSPMT TQBSTJUZ
7BSJPVT"MHPSJUINTGPS-BTTP • $PPSEJOBUF%FTDFOU • -FBTU"OHMF3FHSFTTJPO • *45" • "%..
&Yɿ$PPSEJOBUF%FTDFOU *OJUJBMJ[F !" # = 1, … , (
XJUISBOEPNWBMVF 6QEBUF ) !" = * + , -. , / , 0 8IFSF 1(") = 4 − ∑ 78" 9 7 !7 BOES JTTPGUUISFTIPMEJOH GVODUJPO 3FQFBUVOUJMDPOWFSHJOHDPOEJUJPOTBUJTGJFE
4PGU5ISFTIPMEJOH0QFSBUPS • 4ISJOLHJWFOWBMVFYCBTFEPO! S #, ! = & # −
!, (# ≥ !) 0, (−! < # < !) # + !, (# ≤ −!)
1ZUIPODPEFFYBNQMF # Soft thresholding operator def soft_threshold(X, thresh): return np.where(np.abs(X)
<= thresh, 0, X - thresh * np.sign(X)) # Coordinate descent 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)
3FTVMU EJNFOTJPOBMJOQVUXJUI OPO[FSPDPFGGJDJFOUTBOETBNQMFT
1BUIEJBHSBN • 7JTVBMFYQSFTTJPOPGIPX! BGGFDUTUIF OVNCFSPGOPO[FSPDPFGGJDJFOUT
0UIFSJNQMFNFOUBUJPOT • TDJLJUMFBSO • $PPEJOBUF %FTDFOUJTEFGBVMU -BTTP • -"34JTBMTPBWBJMBCMF -BTTP-BST
• TQNJNBHF • "%..JTBWBJMBCMF -BTTP"%..
TQNJNBHF • 1ZUIPOMJCSBSZGPSTQBSTFNPEFMJOH • "MHPSJUINTGPS*NBHFBOBMZTJT • $PNQMJBOUUPTDJLJUMFBSOJOUFSGBDF • IUUQTHJUIVCDPNIBDBSVTTQNJNBHF
&Y-BTTPBOE-BTTP"%.. # Lasso from scikit-learn from sklearn.linear_model import Lasso model
= Lasso(alpha=0.1) model.fit(X_train, Y_train) model.score(X_test, y_test) # Lasso from spm-image from spmimage.linear_model import LassoADMM model = LassoADMM(alpha=0.1) model.fit(X_train, Y_train) model.score(X_test, y_test)
*NBHFBOBMZTJT
%JDUJPOBSZMFBSOJOH :*NBHF "%JDUJPOBSZ ! "# $# 9DPFGGJDJFOU • &YUSBDUQBUDIFTGSPNJNBHFT •
-FBSOEJDUJPOBSZ UPFYQSFTTFWFSZQBUDIFT • &WFSZQBUDIFTTIPVMECFTQBSTF DPNCJOBUJPOPG CBTJT 4QBSTF$PEJOH
&Y*NBHFSFDPOTUSVDUJPO 0SJHJOBMJNBHF 3FDPOTUSVDUFEJNBHF
&Y*NBHFSFDPOTUSVDUJPO -FBSOFEEJDUJPOBSZ Y CBTJT 4QBSTF$PEJOH HSFFOJT[FSP
1ZUIPODPEFFYBNQMF # extract patches patches = extract_simple_patches_2d(img, patch_size) # normalize
patches patches = patches.reshape(patches.shape[0], -1).astype(np.float64) intercept = np.mean(patches, axis=0) patches -= intercept patches /= np.std(patches, axis=0) # dictionary learning model = MiniBatchDictionaryLearning(n_components=n_basis, alpha=1, n_iter=n_iter, n_jobs=1) model.fit(patches) # reconstruction 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)
*OQBJOUJOH 'PSNJTTJOHWBMVFT XFDPOTJEFSNBTLNBUSJY.BOE VTFJUXJUIVTVBMJNBHFSFDPOTUSVDUJPOCZEJDUJPOBSZ
4VNNBSZ
4QBSTFNPEFMJOH • "EWBOUBHFT • 4FMFDUJNQPSUBOUGFBUVSFTGSPNJOQVU • 8PSLXJUI FWFO TNBMMBNPVOUPGEBUB •
3VOPOMJNJUFEIBSEXBSFSFTPVSDF • :PVDBOTUBSUJUUPEBZJ • 1ZUIPOJNQMFNFOUBUJPOJTBWBJMBCMFJOTDJLJU MFBSOBOETQNJNBHF
! 8F`SFIJSJOH ! IUUQTXXXLBMJCSSDPNDIBDBSVTJODKPCT