見出し画像

Generative AI for Everyone受講メモ2

生成AIを用いたプロジェクトのtips

生成AIを用いたソフトウェアアプリケーション

LLMを用いることでAI開発の工数を短縮できる。これによりAIを用いたアプリケーションの数が増大する。

  • 従来のLLMを用いないAIプロジェクトは、レストランレビューの読み取りや感情分類システムの構築には多くのソフトウェアコードが必要で、数ヶ月単位の時間を要した。

    • ラベル付きデータの収集(1ヶ月)->AIモデルの学習(3ヶ月)->AIモデルのデプロイ(3ヶ月)

  • 対照的に、LLMを用いたプロンプトベースの開発では、感情分類器を構築するためのコードはごくわずかで、数分から数時間で完了する。

    • プロンプトの特定(数分~数時間) -> AIモデルのデプロイ(数時間~数日)


生成AIプロジェクトのライフサイクル

生成AIを用いたソフトウェアアプリケーションの開発は、繰り返し試行し、誤りを修正する実験的なプロセスであり、一度リリースしたら終わりではない。これは従来のAI(教師あり学習ベースのAI)を用いたプロジェクトも同様。

  1. プロジェクトの範囲設定:

    • ソフトウェアが実行するべきタスクを決定する。

    • 例: レストランのレビューモニタリングシステムを構築することを決める。

  2. プロトタイプの構築:

    • 生成AIの利便性を活用して、比較的短期間でプロトタイプを作成する。

    • 初期プロトタイプは完璧ではない。迅速に構築し、内部評価を行うことを優先。

  3. 内部評価:

    • 自社チームによるシステムのテストを行い、正しい応答率を確認する。

    • 不正確な応答が発見された場合、システムの改善に戻る。

  4. 外部展開とパフォーマンスのモニタリング:

    • システムが十分に機能すると判断されたら、外部ユーザーに対して展開する。

    • ユーザーからの入力に基づいてシステムのパフォーマンスを継続的に監視し、必要に応じて改善する。


代表的な改善手法4選

  1. プロンプトの更新:

    • 生成AIシステムの応答を向上させるために、プロンプトの表現や指示を調整する。

    • ユーザーの意図をより正確に伝え、モデルが望ましい結果を生成するための文脈や、ガイダンスを提供する。

  2. RAG(Retrieval Augmented Generation):

    • 大規模言語モデルに外部データソースへのアクセスを提供する手法。

    • LLMに内包されていない、外部リソースのデータを用いて応答を生成する。

  3. ファインチューニング:

    • ファインチューニングは、特定のタスクやドメインに対して既存の大規模言語モデルを微調整する手法。

    • この技術により、モデルは特定のタスクに対してより適切な応答を生成することができる。

  4. プリトレーニングモデル:

    • プリトレーニングモデルは、スクラッチから大規模言語モデルをトレーニングする方法。

    • これにより、特定のニーズやデータセットに合わせたカスタマイズされたモデルを構築することが可能になる。

どの手法を選べば良いかについての私見だが、1 -> 4の順番に試すのが良い。手法選択についてはコストとカスタマイズ性のトレードオフである。1のプロンプトの改善は最もお手軽に試すことができるが、改善の余地は限定される。一方、4のスクラッチでのLLM開発は、特定のタスクに最も望む形適応できる可能性があるが(できるとは限らない)、データ収集・学習のための計算リソース等、コストがかかりすぎるため、プロジェクトの採算が取れるか入念な試算した後に行うべきである。



RAG(Retrieval Augmented Generation)とは何か?

  • RAGは、LLM(大規模言語モデル)に追加の知識を提供する技術。インターネットやその他のオープンソースで学習している元データの知識を超えることができる。

  • これにより、LLMは特定の会社のポリシーなど、より具体的な情報に基づいて回答を生成することが可能になる

RAGのプロセス:

  1. 文書の検索:

    • 特定の質問に関連する文書を収集する。

  2. 検索された文書の統合:

    • 検索された文書をプロンプトに組み込む。

  3. LLMによる応答の生成:

    • 2で拡張されたプロンプトに基づき、LLMが回答を生成する。

RAGを利用することで、LLMを単なる情報源としてではなく、情報を処理し推論するエンジンとして利用することができる。これこそが最もエキサイティングな部分。


ファインチューニングのプロセス:

  • プリトレーニング: インターネット上の広範なテキストから学習する初期トレーニング段階。規模は100Bs of words(1000億個の単語)

  • ファインチューニング: 追加の小規模なデータセットを使用して、LLMに特定のスタイルやドメインの知識を学習させる。規模は1000s to 10000s of words(数千~数万の単語)

プリトレーニングモデル(スクラッチでのLLM開発)には億以上のお金がかかるので、公開済みpre-trainigモデル + fine-tuningが経済的。

ファインチューニング目的:
プロンプトで定義しにくい(表現が難しい)タスクを解くために有効

  1. 特定のスタイルやトーンの出力:

    • LLMが特定のスタイルで要約を生成するように調整することが可能。etc.カスタマーサポートの要約タスクを行う際、自社に即したスタイルや構造で出力するのに役立てる

  2. 書き言葉や話し言葉のニュアンスをまねる:

    • キャラクターの口癖等を模倣するときに使える

  3. 特定のドメインの知識を身につける:

    • 医療記録や法的文書など、特定の専門分野のテキストを理解する能力を向上させるために使用。専門分野で用いられる単語は特殊でpre-trainingのモデルでは不十分

  4. 小型モデルへの適用:

    • 大型モデルで必要とされるような複雑なタスクを、より小型のモデルで実行可能する。etc.文書のポジネガ等、簡単なタスクは100億越えのパラメータモデルはtoo muchすぎる。小型にすることでスマホやlaptopにデプロイが可能になる。


インストラクションチューニングとRLHF

  1. インストラクションチューニング:

    • 事前に学習したLLMをユーザーの指示に従って動作するように微調整するプロセス。

    • 具体的な質問と回答のペアを用いて、LLMに特定の応答を学習させる。特定の質問に対する適切な回答を事前に用意し、その回答を生成するようにLLMをトレーニングする。

  1. 強化学習による人間からのフィードバック(RLHF):

    • RLHFは、LLMが生成するテキストの品質を評価するためのモデルをトレーニングするプロセス。

    • このプロセスでは、LLMによって生成された多数の応答を評価し、その応答が有用で、正直で、無害であるかどうかに基づいてスコアを付けする。RLHFでは、人間の評価者によって与えられたフィードバック(報酬)をもとに、LLMがより高品質な回答を生成するように学習する。

違い:

  • インストラクションチューニングは、LLMに特定の応答を直接学習させることに焦点を当てているのに対し、RLHFはLLMが生成するテキストの品質を全体的に向上させることに焦点を当てている。


モデルの選び方

  1. モデルのサイズによる能力の評価:

    • 10億パラメーターのモデルは、パターンマッチングと基本的な世界知識か有していない。レストランのレビューを感情分析これで十分の可能性。

    • 100億パラメーターモデルは、より多くの世界知識を持ち、基本的な指示に従う能力が向上しする。Foodを注文するチャットボットの構築が可能になるかも。

    • 1000億パラメーター以上のモデルは、豊富な世界知識を持ち、複雑な推論が可能。深い知識や複雑な推論を必要とするタスクに適している。etcブレインストーミング等

  2. オープンかクローズドか:

    • クローズドモデル:比較的安価に強力なモデルを簡単に使える。欠点はベンダーロックイン。

    • オープンソース:モデルの完全な制御が可能であり、独自のデバイスで実行可能。データプライバシーやアクセスに関して完全な制御を維持することが重要な場合に有用。



その3に続く


サポートいただいたお金は、サーバー代や書籍購入代として利用させていただきます。