AI・機械学習を中心に

AI/機械学習/データ分析/子育て/日々の雑感

[翻訳]AIを始めるならまずここから

原文

Cassie Kozyrkov氏の記事より(2018/10/19)

medium.com

イントロ

AI適用プロジェクトの多くのチームが、望ましい出力と目的を明確にする前に、アルゴリズムとデータに手を付け始めてしまいます。残念ながら、それはニューヨーク市のアパートで数年子犬を飼育してから、羊を飼うことができないことに驚いているようなものです。

最初のあなたの努力無しに、魔法使いにあなたのビジネスに機械学習の魔法を振りかけるようにお願いするだけで何か有用なものが得られることを期待してはいけません。

そうではなく、最初のステップは所有者(つまりあなた!)のためのもので、あなたが犬(または機械学習/AIシステム)から何を求めているか、そして犬をうまくトレーニングしたことをどのように知るかについて明確なビジョンを形成することです。

私の過去の記事で”なぜ”について議論をしていますので、ここでは機械学習/AIの最初のステップにおける”方法”について、やっかいな小さなサブステップも含めて記していきます。

以下が目次です。

  1. 誰が責任者かを明らかにする
  2. ユースケースを特定する
  3. 現実の確認を実行する
  4. 賢明に性能指標をつくり上げる
  5. 人間によるバイアスに打ち勝つためのテスト基準を設定する

以下が以降で登場するキャストです。

  • 意思決定者
  • 倫理専門家
  • 機械学習/AIエンジニア
  • アナリスト
  • 定性専門家
  • 経済学者
  • 心理学者
  • 信頼性エンジニア
  • AI研究者
  • ドメイン専門家
  • UXスペシャリスト
  • 統計専門家
  • AI制御理論専門家

1. 誰が責任者かを明らかにする

私たちが取り組もうとしているタスクは、プロジェクトに責任を持っている人間の責任のものなされます。それがプロジェクトの決定権を有する人物です。もしPhDの研究者がこの役割を担っていたとすれば、それはその人の意思決定スキルとビジネスに対する深い理解があるからです。もし誰かをその役職において、後でその人に対しとやかく周囲から言われるようならば、それは間違った人を選んだのでしょう。意思決定者(それは一人の人物の時もあればコミッティーの場合もある)という役割の人に期待されているのは、最終決定を下すことです。あなたの慈悲深い独裁者を賢く選出してください。

もし意思決定者が意思決定のアートとサイエンスに精通していない場合、定性専門家とペアにしてください。しかしその人がビジネスを理解していない場合、そのプロジェクトを降りるのが賢明でしょう。

2. ユースケースを特定する

アウトプットにフォーカスする

重要なことは機械学習やAIは魔法ではなく、すべての問題を解決できるわけではないということです。機械学習/AIは”ラベラー(ラベル付けをするもの)”であり、何にラベル付けをするかをあなたが考え出さなければなりません。

ラベル付けは何も分類問題(写真は猫か否か?のような)だけに限りません。ここでは「アウトプット」のことを「ラベル」と表現しています。それはカテゴリ、数値、文章、波形、グループID、単体の行動、ジョイスティックの動作、行動の文章、異常か否かのY/N、、、、いろんなものの可能性があります。

ML/AIシステムが稼働していると想像して、会社のリソースを使ってシステムを構築してシステムを構築して満足しているかどうか自問してみてください。いいえ?ブレインストーミングを続けてください。PhD保持者何人かが命を無駄にする前に、あなたのアプリケーションが必要ないということを発見する方がいいでしょう。

選択肢が多いのでこの作業は難しいでしょう。快適なソファに腰を下ろして熟考してください。ブレインストーミングの助けが必要なら、私のdrunk island exerciseを実施してみてください。

今はインプットの時間ではありません

意思決定者の中で、データに精通している人もいるでしょう。そういう人はインプットとアウトプットの両方を一度に議論し、、その違いも理解しているでしょう。私のアドバイスは「誘惑に打ち勝て」です。インプットについて今議論しないでください。あなたはそれができるかもしれませんが、いくつもある中で2つの理由を紹介します。

理由1:機会損失

この理由は主要な方です。ステークホルダーの何人かはあなたほどデータに精通しておらず、すぐに混乱してしまうことがあります。初めのうちは、あなたはリソースを節約したい、システムを保有するに値する理由を誤解してほしくないという想いから、アイディアをたくさん投げるかもしれません。彼らを混乱させないでください。今に集中して、それをどのように作るかではなく、それが何を作るかを彼らに伝えてください。

「それは目的なのかそれとも手段なのか」と自問してください。もしそれが手段であるならば、今はそれについて話さないでください。

 

理由2:暗黙の合意

長い間エンジニアの囲まれていたエンジニアとして、私は私たちのような人が細部にとらわれるのが大好きなんだということに気が付きました。大きな絵空事なんてくそくらえ、特に誰かが間違えている時に、物事の核心を軽視するのはとても楽しいのです。私たちは技術的な正しさが大好きです。

ここに悲喜劇があります。もしあなたが6時間もの間あなたの同僚と、変数xが目的変数yに対してよい変数かどうかについて議論しているならば、あなたは、つまり、目的変数yは追求する価値があるという意見を標準化したことになります。そもそも目的変数yに取り組むこと自体を疑問視することをやめてしまうので、構築する必要のないものを構築してしまうことになります。

ML/AIは多数の事柄に対してです

ワインボトルにY/Nをラベリングすることを自動化することに取り組もうとしているということを考えてみてください。あなたはたった1つや2つのワインボトルにラベル付けしたいわけではないということに注意して下さい。機械学習やAIはたくさんの繰り返しの意思決定を自動化することに意味があります。それは1回限りのものに対してではありません。

機械学習は1回限りのものに対してのものではありません。なので、あなたのビジネスが相当量の数のモノに対するラベリングをしているかどうかを確認してください。

あなたは少なくとも数千以上のものに対するラベル付けをイメージしていますか?そしてそれが実際の利用場面で、あなたはそれを予測する代わりにただ答えを調べることはできないということを確信していますか。OKなら、次に進みましょう。

まずペンをもってあなたが受け取るラベルをまず書き出してみましょう。(この例のY/Nは簡単に書き出すことができますが、よりクリエイティビティを発揮してエキゾチックなものを選択することもできます。)あなたが適切な答えが何かを知りたいものをかき出してください。ラベリングの誤りがどのようになるかを書き出してください。機械学習の間違いを予想してください!もしあなたが完璧さを期待しているならば、失望があなたの心を押しつぶしてしまう前に静かに立ち去ってください。

あなたは機械学習の準備ができていないかも

まだ、ユースケースを見つけ出すのに苦労していますか?しばらくの間、アナリティクスを優先して機械学習/AIの検討を一時停止してください。アナリティクスの目的は意思決定者のインスピレーションを引き出すことです。一度インスピレーションを受けたら再度機械学習/AIに戻ってきて始めればいいのです。機械学習/AIのプロジェクトのゴールはすべてラベリングを自動化することであるのに対し、アナリティクス(データマイニングとも言う)は全てのプロジェクトにおいてよいアイディアです。根底にある数学はほぼ同じであるのに、プロセスは全く異なります。データマイニングは発見のスピードを最速化することが全てであり、かたや機械学習/AIは自動化の性能が全てです。データマイニングでは、あなたのチームはたった一つのミスにしかなりませんが、ML/AIではたくさんの失敗のリストが存在します。あなたの悩みにあったユースケースがある場合のみ、機械学習/AIにサインアップしてください。

それは誰のためのもの?ユーザーのことを考えよう

あなたの眩いばかりの発明は誰のためのもの?誰が恩恵を受けるの?UXスペシャリストに相談して、あなたの対象ユーザーを設定する良い機会です。

新しいテクノロジーはしばしば”What”から始まります。しかし、”How”に進む前に”Who”をカバーしておくことは重要です。

UXデザイナーと過ごす時間で学んだことは、ユーザーが誰であるかについての私の反射的な説明は、通常非常に単純で深堀が足りないということです。間接的な受益者、全体としての社会、他のビジネス、その出力を入力とする他のシステム、デバッグ作業に当たるエンジニア等にとってのユーザビリティについて考えましたか?見苦しいUXデザインとなることを避けるために、先に進む前に時間をかけて可能性のあるすべてのユーザーカテゴリについて考えてみてください。ユーザーは顧客やエンドユーザーだけではありません。

それは倫理的に問題ないですか

もしあなたのアイディアが全ての人に一律に有益でないとしたらどうしますか?理想的なユースケースを計画する際には、あなたのシステムの存在により害を受ける可能性がある人を考慮してください。あなたの事業の競合他社のことを言っているわけではありません。あなたのアプリケーションによって害を受ける人間はいませんか?このことは、そのテクノロジーが数百から数億に拡大する場合には特に重要です。

あなたのシステムの想像により影響を受ける人のことを考えてください!だれが利益を得て、だれが危害を受ける可能性がありますか?

もし倫理専門家がいればこの段階で加わってもらうと役に立つでしょう。

3. 現実のチェックを実行する

あなたが求めているラベルが明確に表現できたらば、素早く現実をチェックします。つまり、このビジネス上の問題に関するデータを保有していますか?

もしデータがなければそれ以上進むことはできません。もしかするとオンラインでデータを取得できるかもしれません。無料でデータを利用可能にする流れが存在します。例えばコレ

しかしそれでも関連性がなければなりません。明らかに無関係なデータは無意味です。あなたは現段階でそれを分析する必要はありあせんが、のちに分析をするためのデータが実際にあるかどうかはチェックしなければなりません。

関連するデータにアクセスできない、またはそれを処理するためのコンピュータがない?それでは何もできません。

現実のチェックリスト

  • 適切なタスク:たくさんの意思決定/ラベリングを自動化しようとしていますか?それは完璧な答えを毎回見つけることができないものですか?
  • 現実的な期待:そのシステムは優秀でも完璧ではないことを理解していますか?偶発的な間違いがあっても利用できますか?
  • 稼働可能性:あなたはそれらを本番環境で提供することができますか?あなたが予測しているスケールで実行するためのエンジニアリングリソースを集めることができますか?エンジニアと一緒になった後でより詳細にこの質問について調べることになるので、この段階では問題がないことのざっくりとした確認で十分です。
  • 学習データ:有用であることが期待できる入力データが存在しますか?それにアクセスできますか?
  • 十分な学習データセット:統計専門家や機械学習エンジニアの仲間とコーヒーを飲んでいるときに、利用できるデータセット数について何気なく話してみてください。彼らの眉間にしわが寄っていませんか?
  • 計算機:データセットサイズを処理するのに十分な処理能力を持った計算機にアクセスできますか?
  • チーム:必要なスキルを持ったチームを編成できると確信していますか?
  • 正解、教師データ(Ground Truth):(教師無し学習を行わない限り、)出力(正解)を取得できますか?ない場合、正解を作るために人員を割くことができますか?
  • 健全な記録:どの入力がどの出力に結び付くか判断することは可能ですか?
  • 記録の品質:データは信じられるほど正確ですか?

チームを集める

チェックリストをクリックしたら、次は人員を集めてチームを作っていきます。これに関しては、こちらの記事を参照。

4. 賢明にパフォーマンスメトリックをつくり上げる

トレードオフを把握する

あなたはoutcomeがどれだけの価値があるかを決める責任があります。Yを取得したまずいワインボトルは、私たちが機械を失ったおいしいワインボトルの2倍悪いですか?それとも3.48倍?それはあなた次第です。

苦戦していますか?数字が好きな人を巻き込んでブレインストーミングを手伝ってもらいましょう。定性専門家(Qualitative experts)はこのことに対し特別にトレーニングされています。最良の助っ人が必要な場合には、正式なジャーゴン無差別曲線を導き出したい)を五芒星で発生して、経済学者を召喚します。

経済学者はAIプロジェクトにおいて驚くほど便利な助っ人になります。

これで、一つの出力でさまざまな結果をトレードオフする方法を見つけ出しましたので、次は一度に数千の出力をスコアリングする方法を考えましょう。ここでは意思決定者がボスなので、正しいスコアリングの方法はあなたのビジネスにおいて何が正しいかによって異なります。

(任意)エキスパートモード:シミュレーション

トリッキーで複雑なプロジェクトはシミュレーションから多大なる恩恵を受けます。ここでフェイクの、しかしもっともらしいデータを生成するのに長けたアナリストが、選択の期待される結果を確認するのに役立ちます。

シミュレーションはドレスリハーサル(本番同様に衣装を着けて行うリハーサル)です。実際にプロジェクトをスタートさせる前に、多くのよじれをただすのに役立ちます。アナリティクスのように熟考してすべての事柄について考えることは、意思決定者の任務のいくらかの負担を取り除きます。

あなたのパフォーマンスメトリックを作る

パフォーマンスメトリックを作成するには様々な方法があります。ワインの例では、とても単純なものを選べます。それはaccuracy正解率、通称”間違えるな”)です。全ての間違いは等しく悪く(0)、すべての正解は等しく良い(1)とし、平均を取ります。

もしあなたがよいワインの取りこぼしを非常に恐れていて、ハズレが含まれることは問題ないのであれば、異なるパフォーマンスメトリックであるrecall再現率)を使用します。またはあなたはお金を無駄にしたくない、予算が厳しい時など。システムがおいしいと言っていたら、絶対においしくあって欲しい、けれどおいしいボトルを見逃してしまうことはOKな時、precision適合率)というパフォーマンスメトリックを選択します。ここでは、あなたのビジネスに対して適切なことを反映するパフォーマンスメトリックを作りましょう。

専門家によるレビューを求める

人間の幸福が実質的に懸かっているようなアプリケーションでは、専門家のパネルと相談して、何らかのひねくれた有害な方法でメトリックが高得点を獲得できないことを確認してください。

何の専門家?意思決定者、倫理専門家、AI制御理論専門家、統計専門家、UX研究者、行動経済学者、ドメインエキスパート、信頼性エンジニア等。

確かに悪意がないビジネスアプリケーションにおいてはやりすぎになる可能性があるため、定性専門家などがこの内容をカバーできる可能性があります。

ハロー!ビジネスパフォーマンスメトリック!

これでビジネスのパフォーマンスを測るメトリックの完成です!

これは後に触れる損失関数と同じものではありません。メトリックに関しては、可能性は無限大であり、実際に何が重要かを判断するのは意思決定者の責任です。

[専門用語注意!]AI専門家が知っておくべきこと

損失関数とパフォーマンスメトリック、2つの指標が存在しているということが分かるでしょう。

損失関数は最適化のためのものであり、テストのためのものではありません。

統計的検定では「この仕組みは構築/ローンチに値する程度に性能を発揮するか」と問いかける必要があります。性能を発揮するとは、ビジネス上の課題とビジネスオーナーによって定義されるべきです。凸型最適化に合うようにビジネスの問題定義を変更するようなことはしてはなりません。便宜的にはリーダーが生み出した関数と同じ方向に移動する標準的な損失関数を使用して自由に最適化することはできます(分析的に、またはシミュレーションで相関係数チェックを実行※1)。しかし、彼らの関数(パフォーマンスメトリック)をテストしてください※2。一般的な誤りは、ソフトウェアの欠陥、大学のコースの形式、意思決定者のAIに関する

 

※1 標準的な損失関数がパフォーマンスメトリックとうまく相関しない場合、意思決定者にアラートを上げ、要求事項は非常に難しく最適化の研究者を雇う必要があるかもしれないことを伝えた方がよいでしょう。

※2 異議を唱えるAIエキスパートはこれを読んでください。

5. 人間によるバイアスに打ち勝つためのテスト基準を設定する

関心のある母集団を定義する

システムが”稼働している”ということは、あなたが稼働することを意図しているインスタンス(≒データポイント、観測値、例)を指定するまでということを意味しています。全てのUSの夏の入力か、グローバルの入力か、これらによって異なります!

次に進む前に、あなたは関心のある統計的な母集団を定義する必要があるでしょう。それは、システムが優れたパフォーマンスを発揮する必要があるインスタンスの集合です。二部構成のガイドを用意してあります。

プロジェクトを潰すことをコミットする!

これであなたはパフォーマンスメトリックと母集団を手にしました。もう一つやるべきことがあります。ここまで来るのに何カ月もかかることがあります。

最後のタスクは、「サインオフ(承認)しようと考える最小のパフォーマンスを決定する」です。つまり、あなたに、このシステムが十分に良くない限り、このシステムにラベリング(AIにさせようとしている作業)をさせないということを約束させようとしています。

十分に良いとはどういうことでしょう。それはあなた次第です。しかし、今すぐにコミットしなければなりません。

テスト基準の設定は、あなた(や私)が恐ろしい機械学習やAIから身を守るための方法です。

この基準は目標とする星ではありません。チームに対して伝える到達目標とするパフォーマンスレベルを別に設定しても構いません。しかしそれはあなたがテストする基準ではありません。単純に最低ラインに対してテストを行います。

私たちはバイアスを持つ生き物

なぜプロジェクトチームの編成をする前に、この基準を考えているのでしょう。なぜなら、人間として私たちは多少の愛すべき認知バイアスに晒されてしまうということが分かっています。人間が何かに時間と労力を費やすとき、私たちは自分たちが作ったものが好きになってしまいます、たとえそれが有毒なゴミの山だったとしても。その時私たちは自分と次のように交渉していることに気づくでしょう。

「うーん、けれどパフォーマンスはそれほど悪くはない。私は12%の精度に一定の誇りを持っています。いずれにしてもシステムをローンチできるんじゃないですか?テスト基準を10%ということにしてはどうですか?ほら、クリアするでしょう?それは統計的に十分良いということになります。」

 こちらに悲しいトピックがあります。

私たちがまだ冷静である間に、そしてまだ多くのリソースを注ぐ前に、冷静にビジネスの問題を見つめ、「この最小要件を満たさない場合、私はそれを殺すことを約束します」と言わなくてはなりません。

人間より良い?

人間より良い?無意味な言葉です。

機械が私たちよりも優れているかどうかについて、あまり気にしないでください。コンピュータはいつも私より優れています、乗算の計算において。私のバケツは私より水を保持するのに優れています。労力を削減したり、達成できることを増やしたりすること以外に、道具に求めるポイントはなんでしょうか。

そうではなくて、それが役立つのに十分かどうかに照準を合わせましょう。

あまり求めすぎないこと

常に人間よりも優れたパフォーマンスを要求すると、利益を逃してしまう可能性があります。それはレンガを敷くためだけにオリンピックの金メダリストを雇うといっているのと少し似ています。もちろん、オリンピック選手はそこらの平均的な人よりも強いですが、そのような厳格な採用基準を持っていると、労働者が全くいないということになる可能性があります。

ビジネス上意味がある範囲で基準を下げてください。

過剰に高い採用条件を設定することで有益な解決策を逃さないでください。

自動化により、時に手作りの商品のユニット当たりの品質が低下する場合があります。しかし、マシンの規模と速度はビジネスにとって価値があります。それはあなたのビジネスにとって価値がありますか?

 

以上が機械学習/AIのステップ1です。ステップ2はデータやハードウェア、エンジニアが加わります。