2024-06-05 機械学習勉強会
今週のTOPIC[blog] BigQuery RAG による LLM 機能の強化[blog] Ramp travel[論文] LiLT: A Simple yet Effective Language-Independent Layout Transformer for Structured Document Understanding[slide] CyberAgent AI事業本部2024年度MLOps研修基礎編 / MLOps Basic[blog] Zodスキーマでプロンプト生成を行い構造化データを自由自在に扱えて、LLMプロダクト開発が圧倒的に効率化した話LLMaAA: Making Large Language Models as Active Annotators概要IntroductionRelated WorkLLM as Active AnnotatorActive Data AcquisitionRobust Learning with Noisy LabelsTasksExperiments and AnalysisAnalysis感想
今週のTOPIC
※ [論文] [blog] など何に関するTOPICなのかパッと見で分かるようにしましょう。
出典を埋め込みURLにしましょう。
@Naoto Shimakoshi
[blog] BigQuery RAG による LLM 機能の強化
- RAGで必要な要素を全てBQで完結できる
- ベクトル検索
- クエリ
- プロンプト拡張
- 流れとしては、
- Embeddingの生成:
- Indexの作成:
- BQ内のランタイムによるRAGパイプラインの実行:
3.1: クエリをEmbedding化
3.2:ベクトル検索
3.3:Geminiによって何かしらの生成
- これくらいのコード量でRAGを作れる。
@Tomoaki Kitaoka
[blog] Ramp travel
- 航空券や宿の予約ができるだけでなく、ポリシーも組める
- 高い宿や航空券は予約できない
- 回収されたレシートは自動で出張の申請に紐付け
@Shun Ito
[論文] LiLT: A Simple yet Effective Language-Independent Layout Transformer for Structured Document Understanding
- ACL2022
- OCRされたテキスト情報を、テキストとしての埋め込み・レイアウトとしての埋め込みに分けて処理する言語モデルを提案
- 言語に依存せずレイアウト情報を組み込める
- 手法
- テキストはOCRされた文字列を左上から右下の順に並べる。トークン埋め込みに1D位置埋め込みを加える
- レイアウトは、トークン(の属する)bounding boxの座標を利用する
- bounding boxの位置情報を埋め込み → concat → 線形変換で2D埋め込みを作成
- BiACM
- attentionのQ, Kを使ったスコアについて
- text, layoutそれぞれで、相手側のスコアを取り込んだ上でスコアとしている
- 実験結果
- 言語固有の言語モデルと同等の精度
- 英語だけの事前学習 + 特定言語のfine-tuning、評価で高精度
@qluto (Ryosuke Fukazawa)
[slide] CyberAgent AI事業本部2024年度MLOps研修基礎編 / MLOps Basic
以前も紹介した機械学習システムデザインの本の内容と被りますが、エッセンスが網羅的にまとめてあって、わかりやすい資料でした。
去年公開の応用編もありますが、その中身はハンズオン形式で実際にシステム組んでみようというものです。
歴史的な流れを踏まえつつ、DevOpsとの関係性の強さ、ソフトウェアエンジニアリングの重要さを改めて語ってます。ことあるごとに出てくる印象のある、‣ も登場。
‣
たくさんの要素や理想形が目につきますが、段階的に成熟していくことが大事。他社事例を見ながら、自分たちでどの時期にどの段階を目指すかの言語化や定義作りを行うことも有意義な意識の向け方になりそうです。
@Yosuke Yoshida
[blog] Zodスキーマでプロンプト生成を行い構造化データを自由自在に扱えて、LLMプロダクト開発が圧倒的に効率化した話
- モチベーション
- LLMで構造化データを安定して出力させることは難しい
- プロンプトエンジニアリングはすぐに陳腐化する
- 本質的な表現を元に変換・生成をしたい
TypeScriptをデータ出力例として与えると、出力結果はかなり忠実に従ってくれるようになる
Zodスキーマで型定義をし、TypeScriptやJSON, XMLに変換し、プロンプトを生成するというアイディア
- スキーマ定義なら、プログラマにとっては分かりやすく管理しやすい
LLMaAA: Making Large Language Models as Active Annotators
EMNLP 2023 Findings
github repo: https://github.com/ridiculouz/LLMAAA
概要
- 一般的な教師あり学習法は、大量の高品質な注釈データを必要とするため、自然言語処理(NLP)においてデータを大量に必要とすることが知られているが、実際データを取得すことはコストがかかる。
- 最近では、大規模言語モデル(LLM)の優れた性能により、データセット生成が進展し、トレーニングデータがLLMから完全に合成されるようになった。
- しかし、このようなアプローチは通常、低精度な問題を抱えており、満足のいく性能を達成するためには結局非常に多くのラベル付きデータが必要である。
- LLMの可能性を最大限に活用し、大量のラベルなしデータを活用するために、LLMAAAを提案。
- これは、LLMをあのテータとして利用し、アノテーションする内容を効率的に決定するためのアクティブラーニングループに取り入れている
- 擬似ラベルでロバストに学習するために、注釈とトレーニングプロセスの両方を最適化する:
- In-Contextのsampleとして小さなデモンストレーションプールからk-NNサンプルを引き出す
- 自動リウェイト技術を採用してトレーニングサンプルに学習可能な重みを割り当てる
- 従来のアプローチと比較して、LLMaAAは効率性と信頼性の両方に優れている
- 命名エンティティ認識と関係抽出という2つの古典的なNLPタスクで実験と分析を行った
- LLMAAAを使用すると、LLMが生成したラベルからトレーニングされたタスク固有のモデルは、わずか数百の注釈付き例で教師LLMを上回ることができ、他のベースラインよりもはるかにコスト効率が高いことが確認された
Introduction
背景
- 大規模言語モデル(LLM)は、few-shot学習において優れた能力を示している
- 少数のデモンストレーションと巧妙に設計されたプロンプトで幅広いタスクに対応できる
- LLMを実世界のアプリケーションに展開する際には、データプライバシーやセキュリティのリスクがある
- ユーザーは第三者のベンダーに機密情報を提供する必要があり、これがデータ漏洩のリスクを高める
- 継続的なAPIリクエストは高コストと遅延を招き、コストに敏感なシナリオでは実用的な展開が困難になる
Task-Specific Model (TAM) Training
- NLPタスクにおけるタスク固有モデル(TAM)のトレーニングには、大量のラベル付きデータが必要
- LLMの生成能力を活用してトレーニングデータを合成する試みがあるが、低品質やドメインシフトの問題がある
- 豊富なラベルなしデータ利用するために、LLMをアノテーターとして採用し、ゼロショットまたは数ショットでラベルを生成することも可能である。このアプローチは有望と思われるが、特に困難なタスクやドメイン固有のデータに適用した場合、LLMが生成したラベルは必然的にノイズを含むことを認めることが重要である。
- また、より大きなモデルはより重い費用がかかるため、予算が限られている場合にアノテーションコストを削減することも重要である。
提案手法
- TAMの精度を向上させるのと、アノテーションにおけるデータ効率を上げるために、Active LearningをLLMのアノテーションプロセスに組み込んだLLMaAA (making LLMs as Active Annotators)を提案。
- LLMがより情報量の多いインスタンスにアノテーションを付け、モデル性能に貢献することを可能にする
- まずランダムなサンプルからk-NNを用いてIn-Context Learningの例として選択
- Unnaturalなラベル (難しいラベル?)に対して、詳細な説明を加えることで、LLMの性能を向上させる
- 先行研究で提案されているReweightingの技術を使い、より情報量が多く、代表的なサンプルを優先させると同時にノイズの多いアノテーションの影響を軽減できる。
Related Work
LLM and In-Context Learning
- LLMは大規模コーパスで事前学習され、リッチな言語パターンをキャプチャし、一貫したテキストを生成できるようになった。
- In-Context Learningの登場により、プロンプトエンジニアリング技術がモデルの出力を誘導されるために広範に研究されるようになった。
- 最近の傾向としてはChain-of-Thought (CoT) プロンプトにより、複雑なタスクでのLLM性能が強化。
- LLMのコントロール性と性能が向上し、情報抽出タスクにも適用されている。
データセット合成
- 従来の教師あり学習法は高品質なアノテーションデータを大量に必要とする
- 一部の研究者は、LLMを用いてトレーニングデータを生成する試みを行っている
- Feng et al. (2021), Chen et al. (2023)はLLMを対話データセットの生成に使用
- AnnoLLM (He et al., 2023) はCoTと自己生成説明を使用することで、LLMの性能をクラウドソースのアノテータと同等にした。
- Bansal and Sharma (2023)はLLMをドメイン適応設定でのアノテーションに使用
- Wang et al. (2021)はfew-shot promptでLLMを使用してトレーニングデータを生成
- Schick and Schütze (2021)はラベル付きテキストペアを生成
- ZEROGEN (Ye et al., 2022) と SUNGEN (Gao et al., 2023)という手法では、ゼロショットLLM生成データセットでLSTMなどの小さいモデルで学習させた。
- これらの先行研究は、合成データが低品質であったり、ドメインシフトが発生してしまっていた。
労働効率とActive Learning
- Active Learningはアノテーションのコストを最小化するための技術
- ラベルなしデータプールから最も有益なサンプルを選択することを目的とした手法。
- 不確実性(Lewis and Gale, 1994; Houlsby et al., 2011; Gal et al., 2017)や多様性(Huang et al., 2010; Sener and Savarese, 2018)を基にサンプルを選択
- 二つの手法を組み合わせたハイブリッドな手法(Du et al., 2017; Yang et al., 2017; Ash et al., 2020; Margatina et al., 2021)も検討されている。
- 選択されたサンプルは、人間のアノテーターによってアノテーションされ、その後、データセットに繰り返し追加される。
LLM as Active Annotator
- 上の図のようにLLMをActive Annotatorとして利用する。
- コンポーネントとしては、以下の3つを繰り返して、徐々に強いTAMを生成する。
- 与えられたデータの擬似ラベルを生成する
- 効率的なデータ選択のためのActive Learning機構
- ノイズの多いモデルに対して頑健な学習を保証するReweighting技術
Optimizing LLM as Better Annotator
- In-Context Learningを使って、fine tuning無しで強いLLMを構築
- prompt とfew-shot example 、実際のサンプルを使って、文を生成する。
- taskに特化したpromptは大きい精度向上を与えることが先行研究でわかっているが、bestなpromptを見つけることは困難。
- 今回の研究では、いくつかのテクニックだけ利用。
k-NN Example Retrieval
- 先行研究では、まずIn-Context Learningに使うデモpool とクエリサンプルを全てベクトル表現に埋め込み、Top-kを使ってExampleを作成する。
- 本研究では、Sentence-BERTを利用
Label Verbalizer
- REで使う手法
- 関係性のラベルがそのままだと難しいので、自然言語的にわかりやすい形に変える。
Active Data Acquisition
- ラベル無しの大きなデータプール が利用可能と仮定して、以下のような設定を考える。
- でモデル を学習
- 獲得関数 でから サンプルを取得。
- LLMでアノテーションを行ったらをに追加。
- これを繰り返す
- 一般的に獲得戦略は、不確実性に基づく手法か多様性に基づく手法を用いる。
- ここでは、Randomと最大エントロピー、最小信頼度、K-Meansを用いた手法を使う。
- K-Meansでは、クラスターの中心から最も近傍にある点をサンプルする。
Robust Learning with Noisy Labels
- LLM Anotatorは、特に難しいタスクやドメイン固有のデータに対して、必然的にノイズの多いラベルを生成する。
- これに対し、Reweighting技術を使う。元々は、ICML 2018で提案されている技術。
- 具体的には、訓練時に小さいサイズの綺麗なValidationデータセットを用意して、以下のようなメタラーニングを行う。
- 訓練バッチでBack Propagationして重みを計算した後に、その重みで同様にでも勾配を計算する。
- それで計算した重みを使って、もう一度訓練部分の勾配計算をして最終的な更新する勾配とする。
Tasks
- Named Entity Recognition
- タスクについては、ご存知の通り。
- 不確実性サンプリングの手法をとりあえずスムーズにNERに適応させるために、3つのpooling手法を比較した。
- 単純に、average, sum, maxを試したが、実際にはaverage, sumが良かったので採用
- モデルとしては、BERTを使用
- Relation Extraction
- 主体と対象があった時に、それらの関係をあらかじめ定義された関係からどれに当たるかを推論する。
- モデルとしては、対象を[E]と[\E]で囲み、BERTでdecodeされたEmbeddingをconcatしたものから線形分類を行う。
Experiments and Analysis
- データセット
- NER: Chinese OntoNotes 4.0
- 学習/検証/テスト用に15,724/4,301/4,346文
- NER: English CoNLL03
- 学習/検証/テスト用に14,041/3,250/3,453文
- RE: Re-TACRED
- 評価指標としては、Precision, RecallとF1スコアを用いる
- 比較モデル
- PROMPTING:promptからLLMでtestデータを直接予測する
- SUPERVISED:TAMをLLMaAAのIn-Context Learningで用いられるで学習させたもの。
- ZEROGEN:Zero-shotのLLMを用いて合成データを作り出す手法。
- FEWGEN:In-Context Learningを使ったLLMを用いて合成データを作り出す手法。
- 実装
- ChatGPTをLLMとして用いた。Ablation StudyでGPT-3とGPT-4についても実験。
- TAMに使うモデルはBERT (と)。
- サンプリング
- まず元のvalidationデータからRandomに100件を抽出し、gold dataとし、In-Context Learningで使うと、Reweightingに使うとする。
- 元のtrainingデータをとし、Randomに選択した50サンプルを最初のとする。
- そして、Batchごとに50サンプル選択することを繰り返し、最終的に500サンプルのアノテーションデータを作成する。
- ZEROGENとFEWGENでは、500サンプルと5000サンプル生成を試した。
- TAMの訓練は異なるSeedで3回繰り返し、平均と標準偏差も報告した。それぞれ40epoch学習して、Validationセットでの精度が最も高いものを使用した。
- 実際のプロンプト
Overall Results
- NER
- LLMaAA-confidenceの結果はF1の平均でどれよりも優れている。
- PROMPTINGとSUPERVISEDがそこまで精度の差がない。(bertがbaseなのと、100件しかないので、大分不利ではあるが)
- LLMaAAでrandomに持ってきた場合は、そこまでSUPERVISEDの結果と変わらない。
- また生成データで合成する手法では、10倍以上のデータを使ったとしても同等の結果を出すことができない。
- 英語ではPROMPTINGでも割と精度が高い。
- RE
- ZEROGENだとRe-TACREDのニュースコーパスから逸脱した平坦な関係性を生成する傾向があり、ドメインシフトの問題が見受けられた
- FEWGENだと及第点の精度が出ているが、LLMaAAを用いることでより小さいデータセットで効率良く学習を行うことができている。
- Prompt Engineeringの効果
- k-NNでfew-shot Exampleを入れることでかなり精度が向上している。
- Re-TACREDの場合も、Label Verbalizerを用いることで精度が向上。
- Active Learningによる高速化
- 最大エントロピー戦略と、最小信頼度を用いた手法の効率が最も良かった。
- Reweightingによるロバストな訓練
- (ChatGPTが苦手だからか)中国語のOntoNotesとRe-TACREDの場合に顕著に性能が上がっている。
Analysis
- GPT-3とGPT-4を用いて追加実験。予算の都合上OntoNotesのみ。
- 教師モデルが強くになるにつれて、PROMPTINGとLLMaAA-confidenceの性能差が小さくなる。
感想
- 訓練データ全件TAMで使った場合との精度比較は欲しかった
- GPT-4oだと金額コストも速度も向上しているので、全件擬似ラベルアノテーション ↔ 全件人手アノテーションの性能の差なども気になる。