【AIF-C01】AWS AI Practitioner攻略法

<div align=center><img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921213/aaf2d5ad-97e5-97ad-29d5-521731c4bbb9.png width = 200 height =200> <img src = https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921213/14cf7df5-43cb-7751-52c4-be5c6aac8d4b.png width = 200 height =200></div>


2024年12月1日にAWS AI Practitioner（AIF-C01）を受験し、合格したものの、不甲斐ない成績に反省し、本当はどうすればより良かったのか、同じ資格を目指す方々に提案させていただきたいと思います。

私は、AWS資格試験に関しては[Cloud License](https://cloud-license.com/)に絶大な信頼を寄せています。が、2024年12月1日現在ではAIF-C01はサポートしていません。

他の問題集としては、2024年12月1日時点では[Udemy](https://www.udemy.com/course/aws-certified-ai-practitioner-certification-55-4/?kw=AIF-C01&src=sac&couponCode=24T4MT120424)と[Kindle本](https://www.amazon.co.jp/2%E9%80%B1%E9%96%93%E3%81%A7%E5%90%88%E6%A0%BC%EF%BC%81AWS%E8%AA%8D%E5%AE%9A%E8%B3%87%E6%A0%BC-AI%E3%83%97%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%BC-%E3%80%90AIF-01-%E5%AF%BE%E5%BF%9C%E3%80%91-Yuihondo-ebook/dp/B0DP3MQXF7/ref=sr_1_5?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=JWLUEZJS2SRE&dib=eyJ2IjoiMSJ9.X_C8kICXo7RcrbTvPNaJzGMA01W4veB-dHPjJgrMTyuamUmzdo7GMwXIJVbiahzMkVHfcQULCI1VXwLq51U4kq8bLbJ7_RBNvdllUIHPDhxSFr2R5MReGEcdPBjpuL7vsrdoqUP_cOrWw68ygn7jhrag7FD9qCzMgLiet-jUFmI.Z-xinMCPEJJ5TM3XWhJTxe-86BpJG9DRKfCVFg0eIPY&dib_tag=se&keywords=AIF-C01&qid=1733317533&sprefix=aif-c01%2Caps%2C230&sr=8-5)が確認できました。が、これらを丸覚えしただけでは合格は難しそうでした。とはいえ、内容は納得できるものでしたので、別の使用法を提案します。

以上を踏まえて、2024年12月時点で私の推奨する学習方法は次のとおりです。
１．退屈とは思いますが、日本語の[試験ガイド](https://d1.awsstatic.com/ja_JP/training-and-certification/docs-ai-practitioner/AWS-Certified-AI-Practitioner_Exam-Guide.pdf)には目を通して、出てくる用語は押さえておいたおいた方が良いと思います。下記に私なりに整理したものを掲載しておきます。

２．AWSの学習コンテンツには本家提供のskillbuilder（サインインが必要）というのがあって、これがデフォです。ここに[問題集](https://explore.skillbuilder.aws/learn/course/internal/view/elearning/19791/Exam-Prep-Official-Practice-Question-Set:-AWS-Certified-AI-Practitioner-AIF-C01-Japanese-)が用意されていますので、この時点での手応えをつかんでおくと良いと思います。(まぁ、英語は機械翻訳にお任せしましょう。）

３．AIF-C01のコースとしては[これ](https://explore.skillbuilder.aws/learn/lp/2193/standard-exam-prep-plan-aws-certified-ai-practitioner-aif-c01)で、英語が主体ながら日本語で読めるものも多々あります。トータルの所要時間は１８時間超となっていて、なかなかヘビーです。このうち、最初に見るべき全体ガイドともいえる[これ](https://explore.skillbuilder.aws/learn/course/19554/exam-prep-standard-course-aws-certified-ai-practitioner-aif-c01)は８時間で英語のみです。Transcriptがありますので、これをAI翻訳して読んだ後に、理解を深める必要があると感じたテーマについてテーマ毎のコースを読んで深堀する、というのが多忙なビジネスマン／ウーマンの現実ラインかもしれません。コースの本体はModule3です。Module1は「この試験ってこういうものです」といった話、Module2もAWS Trainingの紹介で、わざわざ翻訳してまで読む必要はないでしょう。Module4以降は試験手続きとかなので、他を見た方がベターです。Module3はさらに5つのDomainから構成されています。各Domainの最後には2～3の演習問題と解説がありますので、どうしても時間が取れない方は、ここだけでも見ておいた方が良いと思います。

４．理解が進んだ、と思ったら、ここで、また[問題集](https://explore.skillbuilder.aws/learn/course/internal/view/elearning/19791/Exam-Prep-Official-Practice-Question-Set:-AWS-Certified-AI-Practitioner-AIF-C01-Japanese-)を使って理解度を確認するといいと思います。

５．納得できるまで３、４を繰り返えしましょう。

６．納得できたら、UdemyかKindle本で仕上げに入るといいと思います。

７．「手を動かしてみたい」という方は、[ハンズオンセミナー](https://aws.amazon.com/jp/events/aws-event-resource/hands-on/)がありますので、やってみるといいと思います。（AI系は多くないのと、AWSのアカウントを取る必要があるのと、無料枠を超えた分には支払いが発生します。）

***
試験ガイドに出てきたAWSサービス、用語を整理してみました。

#### AWSのAIサービス
|   サービス名   | 概要 |
|:-:|:-:|
|[Amazon SageMaker](https://codezine.jp/article/detail/17232)|出来合いでは事足りない方向け<br>スクラッチで楽にAI/MLを構築し学習させられるフルマネージド（インスタンスとかの整備はAWSがやっときます）サービス（群）<br>脳みそがソーセージの塊に見えてのネーミング？|
|[Amazon Transcribe](https://aws.amazon.com/jp/transcribe)|音声からの文字おこし<br>Alexaの耳担当|
|[Amazon Translate](https://www.ctc-g.co.jp/solutions/cloud/column/article/44.html)|翻訳コンニャク（ただし音は出ない)|
|[Amazon Comprehend](https://qiita.com/JJ33/items/eaa51a0f954889d04f4c)|文字データからcomprehend（理解する）ためのネタ（固有名詞とかキーワードとか）を抽出してくれる|
|[Amazon Lex](https://qiita.com/hayao_k/items/268c333f3f383125fd30)|Alexaのネタ担当|
|[Amazon Polly](https://qiita.com/RyoWakabayashi/items/2aad1952f63b4e76b652)|Alexaの声担当|
|[Amazon Textract](https://www.ctc-g.co.jp/solutions/cloud/column/article/43.html)|手書き文字の抽出|
|[Amazon Recognition](https://ai-market.jp/services/amazon-rekognition)|画像分析|

#### [SageMaker Canvas](https://aws.amazon.com/jp/sagemaker/canvas/)（予測=回帰の機械学習）を構成するサービス
| サービス | 用途 |
|:-:|:-:|
|[Amazon SageMaker Data Wrangler](https://aws.amazon.com/jp/sagemaker/data-wrangler)|学習用データの準備|
|[Amazon SageMaker Feature Store](https://aws.amazon.com/jp/sagemaker/feature-store)|学習後のパラメータ管理共有|
|[Amazon SageMaker Model Monitor](https://aws.amazon.com/jp/blogs/news/ml-enablement-series-dark07/)|本番環境で動作する学習済みのモデルのモニタ<br>学習に使用していたデータからドリフトして性能が下がっていないか|

#### AIサービスを作る/使う
| サービス | 用途 |
|:-:|:-:|
|[Amazon SageMaker JumpStart](https://aws.amazon.com/jp/sagemaker/jumpstart/)|数回のクリックでAWSが事前構築した機械学習ソリューションをデプロイできるサービス、Just Use It!|
|[Amazon Bedrock](https://aws.amazon.com/jp/bedrock)|AWSのベンダ各社の生成AIをAWS環境で（組み合わせて）使えるようにするサービス、ファインチューン（固有の用途に適合するよう追加学習、例えば返答は名古屋弁にしたい、とか） ができる|
|[PartyRock](https://qiita.com/yu-Matsu/items/40cf32c2950f3d0e6094)|生成AIを組み込んだWebアプリケーションをローコードで作成|
|[Amazon Bedrock Playground](https://qiita.com/nasuvitz/items/2c1a614b4394c6f71c68)|複数のモデルの動作を試食（手軽に比較検討）できる|
|[Amazon Q](https://www.ctc-g.co.jp/solutions/cloud/column/article/99.html)|AIを使ってあなたのAWS体験をハッピーにします、種類はいっぱい、For（ユーザ）とIn（AWSサービス）と無印（作業）|

#### AI向けデータベース
| サービス | 用途 |
|:-:|:-:|
|[Amazon OpenSearch Service](https://aws.amazon.com/jp/opensearch-service)|これ自体はDBではない認識だが、各種データストアと連携して検索や分析を行えるようにする<br>RAG（社内文書検索）などに使われるベクトル（セマンティック）サーチにも対応|
|[Amazon Aurora](https://aws.amazon.com/jp/bedrock)|DBの種類というより、マネージド（インスタンス立てなくても使える）DBサービス<br>PostgreSQLとMySQLタイプあり|
|[Amazon Neptune](https://aws.amazon.com/jp/neptune)|グラフDB（NoSQL）<br>グラフとは数学のグラフ理論のこと|
|[Amazon DocumentDB](https://aws.amazon.com/jp/documentdb)|グラフDB（NoSQL）|
|[Amazon RDS for PostgreSQL](https://aws.amazon.com/jp/rds/postgresql)|文字どおり<br>Auroraがフルマネージドなのに対しこちらはリソース管理を各ユーザが行う|

#### 独立系
| サービス | 用途 |
|:-:|:-:|
| [Agent for Amazon Bedrock](https://dev.classmethod.jp/articles/introduction-2024-agents-for-amazon-bedrock/) | Function Calling（Tool Use）のAWS版？<br>LLMとユーザの間に入ってLLMの機能を拡張<br>下図を参照|
| [Amazon Kendra](https://docs.aws.amazon.com/ja_jp/kendra/latest/dg/what-is-kendra.html) | 社内文書検索システムを構築<br>[ハンズオンセミナー](https://pages.awscloud.com/JAPAN-event-OE-Hands-on-for-Beginners-Amazon-Kendra-2023-reg-event.html?trk=aws_introduction_page)も参照 |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921213/eab45184-be24-f26d-18da-b4ad76a2f878.png)


#### 評価
| サービス | 用途 |
|:-:|:-:|
| [Amazon SageMaker Clatify](https://aws.amazon.com/jp/sagemaker/clarify/) | モデルの出力の評価、説明、バイアスの検知|
| [Amazon A2I](https://aws.amazon.com/jp/augmented-ai) | 機械学習のワークフローに人によるチェックを入れられるようにする（業界ではHuman in the Loopという） |

#### ガバナンス
| サービス | 用途 |
|:-:|:-:|
| [Amazon SageMaker Model Cards](https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/model-cards.html) | モデルの使用上の制約、注意を利用者に提示|
| [Amazon Macie](https://aws.amazon.com/jp/macie) | 学習データ等に含まれるクレジットカード番号のような情報を除去 |
| [AWS PrivateLink](https://aws.amazon.com/jp/privatelink) | 実はAWSに立てたインスタンスとS3等のサービスの間は通常はインターネットを経由するが、それをAWSを出ないようにする |
| [AWS Config](https://qiita.com/OPySPGcLYpJE0Tc/items/0da76225e763b2911f29) | AWSに立てたサービスが自らの決めたルールに準拠しているか見てくれる |
| [Amazon Inspector](https://www.sunnycloud.jp/column/20230607-01) | セキュリティスキャナー |
| [AWS Audit Manager](https://blog.serverworks.co.jp/AWS_AuditManager) | 業界標準等に対するコンプライアンスチェッカー |
| [AWS CloudTrail](https://www.sbbit.jp/article/cont1/81207) | 誰が何のAPI使ったか、全て記録 |
| [AWS Trusted Advisor](https://business.ntt-east.co.jp/content/cloudsolution/column-485.html) | コスト削減、パフォーマンス、耐障害性の御相談承ります |
| [AWS CloudWatch](https://www.future.ad.jp/futuremedia/keyword_cloudwatch) | ログ、アラート、パフォーマンスモニタ、イベントキャッチ |

#### ２価分類問題の指標
| 名称 | 説明 | 範囲 |  |
|:-:|:-:|:-:|:-:|
| 正答率 | 文字どおり | 0～1(=100％)  | 高いほど良い |
| 適合率 | 「オオカミが来たぞ」と騒いだ時に嘘でなかった率<br>高いほど社会に適合しやすいから？  | 0～1(=100％)  | 高いほど良い |
| 再現率 | オオカミが来ていた時に見逃さず「オオカミが来た」と騒いだ率<br>高いほど再現した時にありがたいから？| 0～1(=100％)  | 高いほど良い |
| F１スコア | F値ともいう<br>適合率と再現率の調和平均（逆数の平均をとって、さらに逆数にする） | 0～1(=100％)  | 高いほど良い  |
| AUC | 面積１の正方形の左下と右上の頂点を結ぶ右上がりのカーブ（ROCカーブという、曲線で階段状の折れ線） | 事実上0.5～1<br>（0.5より低い場合は逆張りしている）  | 高いほど良い  |

#### 生成系言語モデルの指標（いずれも、0～1で高いほど良い）
| 名称 | 用途 | 説明・特徴 |
|:-:|:-:|:-:|
| ROUGE | 要約タスク<br>Gはgist（要点）の頭文字|n-gram（nは数値で、gramは文字列の意味）を使用 |
| BLUE | 翻訳タスク<br>BLはBilingual（バイリンガル）の略|n-gramを使用 |
| BERTScore | 生成系言語処理一般<br>BERTはChatGPTと同じようにTransformerという機構を採用|そもそもBERTは初めてTransformerを採用した言語モデルのこと<br>Transformerで計算したベクトルを使用<br>前の２指標に比べると比較的新しい |

***
生成AIのプロンプトエンジニアリングについては解説を読んだだけ（or APIを使用しないWebUIからのアクセスしか経験がない）では理解がおぼつかない方もいるのではないかと思い、ごく簡単なJupyter Notebookを用意しました。
https://github.com/sin-gee/CohereCommandR-RAG-for-japanese
https://github.com/sin-gee/Cohere-Prompt-Engineering-for-japanese

>生成AIの学習コンテンツとしては、[deeplearning.ai](https://www.deeplearning.ai/courses/)のshort courseが無料で優れています。ただ、全てが英語で、扱っているネタも「テーラー・スイフトが．．．」だったりして、純国産の私には辛かったため、上記のNotebookを作りました。

skilbuilderを翻訳して練習問題を作ってくれるNotebookを作ってみました。いい感じの出力が得られるよう、プロンプトエンジニアリングしてみてください。（2024/12/22追加）
https://github.com/sin-gee/StudyWithLLM
***
以上、各位の健闘を祈っております:pray: