機械学習チーム立ち上げ前夜とその後の話 #バクラク #LayerX
こんにちは!バクラクエンジニアの高際です!
LayerXでは現在AI-OCRチームのマネージャーを担当しています。
このnoteでは、機械学習チーム立ち上げ前夜の意思決定プロセスと、その後の進捗について報告したいと思います。
いきなり昔話をしますが、LayerXは実は去年(2021年)までは機械学習に積極的に取り組んでいませんでした。
クラウドコンピューティングと同様当然に利用する技術ではあるものの、自社のコア技術として積極投資するというよりは、あくまでツールのひとつとして利用するというスタンスでした。
それが一転して2022年にはCEO福島から「機械学習を本気でやります。チームを10倍に拡大させる」という宣言を出しました。
「一転して」とはいうものの、顧客への価値提供を重視するという本質的なスタンスは変わってません。とはいえ行動は変わりました。まずはその裏側で何が起きていたのか、そして現在どうしているか紹介したいと思います。
バクラクの立ち上げと急拡大
バクラクの開発が始まったのは2020年の秋。当初は事業が成立するか、有償で買ってくれる顧客が本当にいるのかも分かっていませんでした。
そのため、まずは動くものを作り、顧客に紹介することからスタートしました。OCRの文字認識部分は汎用のAPIを利用し、そこに上乗せする形で独自の請求書OCRを開発しました。
お客様からフィードバックをいただきながら請求書OCRを改善し続け、満足いただける品質まで高めることができたのは2021年の夏〜秋頃でした。
請求書OCRの改善以外にも、企業のガバナンスを高めるワークフロー機能や各種会計ソフトへの対応といったアップデートが重なり、バクラクのお客様は数百社という規模まで拡大しました。
現場で課題を解き続けて感じた危機感
バクラクでは請求書OCRの精度を導入企業ごとに分析しています。一定の水準に達していない企業の精度を優先して改善するためです。
開発当初は月初に前月分の精度を確認し、精度向上の対応を行い、翌月のお客様の業務に間に合うように製品アップデートをリリースしていました。その後、プロダクトの成長とともに改善しなければならないお客様の数が増加し、毎月の改善が間に合わなくなり、だんだんと2ヶ月遅れ、3ヶ月遅れと遅滞していくようになりました。
大量の正規表現とIF文で構成されたルールベース(ヒューリスティック)での精度改善による運用が限界に達した瞬間でした。
ルールベースで実装された請求書OCRでは、読み取れなかった新しいパターンの請求書を発見する度に、エンジニアが正規表現やIF文を追加・更新しなければなりません。データ量に応じて工数が増えていく状態です。また、実装コードは巨大になり、デバッグも難しく、認知負荷の高さは新メンバーのオンボーディングがほぼ不可能なほどになっていました。
このままではお客様の期待に応え続けることができない。なんとしてもこの状況を改善しなければならないと強い危機感を抱きました。
危機感共有からの爆速な意思決定、機械学習チーム立ち上げへ
問題は、新たなパターン=データ量が増える度にエンジニアの工数がかかることです。人間が処理しきれないような大量のデータを捌く…まさに機械学習が得意とする領域です。
機械学習を活用することで、データ量に対してエンジニア工数ではなく計算量が増えるよう、解くべき問題を変えることができます。
わたしはすぐさま状況を以下のようなドキュメントをまとめ、経営陣に報告し、機械学習チーム立ち上げの提案をしました。2021年12月のことでした。
ドキュメントを共有するとすぐさまCTOの松本からコメントが付き、その場で30分の1on1ディスカッションが、2日後にはCEOの福島、松本、バクラク責任者のmosaをまじえて1時間のディスカッションが行われました。
特に4人で行われたディスカッションでは参加者全員が事前にドキュメントを読み込み、課題や背景も正確に認識しており、すぐに体制や時間軸の話がスタートしました。わたしが背景から順番に説明してると、「そこはいいから早く進め方の話しようぜ」と急かされるほどでした。
機械学習チームを立ち上げたからといって、請求書OCRやバクラクにまつわる顧客の課題を解決できるとは限りませんし、雇用という意味では後戻りのできない意思決定でした。
不確実な状況ではありましたが、わたしの直感にも近いような報告・提案を信じ、勇気ある意思決定してくれた経営陣には感謝しかありません。
危機感はあったものの、希望もありました。
幸いにもバクラクは多くのお客様に評価いただき、データがどんどん溜まっていく状況にあります。これは一過性のものではなく、継続的に利用され今後もたまり続ける構造になっています。
データをもとに機械学習に投資することで、サービスの顧客体験も向上し、収益につながるような構造にもなっています。
こういった希望もあり、不確実ではありましたが、技術に賭ける意思決定ができたのかなと感じています。
機械学習チーム立ち上げからこれまで
そこからは忙しい年末になりました。大急ぎで新たな求人票を書き、ブログやtwitterで人材募集を告知しました。その一つが冒頭で紹介した福島の宣言です。
その後、多くの候補者の方とお話をさせていただき、結果的に2名の機械学習エンジニアが入社しました。ついにチームができたのです!!!
新メンバーを中心にアルゴリズムを選定し、実験をいくつかおこない、ポテンシャルを確認したところ既存実装の精度を超えそうだということが分かりました。
ポテンシャル確認のための実験では商用利用NGのモデルを利用していたため、プロダクト導入に向けて自前でアルゴリズムの実装を行いました。サラッと書いてますがめちゃくちゃ大変で、最近やっと成果が出たところです。担当のyoppiさんマジお疲れさまでした。。技術で突破する姿はLayerXエンジニアの鏡と言えるでしょう!
チームなので並行してより不確実性の低いアルゴリズムも検証したところ、そちらはなんと最も高い精度が出ています。わたしは事業部の定例で「検討してるアルゴリズムの中でたぶん最もポテンシャルが低い」なんて報告してしまったのですが、まじすいません。。担当のyossyさんお疲れさまでした!立ち上げ当初から未知領域を開拓し、改善までやり抜く力は本当にすばらしいです!
また、機械学習の案件では整理されたデータが重要です。既存のOCRチームのメンバーは、バクラクにアップロードされた請求書ファイルやテーブルデータを統合・一元管理し、バルクでファイルの加工を行ったり、SQLで分析可能な基盤を作り上げました。bounding boxを含めた正解データの編集がGUIで可能になっています。担当した北岡さん、秋野さん、三輪さん、長いプロジェクトで大変だったと思いますが、おかげで念願が叶いました。ありがとうございました&お疲れさまでした!
最近また新たに2名の機械学習エンジニアが入社しており、現在は作成したモデルのさらなる磨き込みと、プロダクトへの組み込みに向けて動いているところです。
めちゃくちゃ熱い入社エントリも書いていただいたので、興味ある方はぜひご一読ください!LayerXやバクラクの可能性が解像度高く記述されています。
これから
機械学習チームは立ち上げ以来ずっと請求書OCRのリプレイスと精度改善に注力してきましたが、このチームの存在意義は顧客の課題を解決し、新たな価値を生み出していくことにあります。請求書OCRの深堀りも重要ですが、それだけに集中し続けるのも違うかなーと感じています。
バクラクの製品シリーズは請求書、申請、経費精算、電子帳簿保存、ビジネスカードと拡大しており、解くべき課題、機械学習で解決可能な課題は山のようにあります。課題を解くだけでなく、顧客体験を向上するような新機能も提供できるでしょう。
今後は各サービスとの連携をより強化し、顧客への還元を増やしていきたいと思います。
還元といえば、アカデミアにもしていきたいです。我々の成果は最新の研究成果からヒントを得ることも多く、もらうばかりではなく、我々が得た知見は積極的に学会やコミュニティ等で共有していきたいと思います。
というわけで、LayerXはこれからもテクノロジーを活用し、バクラクを通じて「圧倒的に使いやすいプロダクトを届け、ワクワクする働き方を」提供していきます。そのためには機械学習エンジニアはもちろん、ソフトウェアエンジニアも含めて多くの方の力が必要です。
求人も公開しておりますので、興味を持っていただけたらまずはお気軽にカジュアル面談からお問い合わせください。お待ちしております!
この記事が気に入ったらサポートをしてみませんか?