機械学習を学んだ経験の活かし方

# はじめに
機械学習をどう学んだか by 日経 xTECH ビジネスAI② Advent Calendar 2019の20日目の記事です。

第三次AIブームと言われるようになって久しいですが、私自身が2017年にいわゆるAIと呼ばれる技術群に触れてから今までどのように学んできたか、そしてその経験をどのように活かしているかまとめました。

# 機械学習をどう学んだか
## IBM Watson（2017年頃）
2017年に所属企業でIBM Cloud（当時はBluemix）を自由に使える機会を貰いました。そこで当時はAIと言えば、まず手頃に始められるのがWatsonという感じで広く認知されていたこと、私自身Watsonがどれ程のものなのか興味があったことから、Watsonで色々とやれることを試していました。

Watsonはなんと言ってもGUIベースで誰でも簡単に使えるのが、当時は人気があった理由だと思います。

### どう学んだか
特に書籍などは参考になるものがなかったので、公式のドキュメントを参考にしていました。

## チャットボット（2017年頃）
Watsonを触っていたのと同時期ですが、この頃からAIを使ったチャットボットが色々な企業内で活用される事例が出て来ていました。（とはいえ中身の話をよくよく聞いてみると、それただのルールベースでAI以前だよね？みたいなものも多かったです。それは今も同じかもしれませんが。）

そんな時代背景もあり、所属企業内でもAIを活用したチャットボットのプロトタイプをまず作ってみようとなり、その開発で自然言語の分類モデル作成を担当することになりました。分類モデルの作成はWatsonNLCというサービスを使いました。これは自然言語ベースで質問と回答をセットにして学習させると、未知の質問に対して、確率の高い回答を返してくれるというものです。

WatsonNLCを使いこなすコツは、質問と回答のセット（すなわちデータセット）を如何にして工夫して用意するかでした。モデルの学習過程は何もわからないので、データセットを調整しながらモデルの学習を繰り返して、結果を検証するしかありません。これはこれで中々大変なんですが、途中からガチャを引いている気分になってきます。

*WatsonNLCについては2017年時点の機能に基づく記述であり、2019年現在では変わっているかもしれません。*

### どう学んだか
特に書籍などは参考になるものがなかったので、公式のドキュメントを参考にしていました。チャットボットはLINEで実装したので、LINE Messaging APIの公式ドキュメントも参考にしました。

## 自然言語処理（2017年頃）
結局Watsonって何が凄いの？という思いがチャットボットを作成する中で強くなっていき、Watsonでやっている中身の部分（公開されてませんので、厳密にはやっているであろうこと）を自分で実装してみようと思い立ち、Pythonやライブラリを学び始めました。

この2年間で自然言語処理に関する本も沢山出ており、これから新たに学び始める人にとってはハードルがだいぶ下がりました。しかし当時はほとんど体系立った情報がありませんでした（ネットで容易に調べられる範囲にという意味です）。なので限られた情報源を頼りに、一連の要素技術を理解しながら順番に実装していく、という形で機械学習モデルの作成まで行いました。

作成したモデルの精度は、Watsonで作ったモデルの精度を上回りました。AIがブラックボックスではなくなった瞬間です。

今思えばこの時の実装が機械学習の理解度ゼロからのスタートだったので一番大変でした。このハードルを越えられたことで、大学で専門としていない自分でも勉強すれば、ある程度までは出来るようになるんじゃないかと自信が付きました。

可能な限り実プロジェクトに入ってやってみると良いと思います。

### どう学んだか
以下の3冊で基礎を学びました。いずれも今でも人気のある本なので、これから始める方にもオススメです。

- [Pythonではじめる機械学習 ――scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎](https://www.oreilly.co.jp/books/9784873117980/)

- [仕事ではじめる機械学習](https://www.oreilly.co.jp/books/9784873118215/)

- [ゼロから作るDeep Learning ――Pythonで学ぶディープラーニングの理論と実装](https://www.oreilly.co.jp/books/9784873117584/)

## DeepLearning基礎講座（東京大学松尾研究室公開講座）（2018年）
一連のチャットボットのプロトタイプ開発も終わり、機械学習の中でもディープラーニングについてもっと深く学びたいと色々と手を出し始めた頃に、東京大学松尾研究室主催のDeepLearning基礎講座が公開講座として開催されることを知り、すぐに申込みました。受講前の選考としてNumpyのコーティング試験がありましたが、なんとかクリアして受講を開始。半年間毎週東大へ通って学ぶという貴重な機会を得ることが出来ました。

講座では毎週課題が出題され、受講生同士モデルを実装し、その精度をコンペ形式で競い合います。座学で終わらず実装を通して身に付けるという方針はとても良かったと思います。なかなかコンペでボードの上位に入るのは難しかったですが、何度かTOP20くらいまでの中には入っていたので、及第点かなと思っています。（150名程度の受講生がいたと思います。）

講座では、CNN、RNN、生成モデル、自然言語処理、強化学習と幅広く体系立てて学ぶことができました。卒業プロジェクトを無事終えて修了認定を受け、修了証もいただきました。

非常にオススメの講座でしたが、2019年からは公開講座ではなくなってしまいました。今はiLectが事業としてDeepLearning基礎講座を運営しているようです。有料になり、多少内容は変わっているかもしれませんが、幅広く学べるのでオススメです。少し古いバージョンですが、課題部分だけは無料で公開されています。

### どう学んだか
講座の講義部分のコンテンツは非公開なので紹介出来ませんが、以下の書籍がベースとなっていました。

- [深層学習 (機械学習プロフェッショナルシリーズ)](https://www.amazon.co.jp/深層学習-機械学習プロフェッショナルシリーズ-岡谷-貴之/dp/4061529021/)

- [深層学習](https://www.amazon.co.jp/深層学習-Ian-Goodfellow/dp/4048930621/)

課題部分は以下で公開されています。
https://weblab.t.u-tokyo.ac.jp/deep-learning基礎講座演習コンテンツ-公開ページ/

iLectで開講しているDeepLearning基礎講座
https://www.ilect.net/dl4e

## 資格試験
関連する資格試験についても触れておきます。

### G検定
これは日本ディープラーニング協会が主催している検定試験です。ジェネラリストを認定する検定で、試験範囲は広大、かつ最新の技術動向も問われるため、それなりに事前準備が必要ですが、DeepLearning基礎講座修了後に受けたこともあって、特に苦労せず合格しました。機械学習はひと通り知っていて、G検定にとりあえず合格したいというモチベーションの方は、公式テキスト一冊読めば大丈夫だと思います。

### Pythonエンジニア認定データ分析試験
Pythonエンジニア認定試験は最近資格の人気ランクでも上位に上がってきている試験です。ただ実際に受けてみて感じるのは、まだまだ問題が洗練されていないなということです。黎明期なので仕方ないですが、それを楽しめない人には不満の出る試験かもしれません。今年からデータ分析試験がリリースされましたので、リリース直後に受けましたがほぼ満点で合格でした。機械学習をやっている勢であれば誰でもすぐに合格出来るレベルの難易度です。


資格試験でいうとAIやデータサイエンス分野で現在メジャーなのはこの2つですが（E資格はまだ合格者も少なくニッチなのでここではノーカウント）、来年以降有象無象な試験たちが続々と登場しそうです。資格ビジネス的な要素が強いものもあるのでその辺は注意が必要となるでしょう。

# 機械学習を学んだ経験の活かし方
## 社内コミュニティ立ち上げ（2019年～）
企業内でAIの導入、活用を進めていくにあたっては、一定レベルのAIリテラシーを持つ人材が各現場に必要になります。こういった人材が不在の中では、AIを導入することによって期待するKPIの設定も本質からズレる可能性が高まります。

ここで言うAIリテラシーを持つ人材とは、最新の論文を読みこなし実装できるようなレベルを指していません。一連のデータ分析プロセスを理解し、モデルの作成など肌感覚として理解出来ていれば充分です。

現場が分かっていて、AIリテラシーも持っていることが条件となるので、対象となる人材は中途採用や外部調達などで新たに入ってくる人材ではなく、既に現場で活躍している人材になります。そうした社内の人材にAIリテラシーという+αを身に付けてもらうことが企業内でのAI導入、活用が上手く進むかどうかのカギとなります。

という訳で、所属企業内では、これまでの経験を活かし、社内の人材にAIリテラシーを身に付けてもらうためのコミュニティを作り、講義を行うなど活動しています。

## Kaggle（2020年～）
2020年は個人的にKaggleで何かしらのメダルの獲得を目指し、総合力を磨きたいと思います。

# おわりに
この2年半くらいで、機械学習をどう学んだかを振り返ってみました。何かしら誰かの参考になればと思います。