Labsのインド南部バンガロール支社でデータサイエンティストとして働いています。同氏がMediumに投稿した記事「機械学習システムを構築するための6つの重要なステップ」では、機械学習プロジェクトを成功に導くヒントが6つのフェーズごとに解説されています。データサイエンティストとして長いキャリアを有する同氏は機械学習プロジェクトを以下のような6つのフェーズに分け、それぞれのフェーズにおいて取り組むべき課題とその課題に対するアドバイスを説きます。問題の定義:機械学習によって解決すべき問題を定義する。問題の定義とともに、問題解決に成功したと見なせる指標も定義することが重要。データ:時間が経過すると性能が劣化する恐れのあるモデルに対しては、リアルタイムの訓練を検討する。訓練データとテストデータのあいだに著しい特徴の相違がないかどうかも確認すべき。評価:データセットを訓練用とテスト用に分割する。「良い結果」とは何かも定義する。モデルがバイアスを生み出さないように訓練と評価を計画する。特徴量:機械学習モデルの精度を最大化するために特徴量をチューニングする。重複する特徴量がある場合は削除する。モデリング:モデルの出力結果が解釈可能であるべきかどうか確認する。モデルのアーキテクチャを設計し、ハイパーパラメータをチューニングする。実験:できるだけ早くプロトタイプを試作して製品環境に実装して、フィードバックを得る。フィードバックを得るには、A/Bテストの実施がおすすめ。以上のように解説したうえで、同氏は機械学習プロジェクトにおけるどんな決定に対しても批判的であるべきとも述べています。いうのも、一見簡単そうな決定がプロジェクトの成否に深く関わることがあるからです。同氏が本記事で伝えようとしていることは、数学と統計学の知識あるいは機械学習技法を実装するコーディングスキルのような純粋に技術的スキルの習得からは得られない機械学習プロジェクトを成功に導く実践的な知恵と言えるでしょう。以下の前編にあたる記事本文では機械学習プロジェクトにおいて遂行すべきタスクはモデルの構築以外にも数多くあることを指摘してから、「問題の定義」「データ」「評価」フェーズの課題とアドバイスを解説します。Agarwal氏に直接コンタクトをとり、翻訳許可を頂いたうえで翻訳したものです。Pixabay機械学習プロジェクトについて考えるためのフィールドガイド素晴らしい機械学習システムを作ることは、ひとつの芸術である。素晴らしい機械学習システムを構築している最中には、考慮すべきことがたくさんある。われわれデータサイエンティストはプロジェクトの特定の箇所にしか注意を向けないということがしばしば起こる。機械学習システムのモデリングだけに注意を向けるというのがほとんどなのであるが、しかし現実には、機械学習プロジェクトの成否はモデリング以外の数多くの要因に依存している。機械学習パイプラインはモデルの作成より重要である。機械学習プロジェクトにおいてはモデルの訓練前、モデルの訓練後、そしてモデルを製品に実装した後に起こることを理解することが不可欠である。この投稿記事はエンドtoエンドのデータプロジェクトのパイプラインに関係していることを説明するものである。その説明の幾分かは、わたしが自分のキャリアの非常に後になってから学んだことである。これこそがプロジェクトの遂行においてもっとも重要となるパートかも知れない。それでは、どのようにして機械学習の問題を定義するのか?この問題は数多くの要因に依存している。考慮すべきすべての要素のなかでも、最初に考えるべきなのは機械学習プロジェクトがいかにしてビジネスに利益をもたらすのか理解することだ。以上の観点はまさにデータサイエンスプロジェクトの聖杯である。あなたのプロジェクトがビジネスを助けないのなら、それは実装されずに終わるだろう。機械学習プロジェクトを実装するアイデアが浮かび、そのアイデアとビジネスとの適合性を決定したら、プロジェクト成功の指標を定義しなければならない。それでは、どんな指標が成功したと見なされるのか?その指標は90%の精度かも知れないし、95%、あるいは99%かも知れない。わたしは幸いにも70%の予測精度を成功指標としたことがある。いうのも、そのプロジェクトにおいてヒトの予測はこの成功指標を超えることが決してなかったので、予測プロセスを自動化するに至ったのだ。留意すべきなのは成功指標として高尚な目標を設定すべきではない、ということだ。精度が1%上がる度に成功にどんな影響を与えるのか、論理的あるいは感情的観点から考慮すべきなのである。クリック詐欺を予測するアプリにおいて予測精度が1%向上することは、レビューのセンチメント予測において精度が1%向上するよりもビジネスのボトムライン(※註1)を引き上げる。すべての予測精度向上が等価なのではない。(※註1)ボトムラインとは、損益計算書のもっとも下に書かれる項目である「税引き後純利益」のこと。本記事の文脈では、「利益が上がる」程度の意味で使われている。・・・2.データあなたの機械学習モデルのためにデータを獲得したり作り出す時に、答えなければならないいくつかの疑問がある。答えるべきもっとも重要な疑問は、次のようなことである。あなたの機械学習モデルはリアルタイムで動作する必要があるのか?もしリアルタイムで動作しなければならないケースであるならば、データストレージにHiveあるいはHadoopのようなシステムを使うことができない。したシステムはレイテンシー(処理遅延)をもたらすものなので、オフラインのバッチ処理に適しているからだ。あなたのモデルはリアルタイムの訓練が必要なのか?(※訳註)上記グラフは横軸に時間、縦軸に予測精度が設定されている。右肩下がりという特徴は、時間の経過とともに予測精度が低下していることを示している。上図のようにあなたの機械学習モデルのパフォーマンスが時間の経過とともに低下するならば、リアルタイムの訓練を検討しようと思うかも知れない。リアルタイムの訓練はほとんどのクリックを予測するシステムに関して望ましい。いうのも、インターネットのトレンドは比較的早く変わってしまうからだ。モデルのテストデータと訓練データのあいだで矛盾はないか?以上の疑問は、次のように簡単に言うことができる。機械学習モデル製品が扱うデータは、そのデータとは特徴分布が異なる訓練データに由来していないか?以上について事例を挙げて説明すると、次のようになる。クリックを予測する問題についてリアルタイムに訓練する時、ユーザに広告を見せてすぐにはクリックしなかったという状況があったとする。この状況はクリックする予測が外れたサンプルケースなのか?典型的なユーザは広告を見てから10分後にクリックするかも知れない。あなたはすでに広告を見てすぐにクリックするというケースに関するデータを作り、そのデータを使ってモデルを訓練してしまっている。あなたのモデルのためにデータを準備するに際しては、非常に多くのことを考慮しなければならない。モデルのそれぞれの処理段階で成功を収めるためには、疑問について答えを出して処理の隅々まで考慮しなければならない。・・・3.評価われわれはどのようにして自分たちのモデルのパフォーマンスを評価するのだろうか。モデルの評価に関するゴールドスタンダードとは、データを訓練用とテスト用に分割して検証することだ(※註2)。データをサンプリングすることによって訓練データとテストデータを分けたデータセットを作ることにおいてしばしば起こるのが、次のような暗黙の想定を忘れてしまうことだ。その想定とは訓練データとテストデータが相互に独立しながら、同一の特徴分布を持っていることなどまれである、ということだ。以上のことを簡単な用語で言えば、それぞれのデータポイントが相互に独立しながら同じ特徴分布に由来しているという想定は、全くの間違いではないものも完全に正しいわけでもない。以上のことをインターネット企業に関して言えば、2007年からサンプリングしたデータポイントは2019年に由来するそれとは非常に異なっている。このふたつのデータは同じ特徴分布に由来していない。いうのも、インターネットに関するデータの特徴を決める要因は数多くあるのだが、その要因のうち通信スピードが主要なものであるからだ。イヌとネコを識別する問題に関わっているならば、ランダムに画像データをサンプリングしても十分良い結果が得られる。機械学習モデルのほとんどにおけるタスクは未来を予測することだ。あなたのデータを訓練用とテスト用に分割することを考えた時、データをランダムにサンプリングするよりは時間的変数を使ってそうするだろう。クリックを予測する問題では過去のデータのうち先月までのデータを訓練用にして、先月のそれを検証用にすることができる(※註3)。(※註2)「データを訓練用とテスト用に分割して検証する」方法は、交差検証と呼ばれる。データセットの分割を1回だけ行う場合は、ホールドアウト検証と言う。ホールドアウト検証においてデータ数が少なかったり著しく特徴が異なるデータが混在している場合には、訓練データから算出した予測精度とテストデータから算出したそれが大きく乖離することがあるという欠点がある。(※註3)時系列データの予測モデルを評価する場合、各時系列データの特徴がほぼ同一ならば、任意の時間点でデータセットを分割するホールドアウト検証を行っても問題ない。本記事で指摘されているように評価する時系列データの特徴が一様ではない場合、訓練データとテストデータで予測精度が大きく乖離してしまう可能性がある。データの特徴が一様ではないデータセットを用いて評価する場合に有効な方法が、k-分割交差検証である。この評価方法ではテストデータの分割を複数回繰り返して訓練と評価を繰り返すことで、データセットの偏りに起因する予測精度の乖離を緩和する。1.データの扱いより画像を引用あなたが次に考えなければならないことは、ベースラインとなるモデルだ。時系列データを扱うモデルの評価指標として、RMSE(※註4)を使うことについて考えてみよう。われわれはテストセットを用いてモデルを評価し、RMSEとして4.8を得たとする。4.8というのは良いRMSEなのか?良いということをどうやって知るのか?良いと判断するには、ベースラインとなるRMSEが必要となる。それは、評価したいモデルと同一のタスクを実行している現在使っているモデルから得ることができる。サンプルとなるモデルを使っても得られる。時系列モデルの場合は、上回るべきベースラインは昨日の予測精度になる。昨日の何らかの数値に関する予測精度となる。wordsを算出する)Countvectorizerから得られたロジスティック回帰モデルの(分類精度、F1スコア、loglossのような)評価指標値をベースラインとして設定している(※註5)。RMSEの値が小さいほど誤差が少ないことを意味する。RMSEは以下のような手順で算出される。各データの実績値に対する予測値の誤差を計算し二乗する。二乗した誤差を合計する。二乗誤差の合計値をデータ件数で割って二乗誤差の平均値を算出する。二乗誤差の平均値の平方根を算出する。Error)があり、この手法では誤差を二乗しないで誤差平均の平方根を算出する。RMSEは算出過程で誤差を二乗するので、MAEより誤差を大きく評価できる。(※註5)CountvectorizerとはPythonの機械学習ライブラリscikit-learnに含まれている機能のひとつで、テキストデータを構成する単語の出現頻度を抽出するのに使われる。Wordsとは、単語の出現頻度にもとづいて文章の特徴をベクトル化したものである。F1スコアとは予測精度を評価する指標で、単にF値と呼ばれることが多い。F値は予測値と実際の値の関係をまとめた混合行列から計算することができる。Lossの略称で、分類モデルの性能を測る指標。0~1の確率値をとる。分類が完全に正しい場合は0となり、分類をすべて間違うと1となる。あなたのモデルが不要なバイアスを生まないように複数のグループを対象として評価を分割する方法についても考えなければならない。昨年、秘密裏に開発していた採用AIツールが女性に対する偏見を示していたというAmazonに関するニュース(※註6)があった。機械学習モデルをこうした矛盾から救うためには、複数のグループに関してモデルを評価する必要がある。したら女性に関係した訓練データが男性のそれより少ないために、女性に関する予測精度が男性のそれより不正確かも知れないのだ。ある製品が購入されるか、もしくは見向きもされないかを予測するモデルが特定の製品カテゴリーでは十分に機能するが、ほかの製品カテゴリーではそうならないということもあり得る。以上のような評価にまつわる諸問題について前もって留意したうえで、特定の評価アプローチでうまく行かない時に注意深く考えれば、良い機械学習モデルを設計する助けとなるのだ。(※註6)女性の教育に注力していることで有名で卒業生にヒラリー・クリントン氏がいるアメリカのウェルズリー大学が運営しているブログ記事「AIは性差別主義者なのか」によると、Amazonの開発していた採用AIには女性を採用候補者として選ばない傾向があることがわかった。した傾向が生じたことに関して、同記事はふたつの原因を指摘している。ひとつめはAmazonが採用したい人材は理工系の人材なのだが、女性の学生は人文科学を専攻している割合が高いので女性を選ぶ確率が下がってしまったと考えられる。ふたつめはコンピュータサイエンス学科を卒業している女性が少ないために、やはり女性を選ぶ確率が下がったと推測される。Amazonの採用AIは、「優れたエンジニアになるかも知れない女性」を見落としてしまうという重大な欠陥がある。この欠陥は、AIの学習が失敗したというよりは「エンジニアには男性が多い」という社会的な偏りをAIが増幅してしまった事例と言える。Labsのインド南部バンガロール支社でデータサイエンティストとして働いています。海外トレンドこの記事が気に入ったらいいねしよう!最新記事をお届けします。週1回、注目のAIニュースやイベント情報を編集部がピックアップしてお届けしています。こちらの規約にご同意のうえチェックしてください。実践編』が発売開始RECOMMENDこちらの記事も人気です。AI.Accelerator2018.3.9AI/SaaS特化型ミニ商談会「ゲツイチ」開催!AINOW編集部2017.9.30AIAI言う前に基本を見直そう。