【Azure】AI-102の試験対策

## AI-102とは
Azureの資格の一つでAIに関する知識・ソリューションの構築や管理、開発に関する試験になります。
難易度は中級者向けで、スコア700以上で合格になります。
試験に合格すると、```Azure AI Engineer Associate```という認定資格を取得できます。

https://learn.microsoft.com/ja-jp/certifications/exams/ai-102/

#### AI-102はまだ自身がないという方へ

AI-102より1個下のランクで```AI-900```というのがありますので、まずはAI-900を受けてみるのをおすすめします。

https://learn.microsoft.com/ja-jp/certifications/exams/ai-900/

## 試験内容（7/20での内容）

7月20日に受験した時は問題は43問ありました。
問題数は毎回増減するそうなので約50問ほどあると思っていただければと思います。

#### 1. 基本問題
見直しもすることができて、下の三つの形式の問題がランダムで34問出てきました。 

**【ケース1】** こんな機能のアプリを作りたいのだが、最適なサービスは？
>例）工場のラインで不良品を検知するシステムを開発したいと思ってます。
この場合どのサービスが最適ですか？
1 Computer Vision
2 物体検出
3 Anomaly Detector
4 Content Moderator

**【ケース2】** このサービスを構築してデプロイするまでの最短の手順を並び替えろ
>例）物体検出をデプロイするまでの最短の手順になるように並び替えてください。
1 デプロイ
2 画像にタグをつける
3 画像をアップロード
4 トレーニング


**【ケース3】** ソースコードを見て、抜けている箇所に適切なメソッドを選択（ドロップダウン形式です。）
> <ここに入る最適なものは？>/translator&from=en?to=es?to=ja
1 api.cognitive.microsoft.com
2 wwww.〇〇.com
3 us-es.〇〇.com


#### 2. 二択問題
こちらは基本問題を一度最後まで終わらせると、次に出題されます。
ここの問題は解いてる中は見直しできますが、一度終わらせてしまうと再度戻ることはできませんのでご注意ください。

**【問題形式】** 課題を出されて、〇〇のサービスを使えば解決できるかできないかの二択
> とあるSNSに載せられている自社に関するコメントを集めて、一般の評価がどんなものか調べたいと思っています。
この時、Anomaly Detectorを使えば、やりたいことは解決できるでしょうか？
はい or いいえ

#### 3. 最終問題
こちらは上の二つを終わらせて見直しも完了すると問題を解くことができるようになります。
ですので、最終問題を解く前に基本問題と二択問題を完全に解く必要があります。

この問題は前提条件が書かれている資料が8つほどあったりして、
理解するまでに時間がかかるので、2,30分は確保しておきたいです。

**【問題形式】**　アプリ・システムの仕様、今後作りたい機能などが載せられたドキュメントを見ながらの問題
> ドキュメントの内容
・　Bot Serviceの編集は社員誰でもできる様にする。ただし反映させることができるのは課長以上の人だけとする
・　今後Bot Serviceはスペイン語と英語に翻訳できる様にしたい
・　今後のことを見越して複数のサービスを単一のエンドポイントで利用できるようにしたい
・　また、Bot Serviceと並行して、工場で異常品を検知するシステムも作りたいと考えている
問題1. 以上の内容より、今回のシステム作成に最適なAzureのサービスは以下のうちどれでしょうか？
1 Speech Service
2 Custom Vision
3 Azure Cognitive Services
4 Azure Cognitive Search

## 試験範囲のサービス一覧
*  **Azure Cognitive Services**
> AzureのAI系サービスを集めた統合サービス。
言語、音声、視覚などの人間の認知（Cognitive）に基づくAIを提供してくれます。
強みとしては学習済みAIサービスを提供してくれるので、データを入力するだけで利用することができます。
また、単一のエンドポイントとkeyで色々なサービスに使うことができます。

* **Azure Cognitive Search**
> AIを利用したクラウド検索サービスです。
BlobやDBに保存されているドキュメントファイルやJSONデータを見て、該当しそうなものを検索してくれます。
また音声データや画像といった非構造データも認識して検索に利用することができます。
個人的に触ったことないのもあって、indexerやskillsetあたりの概念を理解するのが難しかったです。

* **Azure Bot Service**
> ボット構築用の統合開発環境を提供してくれます。
Bot Framework SDKやBot エミュレータといったところが試験に出てきます。
またアダプティブカードはいつ使うのか、テキストカードはいつ使うのかなども把握しておいた方が良いので、一度軽くBotを作ってみるのをお勧めします。

* **LUIS（言語理解サービス）**
> Azureの会話言語理解サービス。
意図・機能・発話・エンティティがそれぞれどういった意味なのかを理解すること。

* **Video Indexer**
> ビデオ映像から写っている人の検出や光学式文字認識、翻訳などをすることができます。
ショット・シーン・キーフレーズがそれぞれどういった意味なのかを理解すること。

* **Face API**
> ここでは検出・識別・確認（Verify）・グループ化・属性など顔に関してのそれぞれのユースケースに合わせた使い方が求められます。
〇〇をしたいときにはFace APIの何を利用すれば良い？といった問題が出題されます。

* **Translator**
> 翻訳サービス。
言語の検出から1対多の翻訳をすることができます。
翻訳元の言語は```from```,翻訳先の言語は```to```とすること。

* **Speech**
> 音声からテキスト変換...Speech To Text
テキストから音声に変換...Text to Speech
...
クライアントアプリケーションから使用する際は、リソースがデプロイされている```リージョン（場所）```を指定する必要があります。←よく問題でも出てきて実際に試験でも出てきました！


* **Anomaly Detector**
> 異常検出サービス
Content Moderatorや物体検出の問題によく選択肢として入っているの注意。

* **Content Moderator**
> 不快感を与える可能性がある内容やリスクのある内容などを管理してくれるサービス。
テキスト以外にも画像やビデオも対応しています。
またコンテンツモデレーターは言語APIではなく、意思決定APIであることも間違えないこと！

* **Form Recognizer**
> ドキュメントからキーと値のペアとテーブルデータを識別して、抽出するサービス。
光学式文字認識(OCR)が使用されている。
事前構築済みモデルとして、請求書や身分証明書、名刺があります。
またPDFやMicrosoft wordといったファイル形式から分析してドキュメント構造を含むJSONファイルを返してくれます。
「企業の経理業務で、請求書の処理を改善したい」といった問題があれば、こちらになります。

* **Computer vision**
> 事前構築済みモデルを利用して画像分類・物体検出、画像分析をすることができます。
その他にも顔検出や、文字認識（OCR）、サムネイル作成など画像に関することはなんでもできるサービスです。
画像分類では「評価の指標は何か？」といった問題はよく出てきます。精度と再現性とリコールのそれぞれの違いを理解しておきましょう。

* **Custom vision**
> 画像の分析、分類モデルを自前で作成することができます。
Computer Visionとの違いはモデルをユーザーが独自に作ることができるかできないかです。

* **物体検出**
> Computer Vision, Custom Visionの一機能となります。
画像ないから1つまたは複数のクラスの存在と位置（境界ボックス）を検出します。
事前に画像のラベル付けが必要です。


## 出てこない・範囲外のサービス
* **Azure Machine Learning**
> Azure Machine LearningはAI-900ではたくさん問題が出てくるのですが、AI-102では全く出ませんでした。
また分類や回帰などのユースケースに関する問題も出てきまんでした。

* **Azure OpenAI Service**
> 流行りのOpenAI Seriviceは試験の範囲外です。
もしかしたら今後追加される可能性はありますが、GPTやCodexなどについて勉強する必要はないです。

## 学習法
#### 1. 実際にリソースを作成して、各サービスを触ってみるのが一番
上に記載の通り、試験ではソースコードから読み解いて正解を出す問題だったり、デプロイまでの構築手順を並び替える問題が出てきます。
丸暗記することも可能ではありますが、実際に触ってみて、ソースコードをいじってみたりデプロイまでやってみると体系的に学べます。
さらに基本的には、デプロイまで無料で使えるサービスがほとんどなので金額面は気にすることはないです。

#### 2. Udemyの講座を解く
Udemyに模擬試験が4つ入っている講座があり、これが一番試験に近い形式・難易度の問題でした。
4つ入ってますが、4回分あるというよりは4パターンの問題が各50問ずつあるって感じです。
一点注意が必要で、講座が英語なので、日本語翻訳しながら進める必要があります。。。
そこさえ苦でなければ、この講座が一番おすすめです。

おすすめの講座

https://www.udemy.com/course/microsoft-certified-azure-ai-engineer-associate-ai-102/

#### 3. Azure Learnの無料問題集もあるが、ここ以外も勉強が必要
Azureの方で無料のテスト問題がありますが、ここから出題される問題は半分もない（1/3くらい）ので、ここをひたすら反復練習するのはお勧めできないです。
内容も基礎的な内容なので、ここから出題される問題は**解けて当然**くらいにしておけば良いと思います。

## その他試験について
#### 試験会場での受験がおすすめ
AI-900を受験した際にオンライン受験をしたのですが、OSの問題なのか不明ですが、アプリがとても重たくてあまりスムーズに進めることができませんでした。
また、オンライン受験だと自宅で試験を受ける環境もかなり厳しくチェック（カンニングになりかねないものは全て取っ払う必要があり、顔もPCのカメラ内から外れては行けないなどなど）があるので、近くに試験会場があるのであれば、試験会場に出向くことをおすすめします。
今回のAI-102では試験会場で受験しましたが、環境が整っててストレスフリーで試験を受けることができました。

#### 多少プログラミング言語の経験は必要
問題でプログラムの関数内に穴埋めする問題があったりするので、プログラミングの知識は多少ながらあったほうがいいと思います。

#### 試験対策は現状英語のみ
問題集とか試験対策の日本語版は調べたところないので、勉強は海外のドキュメントを翻訳調べながら進めることになります。
ちょっと大変ですが、最近できたばかりの資格なので頑張って取りましょう！