見出し画像

私はいかにしてTensorflow Developerに合格したか

先日Tensorflow Developer認定試験に合格しました。

スクリーンショット 2020-09-15 11.50.32

本ページでは、私がTensorflow Developerに向けた勉強をどのように行ったかを紹介します。

※試験に関する情報を公開することは規約に反するので、試験に関する情報は一切載せていません。


Tensorflowデベロッパーとは

公式サイトリンク

今年スタートしたばかりのGoogle資格です。その名の通り、Tensorflowを使った開発能力を証明するための資格です。

画像3


ポイントはなんといっても試験方式が知識を問う1問1答形式ではなく、コーディング形式であるということ。さすがGoogle先生という感じですね。

画像4

試験料金は100ドルで、自宅のパソコンにpythonのIDEであるpycharmをインストールし、専用のプラグインをインストールして試験を行います。

いつでもどこでも受けれる上に、試験費用も低く設定されているので受験する心理ハードルが低くて嬉しいですね。


なぜTensorflowデベロッパーを取得したか?

・修士の研究テーマがMachine learningを使ったものだったこともあり、もともとベースの知識があったこと
・趣味のアルゴトレードにMLを使うことにしたこと
・近い将来MLを使ったアプリケーションの開発、MLの研究を職にしたいと考えていること

この3つが理由です。試験を受けるということをフックにして勉強効率をあげつつ、対外的に能力を証明もできるので一石二鳥だと考えました。

ML系で有名な資格であるE資格、G検定ではなくTensorflowデベロッパーを選んだ理由は、機械学習はガシガシ書いて、実験して検証してなんぼだと思っていて、選択式の問題を解くために勉強するというのが直感に反したからです。Tensorflowデベロッパーは期待通り、ガシガシコードを書いて、実験して、調べて、検証しながら勉強することができ、試験も非常に面白かったです。(コーディング形式の資格は初受験だったので、めちゃ緊張しました笑)


何を使って勉強をしたか

記事のタイトルを見てピンと来た方もいると思いますが、タイトルは有名な以下の記事のパロディです。(笑)

私はいかにしてTensorflowデベロッパー認定試験に合格したか

基本的にこの記事に書かれている教材で知識としては充足しています。私が実際に学習したリソースと投下した時間は以下の通りです。


1. Courceraの「TensorFlow in Practice専門講座」

Tensorflowの公式サイトの学習教材ページでも紹介されていますが、Tensorflowの使い方を学ぶための教科書的な動画学習コースです。

最初の1週間は無料で利用可能で、それ以降は月額59ドルで利用可能です。DataCampやUdemyと違って「お、いいな」と思ったポイントがあるのですが、Couseraはソースコードの紹介やコーディング演習にGoogle Colabが使用されています。MLとColabはとても親和性が高く、可読性も高いですし、GPUも無料で利用できます。Colabが使われていることで学習効率が非常に高かったです。Colabを使ったことがない方は同時にColabデビューもできるので1週間の無料コースだけでも受講することを強くお勧めします。

4コースすべて受講しました。

内容の内訳としては

How to use Tesorflow: ★★★★★
Machine Learning Knowledge: ★★☆☆☆

という感じです。細かい説明はさておき、触ってみましょうという感じ。各要素についてさらっと紹介して、コーディングしてみて、後は各自深めて行こうね。という論調で最後まで進んでいきます。

学習にかかった時間は、8日間です。毎日子供を寝かせた後に1 ~ 1.5時間程度受講しました。サンプルコードは基本的にすべて写経(手元のColabにコーディング)し、パラメータを変更したり新しいコードを足したりして結構遊びました。私は超過してしまいましたが、MLに触れたことがある方であれば、1週間以内に走破することは十分可能だと思います

写経していると気付くんですが、

import tensorflow as tf
 
model = tf.keras.Sequential([
                            tf.keras.layers.Dense(64, activation="relu"),
                            tf.keras ....
                            ])

と書いてあったり、

import tensorflow as tf
from tensorflow.keras.layers import Dense, Flatten, LSTM
 
model = tf.keras.Sequential([
                            Dense(64, activation="relu"),
                            Dense(1, activation="sigmoid")
                            ])

という別の書き方がしてあったり、はたまた

import tensorflow as tf
from tensorflow.keras.layers import Dense, Flatten, LSTM

model = tf.keras.Sequential()
model.add(Flatten())
model.add(Dense(128, activation="relu")

と書いてあったり、同じコードを表現を変えて書いてある箇所が結構あって、勉強になりましたし、小技が色々覚えられて楽しかったです。


2. MITによるディープラーニング入門

MITの授業をYoutubeで公開しているものです。各授業は50分程度で、MITのポスドクが延々と講義してくれます。

Lecture: 1~6 と Lab1, 2 を受講しました。

内容の内訳としては

How to use Tesorflow: ★★★☆☆
Machine Learning Knowledge: ★★★★★

という感じです。さすが大学という感じなのですが、機械学習の背景にある理論、数式についての内容がとても濃いです。授業に付随しているソースコードでも数式をpythonで表現する演習があります。(普通にむずかったです)Courseraよりも難易度が高い内容なので、順番的にはCoursera→MITがいいと思います。VAEのコード演習がすごく面白いのでおすすめです!

学習にかかった時間は6日間です。毎日1講義受けて、Labがある日はLabもやってという感じで学習しました。損失関数を自分で書いたり、学習のStepを自分で書いたりと、Labがとても濃くて面白いです。

@tf.function
def standard_train_step(x, y):
 with tf.GradientTape() as tape:
   # feed the images into the model
   logits = standard_classifier(x) 
   # Compute the loss
   loss = tf.nn.sigmoid_cross_entropy_with_logits(labels=y, logits=logits)

 # Backpropagation
 grads = tape.gradient(loss, standard_classifier.trainable_variables)
 optimizer.apply_gradients(zip(grads, standard_classifier.trainable_variables))
 return loss

# The training loop!
for epoch in range(num_epochs):
 for idx in tqdm(range(loader.get_train_size()//batch_size)):
   # Grab a batch of training data and propagate through the network
   x, y = loader.get_batch(batch_size)
   loss = standard_train_step(x, y)

   # Record the loss and plot the evolution of the loss as a function of training
   loss_history.append(loss.numpy().mean())
   plotter.plot(loss_history.get())

こういった具合に、compile -> fitでよろしくやってしまいがちな損失関数の定義や学習のステップの実装を自分で書いてみる+拡張してみるという内容が含まれており、高度なMLモデルを作るために必要な知識が得られます。

コンピュータビジョン分野の中でもかなり面白いモデルであるVAEの説明が演習にあるのですが、モデルの説明が詳細に書かれていますし、全コードColabで流しながら学べるので、無料とは思えないクオリティです。

画像5



試験に向けて勉強したのは上記二つのみで、勉強に要した時間は計14日間でした。その後受験し、合格しました。


学習済みで役に立ったリソース

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

言わずと知れた入門書。Deep Learningの基礎がすべて書いてある。理論が知りたい人は必読


2. 現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル

pythonの基本的な使い方が非常にわかりやすく紹介されています。pycharmの使い方やpythonのインストール方法についても紹介されていますので、pythonに馴染みが薄い方はこの動画の受講を強くおすすめします。(これ以上の教材は知らないっていうレベルで良いです。セールを頻繁にやるのでセールの時に2000円以下での購入をおすすめします


試験を受ける方への忠告

実際に私がテンパった点が3つあるのでシェアします。

1. 本人確認は前日までに完了させるべし

本人確認には平均2時間(私の場合は1時間で完了)かかります。当日ではなく、前日までに申請してパスしたことを確認しておくことを強くお勧めします。(私は5時間確保したうちの最初の1時間を待ちで過ごしました!)

2. pycharmのバージョンは最新にしておくべし

2020年にメジャーアップデートがあったということを知らず、ずっと2019バージョンを使っていました。TFCのプラグインは最新版のpycharmじゃないと入手できません。かならず事前に最新化しておきましょう。(私は確保した時間のうち15分をpycharmのアップデートに取られました!)

3. 試験の途中submitボタンがわかりにくいから注意

試験をすべて完了してから結果をsubmitする以外に、設問ごとにsubmitする機能があるのですが、これがちょっとだけ見つけづらいです。
試験中は[End exam]みたいなボタンが右上に表示されるのですが、このボタンの右端にある▼を押すと途中submitと残り時間の確認ができるようになります。(私は1時間ぐらいこれに気づかずドキドキしながら過ごしていました!


最後に

面白い資格なので、是非受験してみてください!

あと、転職活動中なのでMLベースのアルゴトレードをやる会社、自動運転のMLエンジニアをお探しの方、何か引っかかればDMください :)

この記事が気に入ったらサポートをしてみませんか?