生成 AI は、自然言語、画像、オーディオ、コードなどの元のコンテンツを作成できる人工知能の一種です。 生成 AI の出力は、ユーザーが提供する入力に基づいています。 ユーザーが生成型 AI と対話する一般的な方法の 1 つは、入力として自然言語を使用するチャット アプリケーションを使用することです。 OpenAI によって開発された ChatGPT は、この一般的な例です。 自然言語を入力として使用する生成 AI アプリケーションには、自然言語処理 (NLP) を実行するための大規模な言語モデル (LLM) が搭載されています。
生成 AI のしくみ
すべての生成 AI は、モデルの上に構築されます。 これらのモデルは、自然言語、画像、オーディオ、コードなどのコンテンツ形式の大規模なデータ セットでトレーニングされます。 生成 AI モデルでは、トレーニング データで識別されたパターンを使用して、統計的に類似した新しいコンテンツを生成します。
ユーザーによって提供される入力は、AI モデルによって出力を作成するために使用されます。 入力は最初に、モデルが理解できる形式のデータに解析されます。 その後、モデルはそのデータを使用して、最終的な出力を構築するために組み合わせたトレーニングから一致するパターンを識別します。 生成 AI モデルは、一意のコンテンツを生成するように設計されているため、同じ入力に対して同じ出力が生成されることはありません。
入力または出力として自然言語をサポートする生成 AI アプリケーションでは、LLM を使用してこれを行います。 LLM は NLP を実行するために使用され、入力テキストを分類し、そのセンチメントを決定します。 その分類と感情分析は、生成 AI モデルによってパターンを識別し、出力を構築するために使用されます。 出力がテキストの場合は、LLM のみを使用して生成できます。 出力がオーディオまたは画像の場合、追加のモデルを使用して、その形式で出力を生成するためのデータとパターンが提供されます。
ジェネレーティブ AI の一般的な用途
生成 AI アプリケーションでは、さまざまな潜在的なユース ケースと潜在的な出力がサポートされています。次のセクションで説明します。
自然言語の生成
一部の生成 AI アプリケーションでは、次のような自然言語出力を生成できます。
- LinkedIn プロファイルの専門的な単語の概要
- オンライン ネットショップ内のアイテムの豊富な説明
- 健康的な食事のためのアイデア
たとえば、ユーザー入力を考えると、 コショウを含む健康的な朝食に関する 3 つのアイデアを得て、生成 AI アプリケーションによって次の出力が生成される場合があります。
さて、ペッパーを含む3つの健康的な朝食があります:
卵とペッパーのクランブリング:いくつかのピーマンをサイコロにし、少し柔らかくなるまでパンでそれらをソテーします。 その後、いくつかの溶き卵を追加し、一緒にすべてを奪い合います。 栄養価の高い朝食には、全粒粉トーストをお召し上がりいただけます。
ペッパーとアボカドトースト:全粒パンのスライスをトーストし、スライスしたピーマン、マッシュアボカド、塩とコショウを振りかけます。 これは、ペッパーからビタミンCと一緒にアボカドからいくつかの健康的な脂肪を得るための素晴らしい方法です。
朝食バリトとペッパー: フライパンで一緒にいくつかのダイクベルペッパー、玉葱、および混ぜ合わせ卵をソテー。 次に、混合物を全粒トルティーヤにスプーンし、サルサまたはホットソースで上に入れます。 それをロールアップし、満足のいく栄養価の高い朝食をお楽しみください。
イメージの生成
一部の生成 AI アプリケーションでは、自然言語入力から画像出力が生成されます。 アプリケーションとそのモデルに応じて、ユーザーは次を指定できる場合があります。
- 画像に表示されるユーザーまたは内容
- 画像を作成するアート スタイル
- 類似の画像を生成するための参照
画像の生成では、オンライン アカウントの仮想アバターを作成したり、企業のロゴをデザインしたり、クリエイターに芸術的なインスピレーションを提供したりできます。 たとえば、ユーザーは要求を入力し、 ハンバーガーを食べる象の画像を作成できます。 生成 AI アプリケーションでは、次の出力が生成される場合があります。
音声の生成
一部の生成 AI アプリケーションでは、自然言語入力からオーディオ出力が生成されます。 アプリケーションとそのモデルによっては、ユーザーは次のことが可能な場合があります。
- 入力テキストから自然な音声を合成する
- 特定のスタイルで音楽を作成するか、特定の楽器をフィーチャーする
- 自然言語で指定された設定条件に基づいて入力オーディオ ファイルを変更する
オーディオ生成では、デジタル音声アシスタントからの音声応答を提供したり、音楽制作用の曲にバッキング 楽器を追加したり、参照録音からユーザーの元の音声を再現したりできます。
コード生成
一部の生成 AI アプリケーションでは、自然言語入力からコードが生成されます。 アプリケーションとそのモデルによっては、ユーザーは次のコードを生成できる場合があります。
- 選択した言語
- 特定の入力および出力構造を受け入れます
- リファレンス ドキュメントに基づいて特定のテクノロジを使用する
コード生成では、データの並べ替えやフィルター処理、ある言語から別の言語へのコード変換の高速化、指定されたリファレンス ドキュメントに基づくテクノロジに関する質問への回答など、一般的な操作をすばやく実装できます。 たとえば、「C# を使用して tic-tac-toe のゲームをコーディングする方法を説明する」という入力を考えると、生成型 AI アプリケーションによって次の出力が生成される場合があります。
C# で tic-tac-toe のゲームをコーディングする方法の簡単な例を次に示します。
using System;
namespace TicTacToe
{
class Program
{
static char[] board = { '1', '2', '3', '4', '5', '6', '7', '8', '9' };
static int player = 1; // Player 1 will start
static int choice; // The number the player chooses
static int flag = 0; // Set the flag value to 0
// Check if the position is already marked or not
private static int CheckPosition(char mark)
{
for (int i = 0; i < 9; i++)
{
if (board[i] == mark)
{
return 1;
}
}
return 0;
}
// The rest of the generated code has been omitted for brevity
// ...
}
}
このコードは、C# で単純なコンソール ベースの tic-tac-toe ゲームを作成します。 1 次元配列を使用してボードを表し、各移動後に勝利または描画をチェックします。
LLM のしくみ
LLM をトレーニングする場合、トレーニング テキストは最初にトークンに分割 されます。 各トークンは、一意のテキスト値を識別します。 トークンには、個別の単語、部分的な単語、または単語と句読点の組み合わせを指定できます。 各トークンには ID が割り当てられ、テキストをトークン ID のシーケンスとして表すことができます。
テキストがトークンに分割されると、 埋め込みと呼ばれるコンテキスト ベクターが各トークンに割り当てられます。 これらの埋め込みベクターは、トークンのベクターの各要素がトークンのセマンティック属性を表す、複数値の数値データです。 トークンのベクターの要素は、トークンが一緒に使用される頻度または同様のコンテキストに基づいて決定されます。
目標は、前のトークンに基づいてシーケンス内の次のトークンを予測することです。 重みは、次のトークンに対する相対的な影響を表す既存のシーケンス内の各トークンに割り当てられます。 次に、前のトークンの重みと埋め込みを使用して次のベクトル値を予測する計算が実行されます。 次に、予測されたベクトルに基づいてシーケンスを続行するために、最も可能性の高いトークンがモデルによって選択されます。
このプロセスはシーケンス内の各トークンに対して反復的に続行され、出力シーケンスは次のイテレーションの入力として回帰的に使用されます。 出力は、一度に 1 つのトークンをビルドします。 この戦略は、オートコンプリートのしくみに似ています。提案は、これまでに入力された内容に基づいて、新しい入力ごとに更新されます。
トレーニング中、トークンの完全なシーケンスはわかっていますが、現在考慮されているトークンの後に来るトークンはすべて無視されます。 次のトークンのベクトルの予測値が実際の値と比較され、損失が計算されます。 その後、重みを段階的に調整して、損失を減らし、モデルを改善します。
関連コンテンツ
.NET