◯×一問一答・第5章
G検定 ディープラーニングの要素技術 一問一答(150問)
畳み込み層・回帰結合層・Attentionなど、ネットワークを組み立てる部品を扱います。説明文が正しいか誤りかを、◯か×で答えます。
- 150問
- 用語50語から
- 間違えた問題だけ解き直し
収録している問題
答えは問題を開くと表示されます。くわしい解説は各用語のページにあります。
全結合層
要点を読むあるユニットへの入力の重みが負の値であれば、ほかの入力が変わらないとき、その入力の値が大きくなるほど、そのユニットの重み付き和は小さくなる。
◯ 正しい 負の重みを掛けると、入力が大きいほど足し合わせる値が小さくなります。重みの符号は効く向きを、絶対値は効く強さを表します。 重み
学習を終えたモデルで推論するときは、重みは更新されず、固定された値として使われる。
◯ 正しい 重みを更新するのは学習のときだけです。推論では、学習で決まった重みを入力に掛けて出力を計算します。 重み
深いニューラルネットワークでは、個々の重みの値を調べれば、モデルがなぜその予測をしたのかを直接読み取れる。
× 誤り 重みは膨大な数があり、層を通じて複雑に組み合わさって働くため、1つ1つの値から理由を読み取ることは困難です。そのため、Grad-CAMやSHAPなどの説明手法が使われます。 重み
全結合層の出力ユニットの数は、入力の数と同じにしなければならない。
× 誤り 出力の数は設計者が自由に決めます。784個の入力を100個のユニットにまとめる、最後の全結合層の出力を分類したいクラスの数に合わせる、といった使い方をします。 全結合層
原論文のTransformerでは、エンコーダとデコーダの各層に、2つの全結合層の間にReLU関数を挟んだ部分があり、系列のどの位置にも同じ重みで適用される。
◯ 正しい 原論文では位置ごとのフィードフォワードネットワークと呼ばれ、FFN(x) = max(0, xW1 + b1)W2 + b2 と書かれます。Attentionで集めた情報を、位置ごとに非線形に変換する役割をもちます。 全結合層
PyTorchのLinear層やKerasのDense層は、全結合層を実装したものである。
◯ 正しい どちらも入力と重み行列の積にバイアスを足す計算を行います。ライブラリによって呼び名が違っても、中身は同じ全結合層です。 全結合層
畳み込み層
要点を読む3チャネルの画像に、3×3のカーネルをもつフィルタを64枚適用する畳み込み層の重みの数は、バイアスを除くと1,728個である。
◯ 正しい フィルタ1枚の重みは3×3×3=27個で、それが64枚なので27×64=1,728個です。バイアスを64個加えると1,792個になります。 カーネル(畳み込み)
CNNのカーネルの値は、エッジ検出などの目的に合わせて、人があらかじめ設計して与える。
× 誤り カーネルの値は重みとして、誤差逆伝播法による学習で決まります。人が決めるのは、カーネルの大きさや枚数などのハイパーパラメータです。 カーネル(畳み込み)
ストライドが1でチャネル数も変えない場合、3×3のカーネルの畳み込み層を2層重ねると、5×5のカーネルの層1つと同じ広さの入力範囲を見られ、重みの数も少なく済む。
◯ 正しい 入力と出力のチャネル数をどちらもCとすると、3×3を2層では18C²個、5×5を1層では25C²個の重みです。VGGが小さなカーネルを重ねた理由の1つです。 カーネル(畳み込み)
CNNの畳み込み層では、1枚のフィルタの重みを、入力のすべての位置で共通に使う。
◯ 正しい 重み共有と呼ばれます。位置ごとに別の重みを持つ全結合層に比べて、パラメータ数が大幅に少なくなります。 CNN
CNNは画像専用の手法であり、音声や文章のような1次元の系列データには使えない。
× 誤り 1次元の畳み込みを使えば、音声の波形や文章などの系列データにも適用できます。音声生成のWaveNetも畳み込みを使ったモデルです。 CNN
層を重ねたCNNでは、入力に近い層ほど線や色の変化のような単純な特徴を、出力に近い層ほど物体の部品のような複雑な特徴を捉える傾向がある。
◯ 正しい 後ろの層は、前の層の特徴を組み合わせて、より広い範囲の複雑な模様を表せるようになるためです。 CNN
ストライドを大きくすると、フィルタの重みの数が増えるため、畳み込み層のパラメータ数も増える。
× 誤り ストライドは移動の幅で、フィルタの大きさや枚数は変わりません。パラメータ数は同じまま、計算する位置が減る分だけ計算量が減ります。 ストライド
縦横7×7の入力に3×3のフィルタを、パディングなし・ストライド2で適用すると、出力は3×3になる。
◯ 正しい (7 + 0 − 3) ÷ 2 + 1 = 3です。フィルタを置ける位置が、縦横それぞれ3か所になります。 ストライド
ストライドを大きくしすぎると、細かい位置の情報が失われ、小さな対象を捉えにくくなることがある。
◯ 正しい フィルタが間を空けて進むため、出力の解像度が粗くなります。ストライドがフィルタより大きいと、計算に使われない画素も出ます。 ストライド
Atrous ConvolutionとDilated Convolutionは、フィルタの要素の間に間隔を空けて畳み込むという同じ操作を指す、別の呼び名である。
◯ 正しい Atrousはフランス語のà trous(穴のあいた)に由来し、DeepLabの論文で使われた呼び名です。シラバスには両方が載っていますが、別々の手法ではありません。 Dilated Convolution
Dilated Convolutionの膨張率は、フィルタの重みと同じように、学習の過程でデータから自動的に決まる。
× 誤り 膨張率は設計者があらかじめ決めるハイパーパラメータで、学習で更新されるのはフィルタの重みです。膨張率の異なる畳み込みを並べて使う工夫もあります。 Dilated Convolution
WaveNetは、層ごとに間隔を1、2、4、8と広げたDilated Convolutionを重ね、長い時間の範囲の音声波形を少ない層で扱った。
◯ 正しい 間隔を倍々に広げると、受容野は層の数に対して指数関数的に広がります。これにより、数千サンプル分の過去を少ない層で参照できます。 Dilated Convolution
フィルタが3×3で出力チャネル数が十分に多いとき、Depthwise Separable Convolutionの計算量は、通常の畳み込みのおよそ8〜9分の1になる。
◯ 正しい 計算量の比は`1/N + 1/9`です(Nは出力チャネル数)。Nが大きいほど1/9に近づきます。MobileNetの論文でも、8〜9分の1と説明されています。 Depthwise Separable Convolution
Depthwise Separable Convolutionは、通常の畳み込みとまったく同じ計算結果を、少ない計算量で再現する手法である。
× 誤り 表せる計算の範囲を絞ることで、計算量を減らしています。一般には通常の畳み込みと同じ結果にならず、精度がわずかに下がる場合があります。 Depthwise Separable Convolution
通常の畳み込みをDepthwise Separable Convolutionに置き換えると、出力される特徴マップの縦横のサイズは必ず小さくなる。
× 誤り 縦横のサイズは、ストライドとパディングで決まります。置き換えで減るのはパラメータ数と計算量で、縦横のサイズを保ったまま置き換えることもできます。 Depthwise Separable Convolution
3チャネルのカラー画像に、3×3のフィルタを16枚使う畳み込み層を適用すると、出力される特徴マップは入力と同じ3チャネルになる。
× 誤り 1枚のフィルタは入力の3チャネルすべてにまたがって計算し、1枚の特徴マップを作ります。出力のチャネル数はフィルタの枚数と同じ16です。 特徴マップ
特徴マップの値は、フィルタの重みと同じように、誤差逆伝播法による学習で直接更新されるパラメータである。
× 誤り 学習で更新されるのはフィルタの重みとバイアスです。特徴マップは入力ごとに計算される中間の出力で、入力の画像が変われば値も変わります。 特徴マップ
画像分類に使われる一般的なCNNでは、層が深くなるにつれて、特徴マップの縦横は小さくなり、チャネル数は増えていく。
◯ 正しい VGG16では、最初の畳み込み層の出力が224×224×64、最後の畳み込み層の出力が14×14×512です。プーリングで縦横を縮めながら、フィルタの枚数を増やしていきます。 特徴マップ
縦横5×5の入力に3×3のフィルタをストライド1で適用するとき、周囲に幅1のパディングを加えると、出力は5×5になる。
◯ 正しい (5 + 2×1 − 3) ÷ 1 + 1 = 5です。パディングを加えない場合は3×3に縮みます。 パディング
パディングをしないと、画像の端の画素は、中央の画素よりもフィルタの計算に使われる回数が少なくなる。
◯ 正しい 端の画素は、フィルタの窓に入る位置が限られるためです。外側を広げておくと、端の情報も使われやすくなります。 パディング
ゼロパディングで入力の周囲に足した部分にも重みがあり、学習によって値が更新される。
× 誤り 足した部分は0で埋めた固定の値で、学習するパラメータではありません。学習で更新されるのはフィルタの重みです。 パディング
手元にある系列データを1次元の畳み込み層で処理する場合も、RNNと同じく、前の位置の出力を計算し終えてからでないと次の位置の出力を計算できない。
× 誤り 畳み込みの各出力は、フィルタが重なる範囲の入力だけから計算され、ほかの位置の出力を使いません。そのため全位置を同時に計算できます。前の時刻の結果を待つ必要があるのは、隠れ状態を受け渡すRNNです。 CNN・RNNとTransformerの違い
Transformerの元の論文の比較では、系列の長さが表現の次元数より小さいとき、Self-Attention層は1層あたりの計算量がRNNの層より少ない。
◯ 正しい 系列の長さをn、次元数をdとすると、1層あたりの計算量はSelf-Attentionがn²・d、RNNがn・d²に比例します。n < dならSelf-Attentionのほうが少なく、系列の長さが次元数を上回ると逆転します。 CNN・RNNとTransformerの違い
2017年の論文で提案されたTransformerは、エンコーダで畳み込み層を使って局所的な特徴を取り出してから、Self-Attentionに渡す構造である。
× 誤り 元のTransformerは、RNNも畳み込みも使わず、Attentionと位置ごとの全結合層を中心に組み立てられています。論文の題名「Attention Is All You Need」もこの方針を表しています。 CNN・RNNとTransformerの違い
正規化層
要点を読むインスタンス正規化は、バッチサイズが1でも、学習時と推論時に同じ計算で正規化できる。
◯ 正しい 他のサンプルの値を使わず、1枚の画像の中だけで平均と分散を求めるためです。 インスタンス正規化
インスタンス正規化は、画像のスタイル変換で、入力画像ごとのコントラストの違いを打ち消す目的で使われた。
◯ 正しい 画風の表現に関係しない明るさやコントラストの差を、1枚ごと・チャネルごとに取り除けるためです。 インスタンス正規化
インスタンス正規化は、元のTransformerの各ブロックで使われている正規化の手法である。
× 誤り 元のTransformerで使われているのはレイヤー正規化です。インスタンス正規化は、主に画像の生成やスタイル変換で使われます。 インスタンス正規化
グループ正規化は、学習時も推論時も、入力されたサンプルからその場で平均と分散を計算するため、両者で計算の方法が変わらない。
◯ 正しい 統計量をサンプルの中だけで求めるためです。学習中に記録しておいた統計量を推論で使うバッチ正規化とは、この点が異なります。 グループ正規化
グループ正規化の提案論文では、一般的な大きさのバッチで学習した場合、グループ正規化の精度はバッチ正規化を大きく上回ったと報告された。
× 誤り 一般的なバッチサイズでは、両者の精度は同程度でした。差が大きく開いたのは、バッチサイズ2のような小さなバッチで学習した場合です。 グループ正規化
グループ正規化でも、平均0・分散1にそろえた値に、チャネルごとに学習するパラメータで拡大と平行移動を加える。
◯ 正しい バッチ正規化と同じく、スケールγとシフトβを学習します。正規化によって表現できる範囲が狭まらないようにするためです。 グループ正規化
バッチ正規化は、平均0・分散1にそろえた値に、学習で決まる2つのパラメータによる拡大と平行移動を加えてから出力する。
◯ 正しい スケールγとシフトβと呼ばれます。正規化で表現できる範囲が狭まらないよう、必要なら元の分布に戻せるようにしています。 バッチ正規化
バッチ正規化を使ったモデルは、推論時にも入力されたデータから毎回平均と分散を計算し直して正規化する。
× 誤り 推論時は、学習中に移動平均などで記録しておいた平均と分散を使います。こうすると、1件ずつ予測しても結果が安定します。 バッチ正規化
バッチ正規化を入れると、大きめの学習率を使っても学習が発散しにくくなる。
◯ 正しい 各層への入力の大きさがそろうためです。提案論文でも、より大きな学習率を使えることが利点に挙げられています。 バッチ正規化
レイヤー正規化は、ミニバッチのサイズが1でも、学習時と同じ計算で正規化できる。
◯ 正しい 統計量を1つのサンプルの中だけで計算するためです。他のサンプルを必要としないので、バッチサイズに左右されません。 レイヤー正規化
レイヤー正規化は、推論時に、学習中に記録しておいた平均と分散を使って正規化する。
× 誤り それはバッチ正規化の推論時の扱いです。レイヤー正規化は、推論時も入力されたサンプルからその場で平均と分散を計算します。 レイヤー正規化
元のTransformerでは、各サブ層の処理の後にレイヤー正規化が使われている。
◯ 正しい Attentionなどのサブ層の出力と、その入力を足し合わせた後にレイヤー正規化をかけています。 レイヤー正規化
レイヤー正規化では、同じミニバッチに含まれるほかのサンプルの値が、あるサンプルの正規化の結果に影響する。
× 誤り レイヤー正規化は、1つのサンプルの中だけで平均と分散を計算します。ほかのサンプルの値が影響するのは、ミニバッチ全体で統計量を求めるバッチ正規化です。 バッチ正規化とレイヤー正規化の違い
メモリの制約でミニバッチを数件程度にしか取れない場合、バッチ正規化は平均と分散の推定がぶれて、性能が下がりやすい。
◯ 正しい 少ないサンプルから求めた統計量はぶれが大きくなります。こうした場面では、サンプルごとに計算するレイヤー正規化やグループ正規化が候補になります。 バッチ正規化とレイヤー正規化の違い
レイヤー正規化は、平均0・分散1にそろえた後に、学習するパラメータによる拡大と平行移動を行わない点がバッチ正規化と異なる。
× 誤り どちらも、そろえた後に学習するパラメータ(γとβ)で拡大と平行移動を加えます。2つの違いは、平均と分散を計算する範囲です。 バッチ正規化とレイヤー正規化の違い
プーリング層
要点を読むグローバルアベレージプーリングは、チャネルごとに特徴マップ内の最大値を1つ取り出す処理である。
× 誤り 最大値を取り出すのはグローバル最大値プーリング(global max pooling)です。GAPは名前のとおり、チャネルごとに全体の平均を取ります。 グローバルアベレージプーリング
グローバルアベレージプーリングを使うと、入力画像の縦横のサイズが学習時と違っていても、同じ長さのベクトルを出力できる。
◯ 正しい 特徴マップの縦横がいくつでも、チャネルごとに1つの値にまとめるためです。出力の長さはチャネル数で決まります。 グローバルアベレージプーリング
全結合層の代わりにグローバルアベレージプーリングを使うと、一般にパラメータ数が増えるため、過学習が起きやすくなる。
× 誤り GAP自体は学習するパラメータを持たないため、パラメータ数は大きく減ります。提案した論文でも、過学習しにくい点が利点とされています。 グローバルアベレージプーリング
2×2の窓の最大値プーリングを1回かければ、特徴が画像の中で窓の大きさを超えて大きく移動しても、出力は変わらない。
× 誤り 不変性が得られるのは、最大値が同じ窓の中にとどまる程度の小さなずれだけです。特徴が窓をまたいで動けば、最大値の出る位置も変わります。 最大値プーリング
最大値プーリングでは、すべてのチャネルの値をまとめて比べ、位置ごとに1つの最大値を出力する。
× 誤り 最大値は、チャネルごとに窓の中の値から選びます。チャネルどうしを比べることはないため、出力のチャネル数は入力と同じです。 最大値プーリング
誤差逆伝播法では、最大値プーリングの勾配は、窓の中で最大値をとった位置にだけ伝わり、それ以外の位置には0が伝わる。
◯ 正しい 出力に影響したのは最大値の要素だけだからです。最大値以外の要素を少し変えても、出力は変わりません。 最大値プーリング
入力の中で特徴の位置がずれたときに、出力も同じ向きに同じだけずれる性質を、不変性という。
× 誤り 入力のずれに合わせて出力も同じだけずれる性質は、同変性です。不変性は、入力が少しずれても出力が変わらない性質を指します。 不変性の獲得
プーリングで位置ずれへの不変性が得られる代わりに、特徴が特徴マップ上のどこにあったかという細かな位置の情報は失われる。
◯ 正しい 窓の中のどこに反応があっても同じ値にまとめるためです。画素単位の位置が必要なセグメンテーションでは、この情報を補う工夫が必要になります。 不変性の獲得
平均値プーリングは窓の中の値をならすだけなので、位置ずれへの不変性をもたらす働きはない。
× 誤り 特徴が窓の中で少し動いても、窓の中の値の平均はあまり変わりません。最大値プーリングと同じく、小さな位置ずれをある程度吸収できます。 不変性の獲得
窓の中の値が2、4、6、8のとき、2×2の平均値プーリングの出力は5である。
◯ 正しい 4つの値の合計20を4で割って5になります。同じ窓に最大値プーリングを使うと、出力は8です。 平均値プーリング
誤差逆伝播法では、平均値プーリングの勾配は、窓の中で最も大きな値をとった位置にだけ伝わる。
× 誤り それは最大値プーリングの場合です。平均値プーリングでは窓の中のすべての値が同じ割合で出力に効くため、勾配は窓の要素数で割って、すべての位置に均等に配られます。 平均値プーリング
平均値プーリングの窓を特徴マップの縦横全体の大きさにすると、各チャネルが1つの値にまとまり、グローバルアベレージプーリングと同じ処理になる。
◯ 正しい グローバルアベレージプーリング(GAP)は、窓を特徴マップ全体に広げた平均値プーリングと見なせます。出力の長さはチャネル数で決まります。 平均値プーリング
スキップ結合
要点を読むResNetは、2015年のILSVRCの画像分類部門で優勝したモデルである。
◯ 正しい 152層のモデルを含むアンサンブルで、テストデータのtop-5誤り率3.57%を達成しました。VGGの約8倍の深さです。 ResNet
ResNetの残差ブロックでは、間の層が、ブロックの出力そのものではなく、出力と入力の差分を学習する。
◯ 正しい ブロックの出力をH(x)とすると、間の層はF(x) = H(x) − xを学びます。何もしないのが最善なら、F(x)を0に近づけるだけで済みます。 ResNet
ResNetの基本のスキップ結合は、学習するパラメータを大量に追加することで表現力を高める仕組みである。
× 誤り 基本のスキップ結合は入力をそのまま足すだけで、パラメータを追加しません。チャネル数などが変わる箇所でのみ、1×1の畳み込みなどで形をそろえます。 ResNet
回帰結合層
要点を読むRNNでは、各時刻の計算に使う重みが時刻ごとに異なるため、系列が長いほどパラメータ数が増える。
× 誤り RNNはすべての時刻で同じ重みを使い回します。そのため、系列の長さが変わってもパラメータ数は変わりません。 RNN
RNNは、長さの異なる系列を入力として扱える。
◯ 正しい 同じ計算を時刻ごとに繰り返すだけなので、系列の長さを固定する必要がありません。文章や音声のように長さがそろわないデータに向きます。 RNN
単純なRNNは、BPTTで時刻をさかのぼるたびに勾配が掛け合わされるため、遠い過去の入力との関係を学習しにくい。
◯ 正しい 勾配が急速に小さくなる勾配消失が起き、離れた時刻まで学習の信号が届かなくなるためです。LSTMやGRUはゲート機構でこの弱点を補います。 RNN
最初に提案されたLSTM(1997年)には忘却ゲートがなく、忘却ゲートは後の研究で追加された。
◯ 正しい 当初は入力ゲートと出力ゲートだけでした。区切りのない長い入力を処理し続けると記憶セルの値が増え続ける問題があり、自分で内容を消せるよう忘却ゲートが加えられました。 LSTM
LSTMは、隠れ層の大きさが同じなら、単純なRNNよりもパラメータが少なく計算が軽い。
× 誤り LSTMは3つのゲートと記憶セルへの入力のそれぞれに重みを持つため、重みは単純なRNNの約4倍になります。そのぶん計算も重くなります。 LSTM
LSTMを使えば勾配爆発は起きなくなるため、学習で勾配クリッピングを併用する必要はない。
× 誤り LSTMが主に緩和するのは勾配消失です。勾配爆発は起こりうるため、LSTMの学習でも勾配クリッピングがよく併用されます。 LSTM
エルマンネットワークの文脈層は、前の時刻の隠れ層の値を写し取ったものであり、元の論文では隠れ層から文脈層への結合は重み1で固定されている。
◯ 正しい 文脈層は、隠れ層の値をそのまま次の時刻まで預かる役割です。学習で調整するのは、文脈層から隠れ層へ戻る結合などのほうです。 エルマンネットワーク
エルマンネットワークの隠れ層には、その時刻の入力だけが与えられる。
× 誤り 隠れ層には、その時刻の入力と、文脈層(前の時刻の隠れ層の写し)の両方が入ります。これにより、それまでの入力の流れを踏まえた計算ができます。 エルマンネットワーク
エルマンネットワークを時間方向に展開すると深いネットワークと同じ形になるため、長い系列では勾配消失が起きやすい。
◯ 正しい BPTTで時刻をさかのぼるたびに勾配が掛け合わされるためです。この弱点を補うため、ゲート機構を持つLSTMやGRUが使われるようになりました。 エルマンネットワーク
教師強制で学習したモデルでも、推論時には各時刻の入力として、前の時刻に自分が出力した値を使う。
◯ 正しい 推論時には正解がわからないため、自分の出力を次の入力にするしかありません。この学習時と推論時の条件の違いが、教師強制の弱点につながります。 教師強制
Scheduled Samplingは、学習の初めは正解を入力に使い、学習が進むにつれてモデル自身の出力を入力に使う割合を増やしていく方法である。
◯ 正しい 学習時と推論時の条件の差を少しずつ縮める工夫です。最初から自分の出力だけを使うと、学習の序盤は誤った入力ばかりになり、学習が進みにくくなります。 教師強制
教師強制の考え方はRNNにしか適用できず、Transformerのデコーダの学習には使われない。
× 誤り Transformerのデコーダも、学習時は正解の系列を1つずらして入力し、マスクで未来の単語を見えなくして全時刻を一度に学習します。これも教師強制の考え方です。 教師強制
標準的なLSTMのゲートの値は、学習後に固定される定数ではなく、その時刻の入力と1つ前の時刻の隠れ状態から、時刻ごとに計算される。
◯ 正しい 学習で決まるのは、ゲートの値を計算するための重みです。ゲートの値そのものは入力に応じて時刻ごとに変わるため、場面に応じて覚える・忘れるを切り替えられます。 ゲート機構
ゲート機構の考え方は、RNN以外のニューラルネットワークでは使われていない。
× 誤り たとえばHighway Networkは、層をまたいで入力をそのまま通す量をゲートで調整し、深いネットワークの学習を可能にしました。ゲートはRNN以外でも使われる考え方です。 ゲート機構
1997年に提案された当初のLSTMには、忘却ゲートは含まれていなかった。
◯ 正しい 当初のLSTMは、記憶セルと入力ゲート・出力ゲートで構成されていました。忘却ゲートは、2000年にGersらが加えたものです。現在は忘却ゲートを含む形が標準です。 ゲート機構
GRUでは、前の時刻の隠れ状態をどれだけそのまま次の時刻へ残すかを、リセットゲートが決める。
× 誤り それを決めるのは更新ゲートです。リセットゲートは、新しい隠れ状態の候補を作るときに、前の時刻の隠れ状態をどれだけ使うかを決めます。 GRU
GRUは、LSTMよりもゲートが少ないため、隠れ状態の大きさが同じならパラメータ数が少なくて済む。
◯ 正しい LSTMは重みを4組、GRUは3組持つため、同じ条件ならGRUのパラメータは約4分の3です。 GRU
GRUは、どのような課題でもLSTMより高い精度が出ることが確かめられている。
× 誤り 比較実験では課題によって優劣が入れ替わり、全体としては同程度と報告されています。データや計算資源に応じて選びます。 GRU
トレンドとは、毎年12月に売上が増えるような、決まった周期で繰り返し現れる変動のことである。
× 誤り 決まった周期で繰り返す変動は季節性(季節変動)です。トレンドは、長い期間にわたって上がり続ける、下がり続けるといった大きな傾向を指します。 時系列データ
時系列データでは、隣り合う時刻の値どうしが似た値をとりやすく、各データ点を互いに独立とみなす前提が成り立ちにくい。
◯ 正しい 今日の気温は昨日の気温に近いことが多い、といった関係です。これを自己相関といいます。ARモデルは、この関係を利用して過去の値から次の値を予測します。 時系列データ
ある1時点に多数の顧客から集めたアンケート結果は、時系列データではなく、横断面データ(クロスセクションデータ)にあたる。
◯ 正しい 時系列データは、同じ対象を時間に沿って繰り返し記録したものです。1時点で多くの対象を記録したデータは横断面データと呼ばれます。 時系列データ
ジョルダンネットワークでは、前の時刻の出力層の値が、次の時刻の計算に入力として使われる。
◯ 正しい 出力層から状態層へ戻る結合を持つのが特徴です。隠れ層の値を戻すエルマンネットワークとの違いとして押さえます。 ジョルダンネットワーク
ジョルダンネットワークは、エルマンネットワークを改良するために、その後に提案されたモデルである。
× 誤り 順序は逆です。Jordanの技術報告は1986年、Elmanの論文は1990年です。Elmanは論文の中で、Jordanの研究を先行研究として挙げています。 ジョルダンネットワーク
Jordanの原論文では、状態層の各ユニットが1より小さい重みで自分自身に戻る結合も持ち、過去の出力の影響が古いものほど弱まりながら状態に残る。
◯ 正しい 状態層の値は、前の時刻の出力と、重みを掛けた自分自身の値の和です。そのため状態は、過去の出力を古いものほど小さな重みで混ぜた平均のような値になります。 ジョルダンネットワーク
双方向RNNのある時刻の出力は、その時刻より前の入力だけでなく、後ろの入力の影響も受ける。
◯ 正しい 末尾から読んできた逆方向のRNNの情報を、各時刻で順方向の情報と組み合わせるためです。文中の単語の意味を前後から判断する課題に向きます。 双方向RNN
Bahdanauらの注意機構付きの機械翻訳モデルでは、入力文を読み込むエンコーダに双方向RNNが使われた。
◯ 正しい 入力文の各単語について、前後両方の文脈を含んだベクトルを作るためです。翻訳元の文は最初からすべてそろっているので、後ろからも読めます。 双方向RNN
双方向RNNを使えば、文章を先頭から1語ずつ生成するときにも、まだ生成していない後ろの単語を参考にできる。
× 誤り 生成の途中では、後ろの単語はまだ存在しません。双方向RNNは系列全体がそろっていることが前提なので、生成を担うデコーダには一方向のモデルを使います。 双方向RNN
BPTTでは、展開した各時刻の層が同じ重みを共有しているため、各時刻で求めた勾配を足し合わせて重みを更新する。
◯ 正しい 時刻ごとに別の重みがあるわけではありません。1つの重みが全時刻で使われるため、各時刻の寄与を合計します。 BPTT
BPTTでさかのぼる時刻の数を増やすほど、計算に必要なメモリは少なくなる。
× 誤り 逆伝播のために各時刻の途中の値を保存しておく必要があるため、さかのぼる時刻が多いほどメモリを多く使います。 BPTT
打ち切り型BPTTは、さかのぼる時刻の数を一定で区切ることで、計算量とメモリの使用量を抑える方法である。
◯ 正しい その代わり、区切った範囲より遠い過去との関係は学習しにくくなります。 BPTT
GRUの更新ゲートは、LSTMの出力ゲートにあたるもので、隠れ状態のうち外に出す量だけを決める。
× 誤り 更新ゲートは、前の隠れ状態をどれだけ残し、新しい候補をどれだけ取り込むかを決めます。LSTMの忘却ゲートと入力ゲートをまとめた働きで、GRUには出力ゲートにあたるものがありません。 LSTMとGRUの違い
GRUのリセットゲートが0に近いとき、新しい隠れ状態の候補は、前の時刻の隠れ状態をほとんど使わず、現在の入力を中心に作られる。
◯ 正しい リセットゲートは、候補を作るときに前の隠れ状態をどれだけ使うかを決めます。前の隠れ状態を最終的にどれだけ残すかは、更新ゲートが別に決めます。 LSTMとGRUの違い
LSTMでは、出力ゲートを閉じても記憶セルの内容そのものは消えず、記憶セルの内容を消すかどうかは忘却ゲートが決める。
◯ 正しい 出力ゲートが調整するのは、記憶セルの内容を隠れ状態として外に出す量です。GRUには、この読み出しの量を調整するゲートがありません。 LSTMとGRUの違い
単純なRNNでも、LSTMの記憶セルと同じく、前の時刻の隠れ状態をそのまま残し、そこに新しい情報を足し算で加えて次の隠れ状態を作る。
× 誤り 単純なRNNは、前の隠れ状態に重みを掛け、入力と合わせてtanh関数などに通すので、毎時刻すべてを作り直します。前の内容を残したまま足し算で更新するのは、LSTMの記憶セルです。この経路が勾配を過去へ伝えやすくします。 RNNとLSTMの違い
単純なRNNの隠れ層の活性化関数をReLU関数に替えれば、時刻をさかのぼる勾配の大きさは常に一定に保たれるので、長い系列でもLSTMを使う必要はなくなる。
× 誤り ReLU関数の微分は正の範囲で1ですが、BPTTでは時刻ごとに同じ再帰の重みも掛かります。重みの大きさしだいで勾配はやはり消失や爆発を起こし、負の範囲では微分が0にもなります。 RNNとLSTMの違い
入力の次元数と隠れ状態の次元数をそろえて比べると、LSTM層の学習可能なパラメータの数は、単純なRNN層の約4倍になる。
◯ 正しい LSTMは、入力ゲート・忘却ゲート・出力ゲートと新しい候補の4か所で、単純なRNNと同じ形の重みとバイアスを1組ずつ持つためです。その分、1時刻あたりの計算も重くなります。 RNNとLSTMの違い
Attention
要点を読むAttentionの重みは、学習で1通りに固定される値ではなく、入力が変わるたびにクエリとキーから計算し直される。
◯ 正しい 学習で決まるのは、クエリやキーを作る変換の重みなどです。注目の度合いはそのつど計算されるので、文が変われば注目する位置も変わります。 Attention
Attentionは、2017年のTransformerの論文で初めて提案された仕組みである。
× 誤り 2014年にBahdanauらが、RNNを使った機械翻訳にAttentionを導入しています。Transformerの新しさは、RNNを使わずAttentionを中心にモデルを組み立てた点です。 Attention
機械翻訳のAttentionの重みを可視化すると、訳語を出力するときに入力文のどの単語を重視したかの手がかりが得られる。
◯ 正しい Bahdanauらの論文でも、重みを図にすると、対応する単語どうしに大きな重みが付く様子が示されました。ただし、重みがそのまま判断の理由を表すとは限りません。 Attention
元のTransformerでは、位置エンコーディングをエンコーダとデコーダの両方の入力に加える。
◯ 正しい 論文では、エンコーダとデコーダそれぞれの最初の層に入る埋め込みベクトルに足しています。出力の文を作るデコーダでも語順の情報が必要なためです。 位置エンコーディング
元のTransformerの位置エンコーディングは、単語の埋め込みベクトルと連結して、入力ベクトルの次元数を2倍にする。
× 誤り 位置エンコーディングは埋め込みベクトルと同じ次元数で作り、要素ごとに足し合わせます。入力の次元数は変わりません。 位置エンコーディング
元のTransformerの位置エンコーディングでは、すべての次元で同じ周期の正弦波を使う。
× 誤り 偶数番目の次元に正弦波、奇数番目の次元に余弦波を使い、次元の番号によって周期を変えています。そのため、位置ごとに異なるパターンのベクトルになります。 位置エンコーディング
基本形のSeq2Seqでは、エンコーダが入力を最後まで読み込んだときの隠れ状態が、デコーダが出力を始めるときの手がかりとして渡される。
◯ 正しい このベクトルは文脈ベクトルとも呼ばれ、入力文全体の情報を1つにまとめたものです。デコーダはこれを出発点に、出力を1語ずつ生成します。 Seq2Seq
Seq2Seqのデコーダは、出力の系列のすべての単語を1回の計算で同時に出力する。
× 誤り デコーダは1単語ずつ生成し、出力した単語を次の時刻の入力に使います。終わりを表す記号を出したところで止まります。 Seq2Seq
Transformerは、エンコーダとデコーダをもたない点で、Seq2Seqとは異なる構造のモデルである。
× 誤り Transformerも、入力を読むエンコーダと出力を生成するデコーダからなる系列変換のモデルです。違いは、RNNを使わず、Attentionを中心に組み立てた点です。 Seq2Seq
Self-Attentionでは、クエリ・キー・バリューの3つを、同じ1つの系列から作る。
◯ 正しい 同じ系列の各要素に、それぞれ別の重み行列を掛けて3つを作ります。クエリとキー・バリューを別々の系列から作るのはSource-Target Attentionです。 Self-Attention
学習を終えたSelf-Attentionでは、各要素がほかのどの要素にどれだけ注目するかの重みは、入力する文によらず一定である。
× 誤り 学習で固定されるのは、クエリ・キー・バリューを作るための重み行列です。注目の重みは入力のたびにクエリとキーから計算し直すので、文が変われば変わります。 Self-Attention
系列の長さが2倍になると、Self-Attentionで関連度を計算する要素の組み合わせの数は、およそ4倍になる。
◯ 正しい すべての要素どうしの組み合わせを計算するため、計算量は系列の長さの2乗に比例します。長い文書を扱うときの課題です。 Self-Attention
BERTのように、Transformerのエンコーダだけを使うモデルには、Source-Target Attentionは含まれない。
◯ 正しい Source-Target Attentionは、デコーダがエンコーダの出力を参照するための部品です。GPTのようなデコーダだけのモデルも、Attentionの部分はSelf-Attentionだけです。 Source-Target Attention
Source-Target Attentionでは、まだ生成していない位置を隠すマスクを、エンコーダの出力に対してかける必要がある。
× 誤り 入力文は最初からすべてそろっているので、デコーダは入力の全位置を参照できます。未来の位置を隠すマスクが必要なのは、デコーダのSelf-Attentionです。 Source-Target Attention
画像生成の拡散モデルには、文章の情報を画像側の処理に取り込むために、Source-Target Attentionと同じ形のAttentionを使うものがある。
◯ 正しい 画像側の特徴からクエリを、文章をエンコードした結果からキーとバリューを作ります。クロスアテンションと呼ばれ、潜在拡散モデルなどで使われています。 Source-Target Attention
Transformerは、RNNのように単語を1つずつ順番に処理しないため、学習時に系列内の全位置の計算をまとめて並列に行いやすい。
◯ 正しい Self-Attentionは全位置を一度に計算できます。GPUの並列計算を生かせるので、大量のデータで学習しやすくなりました。 Transformer
Transformerでは、RNNと同じく前の時刻の隠れ状態を次の時刻に受け渡すことで、単語の並び順を表現している。
× 誤り Transformerには、時刻ごとに状態を受け渡す構造がありません。並び順は、位置を表すベクトル(位置エンコーディング)を単語の埋め込みに加えて表します。 Transformer
Transformerの各層では、Attentionや全結合ネットワークの出力に、その入力をそのまま足し合わせる残差接続が使われている。
◯ 正しい 元の論文では、入力とサブ層の出力を足してからレイヤー正規化をかける、LayerNorm(x + Sublayer(x))の形です。ResNetのスキップ結合と同じ考え方で、深い層でも学習しやすくします。 Transformer
Multi-Head Attentionで各ヘッドがどの種類の関係に注目するかは、設計者があらかじめ割り当てるのではなく、学習によって決まる。
◯ 正しい ヘッドごとの射影の重みを学習した結果として、役割が分かれます。元の論文でも、文の構造や意味に関係する振る舞いをするヘッドが見られたと報告されています。 Multi-Head Attention
元のTransformerでは、各ヘッドの次元を、モデルの次元をヘッド数で割った大きさに抑えるため、全体の計算量は1つの大きなヘッドで計算する場合と同程度になる。
◯ 正しい 論文の設定では512次元を8つのヘッドに分け、各ヘッドは64次元で計算します。ヘッドを分けても計算量はほとんど増えません。 Multi-Head Attention
Transformerでは、Multi-Head AttentionはエンコーダのSelf-Attentionだけで使われ、デコーダでは使われない。
× 誤り エンコーダのSelf-Attention、デコーダのマスク付きSelf-Attention、デコーダからエンコーダを参照するSource-Target Attentionの3か所すべてで使われます。 Multi-Head Attention
元のTransformerでは、デコーダのどの層のSource-Target Attentionも、エンコーダの最終層の出力からキーとバリューを作る。
◯ 正しい エンコーダの層を積み重ねた最後の出力が、デコーダの全層で共通に参照されます。デコーダの層ごとに、エンコーダの対応する層を見るわけではありません。 Self-AttentionとSource-Target Attentionの違い
Self-Attentionでは、各要素は自分自身には注目できず、自分以外の要素との関連度だけを計算する。
× 誤り 各要素のクエリは、自分自身のキーとも内積をとります。自分自身への重みも含めて、合計が1になるように重みを計算します。 Self-AttentionとSource-Target Attentionの違い
Source-Target Attentionが出力する系列の長さは、キーとバリューを作った入力側(エンコーダ側)の系列の長さと同じになる。
× 誤り 出力はクエリ1つにつき1つ作られるので、デコーダ側の系列と同じ長さになります。入力側の長さは、各出力を作るときに足し合わせるバリューの数を決めます。 Self-AttentionとSource-Target Attentionの違い
オートエンコーダ
要点を読むオートエンコーダは、入力そのものを正解として復元を学習するため、学習に人手で付けた正解ラベルを必要としない。
◯ 正しい 入力と出力の差(再構成誤差)を小さくするように学習します。ラベルのないデータで学習できるため、教師なし学習の手法として扱われます。 オートエンコーダ
正常なデータだけで学習したオートエンコーダは、異常なデータを入力すると再構成誤差が大きくなりやすいため、異常検知に使える。
◯ 正しい 正常なデータの特徴だけを学んでいるので、見たことのない異常なパターンはうまく復元できません。この誤差の大きさを異常の度合いとして使います。 オートエンコーダ
活性化関数を使わず線形の層だけで作ったオートエンコーダでも、主成分分析では表せない非線形な関係を学習できる。
× 誤り 線形の層だけで二乗誤差を小さくすると、主成分分析と同じ部分空間を学ぶことが知られています。非線形な関係を表すには、非線形の活性化関数が必要です。 オートエンコーダ
VAEでは、潜在変数を確率分布から取り出す操作がそのままでは微分できないため、標準正規分布から取り出したノイズと平均・標準偏差を使って潜在変数を表し、誤差逆伝播法で学習できるようにする。
◯ 正しい 再パラメータ化トリックと呼びます。z = μ + σ × εの形にすると、ランダムな部分がεに分かれ、μとσまで勾配が届きます。 VAE
学習を終えたVAEで新しいデータを生成するには、必ずエンコーダに元のデータを入力する必要があり、デコーダだけでは生成できない。
× 誤り 事前分布(通常は標準正規分布)から潜在変数を取り出し、デコーダに通すだけで生成できます。エンコーダは、学習時や手元のデータを潜在変数に変換したいときに使います。 VAE
VAEは、GANと同じく、データを作るネットワークと本物かどうかを見分けるネットワークを競わせる敵対的な学習で訓練する。
× 誤り VAEは、再構成誤差とKL情報量の和を小さくするように学習し、見分ける役のネットワーク(識別器)をもちません。敵対的な学習を使うのはGANです。 VAE
データ拡張
要点を読むCutoutは、ドロップアウトに似た考え方を、中間層ではなく入力画像に対して、ひとまとまりの領域の単位で適用したものとみなせる。
◯ 正しい 提案論文も、ドロップアウトとの違いとして、入力層に適用する点と、1つずつの画素ではなく連続した領域を消す点を挙げています。 Cutout
Cutoutで学習したモデルは、推論のときにも入力画像の一部を正方形で塗りつぶしてから予測する。
× 誤り 塗りつぶしは学習のときだけ行うデータ拡張です。推論のときは、画像をそのまま入力します。 Cutout
Cutoutの提案論文では、塗りつぶす領域の形よりも大きさのほうが、性能を左右する重要なハイパーパラメータだったと報告している。
◯ 正しい このため論文では、形は扱いやすい正方形に固定し、大きさをデータセットごとに調整しています。 Cutout
CutMixで、縦と横がどちらも元の画像の半分の長さの長方形を貼り付けた場合、新しい画像の正解ラベルは、貼り付けた側の画像のクラスが0.5になる。
× 誤り ラベルは辺の長さではなく面積の比率で混ぜます。面積は0.5 × 0.5 = 0.25なので、貼り付けた側のクラスは0.25、元の画像のクラスは0.75です。 CutMix
提案論文のCutMixでは、貼り付ける長方形を、もう一方の画像の同じ位置から切り出す。
◯ 正しい 2枚の画像に同じ長方形の範囲を使います。元の画像のその範囲を取り除き、もう一方の画像の同じ範囲の画素で埋めます。 CutMix
CutMixの提案論文では、画像分類の精度だけでなく、画像の中で物体がどこにあるかを推定する性能も改善したと報告している。
◯ 正しい 弱教師ありの物体位置推定で精度が上がりました。物体の一部だけを見て判断する練習になるためと説明されています。物体検出への転移学習でも改善が報告されています。 CutMix
データ拡張を使うと、新たにデータを集めてラベルを付ける作業を増やさずに、学習データの多様さを高められる。
◯ 正しい 手元のデータを変換して新しいデータを作るため、追加の収集やアノテーションの費用をかけずに済みます。これがデータ拡張の大きな利点です。 データ拡張
データ拡張は画像専用の手法であり、文章や音声のデータには使えない。
× 誤り 文章では言い換え(paraphrasing)や小さな乱れの付加(noising)、音声では雑音を重ねる方法などがあります。画像以外でも広く使われます。 データ拡張
手書きの数字を分類するモデルでは、画像をどの角度で回転させても正解は変わらないため、回転の角度に上限を設ける必要はない。
× 誤り 6を180度回転すると9のように見え、正解が変わってしまいます。数字や文字の分類では、回転を小さな角度にとどめるのが一般的です。 データ拡張
noisingには、学習データを増やすことに加えて、誤字や語順の乱れを含む入力に対してもモデルを頑健にするねらいがある。
◯ 正しい 人は多少の誤字や語順の乱れがあっても意味を読み取れますが、モデルは戸惑いがちです。乱れた文でも学習させることで、頑健性を高めます。 noising
音声データに雑音を重ねて学習データを増やす処理は、データ拡張とはみなされない。
× 誤り 音声に雑音を重ねるのも、意味を変えない範囲でノイズを加えて学習データを増やす、代表的なデータ拡張です。画像に細かなノイズを加える方法もあります。 noising
EDAと呼ばれる文章のデータ拡張は、類義語への置き換え、ランダムな挿入、ランダムな入れ替え、ランダムな削除の4つの操作で文を増やす。
◯ 正しい EDA(Easy Data Augmentation)は2019年に発表された単純な方法です。文章分類の課題で、少ないデータでも精度を上げられることが示されました。 noising
逆翻訳は、機械翻訳の分野で、翻訳先の言語の文章しかないデータから人工的な対訳の組を作り、学習データを増やす方法としても使われてきた。
◯ 正しい 2016年の研究では、翻訳先の言語の文章を逆向きに機械翻訳して人工の対訳を作り、学習に加えて翻訳の精度を上げました。 paraphrasing
paraphrasingは単語単位の置き換えに限られ、文全体を書き換える方法は含まれない。
× 誤り 類義語への置き換えのような単語単位の方法に加え、逆翻訳や生成モデルによる書き換えのように、文全体を言い換える方法も含まれます。 paraphrasing
大規模言語モデルに元の文の言い換えを生成させて学習データを増やす方法も、paraphrasingによるデータ拡張の一種である。
◯ 正しい 生成モデルに言い換え文を作らせる方法は、paraphrasingの代表的な手段の1つです。ただし意味が変わっていないかの確認は必要です。 paraphrasing
Mixupで混合比率の分布を決めるハイパーパラメータαを大きくしすぎると、混ぜ方が強くなりすぎて、学習データにも十分に合わない未学習の状態になることがある。
◯ 正しい 提案論文では、ImageNetでαを0.1〜0.4にすると効果があり、大きすぎると未学習になったと報告しています。正則化と同じく、強さの調整が必要です。 Mixup
Mixupは画素を混ぜる操作にもとづくため、表形式のデータや音声のデータには使えない。
× 誤り 入力をベクトルとして混ぜるだけなので、データの種類を問いません。提案論文でも、画像のほかに音声コマンドや表形式のデータで効果が確かめられています。 Mixup
Mixupで混ぜる2つの学習データは、正解ラベルが同じものどうしに限られる。
× 誤り 2つのデータは、クラスを問わずランダムに選びます。提案論文では、同じラベルのデータどうしだけを混ぜても、Mixupによる性能の向上は得られなかったと述べています。 Mixup
Random Erasingは、すべての学習画像に必ず適用するのではなく、一定の確率で適用するかどうかを決めるため、元のままの画像も学習に使われる。
◯ 正しい 提案論文の標準設定では、確率0.5で消すかどうかを決めます。隠れた画像と元の画像の両方で学習します。 Random Erasing
Random Erasingを使うには、学習するパラメータをネットワークに追加し、モデルの構造を変更する必要がある。
× 誤り Random Erasingは入力画像を加工するだけで、学習するパラメータは増えません。そのため、多くのCNNの学習にそのまま組み込めます。 Random Erasing
Random Erasingの提案論文では、ランダムな切り抜きや左右反転といった一般的なデータ拡張と組み合わせても効果があると報告している。
◯ 正しい 切り抜きや反転とは違う種類の変化(隠れ)を加えるため、互いに補い合います。論文の実験でも、反転と切り抜きを使った学習に加える形で効果を確かめています。 Random Erasing
RandAugmentのNとMは、どちらも値を大きくするほど、データ拡張による正則化が強くなるように設計されている。
◯ 正しい Nを増やすと1枚に加える変換が増え、Mを上げると各変換が強くなります。値の意味が直感的に分かるため、調整しやすい設計です。 RandAugment
RandAugmentは調整する値が少ないため、グリッドサーチのような単純な方法でも、よい値の組み合わせを探せる。
◯ 正しい 調整するのはNとMの2つだけなので、候補の値を総当たりで試しても手間は小さく済みます。提案論文でも、単純なグリッドサーチで十分な効果が得られたとしています。 RandAugment
RandAugmentは画像分類のための手法であり、物体検出のモデルの学習では効果が確かめられていない。
× 誤り 提案論文では、COCOの物体検出でも、基本的なデータ拡張に比べて精度(mAP)が1.0〜1.3ポイント上がったと報告しています。 RandAugment