Slide 1

Slide 1 text

データ⼊⼒の ⾃動化率向上のための取り組み Sansan株式会社 研究開発部 齋藤慎⼀朗 Sansan R&D TECH SHOWCASE

Slide 2

Slide 2 text

写真が入ります 齋藤 慎⼀朗 研究員 東北⼤学⼤学院⼯学研究科博⼠前期課程修了。⽇系 SIerや外資系IT企業で、電⼒・保険・製薬など多様 な業界に対する、機械学習を⽤いたシステムの提案 やPoC・開発・保守運⽤に従事。現在は請求書デー タや企業情報の分析を担当。Kaggle Expert。 X(旧Twitter) @sinchir0 Virtual Card

Slide 3

Slide 3 text

- 研究員がどのようにPJを進めているかを理解してもらう。 - ビジネス的なインパクトの⼤きさ、リリースまでの流れ、 当⽇のワクワクと不安な気持ちを臨場感を持って伝える。 本発表の⽬的

Slide 4

Slide 4 text

Sansanのプロダクト 経理DX 法務DX 営業を強くするデータベース 営業DXサービス 請求書受領から、⽉次決算を加速する インボイス管理サービス 契約データベースから、収益を最⼤化する 契約データベース 営業DX 名刺DX タッチで交換。スマートに管理。 名刺アプリ

Slide 5

Slide 5 text

これまでの取り組み概要 - 抽出性能の改善 - A/Bテスト施策 - ニュース提供機能の改善 - 同じニュースを配信しないための仕組みの速度改善 - 配信のパーソナライズ - ニュースフィルタリングの性能向上 社内 - R&DにおけるPythonの統⼀的な開発⽅針の策定・浸透

Slide 6

Slide 6 text

Sansanの⾃動化の仕組み 競合他社の追随を許さないアナログ情報のデータ化オペレーションを確⽴している。 テクノロジーの組み合わせ ⼤量のアナログ情報 ⼈:⼿⼊⼒ AI:⼊⼒ ⼈:チェック データベース化 ⼤量のアナログ情報を、迅速かつ正確にデータ化 創業以来、⻑年のサイクル 項⽬の⾃動判別・ マイクロタスク化 ⾔語の⾃動判定 分散化された⼊⼒ オペレーターネットワーク 画像処理技術 オペレーターへの ⾃動振分け アナログ情報画像の⾃動解析と⼊⼒

Slide 7

Slide 7 text

概要 ⽬的 - ⼊⼒対象のデータかどうかの判断にオペレータのコストがかかっており、コスト削減を⾏う 取り組み - 検討 - 何を解くべきか整理し、機械学習などで解く価値のある問題に落とし込んだ - 分析 - データの理解、エラー分析を⾏い、リリース可能な精度のモデルを構築した - モデル開発・機能提供 - モデル開発、API実装、バッチ処理実装、デプロイを実施した 結果 - ⾃動化率向上に成功し、数千万円/年の削減に繋げた。デプロイされ現在も運⽤中である 事例紹介 ~⾃動化率改善のための取り組み~

Slide 8

Slide 8 text

PJの進め⽅ - 必要性能、メリット整理 - 分析 - アルゴリズム検討 - 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討 - 2マッチを⾏う(1発確定)のアルゴリズムの検討 - 出⼒内容の確認 - モデル開発・機能提供のための開発 - リリース - リリース後の経過観察 事例紹介 ~⾃動化率改善のための取り組み~

Slide 9

Slide 9 text

PJの進め⽅ - 必要性能、メリット整理 - 分析 - アルゴリズム検討 - 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討 - 2マッチを⾏う(1発確定)のアルゴリズムの検討 - 出⼒内容の確認 - モデル開発・機能提供のための開発 - リリース - リリース後の経過観察 事例紹介 ~⾃動化率改善のための取り組み~

Slide 10

Slide 10 text

必要性能、メリット整理 事例紹介 ~⾃動化率改善のための取り組み~ - 考慮すべき性能 - ⽬標とする性能の決定 精度 正しい予測を⾏った数 / 予測を出⼒した数 予測を出⼒した数 / 対象となるデータ全体 ⾃動化率 エンジニア、データ⼊⼒をマネジメントするメンバーと打ち合わせを重ね、必要性能を決定。 既存モデルに対して、どの程度⾃動化率が向上するかをR&Dメンバー内で打ち合わせを⾏い、 ⽬標とする⾃動化率を決定。 精度 ⾃動化率 ⁃ ビジネス的メリット ⁃ 仮に⽬標とした⾃動化率向上を達成した場合のメリットを下記のように算出 ⁃ 数千万円/年の費⽤削減

Slide 11

Slide 11 text

PJの進め⽅ - 必要性能、メリット整理 - 分析 - アルゴリズム検討 - 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討 - 2マッチを⾏う(1発確定)のアルゴリズムの検討 - 出⼒内容の確認 - モデル開発・機能提供のための開発 - リリース - リリース後の経過観察 事例紹介 ~⾃動化率改善のための取り組み~

Slide 12

Slide 12 text

分析 - データは⽬視で確認 - ⾃動化するデータの⼊⼒作業を⾃⾝で通算数千件以上実施(いわゆる⽬grep) - 実際にデータを⼊⼒する⽅へのヒアリング 事例紹介 ~⾃動化率改善のための取り組み~

Slide 13

Slide 13 text

PJの進め⽅ - 必要性能、メリット整理 - 分析 - アルゴリズム検討 - 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討 - 2マッチを⾏う(1発確定)のアルゴリズムの検討 - 出⼒内容の確認 - モデル開発・機能提供のための開発 - リリース - リリース後の経過観察 事例紹介 ~⾃動化率改善のための取り組み~

Slide 14

Slide 14 text

アルゴリズム検討 - 前提 - 2マッチ⽅式 - 1つのタスクに対して複数回答を収集し、早い順で同じ回答が2つ得られた場合に データ確定とする 事例紹介 ~⾃動化率改善のための取り組み~ 回答1 回答2 回答3 データ化結果 1 1 - 1 1 0 1 1 データ化の流れの例

Slide 15

Slide 15 text

アルゴリズム検討 - 検討内容 - 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討 - 回答の1つとして、機械の出⼒を⽤いることが可能かを検討 - 最低でも1つは⼈間の回答が含まれる - ⼗分⾼い精度が求められるが、⼈間とマッチしない限りは採⽤されない - 2マッチを⾏う(1発確定)のアルゴリズムの検討 - 機械の出⼒を2マッチとして⽤いることが可能かを検討 - ⼈間の確認が含まれず、機械の出⼒1発で確定される(=1発確定) - ミスをしないアルゴリズムが求められる 事例紹介 ~⾃動化率改善のための取り組み~

Slide 16

Slide 16 text

PJの進め⽅ - 必要性能、メリット整理 - 分析 - アルゴリズム検討 - 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討 - 2マッチを⾏う(1発確定)のアルゴリズムの検討 - 出⼒内容の確認 - モデル開発・機能提供のための開発 - リリース - リリース後の経過観察 事例紹介 ~⾃動化率改善のための取り組み~

Slide 17

Slide 17 text

アルゴリズム検討 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討 - まずはベースラインの作成 - タスク - 5class分類、3calss分類 - 不均衡データ - ⼿法 - 単語の数え上げを特徴量とし、Naive Bayes - 性能 - 必要と定義した精度から-5%ポイント⾜りず - 性能改善のループへ 事例紹介 ~⾃動化率改善のための取り組み~

Slide 18

Slide 18 text

精度を改善したい! アルゴリズム検討 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討 事例紹介 ~⾃動化率改善のための取り組み~ ⼿法 ⽬標精度との差分(%) ⽬標⾃動化率との差分(%) ベースライン -5 (未計算) 🙂

Slide 19

Slide 19 text

⾃動化率は減らしてもいいから、精度が上がる⽅法を検討しよう! アルゴリズム検討 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討 事例紹介 ~⾃動化率改善のための取り組み~ ⼿法 ⽬標精度との差分(%) ⽬標⾃動化率との差分(%) ベースライン -5 (未計算) 多class分類から、データが多いclassのみを予測する2値分類 の問題に変更 -3 +4 🙂

Slide 20

Slide 20 text

精度はかなり上がったけど、⾃動化率が下がりすぎた・・・。 もっと除外する対象を限定できるルールを探さなければ! アルゴリズム検討 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討 事例紹介 ~⾃動化率改善のための取り組み~ ⼿法 ⽬標精度との差分(%) ⽬標⾃動化率との差分(%) ベースライン -5 (未計算) 多class分類から、データが多いclassのみを予測する2値分類 の問題に変更 -3 +4 エラー分析を⾏い、予測を外すデータに共通する項⽬を⾒つけ、 ルールベースで予測対象から除外 -0.5 -8 🤔

Slide 21

Slide 21 text

アルゴリズム検討 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討 事例紹介 ~⾃動化率改善のための取り組み~ ⼿法 ⽬標精度との差分(%) ⽬標⾃動化率との差分(%) ベースライン -5 (未計算) 多class分類から、データが多いclassのみを予測する2値分類 の問題に変更 -3 +4 エラー分析を⾏い、予測を外すデータに共通する項⽬を⾒つけ、 ルールベースで予測対象から除外 -0.5 -8 再度エラー分析を⾏い、予測対象から除外する条件を厳しくす る +0.5 ±0 😊 無事⽬標達成🎉

Slide 22

Slide 22 text

PJの進め⽅ - 必要性能、メリット整理 - 分析 - アルゴリズム検討 - 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討 - 2マッチを⾏う(1発確定)のアルゴリズムの検討 - 出⼒内容の確認 - モデル開発・機能提供のための開発 - リリース - リリース後の経過観察 事例紹介 ~⾃動化率改善のための取り組み~

Slide 23

Slide 23 text

2マッチを⾏う(1発確定)のアルゴリズムの検討 - 流れは「アルゴリズム検討 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討」と同様 - 下記のような仕組みを検討 - ルールベース - 単語レベルでのマッチング - BERTモデル - 1発確定を⾏うための厳しい精度要件を突破するための⽅法を模索 - 結果として、ルールベースが最も性能が良かった 事例紹介 ~⾃動化率改善のための取り組み~

Slide 24

Slide 24 text

PJの進め⽅ - 必要性能、メリット整理 - 分析 - アルゴリズム検討 - 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討 - 2マッチを⾏う(1発確定)のアルゴリズムの検討 - 出⼒内容の確認 - モデル開発・機能提供のための開発 - リリース - リリース後の経過観察 事例紹介 ~⾃動化率改善のための取り組み~

Slide 25

Slide 25 text

出⼒内容の確認 - データ⼊⼒をマネジメントするメンバーに出⼒内容の共有 - 上記メンバーの観点から⾒て問題点があれば共有してもらい、改善策があるかを⼀緒に検討する - 必要であればアルゴリズムの⾒直しも⾏う - 仮に機械が出⼒を間違えたとしても、「なぜ間違えたか」を⼈間が理解できると、データ⼊⼒を ⾏うメンバーとして受け⼊れやすい 事例紹介 ~⾃動化率改善のための取り組み~

Slide 26

Slide 26 text

PJの進め⽅ - 必要性能、メリット整理 - 分析 - アルゴリズム検討 - 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討 - 2マッチを⾏う(1発確定)のアルゴリズムの検討 - 出⼒内容の確認 - モデル開発・機能提供のための開発 - リリース - リリース後の経過観察 事例紹介 ~⾃動化率改善のための取り組み~

Slide 27

Slide 27 text

モデル開発・機能提供のための開発 - 下記⼯程を約1カ⽉半かけて実施 - FastAPI を⽤いた API 機能の実装 - Python を⽤いた⾔語モデルの実装 - Gokart (パイプラインのライブラリ)によるバッチ処理の実装 - GitHub による Pull Request, Review 対応 - Google App Engine を⽤いたデプロイ - 個⼈的に⼯夫した点 - GitHub ActionsによるPull Requestの⾃動指摘にflake8, black, mypyを追加し、Pythonコードの 品質を担保 - 特にmypyの指摘対応が慣れるまでは⼤変・・・ - 似た予測対象が2つあるため、それぞれの予測対象ごとにclassを⽤意し、異なる対象を予測し た場合にエラーを出⼒するよう実装 - 予測対象に応じてclassを分け、runtime_checkableを⽤いて専⽤メソッドが存在するか 確認 事例紹介 ~⾃動化率改善のための取り組み~

Slide 28

Slide 28 text

PJの進め⽅ - 必要性能、メリット整理 - 分析 - アルゴリズム検討 - 2マッチ⽅式における、1マッチを⾏うアルゴリズムの検討 - 2マッチを⾏う(1発確定)のアルゴリズムの検討 - 出⼒内容の確認 - モデル開発・機能提供のための開発 - リリース - リリース後の経過観察 事例紹介 ~⾃動化率改善のための取り組み~

Slide 29

Slide 29 text

リリース 事例紹介 ~⾃動化率改善のための取り組み~ DALL·E 3 prompt「⾃分が作ったシステムのリリース⽇で緊張する猫」

Slide 30

Slide 30 text

リリース後の経過観察 - ⼈⼿によるチェックで精度が問題ないことを確認 - リリース後の⾃動化率向上を確認 事例紹介 ~⾃動化率改善のための取り組み~ リリース🎉 ⾃動化率向上

Slide 31

Slide 31 text

No content