2024-08-01 機械学習勉強会

今週のTOPIC

※ [論文] [blog] など何に関するTOPICなのかパッと見で分かるようにしましょう。
出典を埋め込みURLにしましょう。

@Naoto Shimakoshi

[slide] AOAI Dev Day LLMシステム開発 Tips集

  • AOAI Dev Dayでの講演資料
  • 参考になる部分だけ
  • Promptingの最新Tips
    • [page.5] System Promptは構造化・再利用を考慮せよ
      • Prompt Storeを作って複数のエージェントとプロンプトの部品を共有
        • 最終的なプロンプトはマークダウンにするにしても、保存はJSONでするなど
    • [page.7] Lost in the Middleに配慮したプロンプト作り
      • 序盤と終盤ほど解釈性が高く、中盤は忘れてしまう傾向が強い。
      • System Promptが肥大化する場合は、重要情報はなるべく上にするか復唱する
    • [page.10] JSON出力時の注意点
      • LLMで出力する必要がないプロパティは出力させない
      • プロパティ間で関係性の無い出力は独立させる
      • 出力の長さや言語などの指定をプロパティ名に入れる (ex. , )
      • ネストが多いJSONは避ける
  • RAGの最新Tips
    • [page.16] ドキュメント情報の抽出はGPT-4oとOCRを組み合わせる
      • GPT-4oにマークダウン化を指示
        • 全ページからの履歴も残した方がページ間のつながりを配慮
      • 表形式はMarkdownではなくJSONが有効
    • [page.20] 検索対象は必ずしも本文ではない。
      • 本文だと切り取られたりする
      • チャンクの概要 + キーワードを検索対象として保存しておく
      • 想定されるユーザの質問文を検索対象に
 

@Yuya Matsumura

[論文]ColPali: Efficient Document Retrieval with Vision Language Models 👀

  • RAGでPDFを扱いたい際に、OCRにかけてテキスト化した上でText Encoderでベクトルを得るのではなく、画像として扱ってVision and Language モデルのVision Encoderを用いてベクトルを得る。
  • 一枚のPDFを1024個のパッチに分け、1024個のベクトルを得る。
  • 検索時は検索クエリのベクトルとの類似度を計算した上で、sumの一番大きいPDFを採用。
  • テキストと類似度が高いパッチを可視化してみると、確かにうまいことなってそうな雰囲気。特にFig.8でテキストでなく画像部分と強く反応しているのは従来やと難しそう。
 
 
 

@Tomoaki Kitaoka

[blog] Introducing LlamaExtract Beta: structured data extraction in just a few clicks

  • 非構造化データから構造化されたメタデータ抽出の重要性
    • LLMアプリケーションのための新しいデータETLスタックが必要であり、この層はRAGやエージェント用途において重要。LlamaParseおよびLlamaCloudは、複雑な文書の処理をサポートするETLニーズに対応している。
  • 構造化データ抽出
    • LlamacloudのLlamaExtractは、非構造化文書から構造化データを抽出するためのマネージドサービスである。本サービスは、以下の機能を提供する。
        1. 文書セットからスキーマを推論し、後で編集可能。
        1. 指定されたスキーマに基づいて文書から値を抽出。
    • LlamaExtractはLlamaCloudユーザーにUIおよびAPIを通じて提供されており、スキーマ推論は5ファイル、各ファイル最大10ページまで対応。
 

@Yuta Kamikawa

[リポジトリ] SAM2(Segment Anything Model 2)

 
  • Metaが開発した画像および動画に対するpromptableな視覚セグメンテーションを実現するための基礎モデル
  • リアルタイム動画処理をサポートしたシンプルなアーキテクチャを採用しており、画像を単一フレームの動画として扱うことで動画にも対応
  • トラッキングしたいオブジェクトを選択し、高精度なトラッキングが可能
    • 開発者のデモがすごい

@Shun Ito

[論文] Extreme clicking for efficient object annotation

  • ICCV2017
  • 概要
    • 物体検出のアノテーションを素早くできる手法を提案
  • 手法
    • アノテーターは物体の上下左右の端に点を打つだけ
    • 物体の領域は画像処理・最適化問題で推定する
  • 実験結果
    • 精度を落とさず高速にアノテーションできる
 

@Ryosuke Fukazawa

[論文] Apple Intelligence Foundation Language Models

以前消化した Apple の Foundation Language Model に関する詳細な論文が出ていたので紹介。
より具体的な手法や中身について触れられている。

 

NuNER: Entity Recognition Encoder Pre-training via LLM-Annotated Data

Sergei Bogdanov, Alexandre Constantin, Timoth ́ee Bernard, Benoit Crabb ́e, Etienne Bernard
Arxiv論文だが、面白そうだったのとHugging Faceでモデルが公開されていたのでPickup

概要

  • 研究の目的
    • 現在の大規模言語モデル(LLM)の限界を克服し、特定のタスクに適した小規模でデータ効率の良い固有表現認識(NER)モデルを開発すること。
  • 手法
    • LLMを利用して高品質なアノテーションデータを生成し、そのデータを用いて特定のタスクに特化したNERモデルをトレーニングすることで、この問題を解決
  • 結果
    • サイズの大きいLLMに比べてデータ効率が良い方法で性能を凌駕した。
      • GPT-3.5のIn-Context Learningに勝り、GPT-4と競合する精度。
      • UniversalNERと比較し、サイズは56分の1にも関わらず同様の性能を手に入れた。
    • NuNERの能力に影響を与える要因として、アノテーションの多様性と事前学習データセットのサイズが最も影響力のある要因であることがわかった。

1. Introduction

背景

  • 名前付き固有表現認識(NER)-テキストからエンティティを抽出し分類する汎用タスクは、自然言語処理の中核をなす要素である。
  • 過去5年間、このようなタスクを特にはBERTファミリーのモデルを人間のアノテーションデータで単純なtoken分類を学習させることで達成されてきた。
  • 近年では、BERTの100倍から10,000倍のパラメータを持つGPT-4などが登場し、うまく設計されたpromptでNER問題を解くことができる。この場合の問題は高い推論コスト。
  • この推論コストに対する単純な解決策として、正しくプロンプトされたLLMを使って特定のNER問題のデータをアノテーションし、次にこのデータでより小さなモデルを訓練することであるが、いくつか問題がある。
    • 良いpromptを作成することが困難。
    • LLMも完璧なアノテーターではない。
    • APIを用いると情報漏洩のリスクもある。

解決策

  • LLMを使って特定のNER問題に対して特定の単一ドメインデータセットを直接アノテーションするのではなく、様々なNER問題に対してマルチドメインデータセットをアノテーションする。
  • このデータセットに対してBERTのような小さなモデルで対照学習を行う。

貢献

  • NERのためのタスクに特化した基礎モデルを学習するために、生データにLLMをアノテーションする手順を紹介し、その有効性を実証。
  • タスク特化基礎モデルの性能を向上させる可能性の高い要因を特定する
  • NuNER、NERのためのコンパクトなEncoder baseの言語表現モデルであり、オープンソースである。NuNERは、類似サイズのモデルを凌駕し、LLMと競合し、RoBERTaの代替として使用できる。
  • LLMでアノテーションされたNERデータセットを提供し、オープンソース化した。このデータセットには、200kのエンティティタイプから4.38Mのアノテーションが含まれており、NERモデルの事前学習に適している。

2. Related Work

Low-resource NER problems

  • 初期の試みでは、Wikipediaアンカーを利用して低リソースNER問題に対応する基盤モデルを作成することに焦点が当てられた。
  • NER-BERTは、WikipediaアンカーとDBpediaオントロジーを組み合わせて3.64Mエンティティを含むNERデータセットを作成し、これを用いてBERTモデルを事前訓練し、少数ショットでの性能を向上させた。

大規模言語モデル(LLM)を用いた事前学習

  • 強力なゼロショット能力を達成するために、既存の多数の人間のアノテーション付きNERデータセットでLLMを事前学習することに焦点が当てられている。
  • Zhouらは、GPT-3.5によってアノテーションされたデータで事前学習された、7Bと13Bのパラメータを持つLLMであるUniversalNER (ICLR 2024)を提案。
    • 本研究では125Mのモデルで、学習手順も異なる。
  • 最近では、ZaratianaらがGliNERでUniversal NERのデータを用いて小さなEncoderモデルを学習している。
    • 主な違いはアーキテクチャ

3. NuNER

データセット作成

  • 英語ウェブクロールコーパスであるC4からRandom Sampling。ドメインの多様性から選択。
  • 大規模で多様なタイプのエンティティをアノテーションしたいので、Unconstrainedな手法を用いた。
    • LLMによってどんなEntityでも抽出でき、どんなラベルを割り当てるのかも自由にした。
      • Entity typeというよりもWellnessといった概念の割り当ても許したので、このラベルのことをConceptsと呼ぶ。
    • 曖昧さ回避のために、promptで指示もしたが、これは最終的にNuNERの性能に寄与しなかった
     
    • LLMはカウントが苦手なので、Entityの位置を返すように求めない
      • 文字列の完全一致によって位置を取得したが、アノテーションエラーにつながる可能性がある。
    • gpt-3.5-turbo-0301 を用いて、1.35M 文のアノテーションを行った。
      • 以下のような結果が出てくる。
      • あまりに抽象的なものはfilterしてデータセットから除き、1Mのデータセットにした。
    • 100例レビューしたところ、95%以上のケースで理にかなってると判断された。
      • とはいえ、上の例ではNFL Player → Humanと認識することもできるので、再現率が低いとも言える。
    • 最終的に、計4.38MのEntityと、200kのユニークなConceptsを作成した。
      • 以下のように多種多様なconceptsが得られた
      • ただし、もちろん不均衡さもあり、「人」「場所」「組織」のような一般的なものは1%以上あるが、100k以上の概念がデータセットに一度だけ見られる。

    モデル学習

    • “company”と“company name”のように類似したconceptsも含まれるデータセットかつ、抽出されていない潜在的なEntityもあるので、従来のtoken分類として学習させるのは現実的ではない。
    • 代わりに、以下のような対照学習のフレームワークで学習を行なった。
      • NuNERは単純にtoken列を入力
      • ConceptはConcept Encoderを通して、token embeddingとの内積を計算する。このロジットを用いてbinary cross entropyで学習させる。
      • 訓練バッチに存在する全てのConceptを収集し、#sentences × #tokens × #concepts in batchで学習する。(推薦とかでも用いる簡易的なHard Negative生成方法)
      • バッチに存在しないConceptは考慮しなくなるので、モデルの出力は真の確率を表したものではなくなるが、ゼロショットでこのまま使うわけではないので、問題ないとした。

    学習詳細

    • NuNERとConcept Encoder両方にRoBERTa-baseを使用。
    • 90%を訓練、10%検証
    • 1Mデータセットに対して10エポック学習
    • ハイパラ
      • lr:0.00003
      • バッチサイズ:48
      • 温度パラメータ:5
      • Optimizer:AdamW(β1=0.9, β2=0.999, ϵ=10^-6, weight decay=0.01)
      • Scheduler:最初の10%のステップでwarm upする線形スケジューラ
    • Text Encoderの下位6層をFreeze
      • 安定性が上がった

    4. Transfer Learning Performance

    データセット

    ドメインの違うものを用意
    • OntoNotes 5.0 (Weischedel et al., 2013)
    • BioNLP 2004 (Collier et al., 2004)
    • MIT Restaurant (Liu et al., 2013)
    • MIT Movie (Liu et al., 2013)
    • Few-NERD(Ding et al., 2021)
      • 8つの粗いEntity typeと66個の細分化されたEntity type
      • 188kのWikipediaから構成される。
      • 5000だけ学習データに使ってよく、それ以外は事前学習用途では使ってもOK

    Few-Shot with Frozen Foundation

    • LLMでアノテーションされたデータが有用であるかを確かめるために、NER-BERTのデータで事前学習したRoBERTaと比較した。(Text Encoderの下位6層をFreezeは一緒)
    • Finetuningは最上層のみ行なった
    • Entity typeごとにk個のアノテーションを含む例を学習データに使い比較。(4つのデータセットの平均)
    • 少数ショットNERのベンチマークとして有名なFew-NERDデータセットとも比較した。
      • TadNERというspan detection network, type-classification network, type-aware span filtering process, prototype constructionなどを組み合わせた複雑なネットワークがSoTA
      • このTadNERのBERTをNuNERの置き換えて比較した。
      • 既存性能を大きく上回る

    5. Ablation Studies

    Effect of Text Diversity

    • C4がWikipediaより多様なデータがあるだけの可能性を確かめる
    • LLMアノテーションの方法でWikipediaにアノテーションしてRoBERTaを事前学習
      • C4とWikipediaで性能は大きく変わらないので、LLMのアノテーションが重要

    Effect of Concept Diversity

    • 頻度の高い上位n個のConceptのみを保持し、稀なConceptを除外する。
    • n=16、154、1.5k、80kを利用して実験
    • 全体的な性能はConceptの多様性によって増加するがデータセットによってばらつきはある。

    Effect of Dataset Size

    • 1kから1Mまでの事前学習データセットサイズで実験
    • データセットサイズ上昇によって性能は増加し、300k ~ 1Mくらいで緩やかになっている

    Effect of Model Size

    • RoBERTa-largeを用いてNuNERを事前学習
    • 全体的に数%増加
    • データセットサイズの効果と相まって両方増やせばさらなる性能向上が見込まれる

    6. Comparison with LLM

    • GPT3.5、GPT-4との比較
      • Spicy NER V3のIn-Context Learning機能を使用
        • [shima] 恐らくこれのこと?In-Context Learningはないが
    • UniversalNERとの比較
      • 元々はゼロショットのモデルなので、Few-shotにするために工夫
    • 結果
      • GPT-3.5はすぐに頭打ちになる
      • GPT-4もそうなるかもだが、ノイズが多いので結論づけられない
      • UniversalNERはZero-shotだとGPT-3.5よりも性能が低いが着実に性能向上し、頭打ちもしていない。
    • NuNERがGPT-3.5を上回り、おそらくGPT-4も上回ったのは、In-Context Learningの限界に起因すると考えられる
    • NuNERは類似のデータで56倍小さく学習したにもかかわらず、UniversalNERに匹敵する性能を達成。NERタスクにおいては、生成モデルよりもEncoderの方が本質的に優れているためだと考えられる。
      • もしくは、事前学習手法が優れているか