何かに挑戦することが大好きな同氏は、チャレンジとスキルアップを兼ねてGoogleが運営する資格試験「TensorFlowデベロッパー認定資格」を受験することにしました。この資格は、名称からわかる通り、メジャーなAIモデル開発環境のひとつであるTensorFlowを活用してAIモデルを構築するスキルを問うものです。
同認定資格試験の詳細および対策は以下の記事本文で解説されていますが、AINOWの読者が気になるのは同資格と日本でもっともメジャーなAI開発者資格であるE資格との違いでしょう。このふたつの資格を比較すると、以下の表のようにまとめられます。
E資格とTensorFlowデベロッパー認定資格の比較表
E資格 |
TensorFlowデベロッパー認定資格 |
|
---|---|---|
試験主催者 | 日本ディープラーニング協会 | |
受験資格 | JDLA認定プログラムを試験日の過去2年以内に修了していること | 個人として受験すること。法人単位での資格取得は不可 |
試験内容 | ディープラーニングの理論を理解し、適切な手法を選択して実装する能力や知識を有しているかを認定する。 | TensorFlow 2.0 以降を使用したニューラル ネットワーク モデルの構築と訓練。画像分類、自然言語処理、時系列データの予測。 |
出題形式 | 知識問題(多肢選択式・100問程度) | PyCharm 環境下で TensorFlow を使用した TensorFlow モデルを導入する、オンラインでのパフォーマンスベーステスト |
公式教材 | JDLA認定プログラム | 推薦教材をまとめたウェブページがある |
試験時間 | 2時間(120分) | 5時間 |
試験会場 | 日本各地の指定試験会場 | 試験環境が使用できる場所ならどこでも |
試験日 | おおむね年2回 | いつでも |
受験料 | 一般:33000円(税込) 学生:22000円(税込) 協会会員:27500円(税込) |
100USドル |
以上の表から、E資格に合格するような開発者はおそらくTensorFlowデバロッパー認定資格にも合格すると推測されます。後者の資格は受験料が安くいつでも受験できるので、前者の資格を受験する前の力試しに受験したり、前者の資格取得後にさらなるスキルアップとしてチャレンジすることも可能でしょう。
AI開発者の養成が今後さらに盛んになる日本では、E資格とTensorFlowデベロッパー認定資格の両方を持った「ダブル資格保有者」が多数現れるかも知れません。
なお、以下の記事本文はDaniel Bourke氏に直接コンタクトをとり、翻訳許可を頂いたうえで翻訳したものです。
目次
そして、あなたも合格する方法
5月の初め、私はTensorFlowデベロッパー認定資格を取得することにした。そこで、自分のスキルを磨くためのカリキュラムを用意して、数日前(6月3日)に認定試験を受けた(※訳註1)。結局、私は合格した。
私がどうやって合格したか、そしてあなたにもできることを教えたいと思う。
ちょっと待って。TensorFlowって何?
TensorFlowとはオープンソースの数値計算フレームワークで、データを前処理し、データをモデル化して(通常はディープラーニングを使ってパターンを見つけて)、解決策を世界に実装することができるものだ。
このフレームワークは、Googleが機械学習サービスのすべてを動かすために使用しているものだ。あなたがこの記事を読むのに使っているデバイスでも、以前に何らかのTensorFlowが実行されたことがあるかも知れない。
通常、ユーザはTensorFlowのコードを非常にわかりやすい(試験に出題される)PythonやJavaScript(tensorflow.js)で書き、C言語で書かれた一連の基礎となる関数をトリガーにして、実行するようにに指示したことを遂行するのだ(実行するのは多くの数値計算)。
さて、これでTensorFlowとは何かはわかったが、それではTensorFlowデベロッパー認定資格とは何か。そして、その資格は興味をひくものなのかについて以下に説明する。
・・・
TensorFlowデベロッパー認定資格とは?
TensorFlowデベロッパー認定資格とは、ご想像の通り、TensorFlowの使用能力をアピールするためのものだ。
より具体的には、TensorFlow(Python版)を使って、回帰、コンピュータビジョン(画像のパターンを見つける)、自然言語処理(テキストのパターンを見つける)、時系列予測(所与の過去の出来事の範囲から将来の傾向を予測する)などのタスクのためのディープラーニングモデルを構築する能力を問う資格だ。
・・・
TensorFlow デベロッパー認定資格を取得したいと思った理由とは?
私の最初の理由は楽しいものだった。私は自分自身に少しでも何かに挑戦することを課したいと思っていたし、購入した新しい本を読む理由にもなった(これについては後で詳しく説明する)。
しかし、他にも2つの正当な理由があった。
- 機械学習を動力とするアプリケーションを構築するために必要な基礎的なスキルを習得する。
- 将来の雇用者に自分のスキルコンピテンシーをアピールする(※訳註2)。
将来の雇用者に関して言えば、(ソフトウェア開発者の求人情報を毎月集めたページである)Hacker NewsのWho’s Hiringページのデータによると、他のディープラーニングフレームワークと比較して、TensorFlowが優位に立っているように見える。
はっきりさせておきたいのだが、有償の資格認定証が就職の保証になるわけではない。しかし、スキルがコモディティ化しつつあるオンライン学習の世界では、有償資格の取得は自分の能力をアピールするためのもうひとつの方法なのだ。
オンライン講座で基礎知識を構築し、私的なプロジェクトで特定の知識を構築する ― そうしたふたつのスキル構築法に加えて、有償資格はあなたが取り組んできた個人的なプロジェクトの既存のリストに素敵な付加価値を加えるもの、と私は考えている。
とは言うものも、どうやって有償資格を取得するのか。
本記事のコンテクストに即して言えば、TensorFlowデベロッパー認定資格を取得しているようなAI開発者であれば、AIモデル開発に必要な知識を習得しているだけではなく、資格試験に合格するだけの自己管理能力と仕事に対する意欲というコンピテンシーがあると見なせる。
・・・
試験対策の方法
TensorFlowデベロッパー認定資格が欲しいと思ってから、私は認定サイトを見て、TensorFlowデベロッパー認定ハンドブックを読んだ。
この認定サイトとハンドブックという2つのリソースをうけて、私は以下のようなカリキュラムを構築した。
・・・
カリキュラム ― 合格に必要なスキルを習得するために勉強したこと
私のスキルに関して特筆すべきことは、試験勉強を始める前にTensorFlowを使っていくつかのプロジェクトを構築した実践的経験があることだ。
経験豊富なTensorFlowとディープラーニングの実践者は、私が行ったのとほぼ同じペース(合計3週間)か、あるいはもっと早く以下のカリキュラムをこなせることに気づくだろう。
初学者は、必要なだけ時間をかけたいと思うだろう。しかし、覚えておいてほしいことがある:価値のあるスキルを構築するには時間がかかるのだ。
それぞれのリソースについて、タイムライン、費用(USドル)、(試験に合格するための)お役立ち度をリストアップした。タイムラインは私の経験に基づいている。
もし自分でカリキュラムを作るのであれば、以下のようなものがおすすめだ。
注記:有料のリソースについては、アフィリエイトリンクが使用されている。アフェリエイトリンク自体はリソースの価格を変えるようなものではないが、あなたがそうしたリソースのひとつを購入した場合、私は支払いの一部を受け取ることになる:その支払いは、私がこのようなリソースを作成するために使用したお金の対価である。
1.TensorFlow デベロッパー認定資格 受験者向けハンドブック
時間:1時間
コスト:無料
お役立ち度:必須
このリソースはあなたの最初のステップになるはずだ。これは、試験でカバーされるトピックの概要を示している。まずはハンドブックを読んで、それからもう一度読もう。
もしあなたがTensorFlowや機械学習の初学者なら、ハンドブックを読むと、様々なトピックがあることで恐れをなすかも知れない。しかし、心配ご無用。以下のリソースは、そんなトピックに慣れ親しむのに役立つ。
2.Courceraの「TensorFlow in Practice専門講座」
時間:3週間(上級者)〜3ヶ月(初学者)
コスト:7日間の無料トライアルの後、月額59ドル、申請により経済的援助が受けられる。Courseraにアクセスできない場合は、YouTubeで同等の無料版を視聴しよう。
お役立ち度:10/10
Courseraの専門講座は、試験(および一般的にTensorFlowを使い始めること)に最も関連するリソースだ。慎重な学生は、TensorFlow認定資格ハンドブックとこの専門講座の概要がほぼ同じであることに気づくだろう。
この専門講座はTensorFlowと機械学習の二大巨人であるローレンス・モロニーとアンドリュー・ン(※訳註4)が教えてくれる。試験の準備のためにリソースをひとつだけ選ばなければならないとしたら、わたしはこれを選ぶだろう。
この専門講座は短いビデオ形式で、できるだけ早く実践例に焦点を当てていることを、私は高く評価している。各セクションの最後にある複数のコードノートは、あらゆる実践的な学習者にとって必須なものだ。
プログラミング演習のヒント:コードの隙間を埋めるだけではなく、全体を自分で書き出してみよう。
3.Scikit-Learn、Keras、TensorFlowを使った実践的な機械学習 第2版
時間:3週間(最初から最後まで読んで演習なし)〜3ヶ月(最初から最後まで読んで演習を実施)
コスト:Amazonには様々な価格のものがあるが、私は紙の書籍を55ドルで入手した。同書のソースコードは、GitHubからすべて無料で見ることができる。
お役立ち度:7/10(一部の章が試験に関係ないという理由から)
700ページ以上ある書籍であり、基本的に機械学習のすべてをカバーしている。そのため、試験に関連していないいくつかのトピックをカバーしている。しかし、機械学習の将来のための強固な基盤を築くことに興味がある人にとっては必読の書であり、試験に合格するためだけの書籍ではないのだ。
機械学習の初学者ならば、この本を読むのは難しいと思うに違いない(そもそも初学者なのだから)。しかし、心配ご無用。焦る必要はない、役に立つスキルを習得するには時間がかかるのだ。
この本の質を知りたいのであれば、私は機械学習エンジニアの仕事に向かう朝の通勤時間に初版を読んでいたことを伝えたい。そして、通勤中に本で読んだことをそのまま日中の仕事で使っていたことが少なからずあった、と言うこともできる。
第2版では、最新のツールとそれを使う技術、つまりTensorFlow 2.xに関する記述をカバーするためにアップデートされたことを除けば、第1版と変わりはない。なお、試験はTensorFlow 2.xにもとづいている。
試験に関連する章だけで構わないのなら、以下を読むとよいだろう。
- 第10章:Kerasを使った人工ニューラルネットワーク入門
- 第11章:ディープニューラルネットワークの訓練
- 第12章:TensorFlowによるカスタムモデルと訓練
- 第13章:TensorFlowによるデータのローディングと前処理
- 第14章:畳み込みニューラルネットワークを用いたディープコンピュータビジョン
- 第15章:RNNとCNNを用いたシーケンス処理
- 第16章:RNNとアテンションによる自然言語処理
真面目な学生には、私は本全体と演習をお勧めする(あるいはすべてではなくても、あなたの興味が最もスパークするものを選択しよう)。
4.MITによるディープラーニング入門
時間:3時間(私は講義を3回分しか見ていない)〜24時間(1講義あたり1時間+復習を各1時間ずつ)。
コスト:無料
お役立ち度:8/10
世界レベルの大学が発信している世界レベルのディープラーニングの情報が得られる。そして、私は言及しただろうか。無料だということを。
最初の3つの講義、ディープラーニング(概論)、畳み込みニューラルネットワーク(通常はコンピュータビジョンに使用)、リカレントニューラルネットワーク(通常はテキスト処理に使用)は、最も試験に関連している。
しかし、熱心な学習者にとっては、全コースを受講することは悪いことではない。
GitHubで提供されている講義のラボやコード、特にTensorFlow入門に関するそれらをチェックしよう。そして繰り返しになるが、自分でコードを書くことの重要性は強調しすぎるということはない。
5.PyCharmを使い始める
時間:3時間(あなたのパソコンの速度による)
コスト:無料
お役立ち度:10/10(PyCharmを使うことが条件)。
試験はPyCharm(Pythonの開発ツール)で行われる。私は、試験前にPyCharmを使ったことがなかった。そして、少なくともある程度使いこなせるようになってから、試験に臨むことを勧める。
まずはPyCharm に慣れるために、その名も「このボタンを押すだけです」というYouTube の入門シリーズを見ていた。
しかし、以上の入門シリーズで確かめたかった主なことは、TensorFlow 2.xが問題なく動作すること、そして私のコンピュータがディープニューラルネットワークを適切な時間で実行できることだった(私のMacBook ProにはNvidia GPUが搭載されていない)。
以上をテストするために、以下の2つのTensorFlowチュートリアルを私のローカルマシン上で複製した。
どちらもローカル環境では問題なく動いていたのだが、後述するように、試験を開始してすぐに問題にぶつかった。
その他のリソース
- CourseraまたYouTubeの「deeplearning.ai 」動画 ― 試験は純粋にコードベース(Pythonのコード)だが、自分が書いているコードの裏側(線形代数、微積分)を知りたい場合は、ここの動画を適当に飛び入りで見てみるとよいだろう。例えば、ミニバッチ勾配降下が何かわからない場合は、「deeplearning.ai mini-batch gradient descent」で検索してみよう。
- TensorFlowのドキュメント ― TensorFlowの実践者になるには、ドキュメントを読めるようにしておく必要がある。わからないことがあれば、コードを書いて自分でコメントしてみよう。
- YouTube (プレイリスト)の「Coding TensorFlow 」 ― YouTubeの動画シリーズ「Coding TensorFlow 」のほとんどは、Courseraと同じインストラクターが教えている。
・・・
どのような試験対策をしていたのか?
上記のリソースを使った試験対策について、Notion(※訳註5)でアウトラインをまとめてみた。
5月中は毎朝、起床、執筆、散歩、実践的な機械学習の本を1時間読み、TensorFlowを2~3時間実践して(最初に講義を見て、その後Google Colabでコーディング演習をすべて完了)、各学習モジュールの締めくくりに対応するMITによるディープラーニング入門の講義を見ていた。
例えば、CourseraのTensorFlow in Practice専門講座におけるコンピュータビジョンのセクションを終えた後は、MITの(コンピュータ・ビジョン・アルゴリズムの一種である)Convolutional Neural Networkの講義を見ていた。
この「本を読み、コードを書き、動画講義で復習する」という三位一体のアプローチは、特に効果があることが判明した。
本で読んだ概念はCourseraの専門講座におけるサンプルコードで固められ、最終的にはMITの動画に知識と実践をまとめるのだ。
試験対策の時系列的な目安として、私は5月11日から受験勉強を始めて、6月3日に受験した。
(Notionを使った)私自身のトラッキングと手書きのブックマークによれば、1時間に平均20ページ、(気晴らしなしで)2~3時間の学習ブロックで約1週間のコース内容をこなしていた。
最終的には試験の数日前にPyCharmをダウンロードして、私がすでに経験したいくつかのサンプルコードをローカルマシンでも動作することを確認した。
・・・
試験の詳細 ― 実際の試験はどんなものか?
勉強は終わっただろうか。それでは次は何だ?
さて、まずは重要な2つの要素の説明から始めよう。
試験費用:100USドル(1回目の受験で失敗した場合は、2週間の待機後に再挑戦しなければならない。その後、試験に失敗する度に待機時間が長くなる)。
- 最初の受験で不合格となった場合は、再受験までに 14 日間お待ちいただく必要があります。
- 2 回目の受験で不合格となった場合は、再受験までに 2 か月間お待ちいただく必要があります。
- 3 回目以降の受験でも不合格となった場合は、再受験までに 1 年間お待ちいただく必要があります。
制限時間:5時間。試験開始時のエラーがなければ、私は快適に3時間以内に終了していたと思う。ただし、制限時間が十分以上に長いのは、コンピュータでディープラーニングモデルを訓練するのに十分な時間を受験者に与えるためだ(それゆえ、試験前に訓練がうまくいくかどうか確認しよう)。
試験はどのような構成なのか?
試験の構成を解説するのは不正行為になるので、この記事では多くを明らかにするつもりはない。私が言いたいのは、TensorFlow デベロッパー認定資格ハンドブックを読めば、試験の主要なセクションに関するアイデアを公平に得ることができるということだけだ。
(上記のリソースを使って)ハンドブックで紹介されているテクニックを一つ一つ練習すれば、試験は大丈夫だろう。
試験に関する豆知識
モデルの訓練 ― もしあなたのコンピュータがディープラーニングモデルを十分に速くトレーニングできない場合(合格基準の一部はトレーニングされたモデルを提出することだ)、無料のGPUを使ってGoogle Colab内でモデルを訓練することができ、訓練後それらをダウンロードできる。そして、試験に関連するディレクトリに配置し、PyCharmを使って提出することができる。
私の壊れたPythonインタプリタ – 試験対策資料ではPython3.7が必須と強調されている。私が試験対策を始めたときはPython 3.7.3だった。そして、前日までは私のローカルマシンでPyCharmを使ってTensorFlowが動いていたにもかかわらず、何らかの理由で試験開始後に(受験者のために自動的にTensorFlowの環境が作られる)試験環境が壊れてしまった。
どういうことかと言うと、TensorFlowのコードを1行実行するたびに以下のようなエラーメッセージが出るようになったのだ。
RuntimeError: dictionary changed size during iteration
今となっては、エラーの原因が試験時にインストールされるTensorFlowのバージョン(2.0.0)のせいなのか、私が持っていたPythonの特定のバージョン(3.7.3)なのかはよくわからない。
とはいえ、悪態をつきながら当該問題に関するGitHubの古いスレッドの奥深くを熱心に検索した結果、使用していたPythonのソースコード(具体的にはlincache.pyの48行目)を変更しなければならないという奇妙な修正方法を発見した。
# 修正前のlincache.pyの48行目
for mod in sys.modules.values():# 更新後のlincache.pyの48行目
for mod in list(sys.modules.values()):# 追加されたリスト()
注記:以上の変更は、試験中に実行した手っ取り早い修正に過ぎないので、長期的な効果や影響があるかどうかはわからない。
必死に検索しているうちに、PyCharm で使っている TensorFlow のバージョンをアップデート/再インストールするという方法もあることも読んだ(例:2.0.0 -> 2.2.x)。この方法を試してみたがうまく行かなかった。もっとも、うまく行かなかったのは、PyCharmの初心者たる私が犯したユーザーエラーの可能性がある。
修正を実施したら、問題なく試験を終えることができた。
・・・
試験が終わった後はどうなるのか?
試験に合格していたら、メールで通知される。「合格おめでとうございます」あるいは「残念ながら今回は合格できませんでした」以外のフィードバックはない。
試験を続けるやる気を失わせない程度に、試験を受けているあいだ、あなたが合格する可能性があるかどうかに関して、かなり明確な指標を得ることができる(モデルを提出するたびに試験合否指標は表示される)。
何はともあれ、もし合格したら、おめでとうございます!
TensorFlow認定デベロッパーネットワークに追加されたことを確認するために、必ずメールのフォームに記入しよう。
ここに登録することで、熟練したTensorFlowデベロッパーを探している人は誰でも、資格の種類、経験、地域に基づいてあなたを検索することができるようになる。
最後に、(私はまだ取得していないのだが)数週間以内に、公式のTensorFlowデベロッパー認定証とバッジがメールで送られてくる。採用面接時などに取り組んだプロジェクトと一緒に披露できるものが2つ追加されるというわけだ。
・・・
本記事著者への質問とその回答
講座を受講して、本を読んで、自分で練習するだけでもいいように思えるが、認定証は本当に必要なのだろうか?
もちろん、認定証は必要不可欠というわけではない。結局のところ、あなたが求めるのはスキルであって、認定書ではない。認定書は持っているとよいものであって、持つべきものではないのだ。
認定書は必要ないと言うのなら、あなたはなぜ取得したのか?
私は、目標に向かって挑戦することが好きなのだ。「6月3日に受験する」というように、自分の中で期日を決めておくことで、勉強するしかないという気持ちになった。
無料のリソースのみで合格できるのか?
はい、もちろんできる。TensorFlowのドキュメントを見れば、必要なスキルをすべて学ぶことができる。実際、何か練習が必要なときは、ドキュメントのサンプルコードを逐一コピーして(つまりコードの一行ごとに)、一行ずつ理解する練習をして、自力できるかどうかを確認するのだ。
なぜPyTorchではないのか?
私は PyTorch が大好きだ。しかし、GoogleはPyTorchでの認定を提供していないので、もし提供されたら、その認定資格にも挑戦するだろう(しかも楽しんで)。さらに、(PyTorch と TensorFlowの)両方のフレームワークに関して経験豊富なユーザは、最近のアップデートにより、両者が非常に似てきていることに気づくだろう。どちらかと言えば、TensorFlow はエンタープライズの世界では優位に立っている(前掲のグラフを参照)。
機械学習を知らないのだが、何から始めればいいのか?
私が書いた記事「機械学習を学ぶための5つの初学者に優しいステップ」から読むこと。
試験に合格してGoogle デベロッパー認定資格ネットワークに登録したが、次は何をすべきか?
作る時が来た!学んだ技術を使って、あなたが世界で見たいものを作ろう。あなたの作品を誰が見るかわからないので、シェアすることを忘れないでおこう。
TensorFlowデベロッパー認定資格について言及していないことはなかっただろうか?何か知りたい場合は下にコメントするか、メールで質問してください。私が答えます。
PS あなたが読むより動画を視聴するほうが好きならば、私はこの記事のビデオ版を作っているので、そちらを視聴してください。
原文
『How I passed the TensorFlow Developer Certification Exam』
著者
Daniel Bourke
翻訳
吉本幸記(フリーライター、JDLA Deep Learning for GENERAL 2019 #1取得)
編集
おざけん