2024-06-20 機械学習勉強会
今週のTOPIC[論文, slide] 大規模言語モデルを用いたゼロショットテキスト分類によるTCFD推奨開示項目の自動判定[blog] 明日使えるかもしれないLoss Functionsのアイディアと実装[service] unriddle: Read research papers faster[slide] 日本語Vision-Languageモデルの学習と評価ベンチマークの構築[論文] SelfDocSeg: A Self-Supervised vision-based Approach towards Document Segmentation(ICDAR 2023)[blog] Evaluation Measures in Information Retrieval[書籍] Lean Analytics[blog] LLMOps に取り組み始めた話メインTOPICDocFormerv2: Local Features for Document Understanding (AAAI2023)概要関連研究提案手法モデル事前学習実験データセットTabel VQADocument VQASequence Labeling TaskEntity Extraction TaskGeneralization Experiments - Scene-Text VQAその他検証: OCRエラーに対するロバスト性感想
今週のTOPIC
@Naoto Shimakoshi
[論文, slide] 大規模言語モデルを用いたゼロショットテキスト分類によるTCFD推奨開示項目の自動判定
- 気候関連財務情報開示タスクフォース (TCFD)という気候変動に関する11の推奨開 示項目を設定し、気候関連の推奨項目を開示しているかの規範となるものがある。
- これが本当に開示されているかは大量の資料を分析する必要があり、大きな負担。→ LLMで自動分類
- TCFD推奨開示項目の11項目が開示されているかの判断基準を決めるために27項目のTCFD推奨開示項目クライテリアを作成
- githubにて使用しているクライテリアだけ公開されてる:https://github.com/cierpa/tcfd_criteria
- 実験の流れ
- GPT-3.5とGPT-4の双方でクライテリアごとの分類精度を評価
具体的なクライテリアはTCFD推奨開示項目から以下のように作成
プロンプト例
- 更に、東京証券取引所の上場会社の有価証券報告書に含まれるサステナビリティ情報におけるTCFD推奨開示項目の充足状況も調査
- [shima]最終的に、クライテリアではなく最初のTCFD推奨開示項目が充足されているかは、一個でもクライテリアが書かれていたらOKとするんだろうか。
@Yuya Matsumura
[blog] 明日使えるかもしれないLoss Functionsのアイディアと実装
- いくつかの特徴的なLossについてお気持ちと実装を解説。
- Aleatoric Uncertainty Loss が面白かった。
- 内在的不確実性を学習することで、間違っても仕方がないサンプルをうまく扱う。
- 誤差が大きくとも、不確実性(分散)が大きいならばLossが小さくなる。
- 誤差が小さい(予測が正しい)際は、ロスを小さくするために不確実性が小さくなるように学習される。
@Tomoaki Kitaoka
[service] unriddle: Read research papers faster
- 論文など、PDF形式のファイルを読んで、書き物をするのを効率化してくれるサービス
- なんたってYcon採択スタートアップ
- できること
- 対話形式で論文の内容を質問できる
- ファイルと対話は1:1で対話の出力では参照されたページ番号を教えてくれる
- 同じ画面でメモを取れる
- メモはファイルに対してN:Nの関係になっていて、メモの特定の箇所はどのファイルを参照しているかなども表現できる
- メモとファイルを横断して検索
- 特定のメモに類似するメモのサジェスト
[slide] 日本語Vision-Languageモデルの学習と評価ベンチマークの構築
- こちらのイベントの資料
‣
@Yuta Kamikawa
[論文] SelfDocSeg: A Self-Supervised vision-based Approach towards Document Segmentation(ICDAR 2023)
SelfDocSeg
MaitySubhajit • Updated Aug 18, 2024
概要
- 物体検出ベースやinstance segmentationのDocument Layout Analysisのための、自己教示学習手法
- 自己教示学習なので、ドキュメントの画像さえあればよく、アノテーションが不要
- 提案手法によって、1つのドキュメント画像から複数のオブジェクト表現を同時に学習し、データ効率の良い事前学習が可能となった
実験
- 自己教示学習で事前学習済みのモデルを使って、4つのデータセットでファインチューニングし、その精度で評価
- 提案手法はドキュメント画像しか使っていないが、事前学習にテキストやレイアウト情報を使うLayoutLMv3、UDocなどと同等の性能
- 教師あり学習の手法とも遜色ない精度で、小規模データセットではDocSegTrなどのTransformerベース手法より優れた性能
- 事前学習データ数を8100に制限しても、他の手法が使用するデータ数の100万〜4200万に匹敵する性能
@Shun Ito
[blog] Evaluation Measures in Information Retrieval
- Information Retrievalに関する指標のまとめ・解説記事 by pinecone
- 紹介されている指標はメジャーなもので、具体的な図・サンプル実装とともに、ProsとCons含めてわかりやすく解説されている
@Ryosuke Fukazawa / qluto
[書籍] Lean Analytics
古典ですが、プロダクトに組み込まれた機械学習システムの指標定義に対しても依然有用なので取り上げてみました。
今回は指標のベーシックな部分について触れている2章をピックアップ。
優れた指標は、期待する変化を促す数値であり、以下のような特徴があります。
- 比較ができる
- 優れた指標は、時間軸、ユーザーグループ、競合他社などと比較が可能です。これにより、自分がどの方向に進んでいるかを理解できます。例えば、コンバージョン率は単なる数値ではなく、過去のデータと比較して意味が出てきます。
- わかりやすい
- 指標が覚えにくかったり、議論が困難だったりすると、数値の変化を文化に取り入れるのが難しくなります。シンプルで直感的な指標が好まれます。
- 比率や割合である
- 比率や割合は行動しやすく、比較もしやすいです。例えば、売上や利益だけでなく、それを元にしたROI(投資利益率)やコンバージョン率などの比率が重要です。比率は状況を直感的に理解しやすく、対策を立てやすくします。
- 行動を変える
- 優れた指標は行動を変えます。指標の変化に基づいて、従来とは異なる行動を取ることができることが最も重要です。
- 対になったメトリクス
- 多くの指標は「対」になって登場し、バランスを保つために両方を見る必要があります。例えば、コンバージョン率と購入時間、バイラル係数とバイラルサイクルタイムなどです。
優れた指標がどんなものなのかはわかったとして、実際にどのように指標設計を行えば良いのでしょうか?
書籍では下記の考え方が示されています。
- 定性的指標と定量的指標
- 定量的指標は数値や統計で「何が」「どれだけ」を明確にし、追跡や計測が容易で科学的です。一方、定性的指標はインタビューや議論などで「なぜ」に答え、感情や主観を含むため、定量化が難しいですが、ビジネスの課題や顧客のニーズを深く理解するのに重要です。最初に定性的データを収集し、潜在顧客のインサイトを得ることで、定量的データと組み合わせたより深い分析が可能になります。
- 虚栄の指標と行動につながる指標
- 虚栄の指標は、自己満足のためのデータであり、行動を変えません。例として、合計登録数や合計アクティブユーザー数が挙げられます。これらは増加してもビジネスの本質的な改善にはつながりません。一方、本物の指標は、行動を変えるデータであり、ユーザーのエンゲージメントを示す「アクティブユーザー率」や「一定期間に獲得したユーザー数」などです。これらは製品やマーケティング手法の効果を評価し、改善を促進するために重要です。
- 探索指標と報告指標
- 探索指標と報告指標は、用途と目的が異なります。報告指標は、既知の未知に対する指標であり、日常業務や既存のプロセスを把握するために使われます。例えば、売上やユーザー数など、具体的なデータを追跡します。一方、探索指標は未知の未知を発見するためのもので、新しい市場やユーザーセグメントを見つけるために役立ちます。スタートアップにおいては、拡大可能で反復可能なビジネスモデルを探求するために、探索指標が特に重要です。
- 先行指標と遅行指標
- 先行指標と遅行指標は目的が異なります。先行指標は未来を予測し、将来の行動を導くために使います。例えば、営業ファンネルの見込み客の数から新規顧客の数を予測することができます。一方、遅行指標は過去の出来事を示し、問題が発生したことを確認するために使います。例えば、チャーンレート(顧客離脱率)は遅行指標です。スタートアップの初期段階では、遅行指標を使って現状の把握を行い、次第に先行指標を活用して未来を予測し、行動を最適化します。
- 相関指標と因果指標
- 相関指標は、2つのデータが同時に変動することを示しますが、因果関係を意味しません。単なる相関関係に基づいた意思決定は誤りを招く可能性があります。例えば、アイスクリームの消費量と溺死の件数には相関関係がありますが、因果関係はありません。一方、因果指標は、一方の変数が他方の変数に影響を与えることを示します。因果関係を見つけることで、効果的な対策を講じることができます。正しい意思決定には、相関関係ではなく、因果関係の特定が重要です。
そのほか、
- スタートアップにおいてはムービングターゲット(移動目標、軌道修正を図りながら変化する目標)を追いかけることの大事さ
- 施策の評価を行う際にはセグメント・コホート・A/Bテスト・多変量解析を駆使すること
が案内されています。
@Yosuke Yoshida
[blog] LLMOps に取り組み始めた話
課題
- 研究開発部と共同で開発を行っているが、検証用データが共有しやすく、かつ実行可能な状態になっていない
- どの検証用データに対して、どのモデルを使用してどのような結果が出たか管理されていない
- 検証する際の評価指標などが一元管理できていない。また、良しあしが曖昧なことが多いために手動での評価を行っている部分があるために自動で評価できない
1. 検証用データの準備(Datasets)
- InputとExpected Outputをセットで定義して格納します。それぞれ構造化データとして登録できます。
2. 実行の作成(Traces)
- 作成したDatasets をLLMに通した結果をLangfuseに格納してみます。主にTrace - Span - Generationの概念があり、次のコードのような処理で作成が行えます。画面では、それぞれでかかった時間、コスト、アウトプットなどを確認できます。
3.評価の管理(Datasets - Score)
- 最後に、Spanの評価と対応するDatasetとのひも付けです。どのデータセット、モデル、処理でどんな結果だったのかをひも付けて管理するために、それぞれのデータをつなげます。
メインTOPIC
DocFormerv2: Local Features for Document Understanding (AAAI2023)
概要
- Visual Document Understanding
- OCRの文字認識結果を一列にして言語モデルに入力するのはレイアウト情報を使えない
- 提案内容
- 画像情報、テキスト情報、位置情報を合わせたモデル
- 事前学習タスク(encoder2種, decoder1種)
関連研究
- 既存研究はencoderのみに注目した手法が多い
- 提案手法はencoder, decoderに注目。TILTも同様だが、encoderとdecoder合わせて1つのタスクで事前学習している
提案手法
モデル
- 入力: image, text(文字列+bbox)
- Visual Features
- vision modelが他と比べて軽量: 2x2 conv → linear
- 空白の何も情報がない領域を弾くくらいの役割
- SwinやViTを使うよりも良かった
- この結果にさらにpositional encodingを加える
- Text Features
- トークナイズしてから配列長sに揃えてembedding
- Spatial Features
- bbox ()情報をembedding
- Other Features
- v, tそれぞれのfeatureに加えられる、multi-modalに関する情報
事前学習
- encoder: token-to-line
- 局所的な特徴の意味アラインメントが重要
- ランダムに2つのトークンを選び、行数で何行離れているかを予測させる
- 2行以上は2にする
- 縦に並んでいるレイアウトは考慮されてなさそう
- encoder: token-to-grid
- 会社名は一番上に書かれていることが多い、といった傾向を掴む
- 文書をグリッドに分割し、各トークンのグリッド番号を予測する
- decoder: MLM
- textの入力トークンは、文字情報・位置情報ともにランダムにマスクされる
- マスクされたトークンを予測する
- final loss
- ↑3つの重み付き和(重みはempirically determined)
実験
データセット
- 事前学習: Industrial Document Library (IDL) データセットで事前学習。OCRをかけた6400万データ
- 個別タスクごとにfine-tuningデータセットを用意
Tabel VQA
- 表に書かれた内容を元に、文章が正しいかどうかを予測する
Document VQA
- Documentの情報を元に質問への回答を生成する
Sequence Labeling Task
- question, answer, header, otherの4ラベルをトークンに付与
Entity Extraction Task
- 特定のクラスに関する値を抽出
Generalization Experiments - Scene-Text VQA
- 写真に関する質問に対して回答を生成する
その他検証: OCRエラーに対するロバスト性
- Sequence Labeling Taskで検証
- OCR読み取り結果をランダムに置き換えて人工的にエラーを発生させて実験
- LayoutLMv2と比べて読み取りエラーに対してロバスト
- デコーダがあることが効いているらしい(周辺情報をうまく使えている?)
感想
- 画像の埋め込みがシンプルだが精度が高くなっているらしく意外
- 同じ列にkey, valueのペアが存在しているような書類は苦手そう?