もしじるし

エンジニアとしての学び。人生の気付き。憧れの人へ出会うまでの道のり。

JAZUG女子部 第13回勉強会 参加レポート

JAZUG女子部 第13回勉強会 ~機械(学習のことがチョットわかる)の体にボクはなりたい に参加してきました。

2018年11月9日にJAZUG女子部さんの勉強会に参加してきました。
今回のテーマは機械学習の基礎ということで、マイクロソフト畠山大有さんによるセッションを1時間半拝聴しました。
とても中身が濃くて、畠山さんのプレゼン力も相まってあっという間の1時間半でした・・・。自分もあんな楽しいプレゼンがしたいな。
とても素敵な内容だったので、私の機械学習への意識の変化と、どのような内容だったのかを簡単にまとめたので綴ろうと思います。
内容に関しては私のメモと記憶を頼りに書き綴っているため品質の保証はできかねます。予めご了承ください。

機械学習への意識の変化

拝聴前

  • Python使ってゴリゴリデータを学習していく
  • 大切なのはアルゴリズム。どんなコードを書いていくか

拝聴後

  • データが命。データ無くして機械学習はあり得ない
  • コードは大切ではない。データが大切
  • PythonよりもC#JAVAの方が大切

拝聴前の機械学習のイメージは、ロジカルなアルゴリズム書いて学習させていくぜ!な感じでした。
しかし、畠山さんのセッションを聴いてがらりと印象が変わりました。意外とプログラミングが大切なのではなく、データ次第でどうにでもなってしまうみたいです。
個人的には雑さが大切。というワードにはとても惹かれました。自分雑なので(笑)
データサイエンティストは年収高くて華やかなイメージでしたが、データを作成するのがとても大変で地道な作業の繰り返しであると畠山さんはおっしゃっていました。
この話は以前に自分で調べた際に聞いたことがあったあのですが、インターネットの記事と、現役の、しかも世界的有名企業のエンジニアの口から聞いた情報では重みが違いますね。
そんな機械学習ですが、そもそも機械学習とは何でしょう?ということを畠山さんのセッションで学びました。
その資料は畠山さんのSlideShareにて公開されています。
また、これを基に自分なりに内容をまとめたのでいかに記述します。


エンジニアのための機械学習の基礎(SlideShare)

機械学習の位置付け-p3

基礎は機械学習。そこから枝分かれしていく。機械学習なくしてAI無し。

p4
機械学習にできることはいたってシンプル。それは予測するということ。それ以上もないし、それ以下もない。

各用語は英語で覚えると英語の資料が読みやすくなる。

Regression(回帰) p5

横軸と縦軸を持ち、対応する点を打つ。例えば、横軸は時間、縦軸は売上。原点から点への角度が平均になるような線を引く。線に対して角度が低いのか、高いのかで点に対して評価する(?)
線は直線とは限らない。

Classification(分類) p6

分ける。資料は四角でくくっているけれど、実際は線で区切るイメージ。線は直線とは限らない。

Classificationのステップ p7

Inage Classification

鹿がいるかいないか判定。超簡単。

Object Detection

鹿がどこにいるのか判断。割りと簡単。

Image Segmentation

どこまでが鹿か判定。ムズい。

Image Similarity

私にはまだ早い。

で、実用的なのはどこまでかというとObject Detectionまで。
例えば、品質保証のために製品に傷があるか無いかを判定する。
Image Segmentationまで行くと場所も特定できるけど、特定してどうするの?って話。
内容によって使い分けが大事だけど、ほとんどはObject Detectionで完結する。

機械学習のモデルの開発 p9

データを使いやすいようにこねて、アルゴリズム持ってるモデルに渡して吐き出す。
ってデータのやり取りのところおかしくない?なんで矢印二つ出てるの?ってはなし。

データを学習用と判定用で分けます。ほとんど学習用に費やします。8:2とかそんな比率。
学習したものと、判定用に残したものを使うから、矢印が二つ出るんやで。(?)

実際に大事になるコードは10行くらい。

プログラミングとの違い p11

データからパターンの学習を機械にさせる。
データからパターンの学習を機械にさせる。
大事なことなので2行にしました。

データ作成が大事。 Excelはデータ作成における最大のツール。

データの作成はつまらない・たいくつ・大変・泥臭い。これが現実。
機械学習は、例外には対応できません!!

汎化 p14

プログラミングはデータとプログラムを渡すと結果が出てくる。

機械学習は猫の画像を渡しても猫だと認識するのは大変。
だからデータを使用して汎用化させる。アルゴリズムはその都度変化する。

人は経験によって汎用化ができる。知らない道でも車の運転ができる。
でも機械は全ての事象を想定しなければいけない。

雑に覚える。雑さが大切。完璧なんて無理。どこまで雑にするか。

学習と推論がいまいちピンと来ない。
現在の自分の状態のことなのかな?機械学習を学んで(学習)、わからないところはこうなのかな?(推論)と予測すること。
予測!機械学習に唯一できること!これかもしれない。

データがすべて 機械学習できないのはデータが存在しないから。

コードは世界にいくらでも転がっている。しかも質が高い。

データサイエンスプロジェクトのライフサイクル p22

どんなデータで何をするか決める

GitHubに転がっているコードを使用する

推論

コード量 p23
windows vistaは5000万行
Alpha Go Zero(囲碁のAI)は2000行
コードなんてそんなもん。重要ではない。

機械学習にはコードに価値はない。

p24 むかし、情報は限られた人しか得られなかった。しかし、昨今はインターネットの普及により大多数が得られる時代になった。

相関関係、因果関係。機械学習は相関関係専門。
データの関連性に惑わされるな。湖に落ちた人数とケンタッキー州の人口のデータは近い。これが関係あると思うか。

データには先入観がある。公平性はない。

データ。データが命。ひとつでも例外のデータがあると判定できなくなる。データ大切。腐ったデータは意味無し。データを提供できないなら機械学習はできない。

精度 p34 モデルを評価すると予測と正解の正答率が得られる。
ただし、Accuracy(正解率)に気を取られると大変なことになる。大事なのはPrecision(適合率)とRecall(再現率)である。
p36,37でカルガモの例が出た。予測の外れと誤検知について。
Accuracyが100%になることはない。PrecisionとRecallはモデルによって適切な位置に持っていく。それが難しい。

p41からはAzureの宣伝。Automated Machine Learningを使用すると適切な機械学習を行ってくれるぞ。Azureはいいぞ!

Azureはいいぞ!


今回のセッション内ではp56まででした。

機械学習については全くの素人であってもここまで理解できたのは、畠山さんの説明がわかりやすかったからです。
ただ、自分にインフラの知識やAzureの知識がなかったために後半はついていけなくなってしまいました。悔しいです。

最後に

機械学習の基礎を分かりやすく、面白く解説をしてくださった畠山さんありがとうございました。
貴重な機会を設けていただいたJAZUGの皆様。ありがとうございました。
.NET Tシャツが似合っていたちょまどさん。サインありがとうございました。

今後も機械学習について勉強していきたいと思います。