文系エンジニアがAWS Certified Machine Learning – Specialty に合格してきました

ここ数年のAIブームで、AIの勉強全くしてこなかった私でも、少しずつ仕事でAI関係に関わることができてきました。その度に部分的に頑張って追いつくというのを続けてきたのですが、そろそろ限界を感じたので、どこかで体系的に勉強しなくてはと考えていました。

勉強嫌いな方では無いですが、根がサボり屋なので、何か切迫した目標が無いと勉強に集中することができません。

そこで、5月中に「AWS Certified Machine Learning」を取得するという人参を設定して、今年のGWの10連休で勉強やろうと一年発起しました。

GWは子供が寝静まってから勉強というハードスケジュールでしたが、その甲斐あって、無事に試験合格したので、記事書きます。

f:id:yomon8:20190522200040p:plain

勉強方法

基礎部分

そもそも機械学習の勉強で何が障壁かっていうと、どの本を開いても羅列されている数式です。。。

例えば、本屋でいつも通りIT書籍の本棚行ってフラフラしていた時、最初に目について買ったこの本。漫画好きだし出てくる先輩も可愛いしバシバシ読み進められます。

でも、話に出てくる機械学習の理論は全くわからない。

主人公は公務員でIT得意なわけでは無いのですが、先輩の話をガンガン理解しています。何でか?それもそのはず、主人公は情報工学科卒業してるんですよね・・

やっぱり文系の自分には敷居が高いのか・・

※ちなみに、この本は入り口に導いてくれたことにまず感謝してますし、ある程度勉強進んだ後に何度も読み返しました。漫画という形は知識の定着には大きな効果があると思っているので買って良かった本だと思っています。

マンガでわかる機械学習

マンガでわかる機械学習

自分は高校は理系のクラスから、経済学部を数学受験したという数学とは近いようで遠いような微妙な距離感。統計学とか大学でも数学使う授業であったけど、全くやらないで何とかきてしまいました。(どうやって単位取ったんだろ?)今になって機械学習の数式を見るたびに本当に後悔しています。

機械学習をやるにあたり関係する数学は、微分積分、行列、ベクトルと、関連する分野はあるのですが、何より一番忘れていて苦手意識のあった微分積分。これ何だっけ?というところから始めました。

そんな状態でGW入っても勉強のスタートすらできない。GWで勉強をするための準備の勉強をしなければ。

そう思って読み始めたのが「「超」入門 微分積分 学校では教えてくれない「考え方のコツ」 (ブルーバックス)」です。Kindleでしたが元は新書らしく、紙や鉛筆が無くても理解できるというのがポイントです。

実際に読んでみると確かに紙やペンは不要で、スラスラ読めました。微分積分ってそもそも何なのかということを、本当の初心者向けに説明してくれます。数式なんて全部忘れていたのですが、それでも楽しく読み進められました。当然、これで理解したとは言わないのですが、数式並ぶ本を読み始める助走にはもってこいです。

この助走のあと、遂にGW入りました。前半で「最短コースでわかる ディープラーニングの数学」を読破しました。GWという短い期間で何かやりきりたいと思うと、広大で深い数学を全てやるのは現実的では無いと考え、ポイント絞れる本を探していました。 この本はディープラーニングに必要な数学をポイント抽出して書いているというのがポイントでした。

前半はディープラーニングを理解するのに最低限必要な数学の説明がある理論編、後半は実際にPythonで線形回帰、ロジスティック回帰、ディープラーニングPythonで組んでいく流れです。後半には前半理論編へのへのポインタが記載されているので、大きな躓き無く最後まで読み切れました。

ここまで来ると用語に関してもなんとなく聞いたことがあるものが増えてきます。一旦、身体に染み込ませるために「PythonとKerasによるディープラーニング」をやりました。この本、数式がほとんど出てこないです。Pythonのコードで説明されています。

Pythonのコードで説明されているので、数学の話で理解が曖昧だったところに、Pythonのプログラムという慣れた形で別確度から補完してくれたので理解を深めるのに役立ちました。

自分の勉強方法の一つなのですが、一つのことを色々な本で別確度から説明されると理解が進むと感じています。この本もGW終わりまでに6章くらいまでやりました。

試験向け

GWも終わるし、そろそろ試験の準備始めるかと思い、GWの最後に模擬試験を受けました。前に以下でBigData Specialist取得した時の特典があったので、無料でした。

yomon.hatenablog.com

GW頑張ったなーと思っていたのですが、模擬試験の結果は正答率50%・・がっくり来ました。しっかり勉強したと思ったに。。。

ただ、模擬試験を受けている中で、何が足りてないのかははっきりしていました。用語だけ覚えても、例えばどんなケースでは、何のアルゴリズムが選択肢に挙がるとか、不均衡データセットの扱いとか、評価指標に何を使うのか、特徴量エンジニアリングの定石はとか、そういう実践的な知識が足りてなかったです。

AWSの試験は問題配分がガイドに公開されています。

Domain 1: Data Engineering 20%
Domain 2: Exploratory Data Analysis 24%
Domain 3: Modeling 36%
Domain 4: Machine Learning Implementation and Operations 20%
TOTAL 100%

模擬試験はそれぞれのカテゴリで正答率が出るのですが、正答率50%の未熟な知識では、問題文と回答を分析して、正しいだろう答えを探すのも苦労します。どの問題が、どのカテゴリに当てはまるのか、どの問題が間違っているのかもわかりません。

とはいえ問題文はあるので、答えを調べていきます。AWSの試験はAWSのサービスについて調べれば良いことが多いので、問題文と選択肢さえわかればネットを探せば答えを見つけるのは簡単です、しかしMachine Learning Specialtyで問われているのは機械学習の知識なのでそうもいきません。

理論よりは詳しく、コーディングよりは抽象的な実践、定石、ベストプラクティス的な情報を探していました。

そこで出会ったのが「[第2版]Python機械学習プログラミング 達人データサイエンティストによる理論と実践 impress top gearシリーズ」です。それぞれの要素に関して、実践ではどんな課題があり、どうやって使うのかということがしっかりと説明してある本だと思いました。恐らく、GWに頑張った下地があったからか、この本で一気に理解が進んだ気がします。7章まで読みました。模擬試験の回答もこの本読みながら、一通り導き出しましたが、この部分が一番合格に強く結びついたと思っています。

他のAWS SA ProとBigData取得してますが、この試験は特にAWS色薄く、機械学習の知識が求められる内容が多かったです。

とはいえ、この分野の中心サービスであるSageMakerの公式マニュアルやチュートリアルは手を動かしておくことをオススメします。機械学習系のAWSサービスも一通り何ができるのか確認しておいた方が良いかと思います。(ガイド通りですが)

AWSのブログもAIやSageMakerに関連する部分は一通り読んでみると勉強になります。

特に公式のマニュアルのSageMakerのアルゴリズムの部分は、勉強しておいて損は無いと思います。

他にも役立った本

リファレンス的に使えて良かったです

見て試してわかる機械学習アルゴリズムの仕組み 機械学習図鑑

Python機械学習プログラミング 達人データサイエンティストによる理論と実践 」と読み合わせると理解が深まりました

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

試験勉強後半に解いてみると、ほとんどわかるようになっていて少し自信つきました

徹底攻略 ディープラーニングG検定 ジェネラリスト 問題集 徹底攻略シリーズ

勉強時間

GW毎日夜に勉強していたのと、その後も行き帰りの電車や土日に勉強していました。勉強時間は以下の通りです。

基礎部分: 25時間 くらい

試験向け: 10時間 くらい

「試験のための勉強」をすることが多い自分としては、結構しっかりやりました。

点数

点数は794点でした。合格最低スコア750と書かれていました。去年取得したBigData Specialityの時は66%で合格しましたが、合格点引き上げられたみたのか。危なかった。

その他試験の所感

  • AWSサービスに関して問われる問題。SageMakerやAI系のサービスはもちろんなのですが、セキュリティ担保のためのネットワーク等も基本的なことは知っておかないと辛いかもしれません

  • なので、AWS Certified Big Data - Specialtyと重複している分野も多く感じました。ガイドに書かれている通りです。

  • 最近のこの手の試験は日本語訳キレイなので、変な日本語というのは少ないのですが、そもそも機械学習の分野自体が英語の方が単語理解しやすいと思っています。特に込み入ったケースの問題は英語見た方が良いかと思います。

  • AWS関係無い機械学習周りの基本的な知識(用語、要素やアルゴリズムの使い所など)の理解が問われる問題が多かった印象です。他のAWS試験とはその辺り結構違うかもしれません。

まとめ

機械学習の分野はとても深い感じがしており、この試験を取ったから何かできる!とかは思っていないですが、少なくともネット上で日々出てくる機械学習周りの話題がどんな内容を話しているのかなど、少しわかるようになって楽しいです。

また、サンプルのデータつかって回帰や分類の処理動かしてみると、いつものプログラムとは違う流れから、正確性の高い結果が出てきて感動もあります。

画像や動画分析系も自分でやってみると、本当にできるので感動します。

ただでさえ勉強することいっぱいあるので、こういった体験を強制的に積むことができるという点でも試験勉強に意味があるかなと思っています。

でも、ほとんど読んでない本含めて、何冊の本買っただろ。数万は飛んだと思います。。。

最後に試験とは少し関係無いけど、最近「これ凄い!」と思ったもの貼って最後にします。

github.com

参考URL

試験ガイドとサンプル問題

熟読必須

AWS Certified Machine Learning - Specialty

SageMakerのサンプル

面白いので勉強しながら色々動かしてました

github.com

SageMaker開発者ガイド

https://docs.aws.amazon.com/ja_jp/sagemaker/