Slide 1

Slide 1 text

© LayerX Inc. OpenAIのStructured Outputsを試してみた 2024/08/20 CHUO_Tech #4 LLM活用について語ろう! Tomoaki Kitaoka LLMを活用した機械学習モデルのアノテーション効率化を目指して

Slide 2

Slide 2 text

2 © LayerX Inc. 自己紹介 北岡 知晃(Tomoaki Kitaoka)@tapioca_pudd 2019年〜 株式会社 LayerX バクラク事業部 機械学習チーム Software Engineer ● インターン→新卒入社 ● バクラクのリリース初期から開発に従事 ● 趣味は体を鍛えること、服を作ること、日光浴をすること

Slide 3

Slide 3 text

目次 Agenda ● 会社紹介 ● バクラクのAI-OCR ● LLMを活用したAI-OCRのアノテーション効率化 ● OpenAIのStructured Outputs ● さいごに

Slide 4

Slide 4 text

会社紹介

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

© LayerX Inc. OUR MISSION 企業活動を⽀えるコーポレート業務は、ミスができない難しい業務。 バクラクはそんな業務の負担を少しでも軽くし、⽇常の業務がわくわ くするような体験を届けます。 使いやすさへの圧倒的なこだわりと、深い顧客理解で業務効率化を実 現。 ⼿作業、ハンコ、紙のやり取りから脱却し、事業と組織を⽀える 本来の仕事に向き合えるようサポートします。 圧倒的に使いやすい プロダクトで、 わくわくする働き⽅を。

Slide 7

Slide 7 text

© LayerX Inc. 7 バクラクシリーズラインナップ 仕訳‧⽀払処理効率化 法⼈カードの発⾏‧管理 稟議‧⽀払申請‧経費精算 帳票保存‧ストレージ * 経費精算のSlack連携は申請内容の通知のみ AIが領収書を5秒でデータ化 スマホアプリとSlack連携あり 領収書の重複申請などミス防⽌機能 AIが請求書を5秒でデータ化 仕訳‧振込データを⾃動作成 稟議から会計までスムーズに連携 年会費無料で何枚でも発⾏可 インボイス制度‧電帳法対応 すべての決済で1%以上の還元 AIが書類を5秒でデータ化 あらゆる書類の電⼦保管に対応 電⼦取引‧スキャナ保存に完全対応 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 帳票発⾏ 帳票の⼀括作成も個別作成も⾃由⾃在 帳票の作成‧稟議‧送付‧保存を⼀本化 レイアウトや項⽬のカスタマイズも可能 ・ ・ ・

Slide 8

Slide 8 text

© LayerX Inc. 8 バクラクシリーズの全体像 バクラクは、企業取引の前段となる「稟議の統⼀」と「債権‧債務の⼀元管理」が可能。 従業員‧経理のそれぞれが係る業務領域において、なめらかな業務連携により企業経営を加速させます。 仕訳データ 振込データ ⼊⾦データ 取引先 発注 請求 発注 請求 債権管理 債務管理 従業員 経理 ※ 開発予定の機能を含む 銀⾏ 会計ソフト 請求書 処理 経費 精算 振込 稟議 法⼈ カード 請求書 発⾏ 仕訳 (※) ⼊⾦消込 (※) 仕訳 © LayerX Inc.

Slide 9

Slide 9 text

© LayerX Inc. 9 シリーズ累計導⼊社数 10,000社以上  中⼩企業から上場企業まで幅広いお客様にご利⽤いただいています 製造 不動産‧物品賃貸 情報通信 建設‧運輸 施設‧店舗運営 ⾦融‧保険 卸売‧⼩売 ⼠業事務所 ⾮営利法⼈

Slide 10

Slide 10 text

バクラクのAI-OCR

Slide 11

Slide 11 text

© LayerX Inc. 11 AI-OCRで人間が手入力でデータ化をするという作業をなくす バクラクのAI-OCR 請求書や領収書などの帳票に記載された項目(支払期日や支払金額、取引先名など)を抽出。 ● 対応枚数が数十、数百枚と増えるにつれ、 ミスが起こりやすくなる ● 帳票のフォーマットは多種に渡り、 目視で必要な項目を探すのは手間がかかる ● ミスが許されないため、ダブルチェック等の 確認作業にも追加でコストが必要

Slide 12

Slide 12 text

LLMを活用した AI-OCRのアノテーション効率化

Slide 13

Slide 13 text

© LayerX Inc. 13 AI-OCRのデータセットを作るのは大変 LLMを活用したAI-OCRのアノテーション効率化 ● 手作業によるラベリングの手間 ○ 大規模なデータセットでは膨大な作業量となり、正確にラベリングを 行うのは難しく手作業でのラベリングはミスが発生しやすくなる ● 複雑なレイアウトや未知のドメインの書類の処理 ○ 書類や画像には、複雑なレイアウトでテキストや表が配置されていた り、業種特有の概念が含まれていて、正確にラベルを付けるのは難 しい ● アノテーションの一貫性 ○ 複数人でアノテーションを行う場合において、異なる人が異なる基準 でラベルを付けると、データセット全体の品質にばらつきが生じるた め、厳格なガイドラインとトレーニングが必要

Slide 14

Slide 14 text

© 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がアノテーション用途で使えることを保証するわけではないのでご留意ください。

Slide 15

Slide 15 text

OpenAIのStructured Outputs

Slide 16

Slide 16 text

© 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%の信頼性で 事前定義したスキーマの出力に成功と発表

Slide 17

Slide 17 text

© 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もこちらを推奨している

Slide 18

Slide 18 text

© 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! ○ 恐らくだが、オブジェクト数の上限を超えるとこのエラーが出る気がする...?

Slide 19

Slide 19 text

© 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

Slide 20

Slide 20 text

さいごに

Slide 21

Slide 21 text

© LayerX Inc. 21 さいごに まとめ ※(再掲)アノテーションにおける LLMの利用に関しては、クラウドベンダー各社及び社内の法務確認のうえ進めています。 本資料で登場するLLMがアノテーション用途で使えることを保証するわけではないのでご留意ください。 ● バクラクではLLMを活用して、爆速でデータセットを作成することで機械学習モデルの改善サイクルを素 早く回し、圧倒的に使いやすいプロダクト体験を届けることを目指しています。 ● OpenAI社がリリースしたStructured OutputsはJSON modeの進化版であり、事前に定義したスキーマ で返すことを保証する機能であると 発表されている。 ● しかし、実際にバクラクのユースケースに適用させてみた結果、 JSON Schemaの機能に部分的にしか 対応できていない点や JSONのサイズや階層数に制約がある点から、期待した出力を得ることができな かった(のでFunction Callingを採用しました)。 ● まだまだ出たばかりの機能なので、今後の進化に期待! ^ ^

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

© 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よりも強い制約になるので 性能にどのような影響を与えるのだろうか?

Slide 24

Slide 24 text

© LayerX Inc. 24 さいごに LayerXではLLMを活用したいエンジニアを大募集しています! カジュアル面談 LayerX 機械学習勉強会