ぶっきーの超・雑記ブログ

「より良く生きる」を模索する。


JDLA E資格の受験体験記(試験問題・勉強法・難易度・感想など)

こんにちは、ぶっきーです。

(※本記事へのリンクをご自身のブログに掲載して良いか、メールで聞いてくださる人が増えています。ご自由にリンクを貼ってくださってOKです) 

 

JDLAという人工知能関係の団体が提供している資格「JDLA Deep Learning for ENGINEER 」、通称「E資格」を2019/2/23(土)に受験してきました。

運よく合格してました。

 

今回はその体験記です。

今後受験を考えている方々の参考になるかと思います。

最後の方は書くのがめんどくさくなってます。

 

(2021/9/12追記)

取得から2年が経過しました。

AIエンジニアとして働く中でE資格のお陰で何か良いことがあったかどうかや、E資格に加えてやっておくと良いことなどを最後に追記してみました。

 

E資格を受けての感想

まず総括代わりの感想を。

 

「受けて良かったけど、受けなくても良かったな」

「時間を巻き戻せたら、多分受けないんじゃないかな」

 

これが正直な気持ち。

理由は以下。

 

受けて良かったと思う理由

1.勉強の機会が得られた

逆に言えば、E資格なんて受けなくても自分を追い込んで勉強できる人は受けなくて良い。

ぶっちゃけこの記事で紹介するE資格対策の本を独学すれば、E資格合格レベルのスキルは身に付きます。

それでKaggle(※)にでも取り組んで実績を積んだ方が機械学習エンジニアとしては実りが多い気がします。

 

※Kaggleとは、機械学習エンジニアやデータサイエンティストが賞金を懸けて課題に取り組む海外のサイトです。機械学習を一通り勉強した人は必ず登録しておきましょう。

 

2.認定講座の一部内容が秀逸だった

僕が受講した認定講座はジョブカレ

E資格取得希望者向けパッケージプランというオンライン学習コースを選びました。

 

スクールに通うのではなく動画を視聴するタイプなので自分のペースで学べます。

 

このコースには3つの講座(Python&数学、機械学習、深層学習)が含まれていますが、その中でも特に機械学習講座が秀逸でした。

「どのアルゴリズムはよく使われる」「現場ではこのような説明ができないといけない」といった感じの現場感覚を頻繁に交えて教えてくれます。

 

Python&数学と深層学習の講座は可もなく不可もなくといったところ(ぶっちゃけ本を独学すれば身に付くような内容だった)。

まあとにかく機械学習講座が良すぎた。

 

受けなくても良かったと思う理由

1.受験するための金額が高い

ご存知の通りE資格は認定講座を受講しなければ受験できません。

僕の場合は認定講座の中でも比較的安いジョブカレで約20万円、受験料で3万円強、本代で約1万5千円、全部合わせて約25万円かかりました。

これをすべて自腹は結構痛かったっす。

 

2.E資格を取得したところで、年収が上がるか不明

E資格は僕が受験した2019年の段階では認知度の低い資格なので、持っていてどの程度のご利益があるかは完全に未知数。

「Kaggleで入賞しました」みたいな実績の方がまだ就職市場では評価される気がする…(2019年時点での個人的な感想)。

ぜひともJDLAには頑張ってもらってこの資格の価値を高めていってほしいところ。

 

なおこの記事ではE資格や認定講座に対して結構批判的なコトも書いてますが、それは上述のように「頑張ってE資格を普及させてほしい」と願う気持ちがあるからですのでお気に障った関係者の方がもしいらっしゃったらご容赦ください。

僕も「流石E資格取得者!」と言われるように頑張りますので。

 

E資格を受けるか迷っている人へ

というわけでE資格を受けるかどうか迷っている人に僭越ながらアドバイスすると、勉強の機会が欲しい&お金があるならば受けてみれば良いのではないでしょうか。

正直積極的におすすめはしません。

 

また、認定講座でしか得られないもの、あるいは認定講座を受けることで効率的に学べるものも間違いなくあります(上述したジョブカレの機械学習講座で得られる現場感覚とか)。

 

お金に関しては会社から出してもらえるパターンもあるでしょうし、ジョブカレを使って転職すれば受講料の分だけは返金してもらえたりもするようです。

この辺の制度を利用できるのならカジュアルに受験してみても良いのでは?

 

「資格なんていらん。人工知能/機械学習のスキルだけよこせ」という方は後述するE資格対策用の本を独学するのが最もコスパが良いと個人的には思います。

もちろんKaggleが楽しい人はそっちに集中するって選択肢も全然アリだと思います。

日本ローカルのE資格とは違い、Kaggleの実績は全世界でアピールできますし!

 

E資格の難易度は?

正直そんなに難易度は高くないです。

認定講座修了者でないと受験資格がないとは言え、受験者の7割弱が受かっているので。

 

認定講座も普通に勉強していれば普通に修了できます。

ジョブカレの場合は機械学習講座の試験が少し難しかったかな、程度でした。

 

勉強開始前の僕のスキル

  1. 数学:微積、線型、確率統計は分かる(理系院卒程度)
  2. プログラミング:FORTRANを数年
  3. Python:0年
  4. 機械学習/人工知能の知識:『深層学習(岡谷)』を読んだことアリ

 

勉強法

ジョブカレの各講座をメインに勉強しました。

各講座の最後にある試験をクリアしてすべて修了しないとE資格の受験資格は得られないので注意です。

 

以下、各講座での勉強法。

 

Python

2019年元旦からPython入門者向けの本を独学開始。

ところどころ手を動かしながら3日程度で終了。

ジョブカレのPython講座は2倍速で1回流し見した程度。

 

プログラミング経験者ならPython未経験であってもこの程度の勉強で良いのではないでしょうか。

以降の講座でもPythonはコーディングのたびに出てくるので、この時点で習熟してなくても大丈夫ですよ。

 

数学

ジョブカレの数学講座の資料と講座2倍速をまず流し見。

理系だったので数学にあまり不安は無いつもりだったが、自分が知らない内容が講座の中で結構出てきたので、穴を埋めるような形でネットで調べながら勉強。

参考書などは特に購入せず。たまに学生時代の統計や線形代数の本を参照したくらい。

 

修了のための試験問題は簡単でした。

 

文系出身の方はもっとじっくり講座を利用して勉強するか、機械学習/人工知能向けの参考書(後述)を1冊買って腰を据えて取り組むべきだと思います。

 

機械学習

機械学習を学ぶこと自体が初めてだったのと講座の内容が秀逸だったこともあり、2倍速で3周も視聴。

資料は6周くらい読んだ。

特に参考書などは使わず。たまに『深層学習(岡谷)』や『Python 機械学習プログラミング(S. Raschka)』を参照したくらい。

 

1月30日頃に修了。試験問題はコーディングが半分近くあり、時間的に結構厳しかったです。受験の時は気合を入れて臨まないと普通に落ちる人もいると思われます。

再試験にはお金がかかっちゃいますし、準備万端で臨んでください。

 

深層学習

資料の作りが若干雑でガッカリしながらも講座を2倍速で2周、資料を10周ほどして2月10日頃に修了。試験問題自体は簡単でした。

 

こうしてジョブカレの全ての講座を修了して安心したのもつかの間、「E資格合格のためには認定講座の内容だけでは足りない」という噂をこのタイミングで耳にして焦る。

これはジョブカレの内容が他の講座と比べて劣っているとかではなく、どの認定講座もE資格の範囲を完全にカバーできてはいないらしい…

 

この時点でE資格本番まで残り2週間弱。

 

急いで『深層学習(Ian)』を手に取るも分厚い上に日本語が読みにく過ぎて投げる。2日ほど浪費。

 

ワラにもすがる思いで『ゼロ作1・2』(後述)を購入、2/23のE資格試験本番まで必至で取り組みなんとか2周読む。

本当は読みながらコーディングもしたかったが時間が無さ過ぎてできず。

 

僕が行った勉強法は以上。

 

E資格試験本番の雰囲気

某テストセンターで受験。

TOEFLとか就活の筆記試験(SPIだっけ)とかを受けるあそこです。

 

漢検などの他の資格を受ける人たちも同じ会場で同時刻に試験開始となります。

だから他の人が速攻で終わっても焦らないように!

 

どんな問題が出たか

覚えている範囲でメモしておきます。

本当にメモ書き程度なので参考まで。

 

・特異値分解
実際は固有値さえ出せればOKだった。
でも特異値はAA.Tの固有値の平方根になることを忘れずに。

 

・ノルムの一般式

 

・KLダイバージェンス
KLダイバージェンスと交差エントロピーの関係とか、KLダイバージェンスの派生とか押さえておきたい。

JSダイバージェンスなるものも選択肢に出てきた。

 

・情報エントロピーの定義

 

・正規分布の定義
どこにマイナスが付いてるかとか、どこが2乗になってるかとか忘れがちなので注意。

 

・im2col
第1回E資格試験でも問われたらしいヤツ。
今回はcol2imの方が出るかと思ったけど外れた(でもそのうち出ると思うので勉強しとくべき。『ゼロ作』に載ってます)。

 

・ベルヌーイ分布

 

・オッズ
ある確率pに対して、p/(1-p)をオッズと呼ぶらしい。
そこでインプットxや重みW等でオッズを表すとどうなるか問われた。

知らんがな。

 

・Batch Normalizationレイヤー
このレイヤーを入れるのは活性化の前?後?それとも両方?

 

・k-means++
k-meansしか覚えてなかったので意味不明だった。
実装までできるようになっておくこと。

 

・error-iterationの図の読解
複数モデルについて学習が進むにつれてのerrorの推移が示され、そこから読み取れることなどを選ぶ問題。
結構ボリュームがあったのでerror-iteration(エポック数)の図は読み慣れておいた方が良い。

 

・交差エントロピー
定義式を問われた気がする(tとyどっちがどっちか忘れがちなので注意)
また逆伝播の式も覚えておくこと。

 

・Momentum, AdaGrad, RMSProp

このくらいは式まで覚えましょう。

Adamになると大変だけど…

 

・IOU
物体検知の一手法らしいけど全く知らない単語だった。何それ美味しいの?
しかも5問前後問われた気がする。

壊滅。

 

・ワンショット学習
ワンショット学習を表すグラフ図はどれか問われた。

知らんがな。
ワンショット学習の特徴を問う出題も。

 

・シグモイド
直接問われたかは忘れたが、シグモイドユニットの逆伝播の表式は押さえておく必要があった記憶。
同様にtanhユニットについても。

 

・L1,L2正則化
それぞれの特徴、正則化を導入した時に損失関数の勾配がどうなるか。

 

・双方向RNN
計算グラフで表すとどうなるか。実装するとどうなるか。

 

・GRU
GRUのグラフを見てリセットゲートと更新ゲートがどれか言えるように。
重みのサイズを選ぶ問題も。(INPUT_SIZE + HIDDEN_SIZE, HIDDEN_SIZE*2)だよね?
あとGRUにCECは含まれてる?とかも問われた。

 

GRUについては色んな図がありますが、以下の図が覚えやすいのでおすすめ。

 

f:id:book_buku:20190304222207p:plain

 

この図を覚えた後にrやzなどの数式を図と対応付けながら覚えた方が良い。個人的には。

いきなり数式は多分頭に入らない。

 

・逆伝播の計算
掛け算のユニットに対して逆伝播で微分を計算するとどうなる?みたいなやつ。

 

・SVN
カーネル法についてかなり深く問われた。
数式レベルでの理解が必要。

僕は分からなかった。

 

・識別モデルと生成モデル
xを入力データ、Cをクラスとすると、識別モデルは条件付き確率で表すとP(x|C)とP(C|x)のどっち?じゃあ生成モデルは?
NNを用いた生成モデルの例は?とか聞かれて答えられるように。

 

・GAN
派生のやつも。
選択肢にはLAP GAN、Cycle GANなど知らない奴らが出てきた。
DCGANが提案した指針が何かも問われた。
Conditional GANとかいうやつのグラフ図も問われた。

知らんがな。

 

・GoogLeNet
Inceptionモジュールの特徴が問われた気がする。

 

・プーリング
Convolution層への入力やフィルター数、ストライド等が与えられた上で、
プーリング層の出力サイズはどうなる?みたいな問題。

 

・R-CNN
特にFaster R-CNNについて詳しく問われた。
Region Proposal部分のアルゴリズムなんか知らんよ…

 

・YOLO
どんな特徴があるか。検出速度は速いのかどうかとか。

 

・DQN
価値反復法の式を問うところから始まり、DQNに至るという流れで出題。
固定するパラメータは第一項だけ?第二項だけ?それとも両方?みたいなとこまで問われた。

 

・Attention, GNMT
特にGNMTについてかなり詳しく問われた。
ゼロ作2の一節でも説明されていて読んで覚えていたが解けなかった。

 

・方策勾配法

なんか式まで問われた気がする。

解けなかった。

 

使うと良い参考書

ゼロから作るDeep Learning1、2

人工知能のライブラリを使わず、numpyのような基本的なライブラリだけで機械学習プログラミングを行っていくというコンセプトの本。

 

実はE資格でも人工知能系のライブラリは問われないので(少なくとも2019年2月の試験までは)、対策本としてはうってつけだと思う。

 

解説もこの上なく分かりやすく、じっくり取り組めば詰まるところはほとんど無いと思う。

数学も基本から説明してくれるので高校数学さえ分かっていれば文系の方でも読めます。

Pythonの文法程度の知識は必要だけれど。 

 

だいたい2週間あれば1巻と2巻両方を一通り理解できるかな、くらいのボリューム。割ける時間次第ですが。

 

なおE資格を受けるにあたって僕が腰を据えて取り組んだ本はこの本だけでした。

おそらく理系の人がE資格合格を狙うなら認定講座に加えてこの本をやるだけでOKです。

 

人工知能プログラミングのための数学がわかる本

僕は使わなかったけど、数学に不安がある人や時間がある人は読んだ方がいい。

特に大学で数学を使わなかった人。

 

機械学習には線型代数、微分積分、確率統計あたりの数学が必要になってきますが、それぞれの科目に対して1冊ずつ本を用意して学ぶのは社会人にはきつ過ぎます。

なのでこの1冊で済ませるのが現実的な選択肢になるかと。

 

Python 機械学習プログラミング

これは辞書的に使った本。

ジョブカレの機械学習講座やディープラーニング講座を学んでいてもっと詳しく知りたくなった時や、別の角度からの説明を読んでみたい時に参照していました。 

 

認定講座と比べると、アルゴリズムを数式レベルで詳しく解説してあります。

日本語も読みやすくて良い。

 

辞書的に使うと言うと以下の本を連想する方もいるかもしれません。

 

この本はJDLAのサイトでも紹介されてますよね。

しかし個人的にはE資格合格を目指す上でこの本は不要です(少なくとも2019/2実施分については)。

もちろん理解しておけばより高得点を狙えはするでしょうが、日本語訳が読み難く、とにかく社会人が取り組むにはコストパフォーマンスが悪すぎます。高いし。

 

研究者を目指す、或いはじっくり取り組むための時間がある方はこの本を使ってみるのも良いでしょう。しかしそれだけ本気で深層学習に取り組むのならば原著である以下の英語版を読むべきかなと。

日本語訳の方が特別読みやすいわけでもない上に、英語版を読んでおけば論文や海外サイトを読むためのリテラシー(この技術は英語でこう表すんだ!といった知識など)が身に付き一石二鳥です。

 

とりあえずここまででおすすめした4冊を読めば、認定講座と同等か以上の内容を学べます。

合計で1万円程度であり、軽く20万以上する認定講座を受けるよりもずっとお得なので、E資格の受験資格が不要な方は本を読んで自学した方が良いです。

 

持っておくと役に立つ本

僕の場合はさらに以下の3冊を時折参照しながら学習しました。

ご参考まで。

一番下の『深層学習(岡谷)』はJDLAのサイトでも紹介されている良著。

コンパクトにまとまっていて、数式を追うのが苦にならない人にとっては知識を整理するために打ってつけな本と言えます。

仕事をしながらでも1週間程度で読めるボリュームです(最後の章のボルツマンマシンについては第2回E資格試験では出なかったので読まなくてよいかも)。

 

認定講座受講前に予習として取り組むも良し、講座と並行して理解を深めるも良し、講座後に知識を整理するために使っても良し。

 

E資格や認定講座に改善してほしい所

以下はE資格や認定講座に対する愚痴僕の考える改善点。

 

受験費用を安くしてほしい

資格一つ取るのに最低でも約25万円とか高すぎるっぴ。

 

特に認定講座に20万の価値があったかと言われると正直微妙なんですよね…上で紹介した参考書を読んでおけば、認定講座でえられた知識はほとんど身に付いちゃいます。

上述の通り機械学習講座だけは良かったけど。それ以外は本当に微妙と言わざるを得なかった。

 

結果的にはE資格の受験資格を得るためだけに20万払ったような形になってしまった感。

 

定義不明な単語を試験本番で出すのはやめてほしい

これはE資格試験本番の話。

特に実装問題で定義不明な単語がたびたび出てきたと記憶している。

雰囲気で分かるのも一応あったけど試験問題としていかがなものかと…

 

あと試験問題の文字や画像の解像度が部分的に統一されておらず、とてもお粗末な作りで所々読みづらかった。

論文などからキャプチャしてそのまま切り貼りしただけ、と言う感じです。

なんというか受験者に対する誠意を感じられませんでした。

 

受験料3万円も払っておいてなんでこんなお粗末な試験をうけさせられてるんだ、体裁を整える人件費も確保できないのだろうか、人一人が半日程度作業すればもっとずっとマシになりそうなものだが、と試験中に疑問が拭えず、また同時にわびしい気持ちになった。

改善を願います。

 

事前に配布された例題集からほとんどそのまま本番で出題するのはやめてほしい

これをやってしまうと資格試験としての意味が無いでしょう。

受験者が例題集にover fittingしてしまう可能性に問題作成者は思い至らなかったのだろうか

人工知能においては「汎化誤差は小さくしなきゃだめ」ってさんざん言われてるはずだけど、人間でも同じですよね。

現場で役に立たない合格者を量産することに繋がりかねないと思うので、JDLAには改善を望みます。

 

なおこのJDLAから配られていると言われる例題集には誤りがいくつも含まれています。

つまり学習者が例題集に対して過学習するどころか、誤った知識を覚えてしまう可能性があるわけです。

第1回試験の時に例題集の誤りについては指摘されていた(らしい)にも関わらず、約半年後となった今回の時点でも全く修正されておらず、曰く付きのまま受験者たちに配布するというのはちょっと杜撰過ぎませんか。

 

まあとにかく、前項とも関連するけど今のE資格の試験問題等は手抜き感で溢れてるんですよ。

JDLAの今の仕事には「日本に良質の機械学習エンジニアを増やす」という熱意が全く感じられない。

なのにいっちょ前に高額な受験料や講座費用を要求してくる。

このお粗末さじゃ「E資格はただの資格ビジネス」なんて揶揄されてもしょうがないんじゃないですかね、というのが受験後の率直な印象なのです。

 

まとめ

最後は厳しいことも言いましたけど、こんな感じかな。

僕自身合格者として「E資格の格がもっと上がってほしいな」と心から思っているわけなのでご了承ください。

まあとにかく、スキルや実績が欲しい人は本を独学した上でKaggleに取り組むのが現状では無難な選択に思えます。

 

「もっとこういう情報よこせ」とかあればコメントお願いします。

思い出せる限りで対応します。

 

(追記)取得から2年後の感想

E資格の取得から2年、AIエンジニアとして働く中でE資格のお陰で何か良いことがあったか等を、経験に基づいて書いておきます。

E資格を受けるかどうか迷っている方の参考になれば。

 

面接において

僕はこの2年の間AI系の案件の面接(面談)を計5回ほど受けてきました。

 

その中で「E資格って何?」と聞かれたのが1回で、大半の企業の方はE資格の存在を認知してらっしゃいました。

ただ同時に、「E資格が実務レベルのスキルを保証してくれる資格ではない」ということも企業側の人達は認識されていました。

つまりこの資格を持っているからといってAI系のお仕事に簡単にありつける、と思わない方が良いですね。

E資格についての話を掘り下げられることもほとんどなかったです(受験にお金かかるよね、みたいな話が出た程度)。

 

どちらかというとやはり企業側では実務経験のほうを重視されていて、僕の場合は比較的経験のある画像認識系の業務経験を掘り下げて聞かれることが多かったです。

 

加えて、Kaggleの実績や大学時代での勉強内容(特に数学の素養)を聞かれることもよくありました。

AI系の実務経験のない方や学生の方はKaggleを頑張ることで周りの同じような経歴のライバルたちに差をつけることができるかもしれません。

 

面接での優先順位としては、「実務経験 > Kaggleの実績 > 数学の素養 > E資格」の順で重視されるという感じですね。

これら上位の3つを持っている人はE資格を取ったとしても、そのご利益はあまり感じられないかも、というのが実感です。

 

実務において

本記事でも紹介した『ゼロ作1・2』、『深層学習(岡谷)』、『Python 機械学習プログラミング(セバスチャン)』の4冊から得た知識は実務でも役立っています。

E資格が無ければこれらの本を読み込むことはなかったわけなので、やはり実務において一定のご利益はあるかなと。

 

自分は深層学習系の仕事ばかりやっているので、機械学習講座の内容が直接的に役立つことは多くないのですが、人によってはむしろ逆に(非深層学習の)機械学習の内容が実務に役立っているという感想になるかもしれませんね。

 

E資格に足りないモノ

Pytorch, Tensorflowの知識

AI系の仕事の中でも特に深層学習系の仕事に就く場合、関連するPythonライブラリ(TensorflowやPytorchなど)についての理解は必須になります。

E資格ではこれらのライブラリについては問われないため、どこかで補完する必要があります。

認定講座によってはこれらのライブラリについても併せて学べるコースがあるため、そういった講座を選択するのが一つの手でしょう(しかしただでさえ高い講座料がさらに割高になる傾向があります)。

 

なお個人的なお勧めライブラリはTensorflowよりもPytorchです。

論文を読んでいて、その実装にPytorchが用いられていることが多いためです。

もちろん時間が経てばTensorflowによる実装も誰かが作って公開してくれますが、先端的なモデルをいち早く使いたい場合はPytorchが良いのではないでしょうか。

両方分かるのが一番ですけどね。

自分は「Pytorchによる発展ディープラーニング(マイナビ)」という本で独学して補完しました。

 

Tensorflowに関してはTensorflowデベロッパー認定資格というものがあるため、そちらを受験してみる手もあります(受験料は1万円ちょいで、E資格のように認定講座を受ける必要はないので安上がりです)。

(非深層学習の)機械学習を使う予定が無く、深層学習だけを使うことが前提の方の場合、E資格を受けずにこのTensorflowの資格だけを受ける手もあるでしょう。

受験費用が安いにもかかわらず履歴書上ではE資格と同じAI系の資格ですし、何よりE資格では保証されない深層学習系ライブラリについての知識をアピールすることができるため、実戦力重視の企業の方からはむしろTensorflowデベロッパー認定資格の方が魅力的に映る気がします。

 

英語論文を読む能力

通常のエンジニアの業務では英語サイトや英語文献に当たって調査を行うことが度々ありますが、AIエンジニアの業務ではそれ以上に英文読解力が求められます。

なぜなら最新の研究を参考にするために英語論文に当たることが日常茶飯事であるためです。

英文を読むことに抵抗を感じていては業務に支障が出ると言っても過言ではありません。

しかしE資格では当然ながら、この英文読解力を鍛えることができません。

 

そこで画像認識か自然言語処理のどちらか興味がある方についてだけでも、現在よく用いられているモデルについての論文1本と、最も新しいサーベイ論文(最近の研究動向をまとめた論文)を1本、計2本は読んでおくと良いでしょう。

技術的なキャッチアップという意味だけでなく、これらの分野においてどのような英単語が良く用いられるのかを知ることで、今後ほかの論文を読む時にも引っかかりが減り、読むスピードがアップするはずです。

 

総括

上記を総括すると、結局2年経った今でも「E資格は無理に取得するほどの資格ではない」という認識に変わりはありませんでした。

特に学生の方や会社から受験のための補助金が出ない方などは、本記事で挙げた書籍を独学され、そのあとはKaggleで実績を積まれた方がよっぽど安上がりですし、面接のアピール力においても、実務でのお役立ち度においても勝るでしょう。

資格取得者としてはE資格のネームバリューがもっと上がってほしいのが本音ですが、実情はこんな感じだと思います。

 

以上、おしまい。

ぶっきーでした。