※本記事はセミナー履修時にメモとして書いた記事なので、若干間違っている部分もありますし(若干じゃない)、誤字もめちゃ多いので下のAI-900の記事を参照していただきたいです。この記事はSEO的に残しているだけです。
AI-900における人工知能の定義
「人間の能力を模倣するソフトウェア」
- データや経験に基づく意思決定→機械学習
- 異常なイベントの検知→異常検知
- 視覚的な入力の解釈→Computer Vision
- 人間の言葉の理解→自然言語処理
- 会話への参加→対話型AI(チャットボット)
現在世の中に出ているAIソリューションは複数のAIの機能(ワークロード)を組み合わさて実現されている。
Microsoft Azureの人工知能プラットフォーム
- Azure Machine Learning・・・AIモデルの運用(トレーニング、デプロイ、管理)するためのプラットフォーム
- Cognitive Service・・・一般的なアプリケーションエンジニアが自分のアプリにAIの機能(画像検出や翻訳)を搭載するためのREST APIを提供。開発者はあまりモデルをいじらずもサブの機能としてAIを利用できる
- Azure Bot Service・・・チャットボットを複数のプラットフォーム(TeamsやFacebookやLINE)に展開するためのプラットフォーム
←本セミナはこの3つのサービスの説明になっていました。
AIの課題とリスク
モデルがバイアスに影響される可能性がある
例えば、ローン承認のためのモデルを学習させると、性別や人種、年齢などによる結果のバイアスがかかる可能性があるがそれは適切か?
エラーで損害が出るかも
100%エラーが出ないモデルはないが、自動運転などに利用する場合は軽度なエラーが重大な事故を起こす。
学習データが漏洩するかも
医療データなどの個人情報がAIのシステムから漏洩してしまう可能性がある。
すべての人の役に立つわけではない
音声認識モデルは聴覚に不自由がある方は利用できない。むしろ困らせる。
ユーザーは複雑化したAIモデルを信頼する必要が出る
一般的なユーザーはAIのモデルはブラックボックスだが、利用するにはその判断を信用しないといけないことがある。
AIの判断の責任はだれがとるのか
責任あるAIの実現。AIの起こして損害の責任はだれがとる?
責任あるAIの原則
- 公平性・・・AIによって誰かが不当に不利益被ってはいないか(差別や格差を助長)
- 信頼性と安全性・・・AIのミスは重大な事故を生み可能性が
- セキュリティとプライバシー・・・ユーザーから得た情報をモデルで利用するのは妥当か?そもそも、その情報を得てよかったか?
- 包括性・・・公平性に通じる。ある人にある組織にのみ利益をもたらすようなモデルになってはならない。
- 透明性・・・判断や動作はユーザーが納得できるように公開しないといけない。
- アカウンタビリティー・・・説明責任(AIの行動、判断は人間が説明して責任をとらないといけない)
重要なことなのに、エンジニアもユーザーも気にしていない?
例えば、チャットボットの機能の透明性がないと・・・、
そもそも何のために開発されたチャットボットで何が相談できるのか説明されていない問い合わせボット→ユーザーはなんでも話せるドラえもんだと思ってしまう→ユーザーがチャットボットの機能を正しく利用できない→ユーザーの不満がたまる。信頼できない。
これらの課題を解決するためのUIの工夫のMicrosoftの紹介ページ(英語だけどAppleなどの他社製品も紹介していて面白い、英語だけど・・・)
←モデルや学習、データの選定といったAIの技術だけではなく、UIやリリースノートなど技術以外のところでも開発側がAIを利用することで生じる責任にこたえるということが大切ということか・・・(ここは講師の人の意図をつかみ損ねました)。
機械学習
機械学習の各手法の紹介
ここから先と同様の内容を以前このブログでG検定向けにまとめたので下の記事の回帰、分類、クラスタリングあたりを見ていただくといいのではと思います!
実際に抗議で扱った内容はだいぶG検定で出題される内容と比べるとかなり軽い基礎的な話でした。
Azure Machine Leaningとは?
GUIでデータの用意、モデルの学習、バージョンの確認などを行うプラットフォーム。
自分でローカルで開発環境を用意して、アルゴリズムやパラメータを試すということをすべてクラウド上で自動的に行ってくれる。
この後のCognitive Servicesにも出てきますが、ここらへんの話はAzureのインスタンス上に自動でAIモデルをデプロイし、それをAPIとして公開することで、他のプログラムやアプリケーションで利用するという話になります。
WEBアプリケーションを作る人はなじみある構成ですが、わからない人はAPIとかバックエンド・フロントエンドという言葉を予習しといたほうがいいと思います。
Azure Machine Learning デザイナー・・・Pythonを使ってゴリゴリと学習の手続きを書くのではなく、グラフィカルなUI(計算グラフ)を使って機械学習の手順を実装していく。
パイプライン・・・モデルのトレーニング、デプロイをパイプラインに登録しておくことで一括して実行できます。
Azure Machine Learning Studio・・・Azure Machine Learning専用ポータル、データをインポートして出したい結果を指定すればAutomated Machine Learningが自動的に一番制度が高く出るアルゴリズムとパラメータを選択してモデルを作ってくれる。
Computer Vision(画像認識)
Compute Vision(画像認識)はJpegとかPNGの画像を処理してその意味を抽出することを指します。
- イメージ運類・・・画像・動画に写っているものから「タクシー」、「リンゴ」といったように種類を予測する
- 物体検出・・・写っているものの種類を予測するかつ、長方形の枠で囲ってどこに写っているか示す。
- セマンティックセグメンテーション・・・写っているものの種類を予測するかつ、物体が写っている個所をマスクと呼ばれるレイヤーで塗りつぶしてどこに写っているか示す。(物体検出と違って境界線までわかる)
- 画像解析・・・写っているものの意味を解析する。例えば「梯子を人が昇っている」など。
- 顔検出と認識・・・画像・動画から人間の顔を抽出し、個人、性別、年齢、感情などを分析する
- 文字認識(OCR)・・・手書き文字、印刷文字に書かれている内容を読み取って文章化する。
Computer Vision・・・もともと訓練されているモデルで、画像を送ると分析結果が返ってくる。画像に写っているものを判定してり(10000以上)、暴力的かとか、アダルトコンテンツかを判断できたりできる。OCR(文字お越し)もできる。したで紹介するCognitive Servicesdからでも利用可能。
Custom Vision・・・自分でデータを用意してモデルを学習させる。例えば牛の画像と品種を学習させて、写真を送るだけで牛の品種を教えてくれるAPIなどが作成できる。
Face API・・・人の顔に特化したモデルを顔認証や笑顔の検出などができる。
Form Recognizer・・・レシートや街頭アンケートの要旨などをOCRで読み取れる。項目と内容がペアで認識できる。年齢:30など。
AzureのCustom Visionのデモ30分くらい
↓Azureのフリーアカウントを使えば無料でデモを実行できます。
自然言語処理とは?
自然言語処理を用いることで人間の言葉をソフトウェアに理解させることができる。
- 文章ファイルからキーフレーズを抽出して要約を作成する。
- 文章に含めれている意見を抽出して肯定的なものなのか、否定的なものなのか分析する。
- 会話の音声データかた文字お越し。
- 翻訳
など。
Cognitive Services
主に自然言語処理のAIのモデルをCognitive Services上で作成しネットにデプロイするとでAPIのエンドポイントとして利用することができる。
ここら辺は、Computer Visionもそうですが、モデルの作成はGUIでポチポチやりますが、単体で利用するものではなく、インターネットを介してモデルが実装されたAzureのVMと開発中のシステムやアプリケーションを通信させて、AIの予測結果をアプリケーションの一機能として利用するのが普通のつかいかただと思います。
Text Analytics・・・文章から意味を分析してくれる。キーワード解析、ネガティブ/ポジティブ、
Translator Text・・・翻訳してくれるAPI
音声認識と合成・・・音声からテキスト(Speech-to-Text API)、テキストから音声(Text-to-Speech API)
Language Understanding(Luis)・・・自然言語のユーザーの指示を、システムに理解させるためのAI。以下luisの説明
例えば、テレビを「チャンネルを3に変えて」など音声で操作できるようにする場合、人によって「3チャンネルに変えて」と言ったり、「チャンネル3が見たい」というように言ってることが違うので、システムはユーザーの話を理解できない。
そこで、いくつかのパターンの指示を機械学習によってモデルに学習することで、様々な言い方の指示に対応できるようになるAI。
モデルを作成してデプロイすると、APIのエンドポイントして利用でき。HTTPで文章を送ると、当てはまる指示をjsonで返してくれる。
チャットボット
- ボットができる(できない)ことについて透明性を保つ
- ユーザーがボットと通信していることを明確にする
- 必要があれば人間に引き渡す
- 文化的な基準を尊重する
- ボットが信頼できることを確認する
- ユーザーのプライバシーを尊重する
- データを安全に処理する
- ボットがアクセシビリティの基準を満たしていることを確認する
- ボットのアクションに対する説明責任を想定する
例えば、ユーザーは気軽にボットに対しては個人情報を話してくれるかもしれないが、利用する範囲を明確にしたり、あとでユーザーが話した内容を確認したり、削除する機能がないといけない。
QnA Makerサービス
質問と回答のペアにより、ナレッジベースを作成してユーザーの問い合わせに対応できるボットを作成できる。
Azure Bot Service
バックエンドのシステムをボットとしてフロントエンドに提供したい際に、バックエンドとフロントエンドの間をAzureで担うサービス。
Bot Framworkでチャットボットを実装することで、フロントがwebサイトやTeams、Facebook、LINEなど様々なプラットフォームでも、同じチャットボットを展開することができる。