Microsoft 資格 AI-900 / DP-100 勉強法

## Introduction

まったくもって自分の専門ではないのですが、「スキルは正義」ということで ML/AI の勉強を始めてみました。
仕事の合間を縫って 1 週間ほど勉強した成果を確認するために、とりあえず Microsoft が提供する **AI-900** および **DP-100** に挑戦しひとまず合格することができたので、私がリアルに行った必要最小限と思われる勉強法を紹介します。

ちなみに、Microsoft は ML/AI およびデータサイエンティスト系エンジニア向けに、以下の 3 つの試験を公開しています(**2020.10.20時点**）

- [AI-900: Microsoft Azure AI Fundamentals](https://docs.microsoft.com/ja-jp/learn/certifications/exams/ai-900)
- [AI-100: Designing and Implementing an Azure AI Solution](https://docs.microsoft.com/ja-jp/learn/certifications/exams/ai-100)
- [DP-100: Designing and Implementing a Data Science Solution on Azure](https://docs.microsoft.com/ja-jp/learn/certifications/exams/dp-100)

##AI-900 Microsoft Azure AI Fundamentals 編

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/b0faf59c-442a-7479-b0a8-8cbdc0028f3e.png" alt="drawing" width=200px"/>

AI-900 では、機械学習の超基本的な知識に加えて、マイクロソフトの AI 戦略および各種製品の基礎知識が問われます。

試験 AI-900: Microsoft Azure AI Fundamentals
https://docs.microsoft.com/ja-jp/learn/certifications/exams/ai-900

評価されるスキルとして以下で挙げられている通り、正直、難易度は低いです。技術的な設問に関しては、Microsoft ML Studio や Cognitive API を触ったことがある方であれば、ちょっとだけ製品知識を整理しておけば何とかなるレベルです。そして、**Python の知識は一切問われません**。基礎的な用語を知っていてツールが使えれば OK といったレベルです。

- AI ワークロードと考慮事項について説明する (15-20%)
- Azure での機械学習の基本原則について説明する (30-35%)
- Azure のコンピューター ビジョン ワークロードの機能について説明する (15-20%)
- Azure の Natural Language Processing (NLP) ワークロードの機能について説明する (15-20%)
- Azure での会話型 AI ワークロードの機能について説明する (15-20%)

ただし気を付けなければならないのは、問われるのは技術だけではないという点です。特に、「AIの責任」については重点的に勉強しておかなければなりません。マイクロソフトは、AI の責任として以下を挙げて説明しています。これに関する設問は結構多くて、各責任とその事例を正しく理解しておかないと凡ミスを犯しがちな内容になっています。

- 公平性
- 信頼性と安全性
- プライバシーとセキュリティ
- 包括性
- 透明性
- アカウンタビリティ（説明責任）

お勧めの勉強法は **Microsoft Learning** サイトが提供している無償トレーニングコンテンツの活用です。私が事前に学習したのは以下の 3 つのコースです。

**1. [Microsoft Learn : Azure で AI の使用を開始する](https://docs.microsoft.com/ja-jp/learn/modules/get-started-ai-fundamentals/)**


このコンテンツでの学習ポイントは以下の通りです。

* 機械学習とは何かについてざっくり説明できる
* 各技術のユースケース
    * 異常検出が何に使えるのか
    * コンピュータービジョンの**各機能**が何に使えるのか
    * カスタムビジョンが何に使えるのか
    * 自然言語処理が何に使えるのか
    * いわゆる Chat bot が何に使えるのか

また、このコンテンツでは明確に触れられていませんが、以下に示す ML を使用した分析法ついて、その**違い**を理解しておきましょう。

* 回帰（Regression）（教師あり）
* 分類（Classification）（教師あり）
* クラスタリング（教師なし）

加えて、**無償オンライントレーニング**が開催されることもあるので、機会があればそちらの受講も検討してみてください。自己学習よりも効率的に学習することができます。講師にチャットボックスで質問も可能なのでとてもお得です。
以下のページで、”Microsoft Azure Virtual Training Day” というキーワードで検索してみてください。
https://www.microsoft.com/ja-jp/events/search/result.aspx?pg=azure&rg=online
本日（2020.10.20）時点で AI 基礎編は公開されていませんが、そのうち公開されるのでは。。。と思います。

**2. [Azure Machine Learning で自動機械学習を使用する](https://docs.microsoft.com/ja-jp/learn/modules/use-automated-machine-learning/)**

これは演習が付いたコースなので、Azure が使える環境が必要です。演習の中では、自動機械学習を使用して**回帰**分析を行います。
この演習は絶対に行ってください。Codeless な **Azure Machine Learning デザイナー** や **自動機械学習** がどんなものかを身をもって体験しておくことをお勧めします。本当に初歩の初歩ではありますが、「あぁ、回帰分析ってそういうものかぁ」ってことがうっすら見えてきます。

また、少し細かいですが演習の中で使用する評価メトリック「**Normalized root mean square error(正規化二乗平均平方根誤差)**」という用語、そして回帰分析の結果得られるグラフの*形*も覚えておくとよいです。

![Predicted vs. True グラフ](https://docs.microsoft.com/ja-jp/learn/wwl-data-ai/use-automated-machine-learning/media/predicted-vs-true.png)

ここまで実施すれば、おそらく 600 点は取れると思いますが、合格点の700点には少し足りません。勘が冴えていれば合格できるでしょう。

そこで、頑張ってもう 1 つのコースを実施しておくことをお勧めします。

**3. [Azure Machine Learning デザイナーを使用して回帰モデルを作成する](https://docs.microsoft.com/ja-jp/learn/modules/create-regression-model-azure-machine-learning-designer/)**

このコースでは、Azure Machine Learning デザイナーを使用して、機械学習のパイプラインを自分で作成します。

この演習により、学習モデルを作成するためにどのようなプロセスを作成する必要があるのかということが、なんとなく理解できるようになります。特に重要なのはモデル作成前の、データの前処理です。

* データセット内のどの列を使用するのか（ノイズの排除）
* 歯抜けデータを削除する（ノイズの排除）
* データの正規化（各列の学習モデルに与える影響力を平準化する）
* トレーニング用データと検証用データの分割

といった超基本的な前処理をPythonコードを書くことなくデザイナーで設定することができます。

![演習で作成するパイプライン](https://docs.microsoft.com/ja-jp/learn/wwl-data-ai/create-regression-model-azure-machine-learning-designer/media/evaluate.png)

演習の最後には、ここまでに作成したトレーニングパイプラインを推論パイプラインに変換して、APIを公開する（デプロイする）ところまで行います。

ここまで完了すると、ML の世界でよく聞く以下の用語が理解できるようになります。これらについて解説している記事はいくらでもあるので、ここでの解説は割愛しますが、これらの用語も合格のカギなので**なんとなくでよいので**理解しておきましょう。

* 真陽性：True Positive (TP)
* 真陰性：True Negative (TN)
* 偽陽性：False Positive (FP)
* 偽陰性：False Negative (FN)
* Accuracy（正確率）=(TP+TN)/ALL
* Precision（精度、適合率）＝TP/(TP+FP)
* Recall （適合性、網羅性）＝TP/(TP+FN)

以上の学習で、AI-900 は完璧です。きちんと勉強していけば 900 点越えで合格できると思います。

ちなみに私は上記の学習で 940 点でした。基礎レベル試験ってことで満点を目指していたので悔しいのですが...

##DP-100: Designing and Implementing a Data Science Solution on Azure 編**

<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134539/48a53dc6-760c-e3e1-7a0d-f42ba2e8d8c5.png alt="drawing" width=200px"/>

AI-900 に合格したら、その上位試験にもチャレンジしたくなります。AI-100 (100があるってことは、今後 200 や 300 も出てくる??) も考えたのですが、久しぶりにプログラミングもやってみたかったので Python色の強い DP-100 を選択しました。

私が行った対策は極めてシンプルです。AI-900 用の勉強 + Python の復習 + ML をちょこっと。

Python は前部署で割と書いていたので全く新しい言語というわけではなかったのですが、それでも1年以上触っていなかったので改めて基礎勉強を行いました。

Microsoft Learn にはとても有用な演習が用意されています。

1.**[Python の最初のステップ](https://docs.microsoft.com/ja-jp/learn/paths/python-first-steps/)**

このコースは 10 個のモジュールで構成されており、完了するまでにまる 1 日程度かかるのですが、とても有用です。演算子の使い方から配列、モジュールのインストールなど、基礎の基礎を叩き込む演習です。

Python を初めて触る方や、ときどき触るけどついコピペで済ませちゃう。。。なんて方にはお勧めのコンテンツです。

2.**[DP-100: Azure でのデータ サイエンス ソリューションの設計と実装](https://github.com/MicrosoftLearning/DP-100JA-Designing-and-Implementing-a-Data-Science-Solution/blob/master/labdocs/README.md)**

上記 Microsoft Learn に加えて、Python を ML でどう使うか。。。についても学習しておく必要があります。そのために最適なコンテンツがこちらです。

これは、マイクロソフトが提供する有償トレーニングで使用されるハンズオンラボです。トレーニングを受けるためには有償ですが、ハンズオンラボの手順だけは GitHub 上で無償で公開されています。

全部で 10 個のラボがあり、いずれも **Azure の環境準備＋Jupyter Notebook を使った演習** という流れになっています。よって、一部を除いて Azure のサブスクリプションが無いと実施することができません。

Jupyter Notebook (Azure Machine Learning から使用できます) 内の解説はすべて英語ですが、ここはあまり気にはならないです。

私は時間の都合で、**モジュール 3: 実験とモデルのトレーニングの実行** までしか実施できませんでしたが、なんとかギリギリで合格できました（ほんとギリギリ。。。）。

私のような初心者にとっては技術的な難易度は高かったですが、普段から仕事や趣味でMLしている方にとっては簡単すぎて眠くなる内容なのだと思います。

ただ、AI-900 で身に着けた知識が大活躍することも事実です。特に、「何かをするには何を使うか?」といった設問が多かった印象があり、これらは AI-900 で勉強した内容で十分回答（もしくは推測）することができます。

Python を直接書かせるという演習タイプの問題は無いので、スクラッチで開発するほどのスキルは求められていません。それよりも、最適なモジュールやロジックを選択したり、提示されたコードを正しく読み取れるか。。。といったところが問われます。

かといって、幅広くかつ深く勉強する必要はなく、この**演習で使われている程度の内容**さえ把握しておけば**試験合格**には問題ないでしょう。

感覚的で恐縮ですが、

*Azure に関係ない純粋な ML に関する設問 40%
*Azure Machine Learning に絡めた設問 60%

といった感じかな。。。