機械学習プロジェクトの進め方：『Machine Learning Yearning』33-35章（Comparing to human-level performance ）

現在、AIや機械学習界隈で最も有名なスタンフォード大学のAndrew Ng教授が、「Machine Learning Yearning」というオンライン書籍を執筆中です。2018年4-6月に、そのドラフト版（1-39章）がオンラインで公開中です。この投稿では、いち早く翻訳を進めています。

http://www.mlyearning.org/
![図1.png](https://qiita-image-store.s3.amazonaws.com/0/188414/741778bb-9523-9feb-736b-6bd5aedc42e6.png)

この本は、機械学習プロジェクトの構築方法を提供します。また、機械学習アルゴリズムを教えるのではなく、機械学習アルゴリズムが機能する方法に焦点を当てています。

本投稿は、**33-35章(Comparing to human-level performance)**の翻訳になります。少しづつ翻訳していきます。※翻訳違っていたらご指摘ください。
本書籍は、とても読みやすく、かつ各章短めに記載されています。

##### **1～32章までの翻訳**
https://qiita.com/Ishio

##**33.  Why we compare to human-level performance(なぜ人間レベルのパフォーマンスと比較するのか)**
多くの機械学習のシステムは人間がうまくこなすことを対象に、自動化することを目的としています。例としては、画像認識、音声認識、Eメールのスパム分類等があります。学習アルゴリズムもまた非常に改善しており、人間レベルのパフォーマンスをますます上回っています。さらに、もし人間がうまくこなすようなタスクであるならば、機械学習システムを構築する方が簡単な理由がいくつかあります。

1. **ラベル付け担当者から、データを入手することが容易**：例えば、人間は猫の画像がうまく認識できるので、学習アルゴリズムに高精度のラベルを与えることは容易です。

2. **エラー分析を人間の直感で描くが可能**：音声認識のアルゴリズムが人間レベルのパフォーマンスより劣っているとします。誤って、「This recipe calls for a ​pear​ of apples（このレシピにはリンゴの梨が必要です。）」と、オーディオクリップの「pair（ペア）」を「pear（梨）」と誤って書き起こすとしましょう。あなたは人間の直感を引き出し、人が正しく書き起こすためにどの情報を使用するかを理解し、この知識を学習アルゴリズムを修正するために利用することができます。

3. **最適エラー率を見積り、「望まれるエラー率」を設定するために、人間レベルのパフォーマンスを利用する**：あなたのアルゴリズムが10%のエラー水準を達成したが、人間が2%のエラー水準を達成したとします。最適エラー率は2%もしくはそれ以下で、回避可能なバイアス（avoidable bias）は少なくとも8%であることがわかります。したがって、バイアスを減らす試行をするべきです。

3項目はあまり重要視されないかもしれないが、合理的かつ達成可能な目標エラー率を持つことは、チームの進捗を加速させるのに役立ちます。あなたのアルゴリズムが回避可能なバイアスを多く持つことを知ることは、信じられないほど価値があり、試すべきオプションのメニューを増やします。

人間さえもうまくいかないタスクがいくつか存在します。例えば、あなたにレコメンドすべき本のピックアップ。もしくは、Webサイトでユーザに表示する広告のピックアップ。もしくは株式市場の予測。コンピュータはこれらのタスクで、多くの人間のパフォーマンスをすでに上回っています。これらのアプリケーションでは、次の問題が発生する可能性があります。

* **ラベルデータの入手が困難**：例えば、人間のlabeler（ラベル付けする人間の）が、ユーザデータベースに対して最適な本のレコメンデーション情報を付与することは難しいです。もし、本を販売するWebサイトやアプリを操作するなら、ユーザが何を購入したかのデータを手に入れることができます。そのようなサイトを触らない場合は、より創造的な方法でデータを入手する必要があります。

*  **人間の直感は信じるのが難しい**：例えば、誰も株式市場を予測することはできない。だから株式予測のアルゴリズムが、ランダムに酔う推測よりも優れていない場合には、どのように改善するかを見つけることが難しい。

* **「最適エラー率」と合理的な「望まれるエラー率」が何かを知ることが難しい**：すでにとてもよく機能する本のレコメンドシステムを持っているとしましょう。人間のベースラインなしに、どれくらい改善できるかを知る方法はあるでしょうか。

##**34.  How to define human-level performance(人間レベルのパフォーマンスをどう定義するか)**

今、自動的にX線画像から診断を行う医療用画像のアプリケーションに取組んでいるとします。過去に医学的なバックグラウンドを持たない人であれば、このタスクに対して15%のエラー率を達成するでしょう。新米ドクターは、10%のエラー率を達成するでしょう。熟練したドクターであれば、5%エラーを達成するでしょう。そして、各画像について議論を行う小さなドクターチームであれば、2%のエラー率となります。どの水準を「人間レベルのパフォーマンス」と定義付けすべきでしょうか。
この場合では、2%のエラー水準を人間レベルのパフォーマンス基準として利用するでしょう。また、前章の3つの理由がすべてが適用されるため、望まれるパフォーマンスとして2%を適用することができます。

1. **ラベル付け担当者から、データを入手することが容易**：2%のエラー率でラベルを提供するドクターチームを得ることができます。

2. **エラー分析を人間の直感で描くが可能**：ドクターチームで画像について議論することによって、直感を描くことが可能。

3. **最適エラー率を見積り、「望まれるエラー率」を設定するために、人間レベルのパフォーマンスを利用する**：最適エラー率を推定するのに、2%のエラー率を利用することは合理的である。最適エラー率が2%より低くなる可能性もありますが、ドクターチームが2%のエラー率を達成可能であるため、それ以上高くすることはできません。対照的に、5%や10%を利用することが妥当ではない、なぜならこれらの推定値が必然的に高いことがわかるからです。

ラベルデータを入手する場合は、時間がかかるため、すべての画像についてドクターチーム全体で議論しないかもしれません。ひょっとしたら、主要な症例の画像については、一人の新米ドクターがラベル付けを行い、より難しいケースの画像については、熟練ドクターが担当するかもしれません。

もし、あなたのシステムが現在40%のエラーである場合、新米ドクター（10%エラー）と熟練ドクター（5%エラー）のどちらがラベル付けを担当し、直感を提供するかは問題ではありません。しかし、あなたのシステムがすでに10%のエラー率である場合、人間レベルのパフォーマンスを2%と定義すると、あなたのシステムを改善し続けるための優れたツールが得られます。

##**35. Surpassing human-level performance（人間レベルのパフォーマンスを上回る)**

あなたは音声認識に取組んでおり、オーディオクリップのデータセットを持っています。データセットが多くのノイズを含んでいるオーディオクリップであるため、人間でさえも10%のエラー率であるとします。あなたのシステムがすでに8%のエラー率を達成しているとします。継続的に進歩し続けるために33章で説明したテクニックを利用することができますか？
もし、人間がシステムよりも優れているサブセットを把握できるのならば、それらのテクニックを利用してプロセスを加速することができるでしょう。例えば、あなたのシステムが人間よりもノイズを含むオーディオの音声認識に優れているが、人間はシステムより非常に速度が速い発声を書き写すのに優れています。

速い発声データのサブセットについては、
1. システムのアウトプットより、品質が高い書き起こした情報を人間から手に入れることができる。
2. システムでは困難な速い発声の認識を、人間が正しくヒアリングできる理由を理解するため、人間の直感を引き出すことができる。
3. 高速な発声スピーチを、望まれるパフォーマンス目標として、人間レベルのパフォーマンスを利用することができる。

さらに一般的には、人間が正しく、システムが誤っている開発セットのサンプルが存在する限り、既に述べた多くのテクニックが適用できます。たとえシステムのパフォーマンス（開発セット/テストセット全体の平均）がすでに人間レベルのパフォーマンスを超えていたとしても、当てはまります。

機械が人間レベルのパフォーマンスを超えている、多くの重要な機械学習アプリケーションが存在します。例えば、映画の評価予測、配車がどこかへ移動する際の所要時間、ローン申請の承認可否、これらは機械の方がより優れています。