Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

OpenAIのStructured Outputsを試してみた ~LLMを活用した機械学習モデ...

Tomoaki
August 20, 2024

OpenAIのStructured Outputsを試してみた ~LLMを活用した機械学習モデルのアノテーション効率化を目指して~

CHUO_Tech #4 LLM活用について語ろう!

概要
CHUO Techは、中央区に会社のある企業が集まって立ち上げた勉強会です。第4回となる今回は、「LLMの活用」をテーマにワイワイします!

参加対象は、中央区を問わず全エリアです!中央区に勤務・お住まいでなくとも、登壇する企業に興味がある方、テーマに興味がある方はどなたでも遊びにきてください!

Tomoaki

August 20, 2024
Tweet

More Decks by Tomoaki

Other Decks in Technology

Transcript

  1. © LayerX Inc. OpenAIのStructured Outputsを試してみた 2024/08/20 CHUO_Tech #4 LLM活用について語ろう! Tomoaki

    Kitaoka LLMを活用した機械学習モデルのアノテーション効率化を目指して
  2. 2 © LayerX Inc. 自己紹介 北岡 知晃(Tomoaki Kitaoka)@tapioca_pudd 2019年〜 株式会社

    LayerX バクラク事業部 機械学習チーム Software Engineer • インターン→新卒入社 • バクラクのリリース初期から開発に従事 • 趣味は体を鍛えること、服を作ること、日光浴をすること
  3. © LayerX Inc. 7 バクラクシリーズラインナップ 仕訳‧⽀払処理効率化 法⼈カードの発⾏‧管理 稟議‧⽀払申請‧経費精算 帳票保存‧ストレージ *

    経費精算のSlack連携は申請内容の通知のみ AIが領収書を5秒でデータ化 スマホアプリとSlack連携あり 領収書の重複申請などミス防⽌機能 AIが請求書を5秒でデータ化 仕訳‧振込データを⾃動作成 稟議から会計までスムーズに連携 年会費無料で何枚でも発⾏可 インボイス制度‧電帳法対応 すべての決済で1%以上の還元 AIが書類を5秒でデータ化 あらゆる書類の電⼦保管に対応 電⼦取引‧スキャナ保存に完全対応 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 帳票発⾏ 帳票の⼀括作成も個別作成も⾃由⾃在 帳票の作成‧稟議‧送付‧保存を⼀本化 レイアウトや項⽬のカスタマイズも可能 ・ ・ ・
  4. © LayerX Inc. 8 バクラクシリーズの全体像 バクラクは、企業取引の前段となる「稟議の統⼀」と「債権‧債務の⼀元管理」が可能。 従業員‧経理のそれぞれが係る業務領域において、なめらかな業務連携により企業経営を加速させます。 仕訳データ 振込データ ⼊⾦データ

    取引先 発注 請求 発注 請求 債権管理 債務管理 従業員 経理 ※ 開発予定の機能を含む 銀⾏ 会計ソフト 請求書 処理 経費 精算 振込 稟議 法⼈ カード 請求書 発⾏ 仕訳 (※) ⼊⾦消込 (※) 仕訳 © LayerX Inc.
  5. © LayerX Inc. 13 AI-OCRのデータセットを作るのは大変 LLMを活用したAI-OCRのアノテーション効率化 • 手作業によるラベリングの手間 ◦ 大規模なデータセットでは膨大な作業量となり、正確にラベリングを

    行うのは難しく手作業でのラベリングはミスが発生しやすくなる • 複雑なレイアウトや未知のドメインの書類の処理 ◦ 書類や画像には、複雑なレイアウトでテキストや表が配置されていた り、業種特有の概念が含まれていて、正確にラベルを付けるのは難 しい • アノテーションの一貫性 ◦ 複数人でアノテーションを行う場合において、異なる人が異なる基準 でラベルを付けると、データセット全体の品質にばらつきが生じるた め、厳格なガイドラインとトレーニングが必要
  6. © LayerX Inc. 14 そうだ、LLMにアノテーションをやってもらおう! LLMを活用したAI-OCRのアノテーション効率化 LLMを活用した機械学習モデルのアノテーション効率化 https://tech.layerx.co.jp/entry/2024/08/13/190507 • LLMは様々な自然言語処理タスクで優れたゼロショット能力を示している

    • ゼロショットでアノテーション候補をサジェストしたり、LLMの推論結果を疑似 ラベルとしてモデルをトレーニングすることで、アノテーションスピードを向上 させ、改善サイクルを素早く回すことが期待できる • LLMを活用する際には、構造化データをロバストに抽出する方法や、システ ムの拡張性の課題に加えて、プロンプトを柔軟に変更できる仕組みが必要 ◦ 今回はJSON Schemaを採用(詳細はブログを参照ください) ※アノテーションにおけるLLMの利用に関しては、クラウドベンダー各社及び社内の法務確認のうえ進めています。 本資料で登場するLLMがアノテーション用途で使えることを保証するわけではないのでご留意ください。
  7. © LayerX Inc. 16 Structured Outputs OpenAIのStructured Outputs https://openai.com/index/introducing-structured-outputs-in-the-api/ 2024/08/06にOpenAI社が公開した、開発者が提供するJSON

    Schemaにモデル生成の出力が正確に一致することを保証する機 能 • 高い信頼の型安全性 ◦ 不正確な形式のレスポンスではないかを検証したり、正確な 形式を得るためにリトライをする必要がない • 明示的なrefusal ◦ 安全性に基づいてモデルが応答を拒否した場合、refusalプロ パティに値が格納されるため、プログラム上で検出可能になる • 簡潔なプロンプティング ◦ 一貫した形式の出力を得るために、プロンプト側で指示を設定 する必要がない gpt-4o-2024-08-06はStructured Outputsによって100%の信頼性で 事前定義したスキーマの出力に成功と発表
  8. © LayerX Inc. 17 JSON mode vs Structured Outputs OpenAIのStructured

    Outputs https://platform.openai.com/docs/guides/structured-outputs/introduction • JSON mode は JSON でのレスポンスが保証されるが、事前に定義したスキーマでないことがある • Structured Outputs は事前に定義したスキーマでのレスポンスが保証される • Structured Outputs は JSON mode の進化系であり、OpenAIもこちらを推奨している
  9. © LayerX Inc. 18 Structured Outputsは全てを解決してくれるのか? OpenAIのStructured Outputs → 私たちのユースケースではまだ Noでした!

    直面した課題 • 階層制限 ◦ 6階層以上のネストは非対応 • JSON Schemaの機能が結構使えない ◦ 日付系のラベルはYYYY-MM-DDでしか保存できない制約を設けたいが、format機能が非対応 ◦ 値が見つからない場合は、bool値などはdefault falseにしたいがdefault機能が非対応 ◦ 座標情報は0~1で正規化した値を保存したいので最大値と最小値を設定したいがmin, max機能が非対応 ◦ 座標を4頂点のbounding boxとして保存したく、4点全て値が存在するor全てnullのどちらかであることをoneOfを 使って保証したいが、oneOf機能が非対応 • 原因不明のエラーが出る ◦ The server had an error while processing your request. Sorry about that! ◦ 恐らくだが、オブジェクト数の上限を超えるとこのエラーが出る気がする...?
  10. © LayerX Inc. 19 Structured Outputsの制約 (公式ドキュメントより) OpenAIのStructured Outputs •

    サポートされている型 ◦ String, Number, Boolean, Object, Array, Enum, anyOf • 全てのフィールドはrequiredである必要がある ◦ optionalのフィールドが必要な場合は、nullとのunionにして擬似的にoptionalの機能を作る • オブジェクトサイズと階層数には制約がある ◦ オブジェクトのプロパティ数の最大値は100 ◦ ネストの階層数5階層まで • 全てのオブジェクトにadditionalProperties: falseを設定する • 型特有の機能は一部非対応(以下、部分的に抜粋) ▪ string: minLength, maxLength, pattern, format ▪ number: minimum, maximum, multipleOf ▪ object: patternProperties, unevaluatedProperties, propertyNames, minProperties, maxProperties ▪ array: unevaluatedItems, contains, minContains, maxContains, minItems, maxItems, uniqueItems https://platform.openai.com/docs/guides/structured-outputs/supported-schemas
  11. © LayerX Inc. 21 さいごに まとめ ※(再掲)アノテーションにおける LLMの利用に関しては、クラウドベンダー各社及び社内の法務確認のうえ進めています。 本資料で登場するLLMがアノテーション用途で使えることを保証するわけではないのでご留意ください。 •

    バクラクではLLMを活用して、爆速でデータセットを作成することで機械学習モデルの改善サイクルを素 早く回し、圧倒的に使いやすいプロダクト体験を届けることを目指しています。 • OpenAI社がリリースしたStructured OutputsはJSON modeの進化版であり、事前に定義したスキーマ で返すことを保証する機能であると 発表されている。 • しかし、実際にバクラクのユースケースに適用させてみた結果、 JSON Schemaの機能に部分的にしか 対応できていない点や JSONのサイズや階層数に制約がある点から、期待した出力を得ることができな かった(のでFunction Callingを採用しました)。 • まだまだ出たばかりの機能なので、今後の進化に期待! ^ ^
  12. © LayerX Inc. 22 さいごに 余談1: Structured Outputsを可能にするConstrained Decoding •

    通常モデルが出力を生成する際、語彙のリストから任意のトークンを選択可能であ るが、この柔軟性がモデルが誤りを犯す原因となる ◦ 例:左のJSON Schemaで出力する指示があっても最初のトークンを { では ない任意のトークンから選ぶことができてしまう • 出力の形式を強制するためには、提供されたスキーマに基づいて有効なトークン のみを選択するようにモデルに対して制限をかける必要がある • 有効なトークンはSchema内の場所に応じて動的に判断できる必要があるため、提 供されたJSON Schemaは事前に文脈自由文法(CFG)に変換され、推論エンジン は各トークンの生成後に前に生成されたトークンと文法の規則に基づいて、次に生 成すべき有効なトークンを判断する https://openai.com/index/introducing-structured-outputs-in-the-api/
  13. © LayerX Inc. 23 さいごに 余談2: JSONなどのフォーマットの制約が厳しいほどLLMの推論能力が低下する? 以下の3つのアプローチの性能比較 • Constrained

    Decoding (JSON mode) ◦ トークンレベルで生成する文字の制約を設ける • Format-Restricting Instructions (FRI) ◦ プロンプトで特定のスキーマで出力するよう指示する • NL-to-Format ◦ まずLLMに対して自然言語で質問に答えるよう指示し、次にその出力 を特定のスキーマに変換するよう指示する Let Me Speak Freely? A Study on the Impact of Format Restrictions on Performance of Large Language Models Zhi Rui Tam, Cheng-Kuang Wu, Yi-Lin Tsai, Chieh-Yen Lin, Hung-yi Lee, Yun-Nung Chen JSON modeは分類タスクにおいては高い性能を発揮した が、Last Letter Concatenationタスクをはじめてとした推 論タスクにおいては他のアプローチよりも大幅に劣る結果 となり、フォーマットの制約は推論能力を妨げる可能性を 示唆  → 事前定義された Schemaを保証するStructured Outputsの場合、JSON modeよりも強い制約になるので 性能にどのような影響を与えるのだろうか?