Labsのインド南部バンガロール支社でデータサイエンティストとして働いています。Labsのインド南部バンガロール支社でデータサイエンティストとして働いています。同氏がMediumに投稿した記事「機械学習システムを構築するための6つの重要なステップ」では、機械学習プロジェクトを成功に導くヒントが6つのフェーズごとに解説されています。データサイエンティストとして長いキャリアを有する同氏は機械学習プロジェクトを以下のような6つのフェーズに分け、それぞれのフェーズにおいて取り組むべき課題とその課題に対するアドバイスを説きます。問題の定義:機械学習によって解決すべき問題を定義する。問題の定義とともに、問題解決に成功したと見なせる指標も定義することが重要。データ:時間が経過すると性能が劣化する恐れのあるモデルに対しては、リアルタイムの訓練を検討する。訓練データとテストデータのあいだに著しい特徴の相違がないかどうかも確認すべき。評価:データセットを訓練用とテスト用に分割する。「良い結果」とは何かも定義する。モデルがバイアスを生み出さないように訓練と評価を計画する。特徴量:機械学習モデルの精度を最大化するために特徴量をチューニングする。重複する特徴量がある場合は削除する。モデリング:モデルの出力結果が解釈可能であるべきかどうか確認する。モデルのアーキテクチャを設計し、ハイパーパラメータをチューニングする。実験:できるだけ早くプロトタイプを試作して製品環境に実装して、フィードバックを得る。フィードバックを得るには、A/Bテストの実施がおすすめ。以上のように解説したうえで、同氏は機械学習プロジェクトにおけるどんな決定に対しても批判的であるべきとも述べています。いうのも、一見簡単そうな決定がプロジェクトの成否に深く関わることがあるからです。同氏が本記事で伝えようとしていることは、数学と統計学の知識あるいは機械学習技法を実装するコーディングスキルのような純粋に技術的スキルの習得からは得られない機械学習プロジェクトを成功に導く実践的な知恵と言えるでしょう。以下の後編にあたる記事本文では、「特徴量」「モデリング」「実験」フェーズの課題とアドバイスを述べてから、機械学習プロジェクトに取り組む際の心構えを説きます。Agarwal氏に直接コンタクトをとり、翻訳許可を頂いたうえで翻訳したものです。結論4.特徴量よい特徴量は、あらゆる機械学習モデルの背骨となるものである。開発者がもっとも多くの時間を費やす箇所でもある。特徴量こそモデルのパフォーマンスを最大化するためにチューニングできる箇所であることをわたしは見てきた。よい特徴量の生成は、しばしばドメイン知識、クリエイティビティ、そして多大な時間を必要とする。加えて、特徴量を生成する試みはモデルごとに異なっているかも知れない。ニューラルネットワークとXGboostでは特徴量の生成は非常に異なっている。様々な機械学習モデルにおける特徴量の生成を理解することは、それ自体非常に大きなトピックである。わたしは以下のような記事で特徴量の生成について書いた。techniques多くの特徴量を生成したら、次にやりたいであろうことは重複する特徴量を削除することだ。した特徴量の削除には、以下の記事に書いたようにいくつかの方法がある。Book(※訳註)棒で描かれた女性は「なぜこのデータポイントを42と予測したの?」とAIに質問しているのだが、AIは気まずく沈黙している。われわれがもっとも注意を払う傾向にあるパートに来た。それにしても、なぜモデリングに大きな注意が払われるのか。その理由は、モデリング部分こそプロジェクトの最後にわれわれが製品として提供するものだからだ。この部分のためにこそデータの獲得とクリーニング、機能の作成とその他の仕事を実行するのに必要な時間を費やしてきたのだ。それではモデルを作るにあたり、考えるべきこととは何か。あなたが自問しなければならない最初の質問は、あなたのモデルは解釈可能である必要があるのか、ということである。モデルが解釈可能であることが求められるビジネスにおけるユースケースはたくさんある。したひとつとして、何らかの属性が関係するモデルを使いたい時がある。収益における(テレビ、ラジオ、新聞等の)様々な広告媒体ごとの効果を明らかにする、というものがある。このケースにおいては、各広告媒体からの反応を理解することは必要不可欠となる。(モデルの解釈可能性は求められてなくて)もしモデルの精度やその他の指標を最大化する必要があるならば、ニューラルネットワークやXGBoostのようなブラックボックスモデルを依然として選ぼうとするだろう。モデルの選択以外にも、留意すべきことは他にもある。モデルアーキテクチャ:ニューラルネットワーク層はいくつにするか、GBDT(※註1)における木の数をいくつにするか、あるいは線形モデルのために機能との相互作用性を作る必要があるのか。ハイパーパラメータはどのようにチューニングするのか?:この作業については自動化を試してみるべきである。市場にはこの作業を実行するツールが数多く存在している。わたしはhyperopt(※註2)を使う傾向がある。Treeの略称で、決定木と勾配ブースティングを組み合わせた技法のこと。決定木を用いる技法なので、実装するエンジニアが決定木の数を決定する必要がある。(※註2)hyperoptとはPythonのフレームワークのひとつで、ハイパーパラメータをチューニングするのに用いる。機械学習プロジェクトのコンペティションが行われているコミュニティサイトKaggleで多用されている。・・・6.実験ついにモデルを作った。それはベースラインのモデルあるいは現行のそれより良いパフォーマンスを示している。それでは、さらに何をすべきか。われわれにはふたつの選択肢がある。モデルを改善し続ける無限ループに突入する。製品設定の環境でモデルをテストとして、うまく行かないことについてさらに観察し、継続的インテグレーションを用いてモデルの改善を続ける。わたしは後者のアプローチのファンである。Ng氏はCourseraのディープラーニング専門講座における「機械学習プロジェクトを構成する」と名付けられた素晴らしい第3講座において、以下のように述べている。完全なシステムを設計し構築しようと試みることからスタートしてはならない。したベーシックシステムは数日以内に作れるだろう。それが構築可能な「ベストな」システムとは程遠いものであっても、どのように機能するかを調査できるという点で価値がある:ベーシックシステムを調べれば、時間をかけるべきもっとも有望な指針をわからせるカギを見つけられるだろう。ベーシックモデルの構築とともにわたしが強調したいことは継続的インテグレーションである。開発した現行モデルが過去のそれよりよく動作するならば、過去のモデルを稼働させ続けてさらに利益を得るよりも現行モデルを製品に実装すべきではないだろうか。開発したモデルが過去のそれより優れているという想定の妥当性をテストするためには、A/Bテストを実施することができる。このテストにおいては(テストグループに属する)何人かのユーザは開発したモデルを使う一方で、ほかの何人かのユーザは過去のモデルを使ってそれぞれのモデルの予測精度を調べるのだ。開発したモデルに関する最初のオンライン実験に要する時間はいつも最小限にすべきである。おいて単純なことなどない。何事も当然視すべきではない。機械学習のパイプラインを構築している最中には、あなたが下したどんな決定に対しても批判的であり続けるべきである。簡単そうな決定が機械学習プロジェクトの成否を分ける違いをもたらすこともあるのだ。それゆえ、賢く、そしてたくさん考えるのだ。・・・この投稿記事は機械学習のエコシステムに関して深まってきているわたしの理解の一部であり、Facebookの技術チームが公開している素晴らしいビデオシリーズにインスパイアされたものでもある。Ng氏の素晴らしい第3講座をぜひおすすめしたい。この講座をぜひチェックしよう。記事を読んでくれてありがとう。わたしは将来的にはより機械学習の初心者向けの記事を執筆するつもりです。した記事について知らせてもらいたい時はわたしのMediumをフォローするか、わたしのブログを定期購読してください。わたしはいつでも記事のフィードバックと建設的批判を歓迎しており、Twitterアカウント@mlwhizからコンタクトできます。海外トレンドこの記事が気に入ったらいいねしよう!最新記事をお届けします。週1回、注目のAIニュースやイベント情報を編集部がピックアップしてお届けしています。こちらの規約にご同意のうえチェックしてください。聞けない「チャットボット」とは?先週のAI関連人気ツイートTOP20!【2019/10/28更新】RECOMMENDこちらの記事も人気です。