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

UBtech_vol7 データサイエンティストのための エクストリームプログラミング入門

UBtech_vol7 データサイエンティストのための エクストリームプログラミング入門

nonakakenya

March 29, 2023
Tweet

Other Decks in Technology

Transcript

  1. データサイエンティストのための
    エクストリームプログラミング入門
    2023-03-28
    株式会社ユーザベース 野中 賢也

    View Slide

  2. 2
    自己紹介
    ● 野中賢也
    ● 前職:広告代理店で機械学習エンジニア
    ● 趣味:読書(SFにはまりつつある)
    ● XP歴もデータサイエンス歴も短め(1年と4年)なのでお手柔らかに
    焼き肉を食べて微笑んでいる近影

    View Slide

  3. 3
    【アイスブレイク】
    (広告代理店出身なので?)
    学生のときに聞いてなるほどと思った
    マーケティングのある定義の話から始めます

    View Slide

  4. 4
    マーケティングとは継続的に売れる仕組みを作ることである

    View Slide

  5. 5
    【本題】データサイエンティストの定義
    ● ChatGPTいわく
    ○ 大量のデータから価値を生み出すことを目的とした...(略)...専門家

    View Slide

  6. 6
    こっちの定義の方が良さそうではないですか?
    データから価値を生み出す専門家

    継続的にデータから価値を生み出す仕組みをつくる専門家

    View Slide

  7. 7
    データサイエンティストの再定義
    継続的にデータから価値を生み出す仕組みをつくる専門家

    「データから価値を発見する」
    +
    「発見した価値を継続的に生み出し続ける」

    View Slide

  8. 8
    データから価値を発見する
    ● データからビジネス的価値を発見するために使える方法論は多く存在
    ○ 「イシューから始めよ」などに代表されるコンサル本
    ○ 大学院で主に経験・学ぶことができる科学的方法論
    ○ 機械学習分野でも、このトピックに絞った書籍が執筆され始めている
    ■ 「戦略的データサイエンス入門」
    ■ 「AI・データ分析プロジェクトのすべて」
    ■ 「評価指標入門~データサイエンスとビジネスをつなぐ架け橋」
    ユーザベースのメンバーの一人も共
    著者になっています!

    View Slide

  9. 9
    発見した価値を継続的に生み出し続ける
    ● なぜ継続性が重要なのか?
    ○ 機械学習モデルの外の環境とニーズの変化が必ず起こるから
    ■ 簡単な例
    ● サイトの回遊行動から、どのユーザーがConversionするかを予測す
    るモデルを開発(当時state of the art!)
    ● プロダクトが依存しているPlatformが、モデルが使用している特徴
    量を提供しなくなる
    ● その特徴量を使用しないモデルの開発する必要性
    ○ あるあるかな?
    ■ 当時の担当者不在
    ■ ソースコードの可読性が低い
    ■ 社内の誰も仕様を把握していない

    View Slide

  10. 10
    発見した価値を継続的に生み出し続ける
    ● データから価値を発見する方法論は、状況変化が考えられていない
    ○ その時点のスナップショットで最適な機械学習モデル
    ○ ビジネス環境の変動⇒提供価値の半減

    View Slide

  11. 11
    発見した価値を継続的に生み出し続ける
    ● 価値発見の方法論ほど、継続的な価値提供の方法論は発達していない印象
    ○ (私含め)多くのデータサイエンティスト/MLエンジニアのバックグラウンド
    ■ =ある時点での分析や研究の成果に責任を負っている
    ● 機械学習・人工知能の研究者
    ● マーケティングの定量分析の専門家
    ● 大学院で定量的な分野を学んだ・研究した人
    ● 物理学、経済学、心理学etcetc
    ● 戦略・経営・分析コンサルティング企業出身者
    ○ 最近だとMLOps(DevOpsの考え方の適用)などもある
    ■ 2018年にGoogleが提案

    View Slide

  12. 12
    そこで、今回のテーマである
    エクストリームプログラミング(XP)
    登場!

    View Slide

  13. 13
    エクストリームプログラミングとは?
    ● 1990年代:Kent Beckが開発・提案したソフトウェア開発の方法論
    ○ 「注意して、適応して、変更する」パラダイム
    エクストリーム・プログラミング、XP(英: Extreme Programming)は、 ソフトウェア品質 を
    向上させ、変化する顧客の要求への対応力を高めることを目的としたソフトウェア開発
    プロセスである。(引用: wikipedia)

    ● 変化に対応した方法論がデータサイエンスコミュニティ内で発達していないのな
    ら、ソフトウェアエンジニアリングの成熟した方法論をパクろう!

    View Slide

  14. 14
    原典である以下の書籍(2~4章)が言っていることをかいつまみながら
    機械学習・データサイエンスの文脈で解釈して読んでいきます。
    (具体的なソフトウェア開発方法よりも抽象的な考え方に注目します)

    View Slide

  15. 15
    価値・原則・プラクティス
    ● プラクティス
    ○ 具体的にエクストリームプログラミングでは何をやるのか?
    ● 価値
    ○ 好き嫌いの判断基準となるもの
    ● 原則
    ○ 価値から各プラクティス導くために必要となるもの,論点
    ● データサイエティストが好きそうな理解
    ○ 価値=公理、原則=定理、プラクティス=各定理の現実世界への応用

    View Slide

  16. 16
    ここからは5つある価値(公理)をひとつず
    つ順を追って説明していきます!

    View Slide

  17. 17
    コミュニケーション(Communication)

    View Slide

  18. 18
    コミュニケーション
    ● 最も重要な価値として位置づけられる
    ..最も重要なのは、コミュニケーションである。開発中に問題が発生したときには、すで
    に誰かが解決策を知っていることが多い。だが、その情報は変更する権限のある人に
    は伝わらない。

    ● コミュニケーションを重視することで変化に強くなる
    ○ チームに情報が行き渡り業務が個人に属人化せず、退職異動に強い
    ○ 適切な情報が早く手に入ることで、変化が起こったことに対応できる

    View Slide

  19. 19
    コミュニケーション
    ● データサイエンス業務においても聞けばわかることの方が多い
    ○ データの前処理
    ■ 取りたいデータのエンドポイント
    ■ APIから返ってくるデータ
    ■ DBに格納されているデータの形式・意味
    ○ 問題の定式化
    ■ ビジネスサイドとのコミュニケーション
    ○ アルゴリズム改善
    ■ アルゴリズムに強い人に聞きに行く

    View Slide

  20. 20
    コミュニケーション
    ● やってみるのは違う
    ● 当たり前を「エクストリーム」にやっている感覚
    ○ ドキュメントをほぼ作らず、コードで表現することを重視
    ○ Gather, オフラインペアプロ

    View Slide

  21. 21
    シンプリシティ(Simplicity)

    View Slide

  22. 22
    シンプリシティ
    ● 単純な/簡単な方法を選ぶのではなく、課題を解決するために必要十分な方法を選ぶ
    私は「最もシンプルで、上手く行きそうなものは何ですか?」と質問するようにしてい
    る。...私は、シンプルすぎてうまくいかないものについて質問しているわけではない。
    無駄な複雑性を排除するために、何ができるかをかんがえてもらっている。


    View Slide

  23. 23
    シンプリシティ
    ● 機械学習的にもシンプルなモデルの方が好まれる
    ○ より良い振る舞いをする
    ■ モデル選択
    ● 情報量基準
    ■ オッカムのカミソリ
    ● L1,L2正則化
    ○ Neural Networkで皆が使いたくなるアーキテクチャ
    ■ GAN
    ■ Attention
    ○ baselineから始める

    View Slide

  24. 24
    フィードバック(Feedback)

    View Slide

  25. 25
    フィードバック
    最初に決まった方向性が、長期間そのまま有効であることはない。...変化は割けられ
    ないものであり、変化がフィードバックを必要とするのである。

    ● 状況の変化そのものへの対処方法

    View Slide

  26. 26
    フィードバック
    ● FBが有効な3つの条件=機械学習PJではすべて当てはまる
    ○ 「正しく」やる方法がわからない
    ○ 今日は正しかったとしても、明日間違っている可能性が高い
    ○ 「正しく」やるには、時間がかかりすぎる
    ● ⇒最初から完成させるのではなく、できるだけ細かく早く多くフィードバック
    をもらって、漸進する

    View Slide

  27. 27
    フィードバック
    ● XPのフィードバック=機械学習システム全体のレベルでの勾配降下法
    ○ より多くより早く勾配方向を調べて、その方向にシステムを変化させる
    ■ =ユーザーからのFeedbackをより多くより早く得る
    システムの価値
    システムの可変要素
    人手の運用、前処理、後処理、
    モデル自体
    真の目的関数はユー
    ザーだけが知っている
    と仮定
    現時点でのシステムの出力

    View Slide

  28. 28
    勇気(Courage)

    View Slide

  29. 29
    勇気
    ● 勇気
    ○ 他の価値をより強化することができる
    勇気をもって真実を語れば(たとえそれが不愉快なことであっても)、コミュニケーション
    や信頼が強化されていく。うまくいかない解決策を捨てて、勇気をもって新しい解決策
    を見つければ、シンプリシティが促進される。勇気を持って現実の具体的な答えをもと
    めれば、そこからフィードバックが生まれる。


    View Slide

  30. 30
    リスペクト(Respect)

    View Slide

  31. 31
    リスペクト
    ● いままでに上げた4つの価値が成り立つ前提
    ○ チームメンバー・他者に対するリスペクト
    チームメンバーがお互いに関心がなく、何をしているかを気に求めないようであれば、
    XPはうまくいかない。... ソフトウェア開発に関係している人は、人間として等しく重要
    である。

    ● 研究室とかアカデミア出身だと特に気をつけた方が良いかも(自戒)
    ○ 自身の自由(な発想)を優先するあまり他者への配慮にかけたふるまいになっ
    ていないか?
    ○ もちろん、アカデミア出身の人、皆が皆そうではない

    View Slide

  32. 32
    プラクティス

    View Slide

  33. 33
    プラクティス
    ● 全員同席
    ● チーム全体
    ● 計画づくりと管理
    ○ 四半期サイクル・週次サイクル・ストーリー
    ○ 情報満載のワークスペース
    ● 実際のプログラミング作業
    ○ ペア・プログラミング
    ○ テストファーストプログラミング
    ○ インクリメンタルな設計
    ● 継続的インテグレーション・デプロイメント
    後の二組が説明・実演してく
    ださいます!
    ● 価値を実現するためのプラクティスという考えを持つ。

    View Slide

  34. 34
    データサイエンティストの再定義
    「データから価値を発見する」
    ←サイエンスの方法論によって担保
    +
    「発見した価値を継続的に生み出し続ける」
    ←エクストリームプログラミングによって担保

    View Slide

  35. 35
    締めの自論
    ● 2つの方法論を一人の人間が高いレベルで両立させるのは難しいのでは?
    ○ 重なる部分はありつつも違う部分は多いと思っている
    ■ 仕事の範囲:個としての仕事⇔チームとしての仕事
    ■ 想定アウトプット:ドキュメント(知見)⇔動くソフトウェア
    ■ コミュニケーション:一人で考える時間も重要⇔取れば取るだけ良い
    ■ スキルセット:分析・リサーチ⇔ソフトウェアエンジニアリング
    ● チームとして2つの方法論をマスターしている状態にできていれば良さそう?
    ○ コミュニケーションの断絶を防ぐため、縦割りではなく、横に割った形

    View Slide

  36. 36
    ありがとうございました!
    ● XPの価値の部分しか説明できていないため、残りの講演や原典を
    参照していただければと思います。

    View Slide