機械学習プロダクト開発の「2年目」とこれから

自然言語処理・機械学習を用いて、企業に眠っている契約書を資産として活用できるようにしていくサービスを作っているMNTSQの堅山です。

弊社の機械学習チームは、契約書データから様々な情報を抽出し、人が活用できるようにするのがの役割です。例えば、誰が相手の契約か?この条項と同じタイプの条項は他にあるか?などなど文書分類、NERなどなどのタスクを解いています。

弊社は現在3年目に突入したところで、無事に実証実験を終え、企業の皆様に使っていただけるところまでたどり着くことができました。

1年目と2年目を振り返って、プロダクトを作っていくために必要な考え方が違ったなと思ったので、どういう点がポイントだったのかを振り返って行こうと思います。

機械学習プロダクト開発の「1年目」

弊社のプロダクトは、すでに収益を生むサービスに対して機械学習を投入するといったシチュエーションではなく、新しいタイプの製品を機械学習のプロダクトをスクラッチで作っています。したがって、数%の精度改善が大きなインパクトを生む、といった世界観ではありません。

また、契約書データが機密性が高いがゆえに、あまりドンピシャの問題意識の先行研究が見つけづらく、この種類の項目は抽出できるのか?といった感覚を先行研究から当たりをつけるのが難しい部分もありました。

機密性に加えて、法務という領域では専門知識のある日本語話者が関わる必要があり、アノテーションができる方に参画してもらうのが大変です。

このような状況で、限られた時間・人材を最適に配置して、リーンに開発を進める必要がありました。

この過程では、以下のことを意識していました

精度が比較的低くてもバリューが出る領域の選定

いちばん重要なことがこれかなと思います。タスクの難しさとまた独立に、そのタスクがどこまで達成されればユーザーにとって意味があるかという閾値が存在しています。はじめから高い精度を求められる領域から開発をすると、リソースの限られた状況ではどうしようもなくなってしまう可能性があります。

例えば、この契約書にリスクのある条項が含まれているかを判定する、といったタスクを考えてみると、機械だけで全部処理をする前提でコストを削減したいと考えておられるユーザーからは、100%のRecallが求められてしまうかもしれません。

しかし、クオリティを追求したいユーザーに、今まで必ずしも目が届いていなかった契約書に機械を適用してみましょう、という進め方であれば、100%でなくても導入をしてもらえるかもしれません。

これはプロダクト設計やユーザーの使い方などを含めて設計する必要があります。早期からユーザーに価値が提供できる領域を発見することが大切だと考えています。

単純な手法からはじめる

これも非常に重要でした。まず、アノテーションされているデータ数が少ない状態では、複雑な手法がパフォーマンスを発揮できません。このフェーズではアノテーションの追加こそが本質的な前進であり、モデルの工夫が大きな性能変化をもたらすことはなかなかありません。でも、複雑なモデルを試したくなってしまったりするんですよね。

むしろ、この時期はタスク自体の難易度を見積もるためにも「とりあえずやってみる」ことが必要なフェーズであり、契約書解析は非常に沢山のタスクの集合体ですので、時間を決めていろいろなタスクにまずは取り組んでみて感覚を掴むことにリソースを投資したのが効果的でした。

やっていくうちに難しさに気づいていくタスクもあれば、意外とこれできるじゃん!となるタスクもあり、早期に単純な手法で様々な方向から取り組んだことで、重要かつ解けそうなタスクにもあたりがついてきました。

いろいろなタスクにトライしていくことを重視していた1年目の動き方は別の記事でもまとめたので、見てみてください。


機械学習プロダクト開発の「2年目」

2020年はMNTSQにとってプロダクト開発の2年目の年でした。1年目はプロダクトに最低限必要なタスクに取り組むので精一杯だったのですが、2年目ではいかに継続的な改善を達成していくか、新しいタスクに取り組んでいくか、という点が課題になってきました。

蓄積されたデータを複雑なモデルで活用する

重要なタスクがわかってきて、それまでの取り組みの蓄積としてアノテーション済みデータが溜まってくるようになりました。そして新しいリーガルチームのメンバーも増え、アノテーションの馬力もあげられるようになってきました。何回も改善のサイクルを回すことで、知見を活かしてより良いモデルを作っていくことができるようになりました。

ここではじめて、複雑な手法や全部ニューラルネットでポン!といった感じのアーキテクチャを採用できるようになりました。

時間のかかる技術へ投資をする

例えば、pretrainedモデルをスクラッチから学習してみると言った、リソースと時間がかかるようなところです。機械学習アルゴリズムを受託でプロジェクト型で開発する場合は契約期間中にクライアントに結果を出すことが求められますが、製品開発をしているからこそ、期間が長くかかってしまっても、性能が大きく向上する可能性がある取り組みに投資することができるなぁと両方のタイプの事業の経験から思うようになりました。

月並みですが、日進月歩の世界ですから、小さな工夫を積み重ねていくと同時に、全く違うアプローチを試してみたりすることが最終的なノウハウの獲得に繋がり、参入障壁になると考えています。

---

という形で、1年目と2年目はかなり対照的な動きになったと思います。1年目にとにかく価値のある領域を探索し、2年目にそれを高度化していくという動き方ができたことは開発の進め方としてとても良かったと思っていますし、これは幅広く機械学習をベースにしたプロダクトを立ち上げていくのに応用可能な進め方ではないかなと思っています。

おまけ: 機械学習プロダクト開発の「3年目」

さて、2021年はMNTSQにとっては3年目です。特に今年はお客様も増えていくフェーズです。

既存のタスクの精度を改善すること、新しいタスクに挑戦することはもちろんですが、様々な領域で「オペレーションの高度化」に挑戦していきたいと思っています。今年からはもう、一般的にどうというより、弊社スペシフィックな話題ばかりなのですが…

タスクの標準化

契約書から抽出したい情報は多岐に渡ります。文書単位の分類から単語レベルのNERなどさまざまなタイプのタスクがあります。また、文書単位の分類が、特定のフレーズの存在判定に還元される例など、解かれ方も多岐にわたります。契約相手方を判定する問題でも、契約書の種類ごとにカスタマイズしてそれぞれ別の特徴量や分類器が入ったモデルを作っていたりしました。精度のみを純粋に追求した結果として、たくさんモデルを追加する、といったことはやりづらくなってしまいました。いままでの経験からいろいろな対象に標準的にうまくいくような仕組みを見つけていくことで、新しい問題にチャレンジするのを容易にしていきたいと考えています

パフォーマンスの改善

モデルを高度化していく中で、計算量がやばいことになってしまいました。計算負荷やサイズの大きいモデルをどう稼働させるかなどなど、いわゆるML Ops的な話題が重要になってきています。初期にはリーンに進める観点でもパフォーマンスについてはあまり考えていなかったのですが、スケールフェーズに突入するにあたって改善をしていく必要が出てきました。

データオペレーションの改善

アノテーションの高速な追加が可能になったり、モデルの作成が高速化できると新たな参入障壁になります。弊社ではアノテーションツールも自作しているのですが、この観点でデータの扱いの効率化をどんどん図っていきます。モデルの出力結果を生かしたアノテーションの効率化や、実験管理の改善など、データをより上手に扱えるようにすることで、今後の開発効率を挙げていきたいと考えています。


【PR】 MNTSQでは3年目も機械学習プロダクトを育てていきます。上記のような内容にご興味をお持ち頂けた方はぜひカジュアル面談にご応募ください!


この記事が気に入ったらサポートをしてみませんか?