AIハードウェアとソフトウェアスタック

ソフトマックス関数exp(xi)/Σexp(xj)を計算するとき、各xiから最大値を引いてから計算することが多い理由として正しいものはどれか。

  1. A計算の結果を近似値に変えて速くするため
  2. B最大の要素を必ず0にするため
  3. C結果は同じまま、expの値が大きくなりすぎてあふれる(無限大になる)のを防げるから
答えと解説を見る

正解:C. 結果は同じまま、expの値が大きくなりすぎてあふれる(無限大になる)のを防げるから

expは急激に大きくなる関数で、例えばFP16ではxが11程度を超えるとexp(x)が表せる最大値を超えてしまいます。すべてのxから同じ定数mを引くと、分子も分母もexp(-m)倍になるだけで結果は変わりません。最大値を引けば指数は0以下になり、expの値は1以下に収まってあふれません。低い精度で計算するAIでは特に重要な工夫で、高速なアテンションの実装でも使われます。

  • A. 結果は正確に同じです。
  • B. 最大の要素の出力は最も大きくなり、0にはなりません。
  • C. 正しい。分子と分母に同じ係数が掛かるだけです。
この分野を解く 分野ページへ

AIハードウェアとソフトウェアスタックのほかの問題

  1. 大規模言語モデルの推論を速くする「投機的デコーディング」の考え方として正しいものはどれか。
  2. 推薦システムのモデルなどで使われる大きな埋め込み表(エンベディングテーブル)の表引きが、AIのハードウェアで扱いにくい理由として正しいものはどれか。
  3. AIのソフトウェアスタックを、利用者に近い上の層からハードウェアに近い下の層へ並べたものとして正しいものはどれか。
  4. ニューラルネットワークの「学習」と「推論」の違いとして正しいものはどれか。
  5. 学習に必要なメモリが、同じモデルの推論よりずっと大きくなる理由として当てはまらないものはどれか。