Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OOP for ML

Avatar for Hampen Hampen
August 29, 2020

OOP for ML

Object oriented proggraming for Machine learning implementation

Avatar for Hampen

Hampen

August 29, 2020

More Decks by Hampen

Other Decks in Programming

Transcript

  1. 2 ⟃⌰玹介 持䞞 裕✮ 【経歎】 2015幎 東北⌀孊⌯孊郚卒業 2016幎 Fraunhofer IISB

    (ドむツ留孊) 2018幎 東北⌀孊⌀孊院⌯孊研究科卒業 2018幎 IT系䌁業のData science郚眲配属 【仕事】 2018幎 予枬モデルの構築ず分析 2019幎 画像・動画の分析 2020幎 動画分析アプリケヌション構築 【プラむベヌト】 テニスの動画分析 未螏AI はんぺん (hampen2929)
  2. 5 機械孊習の実装は基本的に⟟いので、オブゞェクト指向の曞き✅で少しでも⟟さを緩和できるこ ずを皆さんに知っおもらうこずが✬的です。 本発衚の✬的 ⟟み゚ピ゜ヌド • Jupyter notebookに぀ら぀らず実装をしおいるず、最初は楜しいがだんだんず倉数の管 理が耇雑になったり、凊理の繰り返しなどが✬✎ち始め管理が⌀倉になる。 ノヌトブックの管理

    • 実装をした盎埌ならただしも、実装しおから時間がたった埌に耇雑な凊理に察しお修正 を加えるのは⌀倉で苊痛を䌎う䜜業になっおしたう。 修正が⌀倉 • 技術進歩の早い機械孊習の領域においお、新しく粟床や掚論速床に関しお優れた⌿ 法が出おくるのは✇垞茶飯事であり、それに察応するために毎回スクラッチで凊理を実装 するのでは時間がかかりすぎおしたう。 モデルの曎新が頻繁 オブゞェクト指向で実装しお⟟みを緩和 背景
  3. 6 モデリングをする際に⌿続き型からオブゞェクト指向ぞのリファクタリングの溝を埋めたい。 ⌿続き型ずオブゞェクト指向 ⌿続き型 メリット • 〈さなプログラムを曞くにはちょうど良い • コヌドを远いかけやすい •

    孊習難易床が䜎い • 凊理の再利✀ができる • クラス、カプセル化、継承、ポリモヌフィ ズムず⟏った特城を䜿✀できる • 修正を加えるのが✐范的容易 オブゞェクト指向 デメリット • 凊理の再利✀ができない • グロヌバル倉数 • 修正を加えるのが難しい • 〈さなプログラムを曞くには向かない • コヌドを远いかけにくい • 孊習難易床が⟌い 独孊プログラマヌp144, ⌿続き型⟔語ずはオブゞェクト指向⟔語ず✐范しわかりやすく解説メリットやPythonにおすすめの型を玹介 分析 モデリング モデリング パッケヌゞ システム 䞻な✀途 ⌿続き型ずオブゞェクト指向
  4. 8 オブゞェクト指向にはクラス化、カプセル化、継承、ポリモヌフィズムの4぀の特城が存圚する。 オブゞェクト指向の⌀芁玠 オブゞェクト指向でなぜ぀くるのかp106、クリヌンアヌキテクチャカプセル化ずは、独孊プログラマヌ クラス化 カプセル化 継承 ポリモヌフィズム • 倉数ずメ゜ッドを同じずころ

    にたずめるこず • 倉数ずメ゜ッドを切り出すこ ず • デヌタをクラス内に隠蔜し お倖から⟒えなくするこず • メ゜ッドや倉数を芪クラスず 呌ばれるクラスから受け継 ぐこず 説明 • 凊理の䞭からデヌタやモデ ルなどのクラスをたずめる • 前凊理、掚論、埌凊理な どをメ゜ッドずしお切り出す • デヌタを倖から觊れないよ うにする • モデルに必芁な凊理を芪ク ラスで定矩しお⌊クラスに 継承させる 機械孊習 での䟋 • 耇数のクラスで䞭の実装が 違えど、同じむンタヌフェヌ スで実装されるこず • モデルのメ゜ッド名、匕数、 返り倀を同じにしお違うクラ スを実装する • 敎理敎頓がされおどこにど の凊理があるかがわかりや すい • ✬的のメ゜ッドごずに切り出 されおいるので、修正がし やすい • デヌタを守るこずができる • 共通の凊理を実装しなくお よくなる • 実装を匷いお実装郚分が 明確になる 利点 • 利✀偎からは䞭のロゞック を気にする必芁がない • モデルの倉曎がしやすい オブゞェクト指向の特城
  5. 10 メ゜ッド名、匕数、返り倀が同じである共通のむンタヌフェヌスを有するこずで、利✀偎からは䞭の ロゞックを気にする必芁がなくなり、モデルの倉曎がしやすくなる。 ポリモヌフィズム ポリモヌフィズムあり モデルA モデルB モデルC compute compute

    compute むンタヌフェむスが同じだから 䜿いやすいね♪ class_name(str) image(JpegImageFile) class_name(str) image(JpegImageFile) class_name(str) image(JpegImageFile) ポリモヌフィズムなし むンタヌフェむスが違うから 䜿いにくいね  モデルA モデルB モデルC compute get_result inference class_name(str) image(JpegImageFile) class_name(list) image(np.ndarray) class_name(dict) image(Tensor) オブゞェクト指向の特城
  6. 12 画像分類モデルを実装するにあたりむンタヌフェむスず抜象クラスず具象クラスの3぀のクラスを✀い る。 オブゞェクト指向を3぀のクラスに分けお考える 画像分類ベヌスモデルクラス 抜象クラス ベヌスモデルクラス むンタヌフェむス 画像分類モデルクラス 具象クラス

    • 個々のクラス特有の凊 理を実装する 説明 • 共通の凊理を実装す る • 具䜓的な凊理は実装 せずクラスの倉数やメ ゜ッドのみを定矩する • 個々の画像分類のモ デル特有の凊理を実 装する 機械孊習 での䟋 • 画像分類のモデルの共 通の凊理を実装する • モデルの凊理の流れを 定矩する 実装䟋の確認
  7. 13 1. 機械孊習のモデルずしおの振る舞い 2. 画像分類の共通の凊理 3. 個々の⌿法の画像分類モデル特有の凊理 クラス化ず継承 画像分類の凊理 画像分類ベヌスモデルクラス

    抜象クラス ベヌスモデルクラス むンタヌフェむス 画像分類モデルクラス 具象クラス 実装䟋の確認
  8. 16 オブゞェクト指向を✀いるこずで⟟みが少しだけ緩和された。 たずめ ⟟み゚ピ゜ヌド • Jupyter notebookに぀ら぀らず実装をしおいるず、最初は楜しいがだんだんず倉数の管 理が耇雑になったり、凊理の繰り返しなどが✬✎ち始め管理が⌀倉になる。 →クラスにたずめお凊理をメ゜ッドに切り出しお管理を楜にするこずができ(そう) ノヌトブックの管理

    • 実装をした盎埌ならただしも、実装しおから時間がたった埌に耇雑な凊理に察しお修正 を加えるのは⌀倉で苊痛を䌎う䜜業になっおしたう。 →クラスずメ゜ッドが切り出されお修正箇所がわかりやすくなった 修正が⌀倉 • 技術進歩の早い機械孊習の領域においお、新しく粟床や掚論速床に関しお優れた⌿ 法が出おくるのは✇垞茶飯事であり、それに察応するために毎回スクラッチで凊理を実装 するのでは時間がかかりすぎおしたう。 →ポリモヌフィズムを䜿うこずでモデルの差し替えが容易になった モデルの曎新が頻繁 たずめ
  9. 17 n 本 Ø なぜオブゞェクト指向で曞くのか Ø 独孊プログラマヌ Ø クリヌンアヌキテクチャ Ø

    Effective Python 第2版 Ø ⟃⟛プログラマヌ n 蚘事 Ø ⌿続き型⟔語ずはオブゞェクト指向⟔語ず✐范しわかりやすく解説メリットやPythonにおすす めの型を玹介 Ø オブゞェクト指向ず10幎戊っおわかったこず 参考✂献 たずめ