Blog

2024.04.17

Engineering

Research

継続事前学習による金融ドメイン特化LLMの構築の検証

Masanori Hirano

この記事は、金融チームエンジニアの今城(@imos)と金融チームリサーチャーの平野(@_mhirano)による寄稿です。

概要

  • 本稿では、ドメインに特化したLLMの構築の一環として、金融ドメイン特化のLLMの構築の検証を行いました。継続事前学習によるドメイン知識の獲得を模索し、特定のドメイン向けに専用のパラメータ数が多い高性能なLLMを提供を可能にすることを目指します。
  • 実験では、nekomata-14bとPFNで構築した金融に特化したデータセットを用いて、継続事前学習を実施しました。
  • 継続事前学習の結果として、金融ベンチマーク性能が向上することが確認できました。
  • 出力の差としては、Instruction Tuningを施していないため、大きな差は見られないものの、一定の差が見られるケースもありました。
  • 継続事前学習後のモデルは、https://huggingface.co/pfnet/nekomata-14b-pfn-qfin で公開しています。

はじめに

日本語に特化したLLMは様々な組織で開発されていますが、特定ドメイン(本稿では金融分野)におけるLLMの応用も一つ重要なトピックです。私たち、PFNの金融チームでも、LLMの金融分野の応用の研究開発・ソリューション提供を日頃から行っています。

金融分野はかなり特殊な分野であり、一般のLLMでは知識が足りないなどの問題点があります。例えば、日本語の金融系のタスクをまとめ、ベンチマークとして公開しているJapanese Language Model Financial Evaluation Harnessは、日本語におけるLLM用の金融ベンチマークのデファクトスタンダードになり始めていますが、GPT-4であっても、2024年4月現在時点では、100点満点には及ばないレベルのスコアしか出せていないタスクも複数存在します。このように、現在のLLMの金融における活用にはまだまだ課題がある状況です。

この課題を打破する一つの方法として、LLMに知識を追加する、ということが考えられます。ただ、知識を追加すると言っても、表層アライメント仮説(Superficial Alignment Hypothesis)という仮説を主張する論文も存在するように、Instruction TuningやLoRAなどの簡易的・目的を絞った学習では十分に知識を入れることは難しいと考えられます。そのため、最も事前学習に近い形である継続事前学習を行うことで、知識が増えるかどうかについて検証をして行きたいと思います。

より詳細については、Arxivで論文も公開しておりますので、そちらもご参照ください。
論文: Construction of Domain-specified Japanese Large Language Model for Finance through Continual Pre-training


金融に特化したLLMの継続事前学習

ここでは、実際に継続事前学習を行った、その詳細について説明していきます。

まず、継続事前学習を行うモデルとしては、rinna社のnekomata-14bを使用しました。これは、Japanese Language Model Financial Evaluation Harnessにおいて、かなり高いパフォーマンスを示していたことから、採用しました。厳密にはQwen-72BやGPT-4の方が高い性能を示していますが、70Bクラスだと、現状では継続事前学習コストが大きいため、試行錯誤が難しいことと、GPT-4はオープンなモデルではないことから、今回の対象としませんでした。

また、金融に特化したデータセットとして、PFNでインターネット上から独自にクローリングで取得した、支障のないコーパスを作成しました。このコーパスは、少なくとも、2024/04時点の現行法下においては、商用利用可能です。主に、

  • 中央銀行の役員等の会見や挨拶、政策決定会合の要旨
  • 各種金融機関が公表しているレポートや語彙集、企業情報
  • Wikipediaから抽出した金融に関連した記事
  • EDInetの文書 (API経由で取得)

を使用しています。また、これを、手動で機械的に変換したり、stabilityai社のjapanese-stablelm-base-gamma-7bを用いて加工を行いました。加工においては、WRAPという技術とほぼ同等の文書の言い換え技術も部分的に用いました。その結果、

  • マークダウン形式の文書
  • セクションをもつ一連の文書
  • キーワード、説明、関連銘柄を順につないだ文書
  • 会社名と証券コード、業種を一行につないだリスト形式の情報
  • Q&A形式のテキスト
  • 多択選択問題形式のテキスト

を作成しました。この加工の結果、約810万ドキュメント、約3億7000万トークンからなる金融に特化したコーパスを構築できました。

これらを用いて、実際に継続事前学習を行います。実験にあたっては、以下の設定で行いました。

  • GPU: A100 80GB 4枚
  • 学習率: 5e-7からスタートし、線形に0に落としていく
  • Epochs: 5
  • バッチサイズ: 24 (1枚当たり6)
  • Dtype: bfloat16
  • Gradient accumulation steps: 1
  • Gradient checkpointing: 有効

この学習の結果、次のようなLossカーブとなりました。

loss curve図:継続事前学習におけるLoss

次のセクションでは、実際に学習した結果のモデルの性能を検証していきます。


性能向上の確認実験

実際に、継続事前学習を実施した後の、ベンチマーク性能を計測します。ここでは、日本語に特化した金融ベンチマークである、Japanese Language Model Financial Evaluation Harnessを使用します。
なお、比較をわかりやすくするために、プロンプトの選択を行わずに、デフォルトプロンプトと0-shot評価を用いて比較を行いました。

Task nekomaba-14b Ours
chabsa(f1) 0.7381 0.7428
cma_basics(acc) 0.4737±0.0821 0.5263±0.0821
cpa_audit(acc) 0.1608±0.0184 0.1633±0.0186
fp2(acc) 0.3389±0.0217 0.3642±0.0221
security_sales_1(acc) 0.4561±0.0666 0.5614±0.0663
OVER ALL 0.4335 0.4716

その結果、全てのタスクにおいて、継続事前学習前のスコアを上回りました。この結果から、今回の継続事前学習により、性能が向上していると言えるのではないでしょうか。

他にも、実際の出力を確認することで、比較もしてみました。ここでは、差がわかるような例を提示しますが、そうでない例も多いので、参考程度であり、実際に公開したモデルを用いてご自分で検証していただくのが良いと思います。出力に使用したコードは以下です。

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained("rinna/nekomata-14b", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("rinna/nekomata-14b", device_map="auto", trust_remote_code=True)

text = "日本銀行は"
input_ids = tokenizer(text, return_tensors="pt").input_ids.to(model.device)
with torch.no_grad():

generated_tokens = model.generate(
inputs=input_ids,
max_new_tokens=512,
do_sample=False,
repetition_penalty=1.1,
top_k=50
)[0]
generated_text = tokenizer.decode(generated_tokens)
print(generated_text)

まず、「日本銀行は」から生成した結果です。

nekomata-14b-pfn-qfin (Ours) nekomata-14b
日本銀行は、2013年4月に「量的・質的金融緩和」を導入し、消費者物価上昇率2%の「物価安定の目標」の実現を目指して、強力な金融緩和を推進しています。その結果、わが国の景気は緩やかな回復基調を続けており、雇用・所得環境も改善しています。
こうした中で、企業収益は過去最高水準となり、設備投資も増加傾向にあります。また、個人消費は底堅く推移しており、住宅投資も持ち直しています。このように、わが国経済は、緩やかに回復していると判断されます。
先行きについては、雇用・所得環境の着実な改善が続くもとで、各種政策の効果もあり、国内需要が堅調さを維持すると見込まれることから、わが国経済は、緩やかな拡大を続けると考えられます。ただし、海外経済の不確実性や金融市場の変動等の影響には注意が必要です。
物価面では、生鮮食品を除く消費者物価(全国、除く生鮮食品)の前年比は、0%程度となっています。先行きについては、マクロ的な需給ギャップがプラスの状態を続けることや中長期的な予想物価上昇率が高まることなどを背景に、「物価安定の目標」である2%に向けて上昇率を高めていくと考えられます。
日本銀行は、2%の「物価安定の目標」の実現を目指し、これを安定的に持続するために必要な時点まで、「長短金利操作付き量的・質的金融緩和」を継続します。消費者物価指数(除く生鮮食品)の前年比上昇率の実績値が安定的に「物価安定の目標」である2%を超えるまで、マネタリーベースの拡大方針を継続します。今後とも、経済・物価・金融情勢を踏まえ、「物価安定の目標」に向けたモメンタムを維持するため、必要な政策の調整を行っていきます。
わが国の金融システムは、全体として安定性を維持しています。そうしたもとで
日本銀行は、金融政策の目的を「物価の安定と金融システムの安定」と定めています。このうち、「物価の安定」については、消費者物価指数(除く生鮮食品)の前年比上昇率で2%以下のプラスの領域にあり、中心は1%程度とするという目標が掲げられています。
一方、「金融システムの安定」については、金融機関の破綻処理や金融システムの安定確保に関する制度整備等のほか、中央銀行としての最後の貸し手機能の発揮などにより、金融システムの安定を図ることとされています。
日本銀行は、こうした使命のもと、金融政策運営を行っています。
日本銀行の金融政策
日本銀行は、2013年4月に導入した量的・質的金融緩和のもとで、マネタリーベースを年間約60~70兆円増加させるペースで拡大するとの方針を示しています。また、長期国債やETF(上場投資信託)、J-REIT(不動産投資信託)などの資産を積極的に購入することによって、長期金利の低下や株高などを促すことで、経済全体の資金需要を刺激し、デフレからの脱却を目指しています。
日本銀行は、2016年9月に長短金利操作付き量的・質的金融緩和を導入しました。これは、短期金利をマイナス0.1%、長期金利をゼロ%程度に誘導することを軸としたものです。これにより、日本銀行は、長期国債やETF、J-REITなどの資産を買い入れる量をほぼ現状維持しつつ、長期金利の変動幅を広げました。

続いて、「デリバティブ商品は」から生成した結果です。

nekomata-14b-pfn-qfin (Ours) nekomata-14b
デリバティブ商品は、株式や債券などの金融商品を対象にした取引で、その価格変動を利用して利益を得るものです。例えば、株式の先物取引では、将来の特定の日に特定の価格で株式を売買する契約を結びます。このため、株価が上昇すると予想すれば買い、下落すると予想すれば売りのポジションを取ります。そして、予想通りに株価が動けば利益を得ることができます。
デリバティブ商品には、他にも様々な種類があります。例えば、オプション取引は、特定の価格で特定の期間内に特定の数量の金融商品を購入または売却する権利を売買する取引です。また、スワップ取引は、異なる通貨間の金利差を利用した取引で、為替リスクをヘッジするために利用されます。
デリバティブ商品は、投資家にとって大きな利益をもたらす可能性がある一方で、大きな損失を被るリスクもあります。そのため、デリバティブ商品を利用する際には、十分な知識と経験が必要となります。また、取引所での取引だけでなく、店頭(OTC)取引も行われています。OTC取引は、取引所を通さずに直接当事者同士で行う取引であり、取引条件や手数料などが柔軟に設定できるというメリットがあります。ただし、相手方の信用力や取引条件の確認など、注意すべき点も多くあります。
デリバティブ商品は、金融市場において重要な役割を果たしています。投資家にとっては、リスク管理や収益機会の拡大に寄与し、企業にとっては資金調達手段の多様化につながっています。今後も、デリバティブ商品の発展が期待されています。
デリバティブ商品の例
デリバティブ商品とは、原資産から派生して生まれた金融商品のことです。原資産とは、株式、債券、為替、商品など、金融市場で取引されるもの全般を指します。デリバティブ商品は、原資産の価格変動を利用して利益を得ることを目的としています。
デリバティブ商品の例としては、以下のようなものが挙げられます。
先物取引:将来
デリバティブ商品は、元本が保証されたものではなく、価格の変動や金利の変動により損失を生じるおそれがあります。また、取引金額がその取引についてお客様が預託すべき証拠金の額に比して大きいため、その損失の額が証拠金の額を上回ることがあります。
外国為替証拠金取引(FX)は、通貨の価格または金融指標の数値の変動により損失が発生する可能性があり、また、その損失の額が預託された証拠金の額を上回るおそれがあります。さらに、取引金額がその取引についてお客様が預託すべき証拠金の額に比して大きいため、その損失の額が証拠金の額を上回ることがあります。

例をあげ続けるとキリがないので、2個のみとしますが、継続事前学習後のモデルは、Huggingface Hubで公開していますので、ぜひ、ダウンロードして、ご自身の手で実験してみることをお勧めします。

モデル:https://huggingface.co/pfnet/nekomata-14b-pfn-qfin


最後に

本稿では、ドメイン適合のための、継続事前学習を、日本語LLMに対して金融ドメインで実施しました。その結果、金融分野における、性能の向上を確認することができました。
しかしながら、この金融へのドメイン特化はまだまだスタート地点でしかありません。今後、100Bモデルや、さらに大きいモデルで、日本語性能も金融性能も高いモデルを構築するのが最終的な夢です。
まずは、そういったさらに大きいモデルに今回構築したデータセットを使うことで、金融性能のより高いLLMを構築することなどが考えられますが、それに限らず、さらなる研究開発を進めていきたいと思います。また、実際の社会応用先も検討していくことも重要です。

Preferred Networks 金融チームでは、金融プロジェクト機械学習エンジニア(Full-time)金融プロジェクト パートタイムリサーチャーも募集しています。また、社会応用先に興味のある企業の方は、お問い合わせフォームよりお問い合わせいただくこともできます。

もし、この記事に興味を持っていただけたら、ぜひ、我々と一緒に研究開発を進め、日本や金融業界を盛り上げていきましょう!

  • Twitter
  • Facebook