※本記事は、AWS re:Invent 2024におけるセッション「Getting better image analysis with generative AI (AES307)」の内容を基に作成されています。セッションの詳細情報はAWS re:Invent(https://go.aws/reinvent )でご覧いただけます。
本記事では、セッションの内容を文字起こしと共に要約・構造化しております。なお、本記事の内容は登壇者の見解を正確に反映するよう努めていますが、要約や解釈による誤りがある可能性もありますので、正確な情報や文脈については、オリジナルの動画をご覧いただくことをお勧めいたします。
また、より詳しい情報については、AWSイベント(https://go.aws/3kss9CP )やAWSの公式YouTubeチャンネル(http://bit.ly/2O3zS75 )もご参照ください。AWSイベントの動画アーカイブ(http://bit.ly/316g9t4 )では、他のセッションの内容もご覧いただけます。
1. イントロダクション
1.1 発表者の紹介
このプレゼンテーションは、AWSの航空宇宙・衛星チームに所属する二名のエキスパートによって行われました。
1. イントロダクション
1.1 発表者の紹介
このプレゼンテーションは、AWSの航空宇宙・衛星チームに所属する二名のエキスパートによって行われました。:
- Chris Wise
- AWSの航空宇宙・衛星チームのSolutions Architect Manager
- チームのテクニカルリーダーシップを担当
- プロンプトエンジニアリングの専門家
- 画像分析における効果的なプロンプト設計の方法論を確立
- Joy Fasnacht
- AWSの航空宇宙・衛星チームのPrincipal Solutions Architect
- 実践的な技術実装とデモンストレーションを担当
- BedrockにおけるAIサービスの活用に関する深い知見を保有
- 衛星画像を使用した実践的なプロンプトエンジニアリングのデモンストレーションを担当
両者は、AWS re:Invent 2024において、ジェネレーティブAIの実用的な応用に焦点を当てたこのセッション(AES307)を共同で進行しました。このセッションは、技術的な深さと実践的な応用の両面をカバーすることで、参加者に包括的な学習機会を提供することを目的としています。
1.2 プレゼンテーションの目的
このプレゼンテーションは、AWS re:Invent 2024において、ジェネレーティブAIを活用した画像分析の高度化に焦点を当てています。発表者のChris Wiseが指摘するように、近年のre:InventはジェネレーティブAIカンファレンスとしての性格を強めており、その中でも特にプロンプトエンジニアリングの重要性が増しています。
本セッションの主な目的は、以下の3点に集約されます。第一に、画像分析におけるプロンプトエンジニアリングの重要性を示すことです。プロンプトエンジニアリングは、ジェネレーティブAIモデルとの対話において核となる技術であり、特に画像分析においては適切なプロンプト設計が結果の質を大きく左右します。
第二に、AWSのBedrockを使用した画像分析の具体的な改善方法を示すことです。特に、衛星画像の分析というユースケースを通じて、プロンプトの改良によって分析結果がどのように向上していくかを実践的に示すことを目指しています。
第三に、これらの技術をビジネスに適用する方法の説明です。具体的には、カタログ画像の商品説明生成など、実務で直面する課題に対してジェネレーティブAIをどのように活用できるかを示します。JoyはBedrockのデモンストレーションを通じて、プロンプトエンジニアリングの理論がどのように実践に結びつくのかを説明し、参加者が自身のビジネスケースに応用できるような知見を提供することを目指しています。
これらの目的は、理論と実践の両面から参加者の理解を深め、実際のビジネス課題の解決に役立つスキルを提供することを意図しています。
2. プロンプトエンジニアリングの基礎
2.1 プロンプトの構成要素
Chris:プロンプトエンジニアリングは、私たちがジェネレーティブAIと対話する際の重要な要素ですが、意外にも深く掘り下げて議論されることの少ないトピックです。しかし、これはほぼすべてのジェネレーティブAIモデルとの対話において鍵となる技術です。
プロンプトの主要な構成要素について、会場の皆さんにお尋ねしましたが、プロンプトの異なる部分について本当に理解している方は少ないようでした。そこで今日は、バランス、コンテキスト、そして洗練についてのベストプラクティスをお話ししたいと思います。
プロンプトの最初の重要な要素は、コンテキストです。これは、皆さんのビジネスケースそのものです。AIモデルが知っておくべき、皆さんのビジネスや業務に関する情報、つまりタスクの舞台設定となる背景情報すべてを含みます。
次に重要なのは、関連する制約です。私たちは後ほど具体的な制約についても別途お話ししますが、ここでは特にコンテキストに焦点を当てた制約について説明します。最も基本的な例は「役割」です。モデルがビジネスアナリストの視点で見るべきか、マーケティングの視点で見るべきかなど、モデルがどのような視点でデータやコンテキストを見るべきかを定義します。
さらに、AIに実行して欲しい具体的なタスクについての指示も必要です。これは明確で簡潔な方向性を示すものでなければなりません。そして最後に、実際の制約条件です。例えば、返答してほしいデータセットのサイズに制限があるかどうかなどです。これについては、具体的な例を用いて後ほど詳しく説明させていただきます。
2.2 コンテキスト(文脈)の重要性
Chris:プロンプトエンジニアリングにおいて、まずコンテキストについて詳しく説明させていただきたいと思います。これは皆さまのビジネスケースそのものです。私たちがAIモデルにタスクを依頼する際、モデルが知っておくべき、皆さまのビジネスや業務に関する情報、つまりタスクの舞台設定となる背景情報すべてを含む必要があります。
例えば、皆さまの会社の業務内容、日々の運用方法、そしてAIモデルにどのような目的で仕事を依頼するのか、といった情報がここに含まれます。これらの情報は、AIモデルがタスクを適切に理解し、実行するための重要な基盤となります。
また、このコンテキストには、プロジェクトの目的や意図も明確に含める必要があります。なぜこのタスクが必要なのか、どのような結果を期待しているのか、といった情報です。これにより、AIモデルは与えられたタスクの範囲を正確に理解し、より適切な結果を提供することができます。
例えば後ほど具体例で示しますが、衛星画像の分析タスクでは、単に「画像を分析してください」という指示だけでなく、「都市計画の目的で、この地域の地形的特徴を理解したい」といったコンテキストを提供することで、より具体的で有用な分析結果を得ることができます。このように、コンテキストはAIモデルとのコミュニケーションにおいて、極めて重要な役割を果たすのです。
2.3 制約条件の設定
Chris:プロンプトの制約条件について、さらに詳しく説明させていただきます。制約条件は大きく二つのカテゴリーに分けられます。先ほど少し触れたコンテキストに焦点を当てた制約と、実際のタスク実行に関する具体的な制約です。
まず、コンテキストに焦点を当てた制約の中で最も基本的なものは「役割」です。これは、モデルがどのような視点でデータやコンテキストを見るべきかを定義します。例えば、ビジネスアナリストの視点で見るべきか、マーケティングの視点で見るべきかといった点です。この役割の設定により、モデルの出力の方向性が大きく変わってきます。
また、タスク実行に関する具体的な制約については、データセットのサイズ制限や出力形式の制約があります。これらは、モデルがどの程度のデータを処理し、どのような形式で結果を返すべきかを指定します。
例えば、後ほどお見せする画像分析のデモンストレーションでは、雲量が25%以上の画像に対する警告を出すように制約を設定します。また、デジタル標高モデルの必要性や人間による検証の必要性といった制約も加えていきます。このように、制約条件を適切に設定することで、より正確で実用的な結果を得ることができます。
これらの制約は、単なる制限ではなく、AIモデルが効果的に機能するためのガイドラインとして機能します。適切な制約を設定することで、より具体的で有用な結果を得ることができ、また人間による検証が必要な場合には、その旨を明確に示すことができるのです。
2.4 具体的な例:技術コピーライターのケース
Chris:ここでプロンプトエンジニアリングの実践的な例として、技術コピーライターのケースをご紹介したいと思います。この例では、CosmosNet Solutionsという衛星ベースのインターネットを専門とする先駆的な企業のケースを見ていきます。
まず、コンテキストとして、技術コピーライターとしての役割を設定します。この役割制約は、プロンプトの最初の重要な要素となります。そして、CosmosNet Solutionsにおける具体的な指示として、GlobalConnectサービスを潜在的な顧客に紹介するためのプロモーショナルブログの作成を依頼します。
入力データとしては、会社の情報、サービスの詳細、月額料金などの具体的な情報を提供します。出力フォーマットについては、注目を集める見出し、導入段落、そして3から4つの重要なポイントを含むように指定します。
そして最後に、制約として以下の条件を設定します:
- ブログポストは400から500単語の範囲内であること
- プロフェッショナルでありながら、エキサイティングなトーンを維持すること
- 技術的な専門用語を避けること
このように、技術コピーライターの役割を設定することで、専門的な内容を一般の読者にも理解しやすい形で伝えることができます。このアプローチは、テキストベースのLLMと画像分析/地理空間LLMの間に見られる共通点を理解する上で良い例となります。
3. AWSのジェネレーティブAIスタック
3.1 ハードウェアレベル
Joy:AWSのジェネレーティブAIスタックについて、私たちは顧客に多くの柔軟性を提供するため、3つのレベルで構成されたスタックを用意しています。今日は、そのベースとなるハードウェアレベルからお話ししたいと思います。
まず、このレベルには大規模なモデルのトレーニングを行うためのトレーニングインスタンスが含まれています。これは独自の非常に大規模なモデルをトレーニングする場合に、このレイヤーを利用することになります。
実は、私はSwami氏のキーノートを聞く機会を逃してしまいましたが、恐らく新しい発表があり、このスライドは近いうちに更新が必要になるかもしれません。しかし、基本的な構造としては、ハードウェアレベルが私たちのAIスタックの基盤となっており、ここでは主に大規模なモデルトレーニングのインフラを提供しています。
このハードウェアレベルは、上位のミドルウェアレベルやビジネスアプリケーションレベルの基盤となる重要な層です。これにより、顧客は必要に応じて独自のモデルを開発・トレーニングすることが可能となっています。このような階層化されたアプローチにより、私たちは様々なニーズに対応できる柔軟性を確保しています。
3.2 Bedrockミドルウェアレベル
Joy:本日のデモンストレーションで私たちが焦点を当てるのは、スタックの中間層、特にBedrockを使用したプロンプト精製の部分です。このデモンストレーションでは、Amazon Claude 3.5を使用しています。
Claude 3.5は、特に興味深いモデルで、テキストと画像の両方を扱うことができます。例えば、画像をモデルに入力して、その画像の説明を生成するように要求することができます。この機能は、様々な業界で幅広い応用可能性を持っています。
具体的なユースケースをご紹介しましょう。例えば、マーケティングの観点からすると、画像分析と画像生成の大きな用途の一つは、カタログ画像の処理です。インターネットで猫のおもちゃを販売しているとしましょう。すべての猫のおもちゃの写真をモデルに入力し、「ウェブサイトで使用できる商品説明を生成してください」と指示することができます。
このように、Claude 3.5とそのモデルの進化は、ビジネスにおける実践的な問題解決に直接的に貢献できる機能を提供しています。本日のデモンストレーションでは、この3.5 Sonnetを使用して、どのようにしてプロンプトを改良し、より良い結果を得ることができるかをお見せしていきます。
3.3 ビジネスアプリケーションレベル
Joy:AWSのジェネレーティブAIスタックの最上位層として、ビジネスアプリケーションレベルについてご説明します。このレベルでは、Amazon Qのような製品を通じて、ジェネレーティブAIの機能を民主化された形で提供しています。つまり、ユーザーは複雑な技術的な実装を意識することなく、ジェネレーティブAIの機能を利用することができます。
Amazon QやQ Developerは、まさにこの民主化されたアプローチを体現する製品です。これらのツールを使用することで、開発者やビジネスユーザーは、下層のインフラストラクチャやミドルウェアの複雑さを意識することなく、ジェネレーティブAIの機能を活用することができます。
私たちは顧客に対して、このような階層化されたアプローチを提供することで、それぞれのニーズや技術レベルに応じた最適な選択肢を提供しています。最上位層であるビジネスアプリケーションレベルは、特に技術的な専門知識を持たないユーザーにとって、ジェネレーティブAIの恩恵を受けるための重要な入り口となっています。
4. 画像分析デモンストレーション
4.1 基本的な画像分析(プロンプトなし)
Joy:それでは、Amazon Bedrock Samplesのリポジトリから構築したアプリケーションを使用してデモンストレーションを行いたいと思います。このアプリケーションは、Claude Sonnetを使用した画像分析を行うもので、私は特にモデルを3.5に設定しています。
まず、ベースケースとして最も基本的な分析から始めましょう。プロンプトを全く与えずに、単純に画像を分析させてみます。私たち航空宇宙・衛星チームは、衛星画像やその処理、データ分析に深い関心を持っているため、今回は西オーストラリアの沿岸部の高解像度衛星画像を使用します。
画像を入力すると、モデルは自動的にJSON形式で詳細な応答を返してきました。これは私からの特別な指示なしに、モデルが選択したデフォルトのフォーマットです。この応答には、沿岸部の特徴、植生の状況、構造物の存在、道路網などの情報が含まれています。これは確かに興味深い結果ですが、実際のユースケースではこれだけでは十分ではありません。
この基本的な分析結果は、モデルが画像の内容を理解し、構造化された形式で情報を提供できることを示していますが、より実用的な分析のためには、さらなるプロンプトの改良が必要であることが分かります。この後、どのようにプロンプトを改良していけば、より具体的で有用な分析結果が得られるのかをお見せしていきたいと思います。
4.2 コンテキストと指示を追加した分析
Joy:それでは、プロンプトの改良の第一段階として、コンテキストと具体的な指示を追加した分析をお見せしたいと思います。同じ西オーストラリアの沿岸画像を使用しますが、今回は異なるアプローチを取ります。
まず、モデルに対して具体的な役割を与えます。「あなたは衛星画像アナリストです」というコンテキストを設定し、さらに具体的な指示として「西オーストラリアの沿岸部のこの地域を分析し、10フィートの高潮が発生した場合の影響を予測してください」という課題を与えます。また、アウトプットは5段落のテキストに制限し、都市計画の観点から、この地域を初めて訪れる人々のために分析を行うという目的も設定します。
この文脈の中で画像を分析させたところ、モデルは衛星画像アナリストとしての役割を理解し、5段落の構造化された分析結果を提供してくれました。都市計画の視点から、10フィートの高潮が発生した場合の潜在的な影響について、より具体的で実用的な予測を行うことができました。
このように、適切なコンテキストと指示を提供することで、モデルはより焦点を絞った、実用的な分析を行うことが可能になります。しかし、この段階でもまだいくつかの課題が残っています。これらの課題に対処するため、次は制約条件を追加した分析をお見せしたいと思います。
4.3 制約条件を加えた高度な分析
Joy:衛星画像分析をさらに改良するため、私たちは重要な制約条件をいくつか追加しました。衛星画像分析の専門家として、単純に平面的な衛星画像だけでは正確な予測を行うことは難しいことを知っています。そこで、以下の制約条件を設定しました。
まず、衛星画像の品質に関する重要な制約として、雲量に関する条件を追加しました。画像の雲量が25%を超える場合、モデルは警告を発するように設定しています。これは重要な制約です。なぜなら、大量の雲がある場合、モデルはテキストから画像への変換分析の精度が低下し、人間による追加の検証が必要となるためです。ただし、モデルには警告を出した後も分析を継続し、5段落の分析結果を提供するように指示しています。
次に、デジタル標高モデル(DEM)に関する制約を追加しました。これは特に10フィートの高潮予測において重要です。衛星画像だけでは地形の高低差を正確に把握することが難しく、例えば崖のような地形があった場合、高潮の影響予測が大きく異なってきます。そのため、モデルには正確な予測のためにはDEMが必要であることを明示的に認識させ、その旨を出力に含めるように指示しました。
このように制約を追加することで、モデルはより慎重な分析を行い、人間の専門家による検証が必要な部分を明確に示すようになりました。予測の不確実性を適切に伝え、より信頼性の高い分析結果を得ることができるようになったのです。
4.4 実験からの気づき
Joy:この一連のデモンストレーションを通じて、いくつかの興味深い発見がありました。特に印象的だったのは、AIモデルの雲量推定の精度です。実際の画像で示された40-50%の雲量を、モデルは非常に正確に推定することができました。この精度は私たちの予想を上回るものでした。
また、このデモンストレーションを通じて、衛星画像分析における地形データの重要性が改めて浮き彫りになりました。特に高潮のシミュレーションのような具体的なユースケースでは、平面的な衛星画像だけでは不十分で、デジタル標高モデル(DEM)のような追加データが必要不可欠であることが明確になりました。これは、AIモデル自身が分析の限界を認識し、追加データの必要性を指摘できるという点で重要な発見でした。
さらに、検証プロセスにおける自動化と人間の役割の適切なバランスについても、重要な知見が得られました。モデルは25%以上の雲量がある場合に自動的に警告を発し、人間による検証の必要性を示唆することができました。これは、AIと人間の専門家が効果的に協働できる可能性を示しています。モデルが自身の限界を認識し、人間の専門家による検証が必要な場面を適切に判断できることは、実用的なシステムを構築する上で非常に重要な特性だと考えています。
5. 今後の展望と結論
5.1 Novaモデルへの期待
Joy:昨日発表されたNova(AWSの新しいモデル)に対して、私は個人的にとても大きな期待を持っています。本日のデモンストレーションで使用したClaude 3.5 Sonnetでも、衛星画像の分析において印象的な結果が得られましたが、Novaではさらなる可能性が広がると考えています。
私自身、このNovaモデルを使って今回お見せしたような画像分析デモを再度試してみることを、次の宿題プロジェクトとして考えています。特に、雲量の推定精度やデジタル標高モデルとの連携など、より高度な画像解析能力の向上に期待を寄せています。
このような新しいモデルの登場により、衛星画像分析の分野でも、より正確で効率的な分析が可能になると考えています。特に、人間の専門家との協働をより効果的に支援できる機能の実装に期待を寄せています。
5.2 リソースとドキュメント
Joy:本日のデモンストレーションで使用したコードやリソースについて、2つのQRコードを用意しました。これらは皆さまがすぐにアクセスできるようになっています。
1つ目のQRコードは、私たちのドキュメントへのリンクです。このドキュメントには、Chrisが本日プレゼンテーションで説明したプロンプトエンジニアリングについて、さらに詳しい情報が含まれています。実は、プロンプトエンジニアリングに関しては多くの科学研究論文が発表されており、さまざまなプロンプトエンジニアリングのスタイルや手法について学ぶことができます。皆さまのユースケースに合わせて、これらの手法を適用していただけます。
2つ目のQRコードは、Amazon Bedrockのサンプルコードを含む私たちのGitHubリポジトリへのリンクです。本日お見せした画像分析のデモンストレーションのコードも、このリポジトリに含まれています。私たちはオープンソースとしてこれらのコードを公開しており、皆さまご自身でこのデモを実行し、さらに発展させていただくことができます。このリポジトリには、Bedrock関連の多くのサンプルコードが含まれており、実践的な学習に活用していただけます。
これらのリソースは、皆さまが実際にジェネレーティブAIを活用する際の重要な参考資料となるはずです。特にプロンプトエンジニアリングに関する科学的な研究成果は、より効果的なAIの活用方法を理解する上で非常に有用です。