自動化無しに生活無し

WEB開発関係を中心に備忘録をまとめています

CNNとNLPの問題

thumbnail

試験範囲

  • CNN : VGG,GoogLeNet,ResNet(WideResNet),MobileNet,DenseNet,EfficientNet
  • NLP : Word2Vec(skip-gram),seq2seq,HRED,Transformer

問題

間違えている箇所は → で解答を表示。

1. VGG

Q1: VGG16において、すべての畳み込み層で 3×3 カーネルが採用されている理由として適切なものは?

空間方向・チャンネル方向双方に畳み込みを行い、層を増やすため。5x5では特徴量がぼやけてしまい、1x1では空間方向の特徴抽出が難しいため。

Q2: PyTorchの models.vgg16 において、特徴抽出部分の最後にある nn.AdaptiveAvgPool2d((7, 7)) の役割は?

7x7で平均プーリングを行い、全結合の負担を軽減する。しかしそれでも全結合層が巨大すぎるため、パラメータ数が多く、計算コストが非常に高い。

Q3: KerasでVGGを実装する際、全結合層の前に置く、多次元テンソルを1次元に変換するレイヤー名は?

わかりません。が、pytorchでは線形にするLinear だったかと思います。Kerasにも似たような名前であるのでしょうか?

→ Flatten 。Pytorchのview やreshape に相当する。

2. GoogLeNet (Inception)

Q4: Inceptionモジュールにおいて、計算量を削減するために 3×3 や 5×5 畳み込みの前に入れられる処理は?

1x1畳み込みですね。

Q5: GoogLeNetで導入された、勾配消失を防ぐためにネットワークの途中から分岐させた出力層の名称は?

ボトルネック層ではないでしょうか?

→ Auxiliary Classifier (補助分類器)

Q6: 1×1 畳み込みが「ボトルネック層」と呼ばれる理由を「チャンネル」という言葉を使って説明せよ。

チャンネル方向に対しての結合を行い、後続の畳み込みのコストを削減しているため

3. ResNet / WideResNet

Q7: ResNetの基本単位であるResidual Blockにおいて、入力 x を出力に直接足し合わせる経路を何と呼ぶか?

わかりません。が、ResNetは入力値をそのまま計算に利用できるようにするため足し算を使用しています。関数のバイアスのようなものなので、バイアス経路などと言った名前でしょうか?

→ Shortcut Connection(またはスキップ接続)

Q8: PyTorchの実装において、入力と出力のチャンネル数が異なる場合に Shortcut 側で行う演算は?

わかりません。

→ チャンネル数が違うと足し算ができないため、Shortcut側にも 1x1畳み込み を適用してサイズを合わせます。

Q9: WideResNetが通常のResNetに対して、「深さ」ではなく何を増やすことで性能向上を図っているか?

幅を増やして性能向上を行っています。

チャンネル数を増やし、パラメータ数を増やすことでハードウェア性能をフル活用してでも性能向上を図っています。

4. MobileNet

Q10: 添付の例題にあった Depthwise Separable Convolution を、通常の畳み込みと比較した際の計算量の削減率は?(カーネルサイズ K×K とする)

削減率まではわかりません。が、チャンネル方向に対しての混合は行われないため、計算量はKの二乗でしょうか?

→ おおよそ 1/9(3x3の場合)と覚えればOKです。

Q11: MobileNet V2 で導入された、中間層でチャンネル数を増やし、出力で減らす構造の名称は?

InvertedResidual でしょうか?

Q12: Kerasの DepthwiseConv2D レイヤーにおいて、1つの入力チャンネルに対して適用するフィルタ数を指定する引数名は?

Keras不勉強のためわかりません。

が、Depthwise は空間方向に対してのみの3x3畳み込みのため、特にあえて引数を指定できる要素がないようにも思えます。

→ depth_multiplier です。1つの入力からいくつ出力を作るか(通常は1)を決めます。

5. DenseNet / EfficientNet

Q13: DenseNetにおいて、前の層の出力を後の層に「足し算」ではなく「何」することで結合するか?

結合をすることで、前の層の出力を後続に引き渡している。pytorchではリストにappendしている。だがこれによりメモリ消費量が増え、計算量も増えてしまう。DenseNetはハードウェア性能をフル活用してでも精度の向上を図っています。が、手軽さで優れているResNetよりも普及しませんでした。

→ 足し算ではなく Concat (連結) です。チャンネルを後ろにどんどん繋げるため、メモリを消費します。

Q14: EfficientNetの「Compound Scaling」が最適化する3つの要素は、解像度、深さと、あと一つは何か?

幅。EfficientNetはこれまでの単純に層を増やしたり幅を広げたりするのではなく、学習するデータに応じて最適な解像度、深さ、幅で学習を行っている。

Q15: DenseNetの各ブロック間でチャンネル数を圧縮する役割を持つ層の名称は?

わかりません。が、1x1畳み込みを使っているのでしょうか?だとしたらpointwise でしょうか?

→ Transition Layer (遷移層) と呼びます。

1. Word2Vec (Skip-gram)

Q16: Skip-gramモデルにおいて、入力となるのは「ターゲット単語」か「周囲の単語」か?

Skip-gramはターゲット単語を入力し、周囲の単語を予測します。よって「ターゲット単語」ですね。

Q17: Word2Vecの学習において、計算量を減らすためにソフトマックス関数の代わりによく使われる手法は?

Sigmoid関数だったかと思います。

そのSigmoid関数を使って、答えになる単語がなんであるかを予測していたかと思います。 しかし、これでは全部YESもしくはNOと答えればかんたんに正解率を上げることができるため、それを阻止するために偽物の選択肢を用意して、間違えたら損失を大きめに評価するなどしていたかと思います。

→ Negative Sampling です。偽物(負例)を用意して学習効率を上げる手法です。

Q18: PyTorchの nn.Embedding レイヤーにおいて、単語IDをベクトルに変換する際の重み行列のサイズはどう定義されるか?

文章内の単語の数によって定義されるかと思います。

→ (語彙数, 分散表現の次元数) です。

2. seq2seq / HRED

Q19: seq2seqにおいて、Encoderの最後の隠れ状態 h を何と呼ぶか?

わかりません。

→ Context Vector (文脈ベクトル)。

Q20: HRED (Hierarchical Recurrent Encoder-Decoder) が、通常のseq2seqに加えて導入した3つ目のRNNの名称は?

文単位のEncoderとDecoderに続き、コンテキスト単位のEncoderが追加されたと思います。

Q21: seq2seqのDecoderにおいて、学習時のみ「正解ラベル」を次の時刻の入力として使う手法を何と呼ぶか?

LSTMでしょうか?

→ Teacher Forcing (教師強制)。

3. Transformer

Q22: Transformerにおいて、RNNを使わずに単語の位置情報を付与するために加算されるベクトルは?

Self-Attentionですね。単語間の関連をRNNの左から右だけでなく、全方向から行うことができます。並列的に解釈されるため、文章が長くても難なく学習可能です。

→ 正解は Positional Encoding。Self-Attentionは「位置」を無視するため、サイン波などのベクトルを「足し算」して位置を教えます。

Q23: Multi-Head Attentionにおいて、Scaled Dot-Product Attentionの入力となる3つのベクトル(Q, K, V)の名称をすべて答えよ。

Query,Key,Value ですね。

Queryは検索キーワード、Keyは見出し、Valueは検索キーワードに紐づく情報です。

Q24: Transformerの計算において、次元 dk平方根で割る(スケーリングする)理由は、何の勾配が小さくなるのを防ぐためか?

わかりません。

→ Softmax の勾配です。値が大きすぎるとSoftmaxの勾配が極端に小さくなります。

Q25: PyTorchの nn.Transformer において、Decoderが未来の単語を見ないようにするために適用する処理は?

わかりません。

→ Masking (マスク)。未来の単語のスコアを −∞ にして見えないようにします。

Q26: 「Self-Attention」と「Source-Target Attention(Cross Attention)」の違いを、Q, K, Vの出所に着目して説明せよ。

わかりません。

→ QはDecoderから、KとVはEncoderから 来ます。

Q27: TransformerのEncoder内にある「Position-wise Feed-Forward Networks」の実装における、畳み込みサイズに相当する値はいくつか?

1x1でしょうか?pointwise という点だけでしかわかってはいませんが。

Q28: Layer Normalizationは、Batch Normalizationと異なり、どの方向に正規化を行うか?

BatchNormalizationとLayer Nomalizationの違いがわかりません。それぞれがどういったものなのか覚えていませんが、BatchNormalizationはCNNでもよく出てきたかと思います。

Layerなのでチャンネル方向でしょうか?とはいえNLPにチャンネルという概念はなかったかと思いますが。層でしょうか?

→ Batchは「データ間」を、Layerは 「単語ベクトル内(特徴量方向)」 を正規化します。

Q29: BERT(Transformerベース)の学習手法において、文章中の一部の単語を隠して予測させるタスクの名称は?

わかりません。

→ Masked Language Model (MLM)。

Q30: Keras 3でMulti-Head Attentionを実装する際、ヘッドの数(num_heads)を増やすと、モデル全体のパラメータ数はどう変化するか?

2乗分だけ増えるのでしょうか?わかりません。

→ 実は 「変化しない」 のが一般的です。ヘッドを増やす際、各ヘッドの次元を「全次元 ÷ ヘッド数」にするため、合計は変わりません。

2026年4月29日 の演習

第1部:VGG & Batch Normalization

VGG16の「16」という数字は何の数を表しているか?

→ 重みのある層(畳み込み層 + 全結合層)の合計

Batch Normalization(BN)において、ミニバッチごとに正規化される2つの統計量は何か?

→ 平均と分散

BNの導入により、活性化関数が特定の範囲に留まって学習が進まなくなる現象を何と呼ぶか?

→ 勾配消失問題(飽和問題)

VGGにおいてBNを導入した主な目的は、学習の高速化と何の問題の解決か?

→ 勾配消失問題

BNは、推論時と学習時で同じ統計量(平均・分散)を使用するか?

→ 学習時のみ使用し、推論時には使用しない。(推論時は学習時の移動平均などを使用する。)

第2部:GoogLeNet & 補助分類器

GoogLeNetに導入された、層の途中で誤差を計算して勾配消失を防ぐ仕組みを何と呼ぶか?

→ 補助分類機 (Auxiliary Classifiers)。 これにより中間層で予測を行い、誤差を逆伝播させ勾配消失問題を緩和できる。

補助分類器(Auxiliary Classifiers)は推論時にも計算に使用されるか?

→ 学習時のみ使用し、推論時には使用しない。

補助分類器の損失をメインの損失に加算する際、一般的にどのような係数が掛けられるか?

→ メインの学習を阻害させないよう、0.3などの小さな係数を使用する。

GoogLeNetにおいて、計算コストを抑えつつチャネル数を調整するために多用される畳み込みサイズは?

→ 1x1

GoogLeNet(Inception-v1)の全層数はいくつか?

→ 22層

第3部:ResNet & 残差接続

残差接続(Skip Connection)における、入力 x と変換 F(x) の最も一般的な演算方法は何か?

→ 足し算。 ( F(x) + x )

ResNetの残差ブロックにおいて、学習のターゲットとなる F(x)=H(x)−x を何と呼ぶか?

→ 残差

深いResNet(101層など)で採用されている、1x1畳み込みでチャネルを絞る構造を何と呼ぶか?

→ ボトルネック構造

残差接続があることで、逆伝播時に勾配が減衰せずに伝わる現象を例えて何と呼ぶことがあるか?

→ 勾配の高速道路(ショートカット)

ResNet-101において、最も多くの残差ブロックが含まれているステージはどこか?

→ 第3ステージ 23個の残差ブロックが含まれる。

第4部:MobileNet (V1〜V3)

空間方向とチャネル方向の畳み込みを分離した手法を何と呼ぶか?

→ Depthwise Separable Convolution

Depthwise Separable Convolutionにおいて、チャネルごとに独立して行う畳み込みは何か?

→ Depthwise Convolution

3×3 のDepthwise Separable Convolutionは、通常の畳み込みに比べ理論上何割程度の計算量を削減できるか?

→ 8割〜9割

MobileNetV2で採用された、チャネルを「細→太→細」と変化させる構造を何と呼ぶか?

→ インバーテッド残差構造

リニアボトルネックにおいて、最後の1x1畳み込みの後に活性化関数を適用しない理由は何か?

→ 線形にすることで低次元空間での情報損失を防ぐため。

MobileNetのチャネル数を一律に削減し、モデルサイズを調整するハイパーパラメータを何と呼ぶか?

→ α パラメーター

ReLU6において、出力値がクリップされる上限の値はいくつか?

→ 6

MobileNetV3で採用された、シグモイド関数を近似した計算コストの低い活性化関数は何か?

→ ハードスワッシュ (h-swish)

AI(アルゴリズム)が最適なネットワーク構造を自動で見つける手法をアルファベット3文字で何というか?

→ NAS構造 (Network Architecture Search)

インバーテッド残差構造において、残差接続(スキップ接続)は「太い層」と「細い層」のどちらを繋ぐか?

→ 細い層 (ボトルネック部分)

第5部:DenseNet

DenseNetにおいて、前の全層の出力を次の層に伝える際、ResNetの「足し算」に対してどのような演算を行うか?

→ 結合

各レイヤーが新しく生成・追加するチャネル数のことを何と呼ぶか?

→ 成長率 k

成長率(Growth Rate)が小さい場合でも、DenseNetが高い精度を出せる主な理由は何か?

→ 過去の層の特徴量を再利用できるため

Dense Blockの間に位置し、チャネル数の削減やプーリングを行う層を何と呼ぶか?

→ Transition Layer

DenseNetの構造を指す「密結合」を英語で何というか?

→ Dense Connection

確認するべき用語集

  • ビームサーチ(HRED)
  • プルーニング(VGG)
    • モデル精度を維持しながら不要なパラメータを剪定し計算コストを落とすこと。
  • MLM(BERT)
  • Layer Normalization vs Batch Normalization (CNN,NLP)
  • Positional Encoding (Transformer)
スポンサーリンク