このレッスンは日本語に自動翻訳されたもので、まだ人によるチェックを受けていません。表現に違和感がある場合は、英語の原文が正となります。
すべての AI システムは、データを迅速に保存および取得する必要があります。画像内のピクセル値のリストであれ、50,000 語の語彙であれ、何百万ものユーザー設定であれ、データ構造の選択によって AI の思考速度が決まります。
配列とハッシュ マップという 2 つの構造が支配的です。これらをマスターすれば、ほぼすべての AI パイプラインの基礎が得られます。
配列は、メモリ内に並べて保存される項目の番号付きリストです。各項目には インデックス があり、リスト内での位置はゼロから始まります。
index: 0 1 2 3 4
value: ["cat", "dog", "bird", "fish", "frog"]
アイテムは隣り合って配置されているため、任意の位置に直接ジャンプできます。アイテム 3 が欲しいですか?完了 - 検索は必要ありません。これは O(1) アクセスです。つまり、配列に 10 項目が保持されようと、1,000 万個の項目が保持されようと、所要時間は同じになります。
途中でアイテムを挿入または削除すると、コストがかかります。変更後のすべての項目は一緒にシャッフルする必要があります。これは O(n) です。項目が多いほど、時間がかかります。
10,000 曲のプレイリストがあり、位置 5 に新しいトラックを挿入したい場合、位置 5 以降のすべての曲をシフトする必要があります。ストリーミング サービスは速度を落とさずにこれにどのように対処できるでしょうか?
ハッシュ マップ (ディクショナリまたはハッシュ テーブルとも呼ばれます) は、データを キーと値のペア として保存します。インデックス番号で項目にアクセスするのではなく、意味のあるキーで項目にアクセスします。
word_counts = {
"hello": 42,
"world": 37,
"AI": 156
}
「AI」のカウントが必要ですか?ハッシュ マップは ハッシュ関数 を使用して、バックグラウンドでキーをインデックスに変換します。結果? O(1) 平均検索時間 - 配列と同様ですが、数値の代わりに名前を使用します。
Python の辞書はハッシュ マップです。 ChatGPT はトレーニング中に単語の出現頻度をカウントする際、ハッシュ マップのような構造を使用して、インターネットのテキスト全体にわたる数十億の単語の出現を追跡します。
サインイン してディスカッションに参加
|操作 |配列 |ハッシュマップ | |----------|----------|----------| |インデックスによるアクセス | O(1) ⚡ |該当なし | |キーによるアクセス |お(ん)🐢 | O(1) ⚡ | |最後に挿入 | O(1) ⚡ | O(1) ⚡ | |真ん中に挿入 |お(ん)🐢 |該当なし | |値の検索 |お(ん)🐢 | O(1) ⚡ |
O(1) は「サイズに関係なく即時」、O(n) は「データが大きくなるほど遅くなる」と考えてください。
100,000 のユーザー プロファイルがあり、ユーザー名でユーザーを検索する必要があります。どの構造が最速ですか?
インタビューと AI の両方で最も役立つパターンの 1 つは、発生回数をカウントすることです。疑似コードのアイデアは次のとおりです。
counts = {}
for each word in text:
if word in counts:
counts[word] = counts[word] + 1
else:
counts[word] = 1
テキストをこの 1 回通過するだけで、すべての単語の頻度がわかります。言語モデルは、まさにこのアプローチを (大規模に) 使用して、どの単語が最も重要かを理解します。
数値の配列と目標が与えられた場合、その合計が目標に達する 2 つの数値を見つけます。単純なアプローチでは、すべてのペア - O(n²) をチェックします。賢いアプローチでは、ハッシュ マップを使用します。
seen = {}
for each number in array:
complement = target - number
if complement in seen:
return [seen[complement], current_index]
seen[number] = current_index
1 回のパス、O(n) 時間。ハッシュ マップは、すでに見たものを記憶しています。
2 和へのハッシュ マップ アプローチが、すべてのペアをチェックするよりも速いのはなぜですか?
レコメンデーション エンジンは、映画を提案する前に、ユーザーがその映画をすでに視聴したかどうかを確認する必要があります。ユーザーの視聴履歴を配列またはハッシュ マップに保存しますか?どのようなトレードオフが思い浮かびますか?
AI モデルは、単語の埋め込みをそれぞれ 300 個の数値の配列として保存します。ここで配列が適切な選択となるのはなぜでしょうか?
これで AI のデータ処理を支える 2 つの基本構造を身につけました。次の 文字列とテキスト処理 では、AI が生のテキストをモデルが実際に読める形に変える方法を学びます。これは、あなたが使うすべてのチャットボットや検索ボックスの裏にある最初のステップです。