機械学習をするうえで簡単には身につかないこと

# はじめに
人を雇って機械学習を成功させようと思っているとしましょう。
どのような人を雇い入れたらいいのか、採用側の皆さんは頭を悩ましていることでしょう。
そこで、機械学習エンジニアの資質のうち、簡単には身につかないものがあると思うので、それを紹介したいと思います。

# 機械学習をするうえで簡単に身につかないこと
すでに、定式化されている枠組みで機械学習だけをするのならば、充実したOSSがあるので、比較的実行しやすい状況になっています。しかし、ちゃんと性能のでるシステムを作り上げて、一連のシステムの一部として使えるものにするには、より多くのことが必要になります。

## 機械学習で達成したらみんなが幸せになる何かを見つけること
- 機械学習も人類のさまざまな技術のひとつにすぎない。
- すべての技術は人々を幸せにするためにある。
- 機械学習もそれによって幸せになる人がいてこそより良い技術である。
- それを実現したらだれが幸せになるのか、その設定こそが難しい。
- 「このようなデータセットがあります、分類してください」という水準の話ではない。

## 実際に利用に耐えるものにするための継続的な努力。
- 機械学習を成功させるためのエレガントな改良と 、データを追加することの地道な作業
- 性能が確保できることを示す再現性のある評価の実行
## すべてのものをバージョン管理しようとする執念
　機械学習のOSSのライブラリを使いだしたばかりのエンジニアの場合、バージョン管理を考えずに、OSSの実装をトレースできます。
　そのため、実務経験をつまない限り、最終プロダクトに影響する全てをバージョン管理しようとする執念を持つにはいたらないことがあります。
　

## その事業領域でのデータの意味合い
#### 例：医療画像をみて、病気か正常かの判断。
　診療放射線技師や臨床検査技師に分類してもらった画像を使って機械学習システムを作る場合でも、機械学習のエンジニアは、それらの専門家が何をみてどのような理由で判断しているのかを学ぶことでしょう。
　説明可能なAIでなければならないことが求められているので、単に分類に成功していれば十分とはなりません。
　その事業領域での理解が必須です。

#### 例：陽性と判断したものを人が必ず判定するシステムなのか、最終判断になるシステムなのか
それによって見逃しが少なくて、偽陽性があってもゆるされるものなのか、
偽陽性と再現率とのバランスがとれたものであるのがいいのか。
これは使われ方に大きく依存します。

![Screenshot from 2024-11-25 10-50-37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83761/a7ed3655-0675-e309-a64c-41e4a4afc33b.png)

図に示した例の場合、後段での検査員による目視作業が30%にまで低減することで、十分に意味のあるものになっています。
「導入前: 1,000個をすべて人が判断
　導入後: 1,000個のうち、不良品の可能性が高い30%をAIが判断.
30%のみ 検査員が目視検査」出典 [AI導入ガイドブック 外観検査(部品、不良品あり)](https://www.meti.go.jp/policy/it_policy/jinzai/AIguidebook_gaikan_furyo_FIX.pdf)

#### 例：フロアでの年齢性別の属性推定による客層の分析
- 顔の属性推定を用いると、そのフロアのカメラに写ったお客の年齢や性別、時間帯ごとのお客の数などのデータをとることができます。
- しかし、それは、ビジネスの目的ではありません。
- ファッションビルの経営主体の企業やテナントの店舗にとって、それらの情報は参考データにはなります。
- しかし、それでファッションビルの企業やテナントの店舗にとって、ほんとうに欲しいことではありません。
- 彼らの目的は、お客が入って売上が伸びることです。それにつながる何かを求めているはずです。
- ここでも、ファッションビルの経営主体の企業やテナントの店舗にとっての、事業領域の理解が必要です。
##### 私見：年齢性別よりも行動パターンの方が重要
- 例：ショッピングモールの場合
- 家族連れか、友達と一緒か、一人での来訪かで行動様式が違う。
- 休日スタイルなのか、仕事帰りなのか
- 消費の行動パターンは、服装やバッグなどにも反映する。
- 服装やバッグの画像認識により、どのような行動パターンなのかを推測することができるはずだ。
- 定量的な精度は期待できないが、曜日や時間帯による変化を見つけることはできるはずだ。
ショッピングモールでの運営上の課題に対して、行動パターンを分析することで
方策のヒントを見つけることはできないだろうか。

仮説：
判断して次の方策を考えるのは、常に人が行うようにするのがいいと思う。
方策の前後で、期待した変化が生じているのかどうかの検証は
機械学習・統計解析の分野で可能だ。

#### その事業領域でのデータの意味合いは、雇用者側のあなたが知っているはずです。
- 事業領域での重要なものが何なのか、何ができればうれしいのかを一緒に探ることです。
- 「専門バカ」呼ばわりをしてはいけません。何ができればうれしいのかを伝えきれていないあなたが、そういう状況を作っているのです。

#### どうアノテーションすればどこまで学習できそうかについての肌感
- 使用している機械学習のフレームワークの中で、どこまで厄介なデータを学習データに加えていいかという判断力
- ポジティブサンプルとネガティブサンプルに、加える・加えないの判断
- 例：人検出を学習させる時に、服を着たマネキンを学習データに加えてもいいかどうかを判断する。
- 例：機械学習でどれくらいのボケ画像まで許容するのかという判断。
- 例：どこまで小さな対象物までアノテーションをつけて学習させるかという判断
- 例：どこまでオクルージョンのある対象を検出対象としてアノテーションをつけるかという判断
- 例：どこまで同一のモデルの中に検出対象・属性推定を追加するのかという判断
これらは、しかるべき直感と経験がないと難しい領域には入り込めない。

## コーナーケース(=エッジケース)での機械学習の問題点
- 頻度は高くない事例での系統的な問題点を見逃してしまう。

## データの取得時の注意点
- 無作為抽出していないアンケートの問題点
- 年齢・性別の偏りのあるデータセットの問題点
#### 無作為抽出をしていないアンケートはデータと呼べません
- 回答率の低いアンケートも問題です。特定の判断をしている人だけがアンケートに答えている可能性が高いからです。
- これらを、機械学習のエンジニアに渡しても、「ゴミが入ればゴミが出る」結果にしかなりません。

### 学習するためのデータの入手の効率化
機械学習案件で、常に苦労するのが学習用・評価用のデータの収集部分だ。
なにも苦労せずに学習・評価用のデータを集められた試しはない。
機械学習エンジニアだからといって、他のエンジニアよりも学習・評価用データを集めやすいということはない。

#### 測定手法による限界・問題点
- 例：ステレオ計測
    - ステレオ計測での機器の特性の温度変化・経時変化・対衝撃性の問題
    - ステレオ計測での透明物体・反射物体の問題
    - ステレオ計測での細い領域の問題
    - ステレオ計測での反射光の問題
- 例：音声認識
    - ノイズが無視できない環境では、音声認識の性能がでません。
    - ノイズを減らして音声のサンプリングができるようにハードウェアを設計します。

#### 機器特性のばらつきの問題
- 温度センサで温度を算出して、利用するシステムがあったとしよう。
- 温度センサがどの程度の範囲で校正されているかどうかは、そのシステムの性能に影響する。
- 校正されていない温度センサの値を使って機械学習することはできない。

#### 一番重要なデータが、データセットの中に含まれていない可能性を疑えるか
ある現象の解析をしようとしたら、一番大切なデータがデータセットの中に含まれていないということがありえます。
例：ウィルスが原因の病気を細菌を培養して病気の治療方法を見つけようとする。
人は、常に不完全な知識しか持ち合わせていないものです。ですから、ウィルスの存在が知られていない時代に、細菌由来の病気の治療方法を探しているようなことは起こりえます。私たちの知識や理解能力は限られているのですから。

#### 精度的な面で解決できずに残る部分にどう対処方法を考えるか
- リアカメラでの歩行者検出装置があるとします。そこにハイハイした赤ちゃん・幼児がやってきてしまったとします。
歩行者検出装置の検出性能の限界で、人を検出できなかったとします。
そのとき、同システムを作りますか。
このように、歩行者検出の機械学習という以上の問題をどう解決するのかは、
一人でなんとかなる問題ではありません。
こういった領域での解決方法は、簡単には身につかないものです。

## 機械学習結果の推論を用いる際の問題点
- 男性が出世しやすい状況でのデータを元に、昇進を判定する人事AI
偏見の再拡大をAIがしてしまうという問題点がある。

#### どういう場合には、諦めることが許されるのかどうか
初期のオートブレーキシステム：ブレーキをかけても間に合わない距離での対象物の検出は諦めていたと聞く。


#### 知見を反映するには協力がいる。
[「イグナッツ・フィリップ・ゼンメルワイス（Ignaz Philipp Semmelweis、1818.7.1生〜1865.8.13没）はハンガリー出身の医師で、「産褥熱は接触感染の病気であり、医療従事者に手の消毒を義務づけることでその発症率を激減させることができる」ことを証明して見せました。ゼンメルワイスがこのことを発見したのは1847年で、ウイーン産科病院の産婦人科部長だった時のことです。」](https://www.bdj.co.jp/safety/articles/ignazzo/1f3pro00000sihs4.html)

「当時、病気は（他にも様々な奇妙な原因がありましたが）、体の中の「基礎体液」のバランスが崩れることによって起こると信じられていたのです。さらに、仮にゼンメルワイスの発見が真実だとしても、彼のアドバイスにあるように、妊婦を診断する前に毎回手を洗うことは、面倒過ぎると反論されました。また医師たちも自分たちが多くの死を引き起こしていることを認めようとしませんでした。それどころか彼らは、自分たちの職業はきわめて神聖であり、したがって手が汚れているということはあり得ないと主張していたのです。」同上

#### 人によってステークホルダー（利害関係者）の合意をとるための準備が苦手なことがあります。
これは、組織の運営のしかたで改善できるものです。
どのようなものを開発してほしいのかを、明示的にわかるように伝えましょう。
以下のような本を読んでもらうのもどうでしょうか

[デザインの伝え方　組織の合意を得るためのコミュニケーション術](https://www.oreilly.co.jp/books/9784873117799/)
　この本は、UXのデザインを例に話をしています。でもその中身は、その他の技術分野の人にも当てはまるものです。
 日常のちょっとした雑談を交わすこともとても意味があることを伝えています。
 相手の価値観を理解して行動することの大切さを述べています。

[Effective DevOps ４本柱による持続可能な組織文化の育て方](https://www.oreilly.co.jp/books/9784873118352/)
開発の現場での人と人との関わり方について多くのページを割いています。
そういったやり方で改善が可能なものです。


#### 推論に成功したことが、社会的には本当にのぞましいのか
##### 例：ローン審査の精度が向上しすぎる
- ローンの審査を機械学習で行うとします。
- 明らかにOKな状況と、明らかにNGの場合は簡単です。
- ほんの少しの条件のために、NGと判断してしまうのは妥当なのかどうか。
- ローンの審査が通らなかったために、金利の高いところからお金を借りなくてはならなくしてしまう可能性もあります。
- そういう意味で、推論の精度が上がりすぎることは、本当にのぞましいのかという懸念もあるように、私は思います。
##### 例：ガンを発症する可能性についての予測精度の向上
遺伝的な特徴・生活習慣の統計（喫煙の有無など）・過去数年の健康診断の結果などの状況をデータとすると、ガンを発症する確率について予測できるかもしれません。
しかし、それが可能だったとして、そのような予測は、人の生き方への問題を生じるような気がしてなりません。ときとして自暴自棄を引き起こしたり、悲観を誘発するだけのように私には思えます。
##### 例：魚群探知機の性能向上しぎると
乱獲する人が根こそぎ魚を獲ってしまうだろう。
乱獲する人がいない、悪用する人がいないなんて考えちゃだめだ。
それと同じように、機械学習の分野でも悪用される可能性を念頭におかなくちゃだめだ。
photo realistic な動画生成技術が、誰にでも可能であって、簡単にできることは
悪用の可能性を高めすぎている。



#### メンテナンスされない機械学習は、いつからか害をなすようになる。
人検出ライブラリ・車両検出ライブラリは、時代とともに更新されなくてはなりません。
人の服装や、車両の外観は時代とともに変わっていきます。
メンテナンスされないライブラリでは、性能の劣化を引き起こしていき、しまいには害をなすようになります。
そういうことに対する恐れをもって機械学習を引き継いでください。


## まとめ
機械学習をするうえで簡単には身につかないことをいくつか述べてみました。
それらの項目をも参考にして、機械学習分野の候補者をみてはいかがでしょうか。