生成AIを活用した金融サービス構築の課題と解決手法
- 基調講演➁
【講演者】
- SBI金融経済研究所株式会社
研究主幹
SBIホールディングス株式会社
SBI生成AI室 プロジェクトコーディネーター
副島 豊 氏
<サービス構築、内製化に必要なもの:技術理解と適用対象>
生成AIのサービス構築や内製化には、ベースになっている技術や使い方の理解が前提となる。ChatGPTやCopilotに触れて、生成AIの使い方を知ることが最初の一歩であり、イメージがもてたところで、生成AIの中核技術であるLLM(大規模言語モデル)の特徴や理論モデルの概要を把握し、次にどのような先行事例があるかを学ぶという手順がお勧め。そこまでくると、自社のどの業務に適用できるか、あるいは新しいサービスを生み出せるのか、実現可能性をもって生成AIのアプリケーションを考えてみることができるようになる。
実際にサービスを作る際には、インフラ及び人材をどうするのか、企業内のどこに組織を置くのかをセットで考えることが大切。そして、新しいサービスを創造していく際のポイントの1つ目は、100%を要求しないこと。9割ぐらい上手くいけば大成功と割り切れる分野に適用していくことが重要。ポイントの2つ目は、秘匿情報を扱えるIT環境とシステムを構築すること。有効なサービス構築には、企業内部の非公開情報や顧客情報の活用が必須となることが多く、2つ目はクリアしなければならない課題。
<LLMの中身と特性>
LLMとは、次の言葉を1つずつ予測・創造して文を伸ばし、最終的に文章を作り上げるというモデル。蓋然性が高い単語を次々に加えていくことによって文章を生成する仕組みであるために、ハルシネーションは生じて当然。むしろ、こうした手法で文章が生成されるのは奇跡ぐらいに思った方がよい。
例えば、「日本/の/首都/は」に続く単語をどうやって求めるかを考えてみよう。原理的にはあらゆる単語(広辞苑は7万語でそれよりはるかに多い)について蓋然性、つまり前出の言葉を条件とした条件付確率を算出し、それが高い単語を選択する。選択方法は確率が1番高いものを逐一選ぶgreedy decoding、繋がりを重視するために1単語だけでなく複数個先までセットで確率を見るbeam search、確率的ゆらぎをいれるrandom samplingの3つが代表例である。GPTが採用しているのはrandom samplingで、temperatureという概念で実装されている。答えは東京とは限らない。「暑い」かもしれないし「京都/でした」かもしれない。このような原理でLLMが動いていることを知っておくことは、サービス実装時に過大な期待をもたないために重要である。アプリケーションサービスの質や精度を上げていく際にも必要となる。
<LLMの発展>
LLMのベース技術はニューラルネットワークである。かなり昔から自然言語処理(以下、NLP)の領域においては、単語の並びという時系列展開を扱えるニューラルネットワークが利用されていた。RNNやLSTMと呼ばれるモデルが代表例である。これらは精度や計算速度面などで課題を抱えていた。これを解決したのがAttention機構を備えたTransformerモデルである。Transformerの登場によって、LLMは劇的な進化を遂げた。
また、ニューラルネットワークへの入力データは数値であるが、単語をどのように数値化するかの技術進歩も大きかった。word2vecと呼ばれる技術は、膨大な文章の集合体(コーパス)に含まれる単語と単語の関係性を抽出し、ある単語を固定次元のベクトルとして表現する手法にこの関係性を反映させるものである。膨大な単語群を比較的コンパクトなベクトル空間に押し込んで、かつ単語間の関係性もこの空間上で表現されるというメリットを有している。LLMの技術で、単語や文書のベクトル化、ベクトル化データベースという言葉を聞くことがあるが、ここから来ている。もちろん、ベクトル化表現の技術も日々改良されている。
TransformerによりLLMのパフォーマンスは飛躍的に向上した。文とは単語の羅列であり、初期のLLMは、単語羅列のパターン性の理解に基づく文の再現に過ぎないというLLMの原理が透けて見える程度の精度であった。しかし、今となってはLLMがあたかも知識を持っているかのように文章を作り出せるようになった。また、文章以外の画像や音声ファイルなどの多様なインプットに対して、求めに応じた適正なアウトプットを様々に返すことができるようになっている(LLMのマルチモーダル化)。
<LLM開発途中での発見>
転移学習と呼ばれる重要な発見があった点にも触れておきたい。ある学習データセットでの学習結果が汎用性を持っており、違う分野にも転用可能なことが判ってきた。ベースモデルを少しいじるだけで、翻訳、会話、要約など言葉の多様なタスクに転用できる点は驚異的である。マルチモーダル化もここから来ている。新規データを加えることによって、追加学習をさせることも可能である。
規模の法則の発見も大きい。モデルサイズ、学習データや計算資源を大きくすればするほど、べき法則に従ってパフォーマンスが向上し続けることが発見された。この法則は、まだサチュレートしていないために、世界中で規模拡大競争が続いている。
加えて、モデルや学習データを大規模化していくと突然新しいことができるようになるというEmergent ability(創発的能力)もLLM開発の過程で発見された。急に桁数が長い計算問題を解き始めたり、文脈に沿った単語の解釈ができるようになったりすることが次々に判明している。
<LLMの学習方法や「良い答えを引き出す」使い方の発展>
初期のNLPは、タスクごとにモデルを構築し学習させる方法が採用されていた。効率は悪いが、それが当たり前と思われていた。ところが転移学習とPre-Trainingされたモデルを使えば、1つのLLMで対応可能ということが判ってきた。そのため、そこに経営資源を注ぎ込んで汎用モデルを巨大化していく開発方針が採られるようになった。
学習データセットの与え方にも進化があった。望ましい回答を「教師データ」として人間が作り、そのデータセットで追加学習させるSupervised Fine-tuningや、出力の好ましさを人が評価するRLFHという強化学習が導入されてきた。しかし教師データを大量に作るのは大変な作業であった。
そこで、より簡単な方法として発見されたのが、Few-shotやOne-shot Learningと呼ばれるIn-context Learningである。回答のパターンや模範解答例を1個あるいは数個示したり、LLMにroleを与えたりすると、パフォーマンスがグッと上がることが判ってきた。また思考ステップを示して誘導するChain of Thought(CoT)の有効性が発見され、応用が拡大している。プロンプトの工夫で望ましい答えを引き出す手法を解説した書籍がたくさん出版されているが、これら技術の発展によるものである。
<汎用LLMを超えて:PEFTとRAG>
本日の講演の大事なポイントは、新データに汎用LLMをどう対応させるかという点だ。冒頭でお話したように、生成AIを用いたサービス構築では、企業内情報や顧客情報の活用が必須となる。こうした新データを学習データに追加し、モデルの全パラメータを再学習させる手法はコストがかかりすぎる。予算と計算資源と専門人材を有したLLM開発企業でないと困難である。こうした汎用LLMの限界を解決すべく登場したのがPEFT(Parameter Efficient Fine Tuning)と呼ばれる効率的な追加学習法である。しかし、LLMの追加学習は簡単ではなく、実際に個人的にやってみたら逆にパフォーマンスが下がることも経験した。
最近では、RAG(Retrieval Augumented Generation)という技術のほうが優勢である。生成AIシステムを外注すると、大方はRAGで組まれることが多いのではないか。RAGでは、プロンプト指示と一緒に必要情報を与えることで、LLMを日本語生成マシンとして利用する。その情報データセットをどう作るか、そして、プロンプト指示の内容にあわせて適切にデータベースにクエリーを投げ、どのような情報を検索結果として返すかというところに精度向上のポイントがある。
RAGの実装も容易ではなく、実用化の手前で苦しんでいるケースも多い。質問のコンテクストにしっかり対応できる知識データベースがないことが原因である場合もある。ソリューションとして、データベースにナレッジネットワーク技術を使うというアイディアも出ている。情報間のつながりをデータベースとしてどう構築するかにRAGの課題を解決するヒントがあるかもしれないと感じている。
すでに膨大な蓄積がある検索技術をマスターすることもRAGの実装において重要だと思う。RAGではべクトル化DBがしばしば利用されるが絶対ではない。従来のドキュメントDBの代表格はElasticsearchである。関連性指標として代表的なTF-IDFやBM25でスコアリングして引っ張ってくるなど、検索技術の基本に戻った開発アプローチも有効かもしれない。
SBI生命による社内コールセンター業務の開発事例を実用化されている案件の一例として資料に示している。RAGの限界を補うために、Amazon Kendraの検索結果から取ってきた情報(何を参考・関連情報としてプロンプトと合わせてGPT-4に与えたか)が回答結果を補うもとのとして追加提示されている。ユーザーに情報の原典を示すという補完アプローチも非常に有効な生成AIの活用方法だと思う。
<ゼロスタートからの実装に向けた学び>
サービスを実装するための学びのステップの一例として、具体的なイメージを想像してみよう。もちろん、学びのパスには様々なものがあるので一例に過ぎない。
Step1は、ChatGPTなどに触れてみて、作りたいものをイメージしてみる。Step2は、ローカルPCからAPIを通じてGPTサービスを動かしてみる。Step3は、Webアプリケーションサービスとして組み上げてみる。これは生成AIとは関係ないがUIとして必要となる。Step4は、クラウドサービスを使ってセキュアな生成AIの環境を立てるというクラウド活用の学びである。Step5は、クラウドサービスを使ってテスト環境上にサービスを立てるという実践である。
無料の学習素材がネット上で膨大に提供されているので、まずは手を動かしてやってみるのが内製化への近道だと考える。SaaSサービスを活用した構築であっても、裏側で何が動いているか、精度向上のポイントはどこにあるかを知っておくことは有益である。