
AI2nd day12 Azure ML studio
day11 Q&A
・メールやHPの問い合わせフォームからの問い合わせのデータベースを作る場合、Googleスプレッドシート作成の上でAzure管理でよいか?
→それが良い。
・Custom visionにおいて、識別精度を限りなく100%に近づけるためには、トレーニング回数を増やしていくことをひたすら繰り返していくことになるか?
→どれだけ増やせばどのくらいの精度になるかは、専門家でも事前にはわからない。まずはコストとリターンが釣り合うと思われる段階(とりあえず数十枚程度)まで試してみて、それまでの結果でこのままのやり方で精度は順調に上がっていくかどうかを判断する。あまり精度が上がってこないようであれば、以降のトレーニングに見合ったリターンは得られないと考えられる。
・センサーで商品を識別して、ライトで示してあとは人力で篩い分けるといったことは可能か?
→技術的には可能。例えば以下のような仕組みもある。
(戦闘機の製造において、部品の組み立てにプロジェクターを用いているところ)
・Custom visionでFAX(下の画像)とそれ以外を識別させたい

→Custom visionでは上記の文字を文字として認識していない。別の方法として、OCRで文字認識させる方法がある。
・(番外編)カンパ先生のアドバイス
「このサービスが方法として使えそうだ!」という形で入ると、うまくいきにくい。まずはchatgptに以下のような形で投げてみると、いろいろ答えてくれる。重要なのは、「custom visionでやりたい」ということを入力しない(1つのリソースありきで考えない)こと。これにより、「custom visionを使う(使わないといけない)」という制限を加えることになってしまう。
「custom visionでこういうことをやっているのだけど、ここがうまくいかなくて」のように相談することで、人間側がAI/chatgptの可能性を狭めないようにすることが肝要。
ある米農家の注文手配システムについての技術的な相談です。
メールにファックスの転送が来る。 お米の注文農家さんのメールボックスなんだけど、メールの添付ファイルがお米の注文のファックスの送信なのか、それ以外なのかがわからない。
例えば領収書とかそういうデータも混ざっている。注文のファックスか否かを判断させて、違うなら関係ないって言う判断をしてほしい。
もしファックスのお米の注文だったらどっかに送るみたいな感じのことをやりたい。今Microsoftジュールのcustom visionを使って分析をとるけど、識別を上手にできていない状態。
ここからそのどういうことを試していくのが精度が上がるかって言うことをちょっと相談したくて考えてもらいたい。
day12 本編 Azure machine learning
Azure machine learningとは
Azure Machine Learning(Azure ML)は、Microsoftが提供するクラウド上のAI開発プラットフォームのこと。AIや機械学習(ML)のモデルを作成・学習・運用するのを簡単に行うことができる。以下特徴をいくつか挙げてみる。
① 機械学習モデルの作成
ノーコード(プログラミング不要)で機械学習モデルを作成可能。
② モデルの学習(トレーニング)
クラウドのCPUやGPUを用いて学習が可能。特にGPUで高速学習が可能に。
③ モデルのデプロイ(公開)
作ったAIをWeb APIとして公開し、アプリやサービスで利用可能。
実際に作成を行っていく。
まずは設定から。フローに沿って設定を行っていく。
設定項目の「制限」のうち、「早期終了を有効に」をチェック。

CPUとGPU
CPUとGPUを選ぶところに行き着いた。これらの違いをchatgptに聞いてみた。
CPU(Central Processing Unit):中央処理装置
パソコンやスマホの「頭脳」のような存在です。
・あらゆる処理を担当する万能選手
・少ないコア(頭脳)で、一つひとつの作業を素早くこなす
・OSの動作、アプリの実行、計算などを担当
例えるなら、CPUは「優秀なシェフ」。
→ メニューを考え、食材を準備し、一つひとつの料理を丁寧に作る。
GPU(Graphics Processing Unit):グラフィックス処理装置
画像や映像を処理する専門家
・たくさんのコアを持ち、大量のデータを一気に処理できる
・ゲームの映像、動画編集、AIの計算などを担当
例えるなら、GPUは「大量の料理人がいるキッチン」。
→ 100人分の料理を一気に作るように、大量のデータを同時に処理する。

AIの機械学習には GPU がよく使われる。上記のように、大量の計算を並列で処理することができるため。機械学習(特にディープラーニング)では、膨大なデータを使って何百万もの計算を同時に行う必要があり、GPUは数千個のコアを持ち、この並列処理が得意なので、高速に学習可能。
今回はディープラーニングではないので、GPUではなくCPUを利用。

AIを作っていくにあたり、時間をかけることは有効。通常はAIを作っていくことは日単位レベルの作業。
ただ、こうして時間をかけてAIに試行錯誤をさせることで、すぐに答えさせるよりも、出力の精度がより高度になっていく。
モデル別予測結果

上画像のように、モデル別の誤差、結果を一覧で表示してくれる。
このうち、最も誤差(正規化された平均平方2乗誤差)の小さいVotingEnsembleというモデル(複数の機械学習モデルを組み合わせて、より良い予測を行う手法)の詳細を開いてみると、以下のグラフが表示される。
これはどの要素が予測の上で結果的に重要だったかを示している。
みてみると、最も重要度が高いのは圧倒的にdatetimeであったとわかる。

さらに、以下のように予測期間と予測、実際のモデルが表示されたものも出力される。

正規化された平均平方2乗誤差の解釈について
VotingEnsembleの「正規化された平均平方2乗誤差」:0.09646
はどう解釈すればいいか?chatgptに聞いてみた。
・まず、平均平方2乗誤差(MSE)とは:予測値と実際の値の誤差の2乗の平均のこと。小さいほど精度が高い(=誤差が少ない)。
・"正規化された平均平方2乗誤差(NMSE)" とは:MSEをデータの範囲(スケール)に合わせて調整したもの。「誤差をデータ全体のばらつきで割った値」 なので、異なるデータセット間でも比較しやすい のが特徴。
・ NMSE = 0.09646 の意味は?
→全体のばらつきの約10%程度の誤差 があることを意味している。つまり、このモデルは「かなり精度が高い」 と言える。
とのこと。
今回は予測するデータスケールが100/day程度(弁当屋の売上個数)だけど、例えばデータスケールが数万〜それ以上/dayになると、予測結果の解釈の仕方が異なるようになるのか?これもchatgptに聞いてみた。
NMSEは、MSE(平均平方2乗誤差)をデータのばらつきで割ったものなので、スケール(数の大きさ)が違っても比較しやすいように調整されている というのが(理論的な)特徴。
つまり、理論上は「100〜200個の売上予測」でも「数万〜数十万の売上予測」でも、NMSEの数値はスケールに関わらず同じ基準で比較できる はず。
ただし、現実的な解釈としては、データのスケールが大きくなると、同じNMSEでも誤差の影響の感じ方が変わる ということがありえる。
(1) 小規模データ(100〜200個の売上予測)
NMSE = 0.1(誤差 10%) の場合
誤差の影響(実際の個数差)は 10〜20個程度
これは、お店の1日売上にとっては結構大きなズレ
(2) 大規模データ(数万〜数十万の売上予測)
NMSE = 0.1(誤差 10%) の場合
誤差の影響(実際の個数差)は 数千〜数万個
これがビジネスに与える影響は、場合によっては「そこまで気にしない誤差」かもしれないし、「大問題」かもしれない
では、どうそういった結果をどのように解釈すべきか?
まず、NMSEの数値自体はスケールに関係なく比較可能
→ 「NMSE = 0.1 なら 10% の誤差」という意味は同じ
ただし、実際のビジネス上の影響はスケールによって変わる
→ 100個の10% = 10個 の誤差は大きく感じるけど、10万個の10% = 1万個の誤差はどう捉えるかはケースバイケース
解決策:「実際の誤差(RMSEやMAE)も見る」NMSEだけでなく、次の指標も合わせて見ると、より直感的に理解しやすい:
RMSE(Root Mean Squared Error):MSEの平方根(実際の誤差のスケール)
MAE(Mean Absolute Error):誤差の平均値(直感的にわかりやすい)
例えば、
小規模データ(100〜200個) → RMSE = 15個 → 1日売上の10%程度の誤差
大規模データ(10万個) → RMSE = 10,000個 → どのくらい許容できるか?このように、NMSEと一緒にRMSEやMAEも見ることで、実際の影響を直感的に判断できるようになる。
との返答。
感想
1番精度の高い予測を、予測結果とともに出力できる。それがノーコードででき、API連携も可能。ラズベリーパイに実装もできる。
すごい。さらに次回はデザイナーという、前処理を簡単にできるツールも使っていくとのこと。
巨人の肩の上に乗るとは、まさにこういうことか。これができる(使える)人間と、そうではない人間。この差はますます開いていくだろう。