E資格(JDLA Deep Learning for ENGINEER)の出題分野のうち、最も配点が高く、かつ実装レベルの理解が問われるのが深層学習の分野です。CNN・RNN・Transformer・誤差逆伝播などのアーキテクチャの仕組みと、Python/NumPyによる実装の理解が求められます。
この記事では、E資格の深層学習分野でどのような問題が出るのか、実装問題の傾向と対策を整理します。
E資格の深層学習分野は「アーキテクチャの理解+実装」の両方が問われます
JDLAが公表しているE資格のシラバスでは、深層学習の出題範囲は次のように分類されています。
| 大項目 | 主な内容 |
|---|---|
| ニューラルネットワーク基礎 | パーセプトロン・活性化関数・損失関数・誤差逆伝播(バックプロパゲーション)・最適化アルゴリズム |
| CNN(畳み込みニューラルネットワーク) | 畳み込み演算・プーリング・パディング・ストライド・出力サイズの計算・代表的な構造(VGG・ResNet) |
| RNN・LSTM・GRU | 時系列・系列データへの適用・勾配消失問題・LSTMの3つのゲート・GRU |
| Attention・Transformer | Self-Attention・スケールドドット積・Multi-Head Attention・位置エンコーディング |
| 生成モデル | VAE(変分オートエンコーダ)・GAN(敵対的生成ネットワーク)の構造と損失関数 |
| その他の発展内容 | 転移学習・ファインチューニング・正則化(Dropout・BatchNorm)・データ拡張 |
出典:JDLA「E資格 シラバス」の深層学習分野をもとに整理。
誤差逆伝播は「計算グラフ上での微分の連鎖」として理解します
誤差逆伝播(バックプロパゲーション)は、ニューラルネットワークの損失関数の各重みに対する勾配を、連鎖律を使って後ろから前に向けて計算するアルゴリズムです。
E資格では、計算グラフを見て各ノードの勾配を求める問題が出ます。計算グラフとは、計算の流れを有向グラフで表したもので、各ノードは演算(加算・乗算・ReLUなど)を表します。
- 加算ノード:上流の勾配をそのままの大きさで両方の入力側に流します(勾配が「分岐する」)
- 乗算ノード:上流の勾配に「逆側の入力値」をかけた値を各入力側に流します
- ReLUノード:順伝播で0以上なら上流の勾配をそのまま流す。0以下なら勾配は0
- Softmax + 交差エントロピーノード:逆伝播の勾配が「予測値 − 正解ラベル」になるため、計算が大幅に簡略化されます
「Softmax + 交差エントロピーの逆伝播の勾配が y – t(予測値 − 正解ラベル)になる」という関係は試験で問われやすく、証明の流れを追えるようにしておくと得点しやすいです。
CNNの出力サイズの計算は定式化して確認します
CNNで最もよく出る計算問題が「畳み込み・プーリング後の出力サイズを求める」問題です。次の式を使います。
出力サイズ = (入力サイズ − カーネルサイズ + 2 × パディング) ÷ ストライド + 1
例:入力サイズ 32×32・カーネルサイズ 3×3・パディング 1・ストライド 1 の畳み込みの場合
出力サイズ = (32 − 3 + 2 × 1) ÷ 1 + 1 = 32
パディング=(カーネルサイズ − 1) ÷ 2(カーネルサイズが奇数の場合)にすると入力サイズを維持できます。これを「same padding」と呼ぶこともあります。
プーリング(最大値プーリングや平均プーリング)も同じ式で出力サイズを計算できます。プーリングは「学習パラメータのない」次元削減操作で、平行移動不変性を持たせる効果があります。
RNNの勾配消失問題とLSTMの解決策を押さえます
RNN(再帰型ニューラルネットワーク)は時系列データを扱うモデルですが、長い時系列になると勾配消失・勾配爆発が起きやすいという問題があります。
勾配消失の仕組み:RNNは同じ重みを時刻ごとに繰り返し使うため、逆伝播の際に勾配が同じ行列の累乗になります。固有値が1より小さければ勾配が指数的に小さくなる(消失)、1より大きければ指数的に大きくなる(爆発)という問題が起きます。
LSTMはこの問題に対処するために、セル状態(c)という別の情報の流れとゲート機構を導入しています。
| ゲート | 役割 |
|---|---|
| 忘却ゲート(Forget Gate) | セル状態のどの情報を忘れるかを制御(0〜1のシグモイド出力) |
| 入力ゲート(Input Gate) | 新しい情報をどれだけセル状態に加えるかを制御 |
| 出力ゲート(Output Gate) | セル状態から次の隠れ状態(h)としてどの情報を出力するかを制御 |
GRUはLSTMをシンプルにしたモデルで、セル状態と隠れ状態を統合し、ゲートを2つ(リセットゲート・更新ゲート)に減らしています。
TransformerのSelf-Attentionは「どの位置に注目するか」を学習します
Transformer(2017年にVaswani等が発表)は、RNNを使わずに系列データを処理するアーキテクチャで、現在の自然言語処理の基盤です。E資格では、Transformerの中核であるSelf-Attentionの仕組みが問われます。
Self-Attentionは、入力の各位置(トークン)が他のどの位置に注目すべきかを重みで学習します。具体的には次の計算をします。
Attention(Q, K, V) = softmax(QK^T / √d_k) V
- Q(クエリ)・K(キー)・V(バリュー):入力から線形変換で得られる3つの行列
- QK^T:クエリとキーの内積でどの位置がどの位置に注目するかのスコアを計算
- √d_k での割り算(スケーリング):d_k(キーの次元数)が大きいときに内積の値が大きくなりすぎるのを防ぐ
- softmax:注目の重みを合計1に正規化
- Vとの積:注目度に応じてバリューを加重平均する
Multi-Head Attentionは、異なる表現部分空間を並列に使う複数のAttentionヘッドを組み合わせることで、単一のSelf-Attentionよりも豊かな表現を得られます。
Transformerには位置情報が入力に含まれないため、位置エンコーディング(Positional Encoding)を入力に加えて、系列中の位置情報を与えます。サインとコサインを使った固定の位置エンコーディングが元の論文の方法です。
実装問題はNumPy/PyTorchのコードを読んで答える形式です
E資格の実装問題では、Python(NumPy・PyTorch)のコード断片を見て「このコードは何を計算しているか」「このコードの出力は何か」「このコードの誤りを直せ」といった問題が出ます。
頻出のNumPy操作と深層学習の対応をいくつか挙げます。
| NumPy操作 | 深層学習での使い所 |
|---|---|
| np.dot(A, B) | 全結合層の順伝播。入力 x と重み W の積 |
| np.exp(x) / np.sum(np.exp(x)) | Softmax関数の実装。分母にSumを取って確率に正規化 |
| np.maximum(0, x) | ReLU活性化関数。0以下を0にする |
| np.linalg.svd(A) | 特異値分解。行列の次元削減・ランク近似 |
| np.random.normal(0, 0.01, size=(n, m)) | 重みの初期化。小さいランダム値で初期化する |
AI問題演習ツールで深層学習の問題を繰り返し練習できます
このサイトでは、E資格の出題分野(深層学習を含む3分野)に対応したAI問題演習ツールを提供しています。CNN・RNN・Transformer・誤差逆伝播など実装寄りの問題も含め、AIが毎回異なる問題を出題します。1日3問まで無料です。
まとめ:深層学習分野は「仕組みと実装の対応」を軸に押さえます
- E資格の深層学習分野はアーキテクチャの理論と実装(NumPy/PyTorch)の両方が問われる
- 誤差逆伝播は計算グラフ上での連鎖律の適用。「Softmax + 交差エントロピーの逆伝播は y – t」という関係は頻出
- CNNの出力サイズ計算式(入力 − カーネル + 2×パディング)÷ ストライド + 1)を使いこなす
- LSTMの3ゲート(忘却・入力・出力)は勾配消失問題への対策として位置づけて理解する
- Self-Attentionの式 Attention(Q,K,V) = softmax(QK^T / √d_k) V と各要素の意味を押さえる
- NumPyのコードと数式の対応(np.dot=行列積・np.maximum(0,x)=ReLUなど)を確認しておく


コメント