$30 off During Our Annual Pro Sale. View Details »

機械学習ことはじめ / Beginner's Guide to Machine Learning

hhiroshell
November 26, 2019

機械学習ことはじめ / Beginner's Guide to Machine Learning

機械学習プロジェクトを始めるに当たって、はじめに何を考えなければ行けないかを解説しています。
Oracle Big Data Jam Session #1での発表資料です。
https://oracle-code-tokyo-dev.connpass.com/event/149675/

hhiroshell

November 26, 2019
Tweet

More Decks by hhiroshell

Other Decks in Technology

Transcript

  1. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    機械学習ことはじめ
    早川 博 | @hhiroshell
    日本オラクル株式会社
    クラウド事業戦略統括 ソリューション・エンジニア
    Oracle Big Data Jam Session #1

    View Slide

  2. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    Safe Harbor Statement
    The following is intended to outline our general product direction. It is intended for
    information purposes only, and may not be incorporated into any contract. It is not a
    commitment to deliver any material, code, or functionality, and should not be relied upon
    in making purchasing decisions. The development, release, timing, and pricing of any
    features or functionality described for Oracle’s products may change and remains at the
    sole discretion of Oracle Corporation.
    2

    View Slide

  3. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    3
    自己紹介
    @hhiroshell
    早川 博(はやかわ ひろし)
    • Data Science / Cloud Native な技術領域担当のプリセールスエンジニア
    • エンジニアコミュニティ 「Cloud Native Developers JP」 オーガナイザー
    • Developers Summit 2018、Japan Container Days 12.18 登壇

    View Slide

  4. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    本セッションで話すこと
    • MLプロジェクトを始めるにあたっての、最初のとっかかりの話をします。
    4

    View Slide

  5. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    目次
    1. イントロダクション – 機械学習にまつわるビジネストレンド
    2. 機械学習プロジェクト 始めの一歩
    3. まとめ
    5

    View Slide

  6. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    目次
    1. イントロダクション – 機械学習にまつわるビジネストレンド
    2. 機械学習プロジェクト 始めの一歩
    3. まとめ
    6

    View Slide

  7. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. 7
    FinTech
    Risk Analysis, High-Frequency Trading
    Retail
    Recommendation Engines, Customer Analysis
    Healthcare
    Drug Testing, Cancer Research
    Market Revenue for Big Data
    by 2027
    $103B
    The rate at which big data on cloud
    is outpacing on-premise
    4.5X
    of executives say that their companies will
    lose edge and face extinction without
    embracing big data
    79%
    Data Driven Transformations: Multi Billion Opportunity
    ※ Oracle Modern Cloud Day Tokyo 2019 「Oracle Cloud Infrastructure データ管理 – Big Dataおよびデータベース」/ Usman Khan より

    View Slide

  8. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    8
    意思決定だけではない、新規ビジネス創出を見据えたデータ活用へ
    データドリブン経営のその先へ
    企業の意思決定のための
    データ活用
    企業経営の意思決定のために
    データとアルゴリズムを活用す

    既存ビジネスの効率化、
    高付加価値化
    既存ビジネスをデータによって
    改善し、より高いビジネス利益
    を得る
    e.g.)
    スマートファクトリー、保険取引における
    リスク分析
    新規ビジネスの創出
    機械学習、AIなど、より高度な
    データ活用によって、新たなビ
    ジネスを創出する
    e.g.)
    AIチャットボット、企業人材分析コンサル
    ティングサービス

    View Slide

  9. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    9
    企業におけるデータ活用があらゆる分野重要に
    ユースケース
    Marketing
    Response Models
    Scheduled Jobs
    Customer churn
    APIs
    Text sentiment
    analysis
    Reports
    Lifetime Value
    Apps
    Computer vision
    and image tagging
    Apps
    Transactional data
    ETL
    Scheduled Jobs
    Forecasting
    Reports
    Risk management
    with machine
    learning
    APIs
    Recommendation
    engines
    APIs
    Data discovery and
    auditing
    Reports

    View Slide

  10. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    1. MLで解くべき問題かどうかの見極め
    が難しい
    – MLで解けない問題は、MLでいくら頑張っても
    解けない
    – 手段先行でMLを採用すると、最悪投資が無駄
    になってしまう可能性も
    2. MLシステムの構築、運用には高度な
    ノウハウが必要(c.f. MLOps)
    – 学習データの収集、前処理
    – 予測モデルを実システムに組みこんでの利用、
    管理・運用
    …etc
    10
    機械学習(ML: Machine Learning)プロジェクトの難しさ
    ビジネス課題の設定と MLシステムの構築運用- 両面をクリアする必要がある
    Why ? How ?

    View Slide

  11. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    課題1: MLで解くべき問題かどうかの見極めが難しい
    • MLプロジェクトの主な失敗原因
    – MLを使わなくても十分効率的に対応できる
    – MLでは精度が十分でない
    – 学習データの入手に費用がかかりすぎる
    – システムを作ったはいいが使われない(重要でない)
    11
    MLが得意としない課題をMLで解こうとして、多くのプロジェクトが失敗している


    「これまで開発系のプロジェクトは46つありました。そのうち15つは何らか
    の形で日の目を見ています。しかし、11つは完全に失敗、もしくはお蔵入り
    したプロジェクトです。感覚としては、大体3分の1は形になり、3分の1はお
    墓に持って行き、残り3分の1は継続審議中。そんな割合で進んでいます」
    ※ https://ledge.ai/theai-3rd-dentsu/

    View Slide

  12. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    課題2: MLシステムの構築、運用には高度なノウハウが必要
    • システムとして継続的に価値を生み続けるには、予測モデルを作るだけ
    では足りない
    • 一般的なシステムとしての構築、運用ノウハウに加え、MLならではの考
    慮事項も
    12
    DevOps的な開発、運用に加えて、MLならではの考慮事項あり
    ※ https://papers.nips.cc/paper/5656-hidden-technical-debt-in-machine-learning-systems.pdf

    View Slide

  13. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    目次
    1. イントロダクション – 機械学習にまつわるビジネストレンド
    2. 機械学習プロジェクト 始めの一歩
    3. まとめ
    13

    View Slide

  14. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    1. MLで解くべき問題かどうかの見極め
    が難しい
    – MLで解けない問題は、MLでいくら頑張っても
    解けない
    – 手段先行でMLを採用すると、最悪投資が無駄
    になってしまう可能性も
    2. MLシステムの構築、運用には高度な
    ノウハウが必要(c.f. MLOps)
    – 学習データの収集、前処理
    – 予測モデルを実システムに組みこんでの利用、
    管理・運用
    …etc
    14
    【再掲】 MLプロジェクトの難しさ
    ビジネス課題の設定と MLシステムの構築運用- 両面をクリアする必要がある
    Why ? How ?

    View Slide

  15. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    MLプロジェクトを始めよう
    • MLで解くべき問題かどうかを見極めよう - why
    • MLシステムの構築、運用ノウハウを学ぼう - how
    15
    ここまでで紹介したMLプロジェクトの課題を紐解いて行きましょう

    View Slide

  16. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    その前に… ML is 何 ?
    • 新しい入力データに対し何らかの予測、判定、分類等の結果を出力する
    • 1)過去のデータから法則性(予測モデル)を獲得する学習フェーズと、2)新
    しい入力に対して法則を適用して結果を出力する予測フェーズがある
    (教師あり学習の場合)
    16
    未知の入力データに対し、意味のある予測、判定、分類を行う
    ① 学習フェーズ ② 予測フェーズ
    Input
    正解データ
    予測モデル 予測モデル
    Input Output

    View Slide

  17. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    MLプロジェクトを始めよう
    • MLで解くべき問題かどうかを見極めよう
    • MLシステムの構築、運用ノウハウを学ぼう
    17
    ここまでで紹介したMLプロジェクトの課題を紐解いて行きましょう

    View Slide

  18. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    MLで解くべき問題かを見極める 1/3
    • 具体的な解き方をセットにした課題設定を考える
    – 例)
    • ☓ ECサイトの売上を上げる
    • ○ ECサイトの売上を上げるために、ユーザー毎におすすめ商品を提示する
    18
    課題設定を正しく行うことで、予測モデルが作成可能なタスクに落としこむ

    View Slide

  19. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    MLで解くべき問題かを見極める 2/3
    • MLを適用できる必要条件を満たしているどうかを判断する
    – よい例)
    • ECサイトの全利用者に対し、購買・閲覧履歴を元におすすめ商品を提示する
    – よくない例)
    • 正解率99%の手書きテキストの文字起こし → 100文字当たり1回ミス。用途によっては足りない
    • 文字列を自動生成してつぶやくAIボット→ 人種差別的と取れる発言など、一発で大炎上
    19
    大量の予測処理をこなせるが、100%の精度にはならないことに注意
    MLの適用領域の必要条件
    ✓ 大量のデータに対して、高速に安定して判断を求める必要がある
    ✓ 予測結果に一定数の間違いが含まれることが許容できる(MLは100%の精度にはできない)
    ※ 「仕事で始める機械学習」 / 有賀康顕、中山心太、西林孝 著

    View Slide

  20. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    MLで解くべき問題かを見極める 3/3
    • アルゴリズムの実現性と費用対効果
    を検討する
    1. 解きたい課題に適したアルゴリズムを
    ピックアップする
    2. 学習を行うための教師データの入手性
    を確認する
    • データの性質によってはアルゴリズムにマッチし
    ない可能性も
    3. モデルの作成や維持にかかる費用と、
    得られる効果とのバランスを考慮する
    • ML以外の手段で安価に実現できないか
    20
    実現性と費用対効果をチェック

    アルゴリズム
    の選定

    費用対効果
    の妥当性の
    検討

    教師データの
    入手性の
    検討

    View Slide

  21. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    MLのいろいろなアルゴリズムを抑えておく
    • アルゴリズムは分類、回帰、クラスタリングなどに大まかに分類できる
    21
    アルゴリズムの概略を知ることが、MLを適用できるかを判断する上で重要
    大分類 できることの概要 教師あり/なし 具体的なアルゴリズムの例
    分類
    (Classification)
    入力データを離散的なカテゴリにマッピングする
    例)手書き文字の画像を文字コードにマッピング、メー
    ルがスパムかどうかを判定
    あり ・パーセプトロン
    ・ロジスティック回帰
    ・ニューラルネットワーク
    回帰 入力データから連続値を予測する
    例)年齢から収入を予測
    あり ・線形回帰
    ・多項式回帰
    クラスタリング データの集合から似たもの同士を見つけて分類
    例)ログデータをログレベル別に分類(INFO,ERROR,…)
    なし ・階層的クラスタリング
    ・k-means
    次元削減 多次元データを少数の次元に要約する
    例)5課目の成績を文系/理系スコアに要約
    なし ・主成分分析

    View Slide

  22. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    【参考】 scikit-learnのアルゴリズム・チートシート
    • 解きたい課題やデータ
    の特性に応じて、適切
    なアルゴリズムの選定
    を助けてくれる
    • アルゴリズム名 を
    選択すると、その詳説
    に飛ぶ
    22
    アルゴリズムの学習の補助として…。
    ※ https://scikit-learn.org/stable/tutorial/machine_learning_map/

    View Slide

  23. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    アルゴリズムの紹介 1/2 – 分類
    • 入力データを離散的なカテゴリ(クラス)にマッピングする
    – クラスが2つの場合「二クラス分類」、3つ以上の場合「他クラス分類」と呼ぶ
    – 例: 手書き文字の画像を文字コードにマッピング、メールがスパムかどうかを判定
    • パーセプトロンによる二クラス分類の例
    23
    x1
    x2
    パーセプトロンの予測モデル:
    入力ベクトルの積和(重みをかけて合計)を二値に分ける

    w1
    w2
    積和 二値化
    0/1

    x1
    x2
    入力ベクトルで決定する座標空間を
    直線(超平面)で分割するイメージ

    View Slide

  24. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    アルゴリズムの紹介 2/2 – 回帰
    • 入力データから連続値を予測する
    – データを直線(平面)で近似するものを線形回帰、曲線(曲面)で近似するもの多項
    式回帰とよぶ。その他、補正項を追加するなどのバリエーションある
    – 例)年齢から収入を予測、 都市の人口/地理動態から電力消費量を予測
    • 線形回帰の例
    24
    x1
    x2
    線形回帰の予測モデル:
    入力ベクトルの積和を出力とする

    w1
    w2
    積和
    y

    x1
    y
    x2
    入力座標を近似した平面の、関数を導出するイメージ

    View Slide

  25. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    MLプロジェクトを始めよう
    • MLで解くべき問題かどうかを見極めよう
    • MLシステムの構築、運用ノウハウを学ぼう
    25
    ここまでで紹介したMLプロジェクトの課題を紐解いて行きましょう

    View Slide

  26. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    MLシステムの構築、運用の全体 – 作業フローの観点
    • 予測モデルの作成前後にもクリアしなければいけないタスクが多数
    – データの収集と前処理、予測モデルの実システムでの利用、管理・運用
    26
    MLのフロー全体に対応した基盤の構築・運用が必要
    データ収集 データ解析 データ整形 データ検証 データ分割
    アルゴリズムの選定
    (探索的な作業)
    アルゴリズムの評価 教師データによる学習
    予測モデルの評価 サービスへの組み込み 監視とロギング

    View Slide

  27. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    MLシステムの構築、運用の全体 – 作業フローの観点
    • 予測モデルの作成前後にもクリアしなければいけないタスクが多数
    – データの収集と前処理、予測モデルの実システムでの利用、管理・運用
    27
    MLのフロー全体に対応した基盤の構築・運用が必要
    データ収集 データ解析 データ整形 データ検証 データ分割
    アルゴリズムの選定
    (探索的な作業)
    アルゴリズムの評価 教師データによる学習
    予測モデルの評価 サービスへの組み込み 監視とロギング
    データの準備
    予測モデルの作成

    View Slide

  28. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    • 特徴量
    – 学習データとして利用する前に入力
    データを加工して特徴量とする
    • ETL等、収集・整形に適したツールを検討
    – データの特性に応じて格納場所を検
    討する
    • RDBMS、HDFS、Object Storage
    • 分類ラベル、予測値
    – 正解は機械的には生成できない。収
    集のための工夫が必須
    • 公開されたデータセットの利用
    • クラウドソーシングなどで依頼して人手で
    データ作成
    • サービスに正解を入力してもらう仕組みを組
    み込む(例:reCAPTCHA)
    28
    データの準備
    Input Output
    ✓教師あり学習では特徴量(入力)と分類ラベルや予測(正解)を準備

    View Slide

  29. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    29
    データの前処理
    ✓ 予測モデルは特徴量の抽出処理(特徴抽出)とセットにして意味を成す
    ✓ 予測モデルとともに、特徴抽出時の処理内容とパラメータをセットにして保存
    (データパイプライン)し、予測時にも利用する
    ① 学習フェーズ
    Input
    正解データ
    予測モデル
    特徴抽出
    (ロジック+パラメータ)
    ② 予測フェーズ
    予測モデル
    Input Output
    特徴抽出
    (ロジック+パラメータ)

    View Slide

  30. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    30
    データの前処理
    ✓ 予測モデルは特徴量の抽出処理(特徴抽出)とセットにして意味を成す
    ✓ 予測モデルとともに、特徴抽出時の処理内容とパラメータをセットにして保存
    (データパイプライン)し、予測時にも利用する
    ① 学習フェーズ
    Input
    正解データ
    予測モデル
    特徴抽出
    (ロジック+パラメータ)
    ② 予測フェーズ
    予測モデル
    Input Output
    特徴抽出
    (ロジック+パラメータ)
    データパイプライン データパイプライン

    View Slide

  31. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    データパイプラインの管理
    • データパイプラインを定義・管理するためのOSSやサービスも充実
    • OSS:
    – Apache Airflow
    – Argo
    – DigDag
    • サービス:
    – Cloud Composer(GCP)
    – OCI Data Integration Service (commig soon..)
    31

    View Slide

  32. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    予測モデルの作成
    • OSSで定番のツール、ライブラリが充実
    • クラウドで利用できる環境も充実してきている
    – AI Platform Notebooks(GCP), AWS SageMaker, databricks, OCI DataScience
    32
    – Jupiter Notebook
    • ノートブックと呼ばれるファイルにプログ
    ラム片や説明文、実行結果などをまとめ
    て管理できる、データ分析用のツール
    – Pandas
    • データ解析用の定番のPythonライブラリ
    – TenserFlow
    • ニューラルネットワーク向けのPythonライ
    ブラリ
    ✓ 教師データの一部を使って試行錯誤しながらアルゴリズムの当たりをつけ、その後
    全データで学習行って予測モデルを仕上げる

    View Slide

  33. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    33
    サービスへの組み込み
    ✓ プロダクションレベルの機能として利用するには、アプリケーション及びインフラの
    設計・実装・運用の知見が必要
    ✓ 予測モデルは精度を維持するために定期的に更新する必要があるため、CI/CD
    (継続的インテグレーション/継続的デリバリー)の仕組みも必要
    予測モデルをリアルタイムに実行する例 予測モデルを事前実行して結果を利用する例
    Input
    特徴抽出器
    バッチ系
    API
    正解
    アプリ
    学習器
    Input
    特徴抽出器
    学習系
    正解
    アプリ
    学習器
    予測系
    バッチ系

    View Slide

  34. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    予測モデルを組み込んだシステムの運用
    • 予測精度のモニタリング
    – 予測モデルの精度を測るKPIを設定し、それをモニタリングするのが基本
    • 例) レコメンド結果のクリック率、Webサイト上の滞在時間…etc
    • 予測モデルの更新
    – A/Bテストを実行する仕組み(c.f. CI/CD)を構築し、更新、切り戻しを容易にしておく
    – 精度計測用のデータセットを用意し、精度が一定以上であることをモデル作成毎に
    チェック
    34
    ✓ アプリケーションを運用するという意味での一般的な監視・ロギングは必要
    ✓ 入力の傾向の変化によって予測モデルの精度が劣化することがある。このため、
    予測精度をモニタリングしたり、一定の頻度で予測モデルを更新する必要がある

    View Slide

  35. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    35
    大変だ…。

    View Slide

  36. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    【PR】 Oracle Cloudで省力化!
    • Oracle CloudのData Platformサービスを使って、MLプロジェクトを成功させ
    ましょう!
    36

    View Slide

  37. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    目次
    1. イントロダクション – 機械学習にまつわるビジネストレンド
    2. 機械学習プロジェクト 始めの一歩
    3. まとめ
    37

    View Slide

  38. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    1. MLで解くべき問題かどうかの見極め
    が難しい
    – MLで解けない問題は、MLでいくら頑張っても
    解けない
    – 手段先行でMLを採用すると、最悪投資が無駄
    になってしまう可能性も
    2. MLシステムの構築、運用には高度な
    ノウハウが必要(c.f. MLOps)
    – 学習データの収集、前処理
    – 予測モデルを実システムに組みこんでの利用、
    管理・運用
    …etc
    38
    【再掲】 MLプロジェクトの難しさ
    ビジネス課題の設定と MLシステムの構築運用- 両面をクリアする必要がある
    Why ? How ?

    View Slide

  39. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    やっていきましょう!
    • Data scientists and DevOps engineers top the list of tech jobs with the
    best earning potential and highest satisfaction rates.
    39
    ※ https://www.techrepublic.com/article/the-10-best-tech-jobs-in-america-for-2018/

    View Slide

  40. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    参考文献 1/2
    • 「仕事で始める機械学習」
    – https://www.oreilly.co.jp/books/9784873118215/
    • 「Hidden Technical Debt in Machine Learning Systems」
    – https://papers.nips.cc/paper/5656-hidden-technical-debt-in-machine-learning-
    systems.pdf
    • 「Kubeflow Project: Deep Dive」
    – https://schd.ws/hosted_files/kccnceu18/d4/Kubeflow_Deep_Dive.pdf
    • 「失敗から学ぶ機械学習応用」
    – https://www.slideshare.net/HiroyukiMasuda1/ss-181844477
    40

    View Slide

  41. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    参考文献 2/2
    • 「ZOZOTOWNにおける画像検索の運用・改善について」
    – https://speakerdeck.com/trsnium/operation-and-improvement-of-image-search-
    platform
    • 「ZOZOの画像検索でのMLOps実践とGKEインフラアーキテクチャ」
    – https://docs.google.com/presentation/d/e/2PACX-1vQGsnZk1BAetbRkkoM-
    sz8IdE_Em9tT2jcKa0WvklyBuXEh5-Mk0CLAvKU4K46x5Vr2tt6il_ijXTOJ/embed
    • 「Introduction to Kubeflow 0.1 and future」
    – https://speakerdeck.com/masayaaoyama/introduction-to-kubeflow-0-dot-1-and-
    future-at-cloud-native-meetup-tokyo-number-2
    41

    View Slide

  42. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    42
    Fin.

    View Slide

  43. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    Safe Harbor Statement
    The preceding is intended to outline our general product direction. It is intended for
    information purposes only, and may not be incorporated into any contract. It is not a
    commitment to deliver any material, code, or functionality, and should not be relied upon
    in making purchasing decisions. The development, release, timing, and pricing of any
    features or functionality described for Oracle’s products may change and remains at the
    sole discretion of Oracle Corporation.
    43

    View Slide

  44. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.
    #orajam
    44

    View Slide

  45. View Slide