(Image by Pixabay)
最近になって、こんな素晴らしい資料が公開されていたことを知りました。
この資料自体は著者のMoe Uchiikeさんが東大での講義に用いられたものだとのことですが、その内容の汎用性の高さから「これは全ての機械学習や統計学を実務で用いる人々が必ず読むべきドキュメント」と言っても過言ではないと思われます。
正直言ってこの資料の完成度が高過ぎるのでこんなところで僕がああだこうだ論じるまでもないと思うので、内容の詳細については皆さんご自身でまずは上記リンクから精読していただければと思います。その上で、今回の記事では「機械学習や統計学を『社会実装』する」ということがどういうことなのかについて、この資料を下敷きとした上でさらに僕自身の経験や見聞を加えて考察したことを綴ってみます。
機械学習や統計学と、社会との「ギャップ」
Uchiikeさんの資料は老害古参のデータサイエンティストから見るとこれでもかというくらいの「DS現場あるある」のオンパレードで、もう頷き過ぎて顎で鎖骨の付け根を折りかねないくらいの勢いなのですが、例示的なエピソードが多くて論旨を追い切れない人も少なくないかもしれません。そこで勝手に端的にまとめると、概ね以下のようなポイントについて論じられています。
これらのポイントを一つずつ取り上げてみましょう。まず「ほとんど社会実装されない」という指摘について。これは僕自身の過去8年間の経験から言っても事実です。それこそ両手両足の指では到底数え切れないくらいの数の機械学習モデルや統計分析を手がけてきましたが、その中で実際にビジネスに投入され明確に社会実装された結果として「具体的で数値的な成果」を上げるに至ったものは逆に手の指で数えられる程度しかありません。「それはお前が無能だからだろ」と言われたらそこまでかもですが、その時々のチームの同僚だった優秀なデータサイエンティストたちでも似たような境遇に甘んじていることが多かったので、それなりに普遍的な真実だろうと思われます。
次に「理想と現実のギャップ」。これはむしろ想像が容易でしょう。「これだけ大量のデータを我々は持っているのだから、これにAIを掛け合わせれば必ずや物凄いものが出来るに違いない」と豪語して、神Excelの帳票データだけが1万ファイル入ったDVDしか渡してくれない依頼主とか世の中には少なくありません。
そして「社会実装を阻む『罠』」。資料中でも色々と例示されていますが、意外と技術的に問題になるパターンはクラウドとか遮二無二突っ込んで、色々頑張って事業側のサーバーと繋いでしまえば何とかなることもままあります。その意味で、馬鹿にならないのが「社内政治」と「組織間の調整」。特に「自分たちの仕事が奪われると言って頑強に抵抗する現業部門」「手間がかかるから嫌だの自分たちはお前らのお手伝いではないだのと言ってデータを出したがらない情シス部門」はどうにもならないことが多く、そんな調整はプロジェクト始める前に済ませておいてくださいよと愚痴るしかないことも。
最後に、「ありとあらゆることを考えなければならない」という無理ゲー感。これはケースバイケースですが、案件によっては正真正銘の無理ゲーということがままあります。今般ならやはり新型コロナウイルスのパンデミックでしょう。特に機械学習システムを作って4月にはローンチというスケジュールだったのに、現在頭を抱えたままという機械学習エンジニア・データサイエンティストの諸氏は少なくないのではないでしょうか。他にも稀にあるのが「規制当局やプラットフォームの方針が変わって特定のデータが使えなくなったor特定のアウトプットが禁止されることになった」というケース。実は僕もこれで前職時代に熱心に取り組んでいた分析プロジェクトの一つが完成直前でコケました。。。
ということで端的に書いてしまうと、これらの諸問題が示しているのは本質的には「現実の社会はそもそも機械学習や統計学と相容れられるようには出来ていない」ということなのだと個人的には考えています。何故そう考えるのかというと、
などなどの互いの乖離があると見ているからです。1つ目は論を俟たないでしょう。これは社会が多数の人間及びヒトとヒトとの相互作用によって出来上がっていることを考えれば、「ヒトらしさ」の方が優先されるのはごく自然なことです。2つ目は以前の記事でも論じたことですが、現実の社会は多数の人間が関わる以上急には方向転換できないという鈍重さがあります。そして3つ目ですが、これは平たく言えば「今まで起きてきたことがこの先も続く」という仮定を置いているという話で、実際機械学習は学習データと未知のテストデータとで分布が異ならないことを期待するものである一方、現実の社会は頻繁に急激な大変動を起こすためそこから得られるデータは割と簡単に共変量シフトなど(感染症のパンデミックなどに由来する)を起こして既知のモデルによる予測ができなくなったりする、という話です。
故に、機械学習や統計学を用いたプロジェクトを漫然と進めても、上記のような理由でそうそう簡単には社会に受け容れられるようにすることはできない。その具体像を、Uchiikeさんの資料は示しているのだと僕は読み取りました。
機械学習や統計学を、社会に「馴染ませる」
機械学習や統計学を社会に受け容れられるようにするのは大変だ、ということはよく分かりました。では、そんな中で諦めずにそれでも機械学習や統計学を用いた取り組みを社会に浸透させるには、どうしたら良いのでしょうか?
個人的には、上にあげた3要因を「解決」するか「回避」するかしかないと考えています。もっとも「解決」などというのは、少なくとも日本で働く限りは日本社会全体を大きく変容させないとまず不可能でしょう。よって「回避」するというのが現実的な解だと思われます。その意味で言うと、以下のように「回避」するのが妥当かと。
- 科学的で合理性や合目的性が尊重される組織・指標に限定して提案する
- アジャイルなアプローチが使える規模・領域にプロジェクトを限定する
- 「定常」と仮定できる範囲の期間・範囲に限定して適用する
こうなると「回避」を通り越して「逃避」に近いかもしれませんが(笑)、大事なことは機械学習や統計学を社会に「馴染ませる」ことです。これでスモールスタートすることで、徐々にターゲットとする組織・指標・規模・領域・期間・範囲に拡大していく、という戦略を取っていく。それが、機械学習や統計学の社会実装を広げていくための迂遠ながら堅実なアプローチだと思っています。
1つ目は「見せる人を選べ」でもあり、同時に「適用する対象を選べ」でもあります。例えばいきなり数字嫌いの社長にアピールしようとするのは筋が悪いでしょうし、あまりにも多数の要因に左右される「売り上げ」をKPIにするのも得策ではないでしょう。とりあえず数字にも技術にも明るいCTOへのアピールを目指すとか、アクティブユーザー数やコンバージョン率のような誰でも「数字として客観的に評価しやすく成果を実感しやすい」指標をKPIにするのが良いと思います。
2つ目は以前の記事でも論じた通りで、分析の取り組みを必要に応じて行きつ戻りつさせても、実際の業務にそれほど大きな影響が出にくい規模*1や領域*2に最初は的を絞る方が良いでしょう。その意味では例えば「倉庫の在庫管理」は多くの人が興味のあるテーマですが、うっかり多めに発注してしまって倉庫から溢れる事態に陥ることを考えると危ないかもですね(汗)。
最後に、あまり分析対象を広げ過ぎるとどこかで「不連続な変化」が入り込んできて分析の想定範囲を超えてしまうことがあります。パンデミックは流石に災難だとしても、現在の日本では台風・豪雨による水害や各地で起きる地震のような天災も多いですし、一方でタピオカブームのように1ヶ月ぐらいで突然skyrocketingな跳ね上がりを見せて誰も追いつけないようなトレンドが生起することも世の中多々あります。これらを避けるためには、やはり2番目同様にアジャイルな対応が可能な範囲及び「期間」(1年とかいきなりカバーしようと思わず最初は3ヶ月ぐらいから)のデータで出来ることから始める、というような姿勢が必要だということです。
ちなみに完全に手前味噌ですが、YouTube動画でも取り上げられた「機械学習による広告テキスト改善」プロジェクトを始めた時に僕とチーム同僚たちが腐心したことは、「とにかく扱うデータとモデルはコンパクトかつシンプルに」「非専門家でも直感的に分かりやすく」「完全な自動化ではなく人手との協働を」の3点でした。上記の3要素をそこそこカバー出来るように工夫したことで、現在も使っていただけている模様です。
機械学習や統計学を、社会で「役立たせる」
ようやく機械学習や統計学を社会に「馴染ませる」ことに成功したら、いよいよ目指すべきは「役立たせる」即ち実際の社会における「具体的成果」です。Uchiikeさんの資料でも、ここまで漕ぎ着けたというのにこのフェーズでコケるケースが紹介されていて、どこも悩みどころは同じなのだなぁと嘆息させられます。これに関しては僕もまだまだ模索中なのですが、個人的な経験と見聞の範囲で言えば
- 誰でも客観的に評価できて尚且つ受け入れられる「指標」をKPIにする
- 技術的な完成度よりも運用のしやすさを最優先にする
といった感じでしょうか。これはもはや機械学習や統計学がどうこうというデータサイエンスの文脈に限らず、もっと一般的なtech / IT開発の文脈においても全く同じことが言えるかと思います。
1番目は前のセクションでも書いた通りです。誰に見せても「この数字がこのプロジェクトのおかげでこれだけ上がったんだ、すげー」と確実に言わしめられるような指標をKPIにするべきです。なので、全社レベルの売り上げのような「営業が頑張ったからであってお前らのおかげではない」と抗弁されるような指標を選ぶべきではなく、「これはこのプロジェクト以外に明確に貢献する要因がない」という指標を選んだ方が良いでしょう。そしてこれは裏を返すと「その指標の計測手段」もセットで用意しておく必要があるということを意味します。
2番目は平たく書くと「出来る限り枯れた技術」で「多少専門が違う人たちでも労せず管理できる」ということです。必然的に、チューニングの手間がかかるDeepなNN系が活躍できる余地は限られてきます。あまり細かくいじらなくても相応の成果が出せる上にオールインワンのライブラリもドキュメントも豊富なロジスティック回帰とか勾配ブースティング木などの方が、誰でも比較的容易にメンテできて利便性が高いということになりがちなような気もします。
概して、メンテされずにsunsetになってしまう機械学習・統計学ベースのプロジェクトというのは世の中ゴマンとあるというのが個人的な認識で、「最初にコードを書いた人以外が見てもバグが出た時にどこをどう直せば分からない」となると、かなりしんどいです。ただでさえこの業界は人材の流動性が高く、その肝心の最初にコードを書いた人が程なくして転職していなくなってしまうなんてことは珍しくも何ともありません。そんな状況で一度結構大きな不具合が出てしまうと、「どうせ直せないならもう使わない」ということになってしまいがちです。これは後に残された人たちの、機械学習や統計学を用いたプロジェクトへの印象を著しく悪化させることにもつながります。最悪の場合、「うちの会社ではもうデータサイエンス部門のようなものは置かない」ということになり、深刻なリストラに発展することも。。。*3
こういう事態を避けるために、例えばAutoMLのような「最初のセットアップの際にはML designに通じた専門家のサポートが必要だが、メンテ自体は専門知識がなくても出来る」プロダクトやフレームワークを利用する、というのも一手です。
ちなみにさらに手前味噌になりますが、最近公開された事例*4の裏側でもこの辺の課題を意識した取り組みがなされています。実際にはこの事例記事の中でも触れられているように、当該サービスの特殊性を考慮して「機械学習による広告テキスト改善」+「時系列クラスタリングによるコホート設定」+「DID(差分の差分法)×CausalImpactによる因果推論」の組み合わせでアプローチしているのですが、一つ目はYouTube動画になった例のソリューションの使い回しでいわば「枯れた技術」で、二つ目は「定常性」の確保が狙いで、三つ目は「KPIとなる指標*5の計測」のために追加したものです。完全に結果論ではありますが「お客様3社でコンバージョン数が83-196%増加」という数値的な成果も出せたので、なかなかうまくいったのではないかと思っています。
最後に
ということで長々と書いてきましたが、これだけ空前の人工知能ブームに世間が湧き立っている中にあってもこういう課題意識が声高に叫ばれるくらい、今でも「機械学習や統計学のような代物は未だに社会には浸透できていない」ということをデータ分析業界の人たちが自覚することこそが、最も大切なのではないかと思う次第です。
そもそも、一般のソフトウェア開発やシステム開発において「社会実装」という言葉はもはやほとんど使われていません。そんな仰々しい言葉が今でも課題意識を持って使われるということ自体が、機械学習や統計学の社会の中における現在の立ち位置を物語っているのだと理解するべきなのでしょう。機械学習や統計学を社会に浸透させる取り組みは、まだ始まったばかりなのです。