- 技術 💻
E資格とは|試験内容・合格率・G検定との違いとNumPyで解く要点
結論
E資格は、深層学習を理解して実装できるかを問うJDLAのエンジニア向け資格です。認定プログラムの修了が受験の条件です。
この記事でわかること
- 試験の形式・受験料・2027年の日程と合格率16回分
- G検定との違い表とシラバス5分野・22項目の範囲
- 分野別の自作小問19問をNumPyで解いた出力
E資格は、受ける前に「認定プログラム」という講座を修了し、その修了から2年以内にテストセンターで受験する流れです。
flowchart TD
A[JDLA 認定プログラム<br>を修了する] --> B[2年以内に申し込む<br>ピアソン VUE]
B --> C[テストセンターで受験<br>120分・多肢選択]
C --> D[約3週間後に<br>メールで結果]
D --> E[合格者は<br>CDLE に参加できる]
急いでいる人向けに、よく調べられることの答えを先にまとめます(2026年10月23日時点)。
| 知りたいこと | 答え | 詳しい節 |
|---|---|---|
| E資格とは | JDLA が認定する深層学習のエンジニア向け資格 | E資格とは |
| 受験資格 | 認定プログラムを試験日の過去2年以内に修了 | 受験資格 |
| 試験の形式 | テストセンターの CBT、120分、100問程度 | 試験の概要 |
| 受験料(税込) | 一般 33,000円・学生 22,000円・会員 27,500円 | 試験の概要 |
| 次の試験 | 2027年2月19日〜21日(申込は12月1日から) | 日程 |
| 合格率 | 2026年第2回は 67.04%(16回で 63〜78%) | 合格率 |
| G検定との違い | G検定は活用する人向け、E資格は作る人向け | G検定との違い |
| 出題範囲 | シラバス E2026#2〜(5分野) | シラバス |
| フレームワーク | 試験の始めに PyTorch か TensorFlow を選ぶ | フレームワーク |
確認環境:試験の形式・受験資格・受験料・2027年の日程・シラバスの版と大項目・フレームワークの動作確認済みの版は JDLA の「E資格(エンジニア資格)」のページ、2026年第1回・第2回の受験者数・合格率・科目別平均得点率・過去16回の推移は JDLA の結果発表のお知らせ(2026年3月13日・9月18日)、申込の締め切りは「2026年 第2回 E資格」受験申込開始のお知らせ(2026年6月1日)、試験の時間配分・持ち物・電卓・メモ用紙・予約変更・再受験の決まりはピアソン VUE の JDLA 試験のページ、結果の通知・合格証・CDLE は JDLA の「よくあるご質問」、認定プログラムの仕組みは JDLA の認定プログラムのページ、G検定の値は JDLA の「G検定」のページと「2026年 第5回 G検定」の結果発表で確かめました。分野別の小問はすべて自作で、JDLA が動作確認に使った版と同じ NumPy 2.4.5(Python 3.11.15、Ubuntu 24.04.4 LTS)で実行した出力を載せています(確認日 2026年10月23日)。
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「E資格とは|試験内容・合格率・G検定との違いとNumPyで解く要点」
E資格とは(JDLA Deep Learning for ENGINEER)
この節では、E資格がどんな資格で、誰に向いているのかが分かります。
E資格は、一般社団法人日本ディープラーニング協会(JDLA)が実施する、ディープラーニング(深層学習)のエンジニア向けの資格試験です。 正式な名前は「JDLA Deep Learning for ENGINEER」で、E は Engineer の頭文字です。JDLA は試験の目的を「ディープラーニングの理論を理解し、適切な手法を選択して実装する能力や知識を有しているかを認定する」と説明しています。
同じ JDLA の資格には、AI を活用する人向けの G検定(ジェネラリスト検定)もあります。E資格は、モデルを作る・改善する側の知識(数学・アルゴリズム・実装・開発環境)を問う点が違います。
1理論と実装の両方を問う
確率・統計や誤差逆伝播の理論に加え、Python とフレームワークのコードを読む問題が出る
2受験の前に講座の修了が要る
JDLA が認定した講座(認定プログラム)を、試験日の過去2年以内に修了した人だけが受けられる
3年2回、2月と8月に実施
2018年から16回行われ、累計の合格者は 11,550名(2026年第2回まで)
対象は、機械学習のモデルを作るエンジニアや研究・開発の担当者、深層学習を体系的に学びたい学生です。2026年第2回の合格者の職種は、JDLA の発表で「情報システム・システム企画」が 32.02%、「研究・開発」が 28.37%、学生が 14.47%でした。年代では 20代が 43.26%、30代が 28.79%、40代が 14.75%、50代が 8.99%で、10代と60代の合格者もそれぞれ15名いました。
E資格の試験の概要(形式・時間・問題数・受験料)
この節では、試験がどんな形で行われ、いくらかかるのかが分かります。
JDLA とピアソン VUE の案内をまとめた表です(2026年10月23日時点)。
| 項目 | 内容 |
|---|---|
| 主催 | 一般社団法人日本ディープラーニング協会(JDLA) |
| 受験資格 | JDLA 認定プログラムを試験日の過去2年以内に修了 |
| 実施の方法 | 全国の指定のテストセンターで受ける CBT(パソコンで解答) |
| 試験時間 | 120分(機密保持の同意とアンケートの15分を足して計135分) |
| 問題 | 知識問題(多肢選択式)100問程度。Python とフレームワークのコードの問題を含む |
| 受験料(税込) | 一般 33,000円・学生 22,000円・JDLA 会員 27,500円 |
| 実施の時期 | 年2回(2月・8月。各回3日間のうち1枠を予約) |
| 申込先 | ピアソン VUE の E資格の受験サイト(個人はクレジットカード払い) |
| 結果 | 試験のおおよそ3週間後までにメールで届く。分野別の得点率も付く |
| 合格点 | JDLA の公式ページ・よくあるご質問に記載なし |
会場の決まりは、ピアソン VUE の案内によると次のとおりです。
- 本人確認書類を2点出します。予約した氏名と書類の氏名が違うと受けられません。
- 電卓は画面上の一般電卓(関数電卓ではない)を使います。自分の電卓は持ち込めません。
- メモは、受付で借りるホワイトノート1枚と水性ペン2本を使います。自分のメモ用紙は使えません。
- 予約の変更・取り消しは、受験日時の24時間前まで(カスタマーサービスでは前の営業日の18時まで)です。
- 同じ受験期間に受けられるのは1人1回です。フレームワークを選び間違えても、その期間に受け直すことはできません。
ピアソン VUE のページでは、CBT の操作に慣れるためのサンプル試験も公開されています。
E資格の受験資格(JDLA認定プログラム)
この節では、受験の条件になっている認定プログラムの仕組みが分かります。
E資格を受けるには、JDLA 認定プログラムを「試験日の過去2年以内」に修了している必要があります。 認定プログラムは、民間の講座や教育機関の講座のうち、JDLA がシラバスを網羅しているかを審査して認めたものです。受講の申し込みや料金・期間・形式(オンラインか通学か)は、各事業者に直接問い合わせます。一覧は JDLA の「認定プログラム事業者一覧」のページに載っています。
| 決まり | 内容(JDLA の案内) |
|---|---|
| 修了の期限 | 修了日から受験日までが2年以内 |
| 予約のときに入れるもの | 修了者ナンバー・認定プログラム事業者名・修了日 |
| 旧シラバスの講座の修了者 | 2年以内の修了なら受験できる |
| G検定の合格 | 不要(G検定に合格していなくても受験できる) |
| 不合格だったとき | 修了から2年以内なら次の回に再受験できる |
| 講座の認定 | 2年ごとに更新審査。シラバスの改訂に合わせて講座も改める |
修了者ナンバーが届かないときや、登録したメールアドレス・氏名を変えたいときは、受講した事業者に連絡します。JDLA の結果発表のお知らせによると、認定プログラムには厚生労働省の教育訓練給付制度の対象になるものがあり、条件を満たすと受講料の最大70%が支給されます。対象の講座かどうかは、JDLA の「個人向け助成」のページと各事業者で確かめます。
「独学で E資格を受けられるか」の答えは、受験には認定プログラムの修了が必須なので受けられない、です。 ただし、講座の前後に自分で数学や実装を学ぶことはできます。この記事の後半の小問は、そのための材料です。
E資格の日程と申し込み方法(2026年・2027年)
この節では、次の試験がいつで、いつまでに何をすればよいかが分かります。
JDLA が発表している日程です(2026年10月23日時点)。
| 回 | 試験日 | 申込期間 |
|---|---|---|
| 2026年第1回(E2026#1) | 2026年2月20日(金)〜22日(日) | 終了(結果発表 3月13日) |
| 2026年第2回(E2026#2) | 2026年8月28日(金)〜30日(日) | 終了(結果発表 9月18日) |
| 2027年第1回(E2027#1) | 2027年2月19日(金)〜21日(日) | 2026年12月1日(火)〜受験日の前日23:59 |
| 2027年第2回(E2027#2) | 2027年8月27日(金)〜29日(日) | 2027年6月1日(火)〜受験日の前日23:59 |
申込期間は受験日の前日までですが、席は先着順の予約です。2026年第2回の案内では、8月第2週ごろまでの予約が勧められていました。学生用のプロモーションコードや会員用のバウチャーには、申込期間より早い締め切りがあります(2026年第2回では、会員用バウチャーの申請が8月3日、学生用プロモーションコードの申請が8月15日まで)。
認定プログラムを修了する
修了者ナンバーと修了日を控える。修了日から受験日まで2年以内であること。
割引を使うなら先に申請する
学生はプロモーションコード、会員はバウチャー。発行に日数がかかり、締め切りが早い。
ピアソン VUE で予約する
E資格の受験サイトでアカウントを作り、会場と日時を選ぶ。修了者ナンバー・事業者名・修了日を入れる。
当日、テストセンターで受ける
本人確認書類2点を出す。最初に PyTorch か TensorFlow を選び、120分で解く。
結果のメールを待つ
おおよそ3週間後までに届く。4週間たっても届かなければ JDLA に問い合わせる。
E資格の合格率と受験者数の推移
この節では、これまでの16回の合格率と、科目ごとの平均の得点率が分かります。
JDLA の2026年9月18日の結果発表に載っている、2018年からの全回の値です。
| 回 | 受験者数 | 合格者数 | 合格率 |
|---|---|---|---|
| 2026 #2 | 1,062 | 712 | 67.04% |
| 2026 #1 | 1,317 | 911 | 69.17% |
| 2025 #2 | 1,039 | 730 | 70.26% |
| 2025 #1 | 1,043 | 712 | 68.26% |
| 2024 #2 | 906 | 600 | 66.23% |
| 2024 #1 | 1,194 | 867 | 72.61% |
| 2023 #2 | 1,065 | 729 | 68.45% |
| 2023 #1 | 1,112 | 807 | 72.57% |
| 2022 #2 | 897 | 644 | 71.79% |
| 2022 #1 | 1,327 | 982 | 74.00% |
| 2021 #2 | 1,170 | 872 | 74.53% |
| 2021 #1 | 1,688 | 1,324 | 78.44% |
| 2020 #1 | 1,042 | 709 | 68.04% |
| 2019 #2 | 696 | 472 | 67.82% |
| 2019 #1 | 387 | 245 | 63.31% |
| 2018 | 337 | 234 | 69.44% |
16回の合格者を足すと 11,550名で、JDLA が発表している累計の合格者数と一致しました。受験者の合計は 16,282名で、全回を通した合格率は 70.9%です。
科目別の平均得点率
結果発表には、4つの科目ごとの平均得点率も載っています。2026年第2回は、新しいシラバスが使われた最初の回です。
| 科目 | 2026年第1回 | 2026年第2回 |
|---|---|---|
| 応用数学 | 60.48% | 60.90% |
| 機械学習 | 59.91% | 60.07% |
| 深層学習 | 60.74% | 62.32% |
| 開発環境 | 79.46% | 70.00% |
合格率は7割前後ですが、平均の得点率は応用数学・機械学習・深層学習がどれも6割ほどです。 受験者は全員が認定プログラムを修了した人なので、合格率の高さは「講座で学んだ人のうち約7割」という意味です。合格点は公式に示されていないため、どの科目も6割を下回らないように準備するのが目安になります。
E資格とG検定の違い
この節では、G検定とどちらを受けるか、どんな順番がよいかが分かります。
JDLA の2つの資格は、AI に対する立ち位置が違う
JDLA の E資格・G検定のページの記載(2026年10月23日時点)
| 項目 | G検定 | E資格 |
|---|---|---|
| 対象 | AI を活用する人(ジェネラリスト) | AI を実装する人(エンジニア) |
| 受験資格 | 制限なし | 認定プログラムを2年以内に修了 |
| 形式 | オンライン100分・会場120分、145問程度 | 会場(CBT)120分、100問程度 |
| 受験料(税込) | 一般 13,200円・学生 5,500円 | 一般 33,000円・学生 22,000円 |
| 回数 | 年6回(2026年) | 年2回 |
| 最近の合格率 | 76.97%(2026年第5回) | 67.04%(2026年第2回) |
| 問われる中身 | AI の技術から法律・倫理までの幅広い知識 | 確率・統計・情報理論の計算、Python とフレームワークのコード |
| シラバス | G2024#6〜 | E2026#2〜 |
G検定の合格は E資格の受験の条件ではありません。 JDLA のよくあるご質問にも「G検定に合格していなくても E資格を受験できる」とあります。AI の全体像から入りたい人は G検定を先に、すぐに実装の力を付けたい人は認定プログラムから始める、という選び方ができます。
E資格の出題範囲(シラバス E2026#2〜)
この節では、試験で何が問われるのかを、公式のシラバスの項目で確かめられます。
2026年第2回(E2026#2)から、新しいシラバスが使われています。 JDLA のページでは、新しいシラバスは「E2026#2〜」、それまでのものは「E2024#2〜(E2026#1 まで)」として PDF で配られています。新しいシラバスの PDF は 2025年9月19日に公開され、2025年10月14日に更新されています。細かな学習項目とキーワードは PDF で確かめます。JDLA のページに載っている大項目と中項目は次のとおりです。
| 大項目 | 中項目 | 結果発表の科目 |
|---|---|---|
| 数学的基礎 | 確率・統計/情報理論 | 応用数学 |
| 機械学習 | 機械学習の基礎 | 機械学習 |
| 深層学習の基礎 | 順伝播型ネットワーク/深層モデルのための最適化/深層モデルのための正則化/畳み込みニューラルネットワーク/リカレントニューラルネットワーク/Transformer/汎化性能向上のためのテクニック | 深層学習 |
| 深層学習の応用 | 画像認識/物体検出/セマンティックセグメンテーション/自然言語処理/生成モデル/深層強化学習/様々な学習方法/深層学習の説明性 | 深層学習 |
| 開発・運用環境 | エッジコンピューティング/分散処理/アクセラレータ/環境構築 | 開発環境 |
中項目は全部で22個です。深層学習の基礎と応用で15個を占め、出題の中心は深層学習です。シラバスに配点の割合は示されていません。
flowchart TD
M[数学的基礎<br>確率・統計・情報理論] --> ML[機械学習の基礎<br>評価指標・過学習]
ML --> DL[深層学習の基礎<br>逆伝播・最適化・CNN]
DL --> AP[深層学習の応用<br>画像・言語・生成]
DL --> EV[開発・運用環境<br>軽量化・分散・GPU]
上の図は、学ぶ順番の目安として、どの分野がどの分野の前提になるかを描いたものです。数学が分からないと交差エントロピーや誤差逆伝播の式が読めず、深層学習の基礎が分からないと応用(物体検出や Transformer)の仕組みが追えません。
PyTorchとTensorFlowはどちらを選ぶか
この節では、試験で選ぶフレームワークと、動作確認された版が分かります。
E資格では、試験の開始時に、問題が出る前に PyTorch か TensorFlow のどちらかを選びます。 選ばなかった方の問題は見られず、後から変えることもできません。JDLA は E2026#2 の問題を次の版で動作確認したと公表しています。
grad-cam==1.5.5
matplotlib==3.10.9
numpy==2.4.5
opencv-python==4.13.0.92
tensorflow==2.21.0
tf_explain==0.3.1
torch==2.12.0
torchinfo==1.8.0
torchvision==0.27.0
PyTorch を選ぶ
torch 2.12.0・torchvision 0.27.0 で確認
モデルの形を見る torchinfo も挙がっている
講座で PyTorch を使ったならこちら
TensorFlow を選ぶ
tensorflow 2.21.0 で確認
判断根拠の可視化の tf_explain が挙がっている
講座で Keras・TensorFlow を使ったならこちら
決め手は「受けた認定プログラムで手を動かした方」です。どちらを選んでも、NumPy で書く問題(行列の形・誤差逆伝播・畳み込みの計算)は共通の土台になります。
E資格の勉強の順番
この節では、何から手を付けると効率よく進むかが分かります。
認定プログラムの教材が中心になりますが、講座を始める前と並行して、次の順で進めると前の知識が次の分野の土台になります。
Python と NumPy の配列に慣れる
行列の形(shape)・ブロードキャスト・行列の積を、手で予想してから実行して確かめる。
数学をそろえる
行列とベクトル、偏微分と連鎖律、確率・ベイズの定理、エントロピーと KL ダイバージェンス。
機械学習の基礎
評価指標(適合率・再現率・F1)、過学習と正則化、最尤推定。
ニューラルネットワークを NumPy で書く
順伝播・損失・誤差逆伝播・勾配確認。最適化(SGD・Momentum・Adam)と Dropout・Batch Normalization。
CNN・RNN・Transformer
畳み込みの出力サイズとパラメータ数、RNN の勾配消失、Attention の計算。
フレームワークで同じものを書く
手で書いた層を PyTorch か TensorFlow の部品に置き換え、コードの穴埋めを読めるようにする。
応用と開発・運用環境
物体検出・セグメンテーション・生成モデル・深層強化学習、量子化・分散処理・GPU。
JDLA の E資格のページには、過去問題の掲載はありません。この記事でも試験の問題は載せず、シラバスの分野ごとに、手で答えを出してから NumPy で確かめられる小問を自作しました。
分野別の要点をNumPyで確かめる:応用数学
この節では、確率・統計と情報理論の要点を、計算して確かめます。
小問1:ベイズの定理
ある病気の人は全体の1%。検査は、病気の人の99%を陽性にし、病気でない人の5%も陽性にする。陽性だった人が本当に病気である確率は?
手で解くと、P(病気|陽性) = P(陽性|病気)×P(病気) ÷ P(陽性) です。P(陽性) = 0.99×0.01 + 0.05×0.99 = 0.0594 なので、0.0099 ÷ 0.0594 ≒ 0.167 になります。1000万人分の乱数でも試しました。
import numpy as np
prior, sens, fpr = 0.01, 0.99, 0.05
p_pos = sens * prior + fpr * (1 - prior)
print(f"式で計算: P(病気|陽性) = {sens*prior:.4f} / {p_pos:.4f} = {sens*prior/p_pos:.4f}")
rng = np.random.default_rng(359)
n = 10_000_000
sick = rng.random(n) < prior
pos = np.where(sick, rng.random(n) < sens, rng.random(n) < fpr)
print(f"1000万人で試す: 陽性 {pos.sum():,} 人のうち病気 {(pos & sick).sum():,} 人 → {(pos & sick).sum()/pos.sum():.4f}")
[小問1] 式で計算: P(病気|陽性) = 0.0099 / 0.0594 = 0.1667
[小問1] 1000万人で試す: 陽性 594,032 人のうち病気 99,330 人 → 0.1672
検査の精度が99%でも、陽性の人のうち病気なのは約17%です。 病気の人が少ない(事前確率が小さい)と、病気でない多くの人からの偽陽性が上回るためです。
小問2:エントロピー・交差エントロピー・KL ダイバージェンス
本当の分布 p =(0.5, 0.25, 0.25)、モデルの分布 q =(1/3, 1/3, 1/3)。H(p)、交差エントロピー H(p,q)、KL(p‖q) をビットで求めよ。
手で解くと、H(p) = −(0.5×log2 0.5 + 0.25×log2 0.25×2) = 0.5 + 1 = 1.5 ビット、H(p,q) = log2 3 ≒ 1.585 ビット、KL(p‖q) = H(p,q) − H(p) ≒ 0.085 ビットです。
p = np.array([0.5, 0.25, 0.25]); q = np.array([1/3, 1/3, 1/3])
H = -(p * np.log2(p)).sum()
CE = -(p * np.log2(q)).sum()
print(H, CE, (p * np.log2(p / q)).sum(), CE - H, (q * np.log2(q / p)).sum())
[小問2] H(p) = 1.5000 bit
[小問2] 交差エントロピー H(p,q) = 1.5850 bit
[小問2] KL(p||q) = 0.0850 bit, H(p,q) - H(p) = 0.0850
[小問2] KL(q||p) = 0.0817 bit ← 向きを変えると値が変わる
交差エントロピー = エントロピー + KL ダイバージェンスの関係が数値で確かめられます。分類の学習で交差エントロピーを小さくすることは、正解の分布 p が変わらないので、KL ダイバージェンスを小さくすることと同じです。また KL(p‖q) と KL(q‖p) は値が違い、距離のような「対称」な量ではありません。
小問3:最尤推定
コインを10回投げて表が7回。表の出る確率 θ の最尤推定値は?
対数尤度は 7×log θ + 3×log(1−θ) で、θ で微分して0とおくと θ = 7/10 です。
[小問3] 対数尤度が最大の θ = 0.70(式では 7/10)
確率分布の種類と平均・分散の計算は、関連記事「確率分布とは|種類一覧・平均と分散・選び方をPythonで実演」で扱っています。
分野別の要点をNumPyで確かめる:機械学習
この節では、評価指標と正則化の要点を計算で確かめます。
小問4:混同行列と評価指標
陽性60件・陰性940件のデータで、TP=40、FP=10、FN=20、TN=930。正解率・適合率・再現率・F1 を求めよ。
TP, FP, FN, TN = 40, 10, 20, 930
acc = (TP + TN) / (TP + FP + FN + TN)
prec = TP / (TP + FP); rec = TP / (TP + FN)
f1 = 2 * prec * rec / (prec + rec)
print(f"正解率 {acc:.3f} 適合率 {prec:.3f} 再現率 {rec:.3f} F1 {f1:.3f}")
print(f"全部を陰性と答えるモデルの正解率 {(FP + TN) / (TP + FP + FN + TN):.3f}")
[小問4] 正解率 0.970 適合率 0.800 再現率 0.667 F1 0.727
[小問4] 全部を陰性と答えるモデルの正解率 0.940
[小問4] ラベルから数え直し: TP 40 FP 10 FN 20 TN 930
| 指標 | 式 | この問題の値 |
|---|---|---|
| 正解率(Accuracy) | (TP+TN) ÷ 全体 | 0.970 |
| 適合率(Precision) | TP ÷ (TP+FP)。陽性と言ったうち当たり | 0.800 |
| 再現率(Recall) | TP ÷ (TP+FN)。本当の陽性のうち拾えた | 0.667 |
| F1 | 適合率と再現率の調和平均 | 0.727 |
陽性が少ないデータでは、何も見つけない「全部陰性」のモデルでも正解率が 0.940 になります。 正解率だけで判断せず、適合率・再現率・F1 を見る理由です。
小問5:パープレキシティ
言語モデルが、4つの正解のトークンにそれぞれ 0.5・0.25・0.125・0.5 の確率を付けた。パープレキシティは?
パープレキシティは「平均の交差エントロピー(自然対数)の exp」で、正解の確率の幾何平均の逆数と同じです。
[小問5] 平均の交差エントロピー 1.2130 nat → パープレキシティ exp(それ) = 3.3636
[小問5] 幾何平均の逆数で計算 = 3.3636
値は「平均して何個の候補から迷っているか」と読めます。小さいほどよいモデルです。
小問6:L2 正則化で重みが小さくなる
5つの特徴の線形回帰に L2 正則化(リッジ)を付け、係数 λ を 0・1・10・100 と変えたとき、重みのノルムはどう変わるか。
リッジ回帰の解は w = (XᵀX + λI)⁻¹Xᵀy です。30件のデータ(本当の重み 3, −2, 0.5, 0, 1 に雑音を足したもの)で計算しました。
for lam in [0, 1, 10, 100]:
w = np.linalg.solve(X.T @ X + lam * np.eye(5), X.T @ y)
print(f"λ={lam:>3} 重み {np.round(w, 2)} ノルム {np.linalg.norm(w):.3f}")
[小問6] λ= 0 重み [ 3.05 -1.93 0.36 -0.2 1.02] ノルム 3.771
[小問6] λ= 1 重み [ 2.78 -1.82 0.31 -0.26 0.97] ノルム 3.484
[小問6] λ= 10 重み [ 1.56 -1.26 0.09 -0.42 0.69] ノルム 2.165
[小問6] λ=100 重み [ 0.3 -0.35 -0.03 -0.2 0.18] ノルム 0.538
λ を大きくするほど重みが0に近づき、モデルが単純になります。 深層学習の「重み減衰(weight decay)」も同じ考え方で、勾配に λw を足して重みを毎回少し縮めます。行列の解き方(inv より solve を使う理由)は、関連記事「逆行列とは|求め方(2×2公式・掃き出し法・余因子)をPythonで検算」で扱っています。
分野別の要点をNumPyで確かめる:深層学習の基礎
この節では、softmax・誤差逆伝播・畳み込み・最適化・正則化を、計算で確かめます。
小問7:softmax の桁あふれ
z =(1000, 1001, 1002)の softmax を、そのまま exp で計算するとどうなるか。
z = np.array([1000.0, 1001.0, 1002.0])
naive = np.exp(z) / np.exp(z).sum() # そのまま
safe = np.exp(z - z.max()); safe /= safe.sum() # 最大値を引く
[小問7] そのまま計算: [nan nan nan] 警告: ['overflow encountered in exp', 'overflow encountered in exp', 'invalid value encountered in divide']
[小問7] 最大値を引いて計算: [0.09 0.2447 0.6652]
exp(1000) は float64 で表せず inf になり、inf ÷ inf で nan になります。softmax は、すべての要素から同じ数を引いても結果が変わらないので、最大値を引いてから exp を取ります。
小問8:softmax +交差エントロピーの勾配
出力層を softmax、損失を交差エントロピー(N 件の平均)にしたとき、出力層の入力 z についての勾配は (y − t) ÷ N になる。数値微分で確かめよ。
def softmax(z):
z = z - z.max(axis=-1, keepdims=True)
e = np.exp(z); return e / e.sum(axis=-1, keepdims=True)
def cross_entropy(y, t):
return -(t * np.log(y + 1e-12)).sum() / len(y)
Z = np.random.default_rng(1).normal(size=(2, 3))
T = np.array([[0, 0, 1], [1, 0, 0]], dtype=float)
analytic = (softmax(Z) - T) / len(Z)
# 数値微分:(L(z+h) - L(z-h)) / 2h を1要素ずつ
[小問8] (y - t)/N :
[[ 0.1391 0.2239 -0.363 ]
[-0.4685 0.2871 0.1814]]
[小問8] 数値微分 :
[[ 0.1391 0.2239 -0.363 ]
[-0.4685 0.2871 0.1814]]
[小問8] 最大の差 2.35e-11
正解のクラスの列だけが負になり、「正解の確率を上げ、ほかを下げる」向きの勾配になっています。
小問9:2層ネットワークの誤差逆伝播と勾配確認
入力3・隠れ層5(ReLU)・出力2(softmax)のネットワークで、誤差逆伝播で求めた勾配が数値微分と一致するか確かめよ。
def backprop(p):
a1 = X @ p["W1"] + p["b1"]; h = np.maximum(0, a1) # 順伝播
y = softmax(h @ p["W2"] + p["b2"])
dz2 = (y - t) / N # 出力側の誤差
g = {"W2": h.T @ dz2, "b2": dz2.sum(0)}
dh = dz2 @ p["W2"].T # 1つ前の層へ戻す
da1 = dh * (a1 > 0) # ReLU の微分は 0 か 1
g["W1"] = X.T @ da1; g["b1"] = da1.sum(0)
return g
[小問9] W1 形 (3, 5) 逆伝播と数値微分の相対誤差 4.8e-11
[小問9] b1 形 (5,) 逆伝播と数値微分の相対誤差 3.6e-11
[小問9] W2 形 (5, 2) 逆伝播と数値微分の相対誤差 1.7e-10
[小問9] b2 形 (2,) 逆伝播と数値微分の相対誤差 2.3e-10
勾配の形は、必ず元のパラメータの形と同じになります(W1 は 3×5)。h.T @ dz2 のように転置を付ける場所は、形がそろうかで決まります。コードの穴埋めでは、この「形の確認」がいちばんの手がかりです。ニューラルネットワークの学習を最初から追う解説は、関連記事「ニューラルネットワークとは|仕組み・学習・AttentionをNumPyで実演」で扱っています。
小問10:畳み込みの出力サイズ
出力の高さ OH = (H + 2P − FH) ÷ S + 1。次の3つの出力サイズは? ①入力32・フィルタ5・パディング2・ストライド1、②入力28・フィルタ3・パディング1・ストライド2、③入力7・フィルタ3・パディング0・ストライド1
[小問10] 入力32 フィルタ5 パディング2 ストライド1 → 出力 32
[小問10] 入力28 フィルタ3 パディング1 ストライド2 → 出力 14
[小問10] 入力7 フィルタ3 パディング0 ストライド1 → 出力 5
| 覚え方 | 条件 | 出力 |
|---|---|---|
| サイズを保つ | フィルタ F、ストライド1、パディング (F−1)÷2 | 入力と同じ |
| 半分にする | フィルタ3、ストライド2、パディング1 | 入力÷2(偶数のとき) |
| パディングなし | フィルタ F、ストライド1 | 入力 − F + 1 |
小問11:im2col で畳み込みを計算し、パラメータ数を数える
入力 2×3×32×32(バッチ・チャンネル・高さ・幅)に、5×5 のフィルタ16枚(パディング2・ストライド1)を掛ける。出力の形、パラメータ数、1枚あたりの積和の回数は?
im2col は、フィルタが当たる部分を1行ずつ並べた行列に直し、畳み込みを1回の行列の積で計算する方法です。定義どおりの4重ループの結果と比べました。
def im2col(x, FH, FW, S, P):
N, C, H, W = x.shape
OH, OW = (H + 2*P - FH)//S + 1, (W + 2*P - FW)//S + 1
xp = np.pad(x, ((0, 0), (0, 0), (P, P), (P, P)))
col = np.zeros((N, C, FH, FW, OH, OW))
for i in range(FH):
for j in range(FW):
col[:, :, i, j] = xp[:, :, i:i + S*OH:S, j:j + S*OW:S]
return col.transpose(0, 4, 5, 1, 2, 3).reshape(N*OH*OW, -1), OH, OW
def conv(x, W, b, S, P):
K = W.shape[0]
col, OH, OW = im2col(x, W.shape[2], W.shape[3], S, P)
out = col @ W.reshape(K, -1).T + b
return out.reshape(x.shape[0], OH, OW, K).transpose(0, 3, 1, 2)
[小問11] 入力 (2, 3, 32, 32) → 出力 (2, 16, 32, 32)
[小問11] im2col と4重ループの最大の差 2.1e-14
[小問11] パラメータ数 1200 + 16 = 1216
[小問11] 1枚あたりの積和の回数 32×32×16×(5×5×3) = 1,228,800
[小問11] 28×28・3×3・S=2・P=1 → (1, 8, 14, 14)
パラメータ数は「フィルタの高さ×幅×入力チャンネル×フィルタの枚数+バイアス(枚数分)」で、入力画像の大きさに関係しません。一方、積和の回数は出力の大きさに比例します。
小問12:最大プーリング
4×4 の行列(0〜15)に、2×2・ストライド2 の最大プーリングを掛けた結果は?
[小問12] 入力
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
[小問12] 最大プーリング
[[ 5 7]
[13 15]]
プーリング層には学習するパラメータがありません。チャンネルの数は変わらず、高さと幅だけが小さくなります。
小問13:最適化手法と学習率
f(x, y) = x²/20 + y² を(−7, 2)から最小化する。原点から距離0.01以内に入るまでの回数を、手法と学習率を変えて比べよ。
def grad(p):
return np.array([p[0] / 10, 2 * p[1]])
def sgd(p, g, s, k, lr=0.9):
return p - lr * g
def momentum(p, g, s, k, lr=0.1, m=0.9):
s["v"] = m * s.get("v", 0) - lr * g
return p + s["v"]
def adam(p, g, s, k, lr=0.3, b1=0.9, b2=0.999, eps=1e-8):
s["m"] = b1 * s.get("m", 0) + (1 - b1) * g
s["v"] = b2 * s.get("v", 0) + (1 - b2) * g * g
mh = s["m"] / (1 - b1 ** k); vh = s["v"] / (1 - b2 ** k) # バイアス補正
return p - lr * mh / (np.sqrt(vh) + eps)
[小問13] SGD lr=0.1 回数 652 到達点 [-0.01 0. ]
[小問13] SGD lr=0.9 回数 70 到達点 [-0.0095 0. ]
[小問13] SGD lr=1.0 回数 None 到達点 [-0. 2.]
[小問13] Momentum lr=0.1 回数 122 到達点 [0.0086 0.0031]
[小問13] Adam lr=0.3 回数 116 到達点 [ 0.008 -0.004]
SGD は学習率で回数が10倍近く変わり、1.0 では y 方向が 2 と −2 を行き来して止まりません。 y の更新は y −1.0×2y = −y なので、符号が入れ替わるだけになるためです。Momentum は速度の項で同じ向きの動きを加速し、Adam は座標ごとに勾配の大きさで割って歩幅をそろえます。どの手法が速いかは問題と学習率しだいで、「いつも Adam がいちばん速い」わけではありません。
小問14:Adam の最初の1歩
勾配が(0.001, 1000)のとき、学習率 0.01 の Adam の最初の1歩はどれだけ動くか。
[小問14] 勾配 [1.e-03 1.e+03] → 1歩目の移動 [-0.0099999 -0.01 ]
バイアス補正をした1歩目は m̂ = g、v̂ = g² なので、移動は lr × g ÷ |g| = lr です。勾配の大きさが100万倍違っても、1歩目はどちらも学習率の 0.01 だけ動きます。 バイアス補正が無いと、最初の m と v が0に引っ張られて歩幅が変わります。
小問15:Dropout と 1/(1−p) 倍
30%のニューロンを落とす Dropout で、学習時に残ったものを 1/(1−0.3) 倍すると、出力の平均はどうなるか。
[小問15] 残った割合 0.7000 そのままの平均 0.7000 1/(1-p)倍した平均 1.0000
学習時に 1/(1−p) 倍しておく方法(inverted dropout)なら、平均が元の 1.0 に戻るので、推論時は何もせずに全部のニューロンを使えます。PyTorch・TensorFlow の Dropout もこの方式です。
小問16:Batch Normalization
平均・ばらつきが大きく違う3つの特徴(ミニバッチ64件)を、特徴ごとに平均0・分散1にそろえる。
[小問16] 前の平均 [ 4.81 -3. 102.21] 分散 [5.3420e+00 8.0000e-03 8.8277e+02]
[小問16] 後の平均 [0. 0. 0.] 分散 [1. 0.9988 1. ]
2つ目の特徴の分散が 1 でなく 0.9988 なのは、0 で割らないために分母に足す ε(ここでは 1e−5)が、元の分散 0.008 に対して無視できない大きさだからです。実際の層では、このあとに学習するパラメータ γ(倍率)と β(ずらし)を掛けて足します。
RNN の勾配消失と LSTM・GRU、Transformer の Attention(Query・Key・Value)の計算は、関連記事「ニューラルネットワークとは|仕組み・学習・AttentionをNumPyで実演」で NumPy の実行結果つきで扱っています。深層強化学習の土台になる Q 学習は、関連記事「強化学習とは|仕組み・Q学習・RLHFをPythonの迷路で実演」で扱っています。
分野別の要点をNumPyで確かめる:開発・運用環境
この節では、分散処理・量子化・混合精度の要点を計算で確かめます。
小問17:データ並列で勾配を平均する
64件のミニバッチを4台に16件ずつ分け、各台の勾配を平均した値は、64件をまとめて計算した勾配と同じか。件数が40件と24件のように違うときは?
[小問17] 全体の勾配と4台の平均の最大の差 8.9e-16
[小問17] 40件と24件に分けて単純平均したときの差 0.323
同じ件数に分ければ、各台の勾配の平均は全体の勾配と一致します(差は計算の丸め誤差だけ)。件数が違うのに単純に平均するとずれるので、件数で重みを付けて平均します。データ並列は「モデルは同じものを各台に置き、データを分ける」方式で、モデルが1台に入らないときはモデル自体を分けるモデル並列を使います。
小問18:int8 への量子化
float32 の 256×256 の重みを、最大値に合わせた1つの倍率で int8 にする。メモリは何倍になり、誤差はどれくらいか。
scale = np.abs(W).max() / 127
Wq = np.clip(np.round(W / scale), -127, 127).astype(np.int8)
back = Wq.astype(np.float32) * scale
[小問18] float32 262,144 バイト → int8 65,536 バイト(0.25 倍)
[小問18] 倍率 0.001863 相対誤差 1.08%
32ビットを8ビットにするので、メモリは 1/4 です。モデルの軽量化には、量子化のほかに、小さい重みを0にする枝刈り(プルーニング)と、大きなモデルの出力をまねて小さなモデルを学習させる蒸留があります。LLM を量子化したときに必要なメモリの計算は、関連記事「VRAMとは|確認方法・必要量の目安とLLMの計算式をPythonで解説」で扱っています。
小問19:FP16 と損失スケーリング
float16 の最大値と、0.00000001(1e−8)を float16 にしたときの値は?
[小問19] float16 の最大 65504.0 最小の正規化数 6.103515625e-05
[小問19] 1e-8 を float16 にすると 0.0、1024倍してから 1.0251998901367188e-05
とても小さい勾配は float16 では 0 になって消えます。 混合精度学習で損失に大きな数を掛けてから逆伝播し(損失スケーリング)、重みを更新する前に元に戻すのはこのためです。
E資格の試験当日までのチェックリスト
この節では、申し込みから当日までに確かめることを一覧で確認できます。
- 1認定プログラムの修了日から受験日まで2年以内になっている修了者ナンバー・事業者名・修了日を予約で入れる
- 2学生・会員の割引の申請を、締め切りより前に済ませたコードやバウチャーの発行に日数がかかる
- 3PyTorch と TensorFlow のどちらで受けるか決めた試験の最初に選び、あとから変えられない
- 4本人確認書類を2点そろえ、予約の氏名と同じか確かめた違うと受験できない
- 5画面上の一般電卓とホワイトノートで計算する練習をした関数電卓・自分のメモ用紙は使えない
- 6出力サイズ・パラメータ数・勾配の形を手で出せる小問9〜11の計算
- 7予約を変えるなら24時間前までに手続きする同じ期間の受験は1人1回
よくある質問
Q. E資格とは簡単に言うと何ですか? A. JDLA(日本ディープラーニング協会)が実施する、ディープラーニングの理論を理解し、手法を選んで実装できるかを問うエンジニア向けの資格です。受けるには JDLA 認定プログラムの修了が必要です。
Q. E資格は独学で受けられますか? A. 受験には認定プログラムを試験日の過去2年以内に修了していることが条件なので、講座を受けずに受験することはできません。講座の前後に、数学や NumPy での実装を自分で学ぶことはできます。
Q. E資格の難易度はどれくらいですか? A. 合格率は16回で 63.31〜78.44%、全回を通すと 70.9%です。ただし受験者は認定プログラムの修了者だけで、2026年第2回の平均得点率は応用数学 60.90%・機械学習 60.07%・深層学習 62.32%でした。
Q. E資格の勉強時間はどれくらいですか? A. JDLA は勉強時間の目安を示していません。認定プログラムの受講期間は講座ごとに違うので、各事業者の案内で確かめます。数学と Python に慣れていない場合は、講座の前に「勉強の順番」の1〜2を進めておくと、講座の内容を追いやすくなります。
Q. 合格点は何点ですか? A. JDLA の公式ページとよくあるご質問に、合格点や合格基準の記載はありません。結果のメールには分野別の得点率が付きます。
Q. 次のE資格はいつですか? A. 2027年第1回が2027年2月19日(金)〜21日(日)で、申し込みは2026年12月1日(火)から受験日の前日23:59までです。第2回は2027年8月27日(金)〜29日(日)です(2026年10月23日時点)。
Q. 受験料はいくらですか? A. 税込で一般 33,000円、学生 22,000円、JDLA の会員 27,500円です(2026年10月23日時点)。
Q. G検定に受かってからでないと受けられませんか? A. G検定に合格していなくても受けられます。JDLA のよくあるご質問にも、そう書かれています。
Q. PyTorchとTensorFlowはどちらがよいですか? A. 試験の最初にどちらかを選び、変えられません。受けた認定プログラムで使った方を選ぶのが自然です。E2026#2 の問題は torch 2.12.0 と tensorflow 2.21.0 で動作確認されています。
Q. 過去問はありますか? A. JDLA の E資格のページに過去問題の掲載はありません。ピアソン VUE で CBT の操作を試すサンプル試験が公開されています。分野ごとの計算は、この記事の自作の小問のように手で解いてから NumPy で確かめる方法で練習できます。
Q. 数学はどこまで必要ですか? A. シラバスの数学的基礎は「確率・統計」と「情報理論」です。加えて、誤差逆伝播を追うための行列の積と偏微分(連鎖律)が深層学習の分野で使われます。ベクトルの計算は関連記事「内積・外積とは|公式と計算例・使い道をNumPyで実演」で扱っています。
Q. 結果はいつ分かりますか? A. 試験のおおよそ3週間後までに、登録したメールアドレスに届きます。4週間たっても届かないときは JDLA に問い合わせます。
Q. E資格に有効期限はありますか? A. JDLA のよくあるご質問に有効期限の記載はありません。合格認証ロゴには試験を受けた年が付き、年の入っていないロゴは配られていません。
Q. 落ちたらすぐに受け直せますか? A. 同じ受験期間に受けられるのは1人1回です。認定プログラムの修了から2年以内なら、次の回に再受験できます。
まとめ
- E資格は、JDLA の深層学習のエンジニア向け資格。目的は「理論を理解し、適切な手法を選んで実装する力」の認定。
- 受験資格は、JDLA 認定プログラムを試験日の過去2年以内に修了していること。G検定の合格は不要。
- テストセンターの CBT で120分・100問程度。受験料は一般 33,000円・学生 22,000円・会員 27,500円(2026年10月23日時点)。
- 次は2027年2月19日〜21日(申込は2026年12月1日から)。席は先着順で、割引の申請は締め切りが早い。
- 合格率は16回で 63〜78%、全回で 70.9%。平均得点率は数学・機械学習・深層学習とも6割ほど。
- 範囲はシラバス E2026#2〜の5分野22項目。中心は深層学習の基礎と応用。
- 計算の問題は、手で答えを出してから NumPy で確かめると、式と形の両方が身に付く。
参考・出典
確認日はいずれも 2026年10月23日です。
- JDLA「E資格(エンジニア資格)」:https://www.jdla.org/certificate/engineer/
- JDLA「2026年 第2回 E資格(エンジニア資格)」結果発表・2027年開催スケジュールのお知らせ:https://www.jdla.org/news/20260918001/
- JDLA「2026年 第1回 E資格」結果発表:https://www.jdla.org/news/20260313002/
- JDLA「2026年 第2回 E資格」受験申込開始のお知らせ:https://www.jdla.org/news/20260601001/
- JDLA「E資格の試験出題範囲(シラバス)E2026#2~」:https://www.jdla.org/download/e%e8%b3%87%e6%a0%bc%e3%81%ae%e8%a9%a6%e9%a8%93%e5%87%ba%e9%a1%8c%e7%af%84%e5%9b%b2%ef%bc%88%e3%82%b7%e3%83%a9%e3%83%90%e3%82%b9%ef%bc%89e20262%ef%bd%9e/
- JDLA「JDLA認定プログラム」:https://www.jdla.org/certificate/engineer/programs/
- JDLA「認定プログラム事業者一覧」:https://www.jdla.org/certificate/engineer/programs/bizlist/
- JDLA「個人向け助成(教育訓練給付)」:https://www.jdla.org/certificate/engineer/subsidy01/
- JDLA「よくあるご質問」:https://www.jdla.org/qa/
- JDLA「G検定(ジェネラリスト検定)」:https://www.jdla.org/certificate/general/
- JDLA「2026年 第5回 G検定」開催結果:https://www.jdla.org/news/20260924001/
- ピアソン VUE「一般社団法人日本ディープラーニング協会(JDLA)」:https://www.pearsonvue.com/jp/ja/jdla.html
- NumPy「NumPy documentation」:https://numpy.org/doc/stable/
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「E資格とは|試験内容・合格率・G検定との違いとNumPyで解く要点」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。