「AIの問題を定義する方法」

「AIの問題を定義する方法」

AI/MLの質問をするための改善点

Towfiqu barbhuiya on Unsplash

25年以上のソフトウェアエンジニアリングの経験を持つ私は、人工知能(AI)と機械学習(ML)に初めて取り組むソフトウェア開発者からの質問に多く答えてきました。そこで、SlackやDiscordなどのチャットフォーラムにAI/MLの質問を投稿する際のいくつかのポイントを共有したいと思います。

背景

一部のユーザーの共通誤解は、単に質問を「投稿」できると思っていることです。しかし、チャットフォーラムはstackoverflowなどのオンラインフォーラムとは原則的に異なります。チャットフォーラムは一対一の性質が強いため、質問に回答するには時間と労力が必要です。そのため、直接メッセージ(DM)を送る際には、問題を適切に説明するための少しの時間を取ることが最善です。そうしないと、間違った回答が得られる可能性があります(これは非常に一般的なことです)。

アドバイスをしてくれるユーザーのバックグラウンドと経験に注意してください。多くのDiscordユーザーは、AI/MLやソフトウェアエンジニアリングの経験がない高校生や大学生です。私は自分のプロフィールに資格情報を記載しています(完全な開示)。

AI/MLの問題を解決するための最初のステップは、問題を詳細に「記述して理解する」ことです。

概要

AI/MLの問題を記述するための私のポイントの概要は次のとおりです[1]:

  1. 自分のバックグラウンドと経験についての説明をする。
  2. 問題を説明する(MLの問題のカテゴリも含む)。
  3. データセットを詳細に説明し、データセットを共有する意思を示す。
  4. データの準備と特徴エンジニアリングの手順を説明する。
  5. 試したモデルを説明する。
  6. グラフやプロットよりもテキストと表を好む。
  7. コードのデバッグをユーザーに頼まない。

モバイルデバイスを使用してDiscordにアクセスするユーザーもいるため、問題の記述やコードの断片をGitHub Gist、Pastebinなどで共有し、リンクをフォーラムに共有するのが最善です。

ファイルを共有する際には、他のユーザーがチャンネル内でファイルや投稿を探さなくても済むように、DMで共有するかスレッドを作成することが通常最善です。Discordのチャンネルのコンテンツは非構造化なので、元の投稿を見つけるためにチャンネルを検索するのは困難です。

誰かが助けを申し出た場合、DMでオリジナルの投稿をコピー/ペーストすると役立ちます。

コーディングの問題が発生している場合は、コード/アルゴリズムのソースへのリンクを共有し、実装に問題があることを投稿するよりも、コードの断片を投稿して「コードに何が間違っているか?」と尋ねる方が良いです。

詳細

フォーラムの投稿で以下の情報を簡潔に提供する必要があります(各項目につき1〜2文):

1. 自分のバックグラウンドと経験についての説明をする。

高校生、大学生、大学院生、研究者、経験豊富なプロフェッショナルなど、自分がどのようなバックグラウンドを持っているかをユーザーに最初に知らせるのが最善です。

多くのDiscordユーザーは、多くの質問に回答するためには多くの時間を調査に費やす必要があることに気付いていません。そのため、バックグラウンドの短い説明を提供することは公平です。

私は、私の知らない初心者が誤ったアルゴリズムを使って誤った問題を解決し続けることになる、ということを学びました。

2. 問題を説明する。

数行で問題を説明し、MLの問題の種類もわかる場合は(数値:分類、回帰:イメージ:オブジェクトの分類、オブジェクトの検出、オブジェクトの認識:テキスト:感情分析、トピックモデリング、テキスト生成など)、それを含める。

このステップには文献調査も含まれるかもしれません。ただし、同じ問題を解決するいくつかの記事を見つけることができれば、それで十分です。

問題の定義の一部は、教師あり学習、教師なし学習、強化学習などを扱うかどうかを決定することです[1]。

モデルの目標は何ですか? 分類、予測、検出、翻訳など。

プロジェクトの目標は何ですか? 研究、エンジニアリング、商業アプリケーション、趣味など。

3. データセットを詳細に説明し、データセットを共有する意思があるかどうかを述べてください。

データセットを説明し、入力特徴と目標特徴を含めてください。

データの要約統計量を共有することが最善です。これには、離散的またはカテゴリカルな特徴(目標特徴を含む)の数を含めることが最善です。

データセット全体を共有することが最善です(他の誰かに助けを求める場合は、オープンで正直でなければなりません)。

何らかの理由でデータセットを共有できない場合は、それを明確に述べ、なぜデータセットを共有できないのかを説明する必要があります。

Discordのユーザーは、無料のコンサルティングアドバイスを提供するために時間を提供することに関しては非常に協力的ですが、商業または研究プロジェクトで無料のアドバイスを得るために曖昧な質問をすることは倫理的に問題があります。もしもそれが当てはまる場合は、この事実を繰り返し明確に述べることが求められます(他のDiscordユーザーにオリジナルの投稿を探し出させることは期待しないでください)。

4. 行ったデータの準備と特徴エンジニアリングの手順について説明してください。

データの準備とクリーニングの手順と技術は、データセットによって異なります。

最も一般的な手順は次のとおりです。構造エラーの修正、欠損または重複データの処理、および外れ値のフィルタリングです。

特徴エンジニアリングは、アルゴリズムをサポートし、モデルのパフォーマンスを向上させるために使用されます。これには、新しい特徴の作成、まばらなクラスの結合、未使用の特徴の削除、およびダミー変数の追加が含まれます。

一部の機械学習アルゴリズムは、すべての変数を正規化または標準化の技術を使用して同じ範囲にスケーリングすると、はるかに優れたパフォーマンスを発揮します。

5. 試したモデルについて説明してください(少なくとも1つ試したはずです)。

データの準備と特徴エンジニアリングを行った後、最初のステップはいくつかのベースラインモデルを評価し、後で比較するために使用することです。選択する最終モデルは、ベースラインモデルよりもデータセットで優れたパフォーマンスを発揮するはずです。

6. プロットやグラフよりもテキストと表を重視してください。

matplotlibなどのライブラリは、値の差をよりよく表示するために自動的に軸を調整するため、1つのグラフに複数のメトリックをプロットすることは最善ではありません(例は過学習と未学習の診断方法を参照してください)。

以下は、チャートやグラフの一般的な問題です。

  • テーブルはモデルを比較し、要約統計量を共有するために使用されます。
  • プロットやグラフは、モデルの結果を視覚化するために使用できますが、アルゴリズムの結果を評価および比較するためには使用すべきではありません。
  • プロットやグラフは、モバイルデバイスで表示するのが困難です(多くのユーザーがモバイルデバイスを使用してDiscordにアクセスしています)。
  • プロットやグラフは、意図的であろうとなかろうと誤解を招くことがあります(統計で嘘をつく方法に関するレッスンを参照してください)。
  • Matplotlibなどの多くのライブラリは、可能な限り軸を再スケーリングして値の差を表示しますが、利点と欠点があります。

最善の方法(およびほとんどの機械学習ツールで使用されるアプローチ)は、グラフをプロットする代わりに、複数のパフォーマンスメトリック(機械学習エラーメトリックを参照)を計算することです。

図1:Orangeを使用した回帰のエラーメトリック

MLで一般的に使用されるグラフは、モデルトレーニングプロセスの収束をチェックするためのトレーニング/検証損失のプロットです。テーブルは通常、モデルを比較し、要約統計量を共有するために使用されます。結果をグラフとして表示することを選択する場合は、パフォーマンスメトリックの実際の値の表を含めることが最善です。

AI / MLモデルは動的/確率的な性質を持つため、モデルのトレーニングと適合を行うたびにわずかに異なる結果が得られます。したがって、プロセス全体(モデルのトレーニングと適合、そしてパフォーマンスメトリックの計算によるモデルの評価)を多数回(例えば10回)実行する必要があります。最後に、メトリック値の平均値を計算します。また、平均、中央値、および標準偏差などのメトリックの要約統計量を計算することも役立ちます。

図2:10回のトライアルの平均エラーメトリック

J.ブラウンリーによるいくつかのML結果の表示方法を示す記事です:

KerasでのLSTMsを使用した多変量時系列予測

大気汚染のための多変量マルチステップ時系列予測モデルの開発方法

7. ユーザにコードのデバッグを手伝うように頼むことを避ける。

一般的に、問題はアルゴリズムの実装ではなく、データの準備と特徴エンジニアリングです。

コードのデバッグに時間を費やしている場合、それはリファクタリングが必要であるか、より単純なモデルを選択する必要があることを示す赤信号です(オッカムの剃刀)。

参考文献

[1] S.ラッセル、P.ノービッグ、『Artificial Intelligence: A Modern Approach』、第4版、Upper Saddle River, NJ: Prentice Hall、ISBN: 978–0–13–604259–4、2021(主に19.9節)。

[2] E.アルパイディン、『Introduction to Machine Learning』、第3版、MIT Press、ISBN: 978–0262028189、2014(主に第19章)。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

機械学習

大規模な言語モデルにおけるコンテキストに基づく学習アプローチ

言語モデリング(LM)は、単語のシーケンスの生成的な尤度をモデル化することを目指し、将来の(または欠損している)トーク...

AI研究

オープンAIのCEOであるサム・アルトマン氏が解任されました

驚きの展開となり、AI研究のリーディングカンパニーであるOpenAIは、共同創設者兼CEOのサム・オールトマン氏の解任を発表しま...

AI研究

「産業界が音声AIを活用して消費者の期待に応えている方法」

急速な技術の進歩のおかげで、消費者は前例のないほどの便利さと効率性に慣れてきました。 スマートフォンを使えば、商品を検...

人工知能

プロンプトの旅:プロンプトエンジニアリングを通じた生成型AIシステムのライフサイクル

プロンプトエンジニアリングは、AIの応答を指導しますそのライフサイクルは倫理的な考慮事項を統合し、公正かつ透明なAIの未...

機械学習

より速い治療:Insilico Medicineが生成型AIを使用して薬剤開発を加速する方法

生成AIは比較的新しい家庭用語ですが、薬剤研究会社Insilico Medicineは、長年にわたってこれを使用して、深刻な疾患の新しい...

AI研究

アリババAI研究所が提案する「Composer」は、数十億の(テキスト、画像)ペアで訓練された、巨大な(50億パラメータ)コントロール可能な拡散モデルです

現在、テキストベースの生成画像モデルは、多様な写真のような画像を生成することができるようになりました。最近の多くの取...