AI-900の参考書記事として、Azure Learn、Azureのドキュメント、Microsoft Azure AI Fundamentals trainingの内容をまとめました。

IT全般の知識は多少あるけど、AIとAzureはあんまり知らないという方向けに、Azure資格のAI-900の参考書として試験対策に役立てていただけるように文章を書いています(AIもAzureも詳しい人は勉強しなくても受かります)。

あくまで、試験で問われる範囲の表面的な話しか載せていません。軽く最初から最後まで読んで、AI-900合格に必要な知識を整理していただければと思います。尚記事の内容は2021年4月にリニューアルされた新しい試験内容に対応してます。

AI-900の概要

Azureの資格には基礎、アソシエイト、プロフェッショナルと3つの難易度がありますが、AZ-900はAIや機械学習に関する基礎の難易度にあたるAzure資格になります。

受験対象者は、エンジニアだけではなくAzureのAI関連サービスを全ての人になってます。なので、AIモデルを構築しない、もしくはこれから構築する人(非技術職や学生など)も受験可能になってます。

実際問題、営業の方やユーザーの方でシステム開発に全く関わらない方、学生の方が予備知識なしでこの資格を取得できるかという話ですが、他のAzure資格と比較すると、サーバー、ネットワーク、データベースといったIT知識を要求されないので、機械学習の基礎的な知識(分類・回帰とは何かなど)があれば、合格できると思います。

分類?回帰?という人は下の記事を一読していただければと思います。

出題事項

公式のシラバスから、

AI-900の試験範囲は5つの章に分かれています、と言ってもざっくりとした分類なので問題をはっきり分類するのは難しい感じです。1章と2章はAI全般の話で、残りの3章、4章、5章は画像、言語、会話と具体的なAzureのAIサービスについての説明が続きます。

  1. AI、機械学習モデル構築プロセスと検討事項の理解 (15-20%)
    AzureのAIサービスはどうやって利用するのか?
  2. Azureでの機械学習の基本原則についての理解 (30-35%)
    AIサービスを利用するにあたって注意することは?
  3. Azureを用いた画像認識AIの機能と使用方法(15-20%)
    視覚、画像を用いたAIサービスを構築する
  4. Azureを用いた自然言語処理(NLP)の理解(15-20%)
    テキスト、音声を用いたAIサービスを構築する
  5. Azureの対話型AI構築サービスの機能と使用方法(15-20%)
    チャット形式でインタラクティブに!

この記事でも、この5つの分類に沿って基礎知識を説明したいと思います。

AzureのAIサービスは主に3つ

今後、AzureのAIサービスという言葉が何度も出てきますが、出題されるサービスは大まかに分類すると3つのサービス(リソース)に分けることができます。

  • Azure Machine Learning(3章、画像認識)・・・学習からデプロイまでGUI(専用webサイト上)でもCUI(コマンド、コード)で行うことができる。AIモデルの運用を効率的に行うためのプラットフォーム。
  • Cognitive Service(4章、自然言語処理)・・・一般的なアプリケーションの開発者が特別なAIの知識なしで自分のアプリにAI機能(画像検出や翻訳)を搭載するためのAPIを提供するサービス。開発者(利用者)はAIモデルを一から学習させる事なく、目的の昨日をもった学習済みのモデルを開発中のアプリケーションに組み込める。
  • Azure Bot Service(5章、会話)・・・チャットボットを複数のプラットフォーム(TeamsやFacebookやLINE)に展開するためのプラットフォーム

それぞれのサービスにユーザーが開発したいAIアプリケーション構築のための便利機能(サービス)が何個も存在しているというイメージです。

例えば、Cognitive Serviceにはさらに、画像認識機能を持つComputer VisionやCustom Vision、自然言語処理を持つLUISやQnA Makerなど様々な既製品のAIサービスが存在してて、AI-900をパスするにはそれらのサービスを組み合わせて目的のサービスを構築するにはどうすればいいのか”ざっくり”と理解して、「AIでこういうことをするなら、このサービスを使えばいいんだな」と判断する必要があります。

Azure Bot Serviceは先ほどAIサービスと書きましたが、実際はAIの利用法(ユーザーとAIモデルの間を取り持つユーザーインターフェース)で、Azure Bot ServiceはAIサービスというわけじゃないです。他の対話的AIサービス(QnA Makerなど)や言語理解のためのAIサービス(Language Understanding(LUIS)など)と組み合わせてAIボットを構築します。

1章 AI・機械学習モデル構築プロセスと検討事項の理解

AI-900におけるAIとは?

AI(artificial intelligenc)とか、人工知能とか、よく聞きますがその定義はあいまいです。

AI-900のテスト内においてはAIとは、

「人間の能力を模倣するソフトウェア」

だそうです。(Microsoft Azure AI Fundamentals trainingより)

勝手に具体的な表現に翻訳すると、「システムやアプリケーション、サービスに組み込まれて人間がやっている業務を代行してくれるソフトウェア」ってとこでしょうか?

さらに、AI-900のテストではAIの準ずる、もしくは内包された表現として下の5つの表現が使われます。

  • データや経験(学習)に基づく意思決定→機械学習(機械学習はAI構築の一手法と言う意味で使われることが多いので下の概念と並ぶのは若干違和感)
  • 異常なイベントの検知→異常検知
  • 視覚的な入力の解釈→画像処理
  • 人間の言葉の理解→自然言語処理(NLP)
  • 会話への参加→対話型AI(チャットボット)

AIモデル(サービス)構築の流れ

AIの知識は回帰と分類が分かれば十分と書きましたが、AI・機械学習を利用するにはどのような工程があるのか頭に入れておくとここら辺の話はわかりやすいです。←ここはAzure公式の情報ではなく筆者が試験対策のための前提知識を書いています。

AI-900に興味を持たれた時点でそこらへんの話はすでに知っている方がほとんどだと思うんですけど、例えば、寛永通宝の古銭の画像から販売価格を回帰モデルによって予測するAIサービスを構築するとすると、

まず、教師データとしてすでに鑑定済みの寛永通宝の画像と販売価格を集めます。

次にそのデータを学習するAIモデル(アルゴリズム)を選択します。

モデルに寛永通宝の画像と販売価格を学習させます。

最後に、学習済みのモデルに新しい寛永通宝の画像を読み込ませ、販売価格を出力させます。

さて、このプロセスをお手持ちのPCで全てやろうとすると、scikit-learnやPyTorchのようなAIのワークフレームから、webサーバーやwebアプリケーションフレームワークといったモデルをアプリ化するための技術、そしてそれを運用するためのクラウドサーバーに対する設定など様々な要素が必要になります。

それを、一つのプラットフォームで一気通貫のして管理できるのがAML(Azure Machine Learning)であり、AIモデルの学習までサボってしまおうというのがCognitive Serviceになります。

Cognitive Serviceの中にもCustom Visionといった自分で学習用の画像をAIに学習させて、カスタマイズすることができるサービスも使用可能ですが、既成のサービスの中に寛永通宝を扱うサービスはCognitive Serviceにはないので、オリジナルのモデルを作って寛永通宝の古銭の値段を予測する場合はAzure Machine Learningを利用するといった具合です

ここも蛇足になりますが、Azure Machine Learningはデータサイエンティストや機械学習エンジニアなどのAIそのものを生業にしている人向けのサービスという印象です。先ほど寛永通宝の例で話したように、AIを実社会に役立てるためにサービス化、アプリケーション化するにはAI以外の要素が大きいです。そこをお金を払って全部Azure Machine Learningに任せてしまい、自分たちはデータの管理やAIモデルの構築に集中しようというわけです。

一方、Cognitive ServiceはデータサイエンティストやMLエンジニアではない、ITに従事する人たち向けたサービスだと思ってください(もちろんゴリゴリAIエンジニアが使用する場合もありますが)。AIに関する深い知識なしに本格的なAI機能を開発中のアプリケーションに導入することができます。

2章 Azureでの機械学習の基本原則についての理解

1章のAI、機械学習モデル構築プロセスと検討事項の理解を踏まえて、Azure Machine LearningやCognitive Serviceに限らず実際にAIを利用するときはこんなことに気を付けてね!という話です。

G検定などでもそうですが、最近のAIは強力ゆえに人権やプライバシーを犯す危険性があるので、まずは倫理的なことを理解してから使用してくださいというメッセージが込められています。

AIが抱える5つの課題

まずは、AIを使うことで起こりうるリスクをまとます。

モデルがバイアスに影響される可能性がある

AIが人権を侵害しちゃうかもという話です。有名な話だとローン承認のためのモデルを学習させると、性別や人種、年齢などによる結果のバイアスがかかるという話があります。

例えば、銀行でローンの利用者の性別、出身地、人種、などといった個人情報とその銀行での総預金をAIに学習させ融資可能な貸付額を予測させると、モデルある性別、ある人種、ある年齢、ある学歴を優遇するような判断をします。

そもそも、性別、出身地、人種で融資額を決めるのが差別的ですが、基本的な機械学習モデルはデータの因果関係を認識することはできないので、さらに差別や格差を助長するような結果をもたらす可能性があるわけです。

と言いつつ年齢と学歴で年収を予測するみたいな問題出るので、まぁ多少はしょうがないって感じだと思います。

エラーで損害が出るかも

100%エラーが出ないモデルはないが、軽度なエラーが重大な事故を起こす可能性があります。

寛永通宝の例で考えると、100万円の価値のある古銭をAIが1000円と値段をつけて売ってしまったら99.9万円損失が出ることになります。AIは損失を出しても責任を取れません。

お金なら誰かがなんとかするかもしれませんが、自動車運転などの場合は人命に関わることもあります。

学習データが漏洩するかも

バグや、悪意をもったユーザーの意図的な操作でAIが外に漏れてはいけない情報を漏らしてしまう可能性があります。

Azureにもデータベースとモデルを接続してリアルタイムに情報を反映させるサービスがありますが、例えばチャットボットが接続されたデータベース内に含まれる個人情報を部外者に提示してしまう可能性があります。

すべての人の役に立つわけではない

AIは特定のユーザーの特定のユースケースのために構築するものなので、汎用性は限定的になります。

極端な例を挙げると、siriやAlexaのように会話だけで操作できるシステムをSpeak-to-textのような音声認識AIで作ると、会話ができない聴覚障害者の方には全く役立たないシステムになってしまいます。

そこを踏まえたうえで、説明やそれを補完する機能を設けることで、AIがだれかの不利益を生むことを防ぎます。

ユーザーは複雑化したAIモデルを信頼する必要が出る

AIのモデルの中はブラックボックスでユーザーにとっては全く理解することができない可能性がありますが、上の損害の話に繋がりますが、AIはただの道具とするとそこで生じる責任はユーザーもしくは開発者が取ることになります。

つまり、ユーザーもしくは開発者はブラックボックス中で起きた、なんで起こったわからないことの責任を取らされることになります。ということで、ユーザーもエンジニアもAIモデルを使用するときはAIがどのようなプロセスで判断しているのか、わからないなりに理解する必要があるし、そのために必要な情報は開示する必要があります。

一つの手法として、AIの判断基準を人間がわかる形で出力する説明可能なAI(XAI)があります。

AIの判断の責任はだれがとるのか

AIは失敗するし、損害も出すし、差別もする。じゃぁその責任はだれがとるのでしょうか?

ユーザーでしょうか?開発者でしょうか?企業でしょうか?

責任あるAIの原則

ということで、AIの判断には責任がともないます(AI自体はその責任を取ることはないですが)。その責任を果たすためにAIを使ってシステムやアプリケーションの開発者は次のことを意識する必要があります。

  • 公平性・・・AIによって誰かが不当に不利益被ってはいないか(差別や格差を助長)
  • 信頼性と安全性・・・AIのミスは重大な事故となる。事故を起こさないような安定したAIを構築する必要がある
  • セキュリティとプライバシー・・・ユーザーから得た情報をモデルで利用するのは妥当か?そもそも、その情報を得てよかったか?
  • 包括性・・・公平性に通じる。ある人にある組織にのみ利益をもたらすようなモデルになってはならない。
  • 透明性・・・判断や動作はユーザーが納得できるように公開しないといけない。
  • 責任性(アカウンタビリティー)・・・説明責任(AIの行動、判断は人間が説明して責任をとらないといけない)

何かを作って世に出す際にはこれらのことってあたりまえのことですが、これまでAIにはとりあえず何かできたら凄い!という視線でユーザーもエンジニアも相対していたので、おざなりになってしまっていました。

しかし、これから実社会にAIが浸透していき人々に貢献するにあって、AIが利益を生むけど同じくらい不利益も生むのでは、人々がAIを信用することはできず、AIモデルを構築しても使ってもらえなくなります。

これらの課題を解決するためのUIの工夫のMicrosoftの紹介ページです(英語だけどAppleなどの他社製品も紹介していて面白い、英語だけど・・・掲載の許可はどうやってとったんですかね?)。

機械学習とは?

厳密にはAzureにおけるAIは「人間の能力を模倣するソフトウェア」と定義されているので、AIの方がもうちょっと広い意味で使われていますが、テストを望む上でAI=機械学習(ML)と認識していてほぼ問題ないと思います。

じゃぁ、機械学習ってなんなのよ?ってなりますが、そこはとりあえず、「データを学習させて何か出力を出すプログラム、もしくはプログラムにデータを学習させること」程度の認識でいいと思います。あくまで、AI-900はAzureのAI関連のサービスに関するテストなので機械学習については軽く抑えておけばいいOKです。

Azure Machine Learning

Azure AIの主要サービス3つのうちの一つで、自分でコードを書きながらオリジナルのモデルを運用したい場合に利用できるAIの開発プラットフォーム(PaaS)です。

コードをがっつり書いても、ノーコードでも使用できますし、GUIもCUIも用意されててデプロイ方法も様々な方法に対応しています。また、運用環境もオンプレでも、Azure上のVMでも、コンテナでも、クラスタでもなんでも使えるのでかなり自由度が高いです。

AutoML(自動機械学習)という機能を持ち、データサイエンティストや機械学習エンジニアが苦労して行うモデルの選択やパラメーター(設定項目)の調整などを自動で行なってくれます。しかも、色々な選択肢の中から良きに計らってくれるので、人間がやるよりも高い精度になることもあります。

AI-900向けのチュートリアルの中にGUI(Microsoft Azure Machine Learning)でポチポチとAIモデルを構築するチュートリアルがあるのでその模様を下にまとめておきます。

AMLではコードやコマンドを使ってCUIで操作することも可能ですが、Azure portal上でAMLのリソースを作成(サービスを契約)するとAzure Machine Learning StudioというAMl専用の管理サイト上で、AIモデルの構築、学習、デプロイ、運用までの全ての工程行うことができます。

実行環境のVMもこんな感じでポチッと作成

データセットのアップロード(自転車の売上データのcsvファイル)

データの型の検出なども自動で行なってくれます。

モデルの構築も簡単で自動ML(AutoML)を選んで、データセットを選択し、

その他の設定項目(予測する項目や学習つける名前など)を設定し、回帰か分類かを選択すれば学習を実行できます。

設定を終えると学習が走ります。

Microsoft Azure Machine Learningの他にAzure Machine Learning SDKというのがこちらを使えばpythonで今やった作業がコードベースで実行できます。こっちはAI-900の試験には必要ないので、そういうものがあるとだけ理解してればいいと思います。

AutoML

モデルの選択やパラメータの調整などのめんどくさい部分を全て自動で行なってくれます。大量のモデルを作成し一番いい結果を出したモデルを採用するという力技で調整を行います。

デザイナー

前処理も含めたモデルの構築とデプロイを視覚的に設計することができます。

それぞれのプロセスをノードで管理できるので、コードを書くよりわかりやすいです。一つ一つのノードはモジュールと言われていて、データや処理を表しています。AI-900の試験では基礎的なモジュールが出題されますが、「データを分割するモジュール」のようにすごくわかりやすい名前を付けられているので、機械学習の知識が多少あれば回答できると思います。

注意すべきところは学習済みのモデルの評価の所で、evaluate model(評価)モジュールは評価方法の指定するモジュールで評価自体はできません。回帰モデルなら、平均絶対誤差 (MAE)、(二乗平均平方根誤差 (RMSE))、R2スコア(決定係数)あたりを、分類ならAccuracy (正確性) 、再現率、F1 スコア、AUCあたりを指定します。

あと、学習前にデータを分割する理由はテスト用のデータを学習データとしてとっておくためです。全て学習データに回してしまうと、未知のデータに対するモデルの性能を評価できないのであえて、学習データにしない評価用データを用意しておきます。

パイプライン

モデルの学習からデプロイまでの工程をパイプラインに登録しておくことで一括して実行できます。使い方は主に、一度Azure Machine Learning SDKなどで設定したプロセスをパイプラインとして保存しておいて、あとでいつでも実行できるようにしておくといった感じです。

モデル

学習済みのモデルを登録しておきます。ここにモデルを登録しておくことであとで新しいデータを使って推論が実行できます。ここに登録しておけば、一つのデータを複数のモデルに予測させて性能を比較するなんてことも半自動的に行えます。

エンドポイント

登録したモデルを使ってAPI(指定されたURLにデータを送ると推論結果を返してくるweb上のアプリケーション)をデプロイできます。デプロイ先のリソースは、

APIという概念は普段使用しない人にとってはかなりわかりにくいとおもいます。要はアプリケーションのインターフェースということですが、webサイトや管理画面といったUI(ユーザーインターフェース)とは異なり、API(アプリケーションインターフェース)は人間じゃなくてプログラムが使う窓口で、エンドポイント(URL)にGETやPOSTといった信号を送ると結果を返してくれる、プログラム通しがweb返して通信する仕組みになります。

通常はAPIもアプリケーション(プログラム)なので、サーバー上でゴリゴリと開発しなければなりませんが、AMLはAIモデルを運用するためのAPIを全自動で作ってくれるわけです。

ちなみに、AIモデルをデプロイする方法はエンドポイントだけではなく、選択肢が色々あるのもAMLの便利なところだと思います。

例題

問題:

自動車のフロントガラスの傷を検知し、ユーザーにフロントガラスを交換するように注意喚起するAIシステムを開発するとする。照明が適切にあたっていた際の認識精度が99%の場合、システムの操作画面に掲載する注意実行として正しい記述は次のうちどれか?

選択肢:

  1. 使用条件が適切だった場合、AIモデルを高精度でフロントガラスの異常を検知することができるが、たとえAIが異常を検知していなくても、ユーザーは異常を感じれば、乗車することなく速やかに専門家に検査してもらう必要があることを利用前に説明しておく
  2. 検知システムの高精度でフロントガラスの記事を発見することが可能なので、乗車時にユーザーがフロントガラスの異常がないのか確認する必要性はないので、ユーザは全面的にAIを信用することができる。
  3. 適切な照明を必ずフロントガラスに当てる必要があり、それ以外の条件ではモデルが異常を検知する必要はない。

答え:

1

解説:

AIで性能は限界があり、ユーザーにはシステムを利用できる条件をユーザーに事前に明確に提示しておく必要性がある。

問題:

自動的に回帰モデルを学習させる際に、正しい記述は次のうちどれか?

選択肢:

  1. R2スコアをモデルの評価指標に設定する
  2. 勾配ブースティング以外のアルゴリズムを除外する
  3. 自動特性付け(Featurization)を有効にする

答え:

1

解説:

回帰モデルの評価基準として決定係数R2は一般的な指標で、予測値と正解の値ととの差を表します。完全に一致している場合はR2は1になります。

問題:

Azure ML studioのデータストアとして利用可能なものをすべて答えなさい。

選択肢:

  1. Blob
  2. Queue
  3. Table
  4. File

答え:

1 2

解説:

Azure ML studioではワークスペースに任意のデータストア(機械学習に使用するデータの置き場所)を選択できますが、利用できるのはAzure Blob StorageAzure File ShareAzure Data Lake StorageAzure SQL DatabaseAzure PostgreSQLだけになります。

https://docs.microsoft.com/ja-jp/azure/machine-learning/concept-automated-ml

引用:https://docs.microsoft.com/ja-jp/azure/machine-learning/concept-automated-ml

問題:

Azure Machine Learning designerでトレーニング後のモデルを、評価するために新たにモジュールを追加する。学習に使用していないデータを評価に使用するためにはどのモジュールを追加する必要があるか?

選択肢:

  1. Join Data
  2. Split Data
  3. Select Columns in Dataset

答え:

Split Data

解説:

見学習のデータでモデルの評価を行うにはモデルの学習前にSplit Dataモジュールでデータセットを学習用と評価用に分ける必要があります。機械学習の問題ですね。

Azureを用いた画像認識AIの機能と使用方法

ここまでくれば、試験範囲の半分はカバーできたと思います。次の話は画像認識(動物の画像を見て、これは犬だ、これは猫だと判別する)の話で、画像認識はAIブームがおとづれたきっかけになった技術で、今のAIの得意分野であり、AzureのAIサービスでも重要な機能と言えます。

Cognitive Serviceは視覚、音声、言語など色々な機能があり、しかもしれぞれの機能を利用するための様々なサービスが存在します。利用者はこれらのサービスを組み合わせて、目的のアプリケーションやサービスにAIを搭載することができるというわけです。

Cognitive ServiceとAMLの違いはAMLがPasSでモデルの学習やアプロケーション自体は自分で行う必要がありますが、Cognitive ServiceはSasSで、すでに学習済みのAIモデルをもつ既成品のアプリケーションを利用することができます。

正直いって、AMLはGUI、ノーコードで機械学習できるといっても、AIの知識がないとちゃんと扱うのは無理じゃない?という感じは否めないですが、Cognitive Serviceはクラウドやプログラミングの知識が多少あれば、AIについて詳しくなくても利用することができます。

image-azurecognitiveservices.png

引用元:https://licensecounter.jp/azure/blog/series/azure-cognitive-service.html

視覚だけでも、Cognitive Serviceには色々なサービスがあります。写っているものをなんでも教えてくれるComputer Visionが最も有名だと思いますが、顔認識や表情、年齢などの推定機能を提供してくれるFaceや自分でデータベースを登録してモデルに学習させられるCustome Visionなどがあります。

画像認識の利用ケース

それぞれのサービスがどうの、という話をする前に画像認識モデルがどのような使われ方をするのかまとめたいと思います。

  • イメージ分類・・・画像・動画に写っているものから「タクシー」、「リンゴ」といったように種類を予測する
  • 物体検出・・・写っているものの種類を予測するかつ、長方形の枠で囲ってどこに写っているか示す。
  • セマンティックセグメンテーション・・・写っているものの種類を予測するかつ、物体が写っている個所をマスクと呼ばれるレイヤーで塗りつぶしてどこに写っているか示す。(物体検出と違って境界線までわかる)
  • 画像解析・・・写っているものの意味を解析する。例えば「梯子を人が昇っている」など。
  • 顔検出と認識・・・画像・動画から人間の顔を抽出し、個人、性別、年齢、感情などを分析する
  • 文字認識(OCR)・・・手書き文字、印刷文字に書かれている内容を読み取って文章化する。

物体検出とセマンティックセグメンテーションが区別がつきにくと思いますが、違いは輪郭を捉えるかで、画像検出は物体が存在する範囲をアバウトに四角で囲うものですが、セマンティックセグメンテーションは輪郭の内側を塗りつぶします(上が画像検出、下がセマンティックセグメンテーション)。

Computer Vision

とりあえず、Azureの画像認識といえばこれです。多分、

ポイントはすでにいい感じに調整されたモデルを目的に合わせて選択して利用できるところです。イメージ分類、物体検出、画像解析、文字認識(OCR)など様々な機能を提供します。

画像解析を使うと下のような感じでtags、captions、captionsに対する信頼度captionsが返されます。

Custom Vision

自分でデータを用意してモデルを学習させる。例えば牛の画像と品種を学習させて、写真を送るだけで牛の品種を教えてくれるAPIなどが作成で来ます。データも管理webサイト上でアップロードすることができるし、そのサイト内で推論もできるので、オリジナルの分類モデルを作るとしてもハードルはかなり低いです。

Face

人の顔に特化したモデルを顔認証や笑顔の検出などができる。人間の顔が移った画像をAPIに送ると、自動で顔の位置、年齢、感情、アクセサリーの有無などが返されます。

また、複数の画像からそれらが同一人物であるか判断する機能もあり、これは簡易的な顔認証システムとして利用可能。

顔(人間)を検出できなかった場合は空のJsonデータが返されます。

顔検証(VerificationVerify API 二つの顔が同一人物か検証する。顔検出(Face Detection)顔の存在位置を特定、頭部姿勢、性別、年齢、ひげ、眼鏡などの顔関連の属性もわかる。顔識別(Identify people)事前登録された顔と一致するか検証。類似度検索、同じ人間じゃなくても近い顔の人を探す。グループ化、近い顔の人どうしグループ化する。

ちょっと差別的ですよね・・・。

Read API

光学式文字認識 (OCR) の最新モデルが搭載されていて、印刷されたドキュメントや手書きのドキュメントからテキストを抽出することができます。長めの文章でも正確に認識できるのが売り。以前はOCR APIというのも存在してしましたが、こっちに統合されました。最近は日本語認識精度もかなり高くなったとの噂です。

Form Recognizer

レシートや街頭アンケート、領収書などをOCRで読み取れる。項目と内容がペアで認識できる。年齢:30など。

フォーム部分の認識専用です。

例題

問題:

馬と牛の画像を集めたデータセットをモデルに学習させて、牛か馬か画像を分類しようとしている場合、使用すべきサービスは次のうちどれか?

選択肢:

  1. Face
  2. Custom Vision
  3. Computer vision

正解:

解説:

Custom Visionはオリジナルの学習用の画像データを用いて分類モデルを構築することができます。

Computer Visionはすでに学習済みのモデルを使用するため、オリジナルの分類モデルを構築することはできません。

Faceは人間の顔に特化した画像認識モデルなので牛にはつかえませんし、任意のデータを学習させることも不可能です。

問題:

Computer Visionによって分類可能なカテゴリは次のうちどれか?(二つ解答)

選択肢:

  1. ブランド
  2. ランドマーク(風景や建築物など)
  3. モニュメント
  4. 著名人

答え:

2、4

解説:

Computer Visionが提供するすでに学習済みの分類モデルには、ランドマークを識別するものと著名人を識別するものがあります。



3章 Azureを用いた自然言語処理(NLP)の理解

上に載せたAzureのサービスの一覧表では、音声と言語と二つのカテゴリーがありましたが、AZ-900ではそれらをまとめて自然言語処理と一枠で分類してしまいます。

そもそも、自然言語とは人が話している言語のことをさしていて、コンピュータが用いる機械語と相対する概念になっています。

Language Understanding(Luis)

自然言語のユーザーの指示を、システムに理解させるためのAI。例えば、テレビを「チャンネルを3に変えて」など音声で操作できるようにする場合、人によって「3チャンネルに変えて」と言ったり、「チャンネル3が見たい」というように言ってることが違うので、システムはユーザーの命令を理解できないです。開発者が全てのパターン網羅するの無理りですし・・・、

そこで、いくつかの言葉の組み合わせを機械学習によってモデルに学習することで、学習していない未知のパターンに対しても意味を推測して理解する機能が必要になりますが、LUISはその機能を提供してくれます。

具体的には言葉のパターンを学習させてモデルを作成するすると、APIのエンドポイントして利用できます。エンドポイントにPOSTでwebを経由して文章を送ると、当てはまる指示をjsonで返してくれるといった使い方ができます。

Text Analytics

言語(日本語とか英語とか)の自動検出、エンティティ(名詞)の検出、キーフレーズ抽出、意見のポジネガ(賛成/反対)の感情分析(sentiment analysis)。

sentimentってなんだよって感じですが、sentimentは感情という意味らしいです。有名な話だと映画のレビューからどれくらいその映画を称賛しているか分析したりします。

例えば、同じ「耐えられない」という言葉が含まれるレビューでも、

「展開が遅くつまらなすぎて、耐えられない」という文章はネガティブな意見ですが、

「続編を早く見ないと耐えられない」だったらポジティブな意見になります。

なお、感情分析は数値が高い方がポジティブ、低い方がネガティブな意見になります。

Translator Text

テキストの自動翻訳。60ヶ国の言語に対応している。

Azure Speech Servicesにも含まれる?

Speech-to-Text API

Azure Speech Servicesの一つ。音声データを送るとテキストデータが生成され帰ってきます。

ややこしいのですがAzure Speech ServicesにはTranslator Text、Speech-to-Text、Text-to-Speechが含まれているみたいなので、複数機能が必要ならAzure Speech Servicesを選択するのが正解みたいです(そこらへんの区分はわかってないです)。

Text-to-Speech API

Azure Speech Servicesの一つ。テキストデータを送ると音声データが帰ってきます。

Anomaly Detector API

画像でも、言語でもないのですが出題されるので載せておきます。売上や水量などの時系列データをリアルタイムで入れて異常を検知することができます。

問題:

外国人観光客向けの案内アプリに音声を認識して翻訳する機能を実装する際に利用可能なAzureサービスを2つ選べ。

選択肢:

  1. Speech Services
  2. Translator Text
  3. Text Analytics
  4. Speech Analytics

説明:

Speech Servicesには音声データを文章データに変換するSpeech-to-textと、文章データを音声データに変換するText-to-speechが提供されています。Translator Textは60以上の言語の翻訳機能を提供しています。

引用 https://azure.microsoft.com/ja-jp/services/cognitive-services/speech-translation/から

Text Analyticsはテキストに対してキーフレーズ抽出、感情分析などの機能を提供します。Speech Analyticsというサービスは存在しません。



5章 Azureの対話型AI構築サービスの機能と使用方法

対話型AI =チャットボットではないです。チャットなのでチャットボットにはsiriとかコルタナみたいな会話で操作できるやつは含まれないです。ただ、speach serviceとチャットボットを組み合わせる的な問題も出るので、対話型AI ときたら9割方チャットボットの話がくると思ってください。

で、チャットボット自体はAIではありませんが、会話を理解するにはAI1が必要なのでAI無くしてチャットボットは作れないって話です。

自然言語処理の項目で紹介したLUISをイメージしていただければわかると思うのですが、人間が会話の中である概念を伝えるとき、完全に同じフレーズを返してくるとは限りません。

「ご飯が食べたい」でも、「腹へった」のときもあれば「ペコペコだわ」というときもあるし、「お腹と背中がくっつく」ということもあります。

ただ、従来のシステムに毎回違った未知のフレーズを理解させるのは無理なので、これまでの言語で操作できるシステムはコマンドとしてある命令を表す文字列を定めておいて、それを人間に使わせていたわけですが、それではコマンドを暗記している人しか利用できないです(そんなんチャットボットと呼べないですよね・・・)。

そこで、チャットボットにAIを導入させてより柔軟な対応をできるようにしようというのが現代のチャットボットのコンセプトになります。

なので、実際にチャットボットを構築する際はこれまでに紹介してきたサービスを組み合わせながら構築していくことになります。

チャットボットを構築する上で気をつけること

  1. ボットができる(できない)ことについて透明性を保つ
  2. ユーザーがボットと通信していることを明確にする
  3. 必要があれば人間に引き渡す
  4. 文化的な基準を尊重する
  5. ボットが信頼できることを確認する
  6. ユーザーのプライバシーを尊重する
  7. データを安全に処理する
  8. ボットがアクセシビリティの基準を満たしていることを確認する
  9. ボットのアクションに対する説明責任を想定する

従来のシステムとは異なり、ユーザーはボットを信用して個人情報を含む色々な情報を教えてくれる可能性があります。その情報を保持していなければ、ユーザーは前に教えたのにまた教えなきゃならないの?と不満に思う可能性がありますが、逆がAIその情報を他のユーザーに教えてしまえば情報漏洩になります。

トラブルを防ぐために、ユーザーには前もって収集する情報と利用範囲を断っておく必要があります。

QnA Makerサービス

一問一答のリストを登録しておくと、登録した問いに近いことをユーザーに聞かれた時に、その文章を投げると、関連する答えを自動で推測して返してくれる APIを作成してくれます。

例えば・・・、

問:冷やし中華の提供期間はいつですか?
答:例年、6月29日から10月10日まで提供しています。

という一問一答を登録しておけば、ユーザーに「冷やし中華いつから提供やねん?」と聞かれた際に、一番妥当な回答として、「例年、6月29日から10月10日まで提供しています。」という回答を返してくれます。

Azure Bot Service

バックエンドのシステムをボットとしてフロントエンドに提供したい際に、バックエンドとフロントエンドの間をAzureで担うサービスです。

Bot Framworkでチャットボットを実装することで、フロントがwebサイトやTeams、Facebook、LINEなど様々なプラットフォームでも、同じチャットボットを展開することができます(ここテストに出ます)。

余談ですが、Azure Bot Serviceには作ったボットをローカルでテストするBot Framework Emulatorや、GUIでボットの問答を構築できるBot Framework Composerなどがあり、開発時にも使えるツールがそろってます(Bot Framework Composerを初めて使ったときは使いやすくて結構感動した)。

つくったボットもGUIでAzure上にデプロイするのでめんどくさいサーバーの設定などは一切いらないです。

巻末問題

問題:

あなたはこれまでの肉まんの売上データと天候のデータから肉まんの売上を予想しようとしている。どのサービスを使用すべきか?

選択肢:

  1. Azure Machine Learning
  2. QnA maker
  3. Text Analytics

正解:

1

解説:

機械学習のモデルにあらかじめ用意していたオリジナルのデータを学習させるには複雑な操作と膨大な計算資源を必要としますが、Azure Machine Learningを用いるとクラウド上の生産資源を使ってシンプルな操作で、目的の予測モデルを構築することができます。

QnA Maker(後述)は、質問と答えのセットを登録しておいて、未知の質問に対して一番近い答えを選択して返してくれるモデルを構築しAPIとして利用できるサービスです。

Text Analytics(後述)もキーフレーズ抽出など文章の分析のためのAPIを提供するサービスなので違います。

問題:

Azure Machine Learning designerのパイプラインを使用し、分類モデルにデータを学習させた。Evaluate Modelモジュールの学習後のモデルの評価は、AUCで0.3となった。ここからどういったことが言えるか?

選択肢:

  1. モデルはほぼすべてのデータに対して正解のラベルを予測できている。
  2. モデルは70%の制度で予測できている
  3. モデルの精度はランダムに分類した場合より低い

答え:

3

解説:

AUCはモデルの精度で指標で、すべて正解した場合は0.1、ランダムに予測位した場合は0.5、すべて外した場合は0になります。よって、このモデルはランダムに予測した場合より精度が低いです。

問題:

以下の文言は Microsoft guiding principles for responsible AIのどの項目に当てはまるか?

「AIシステムは、設計通りに動作し、想定外の事態にも安全に対応し、悪意のある操作にも抵抗できるものでなければなりません。」

選択肢:

  1. 責任(accountability)
  2. 包括性(inclusiveness)
  3. プライバシーとセキュリティ(privacy and security)
  4. 信頼性と安全性(reliably and safely)

答え:

4

解説:

選択肢がどれも同じ意味に感じますが、AIをアプリケーションやシステムの一部としてとらえた時、正常系(普通の操作)だけではなく、異常系の操作に対して備える、という意味で上の文章は信頼性と安全性にあたります。

問題:

開発中のアプリケーションでLanguage Understanding(LUIS)を利用する際に、最低限必要なものどれか?

選択肢:

  1. エンドポイントとLUISのキー
  2. エンドポイントと認証リソースのキー
  3. LUIS作成者の資格情報

解答:

1

解説:

Language Understanding(LUIS)はあらかじめ発行しておいたキーとエンドポイントをアプリケーションが持っていれば利用可能です。

こちらのサイトでAI関連の最新技術やビジネス応用に関するコラムを書いてます。

参考