ITパスポート 2023年 問91
問題文
AIに利用されるニューラルネットワークにおける活性化関数に関する記述として、適切なものはどれか。
選択肢
ア:ニューラルネットワークから得られた結果を基に計算し、結果の信頼度を出力する。
イ:入力層と出力層のニューロンの数を基に計算し、中間層に必要なニューロンの数を出力する。
ウ:ニューロンの接続構成を基に計算し、最適なニューロンの数を出力する。
エ:一つのニューロンにおいて、入力された値を基に計算し、次のニューロンに渡す値を出力する。(正解)
🔒 解説は解答すると表示されます
AIに利用されるニューラルネットワークにおける活性化関数に関する記述【ITパスポート 解説】
正解の理由
この問題では選択肢エが正解です。活性化関数(activation function:入力値を変換して次の処理に渡す関数)は、ニューラルネットワークの「一つのニューロンにおいて、入力された値を基に計算し、次のニューロンに渡す値を出力する」役割を持ちます。
ここでの重要点は「一つのニューロンでの計算」と「次に渡す値を決める」という部分で、これが活性化関数の本来の働きと一致します。
ここでの重要点は「一つのニューロンでの計算」と「次に渡す値を決める」という部分で、これが活性化関数の本来の働きと一致します。
- ニューロン(node、ユニット:情報を受け取り計算する小さな処理単位)では、まず入力値に重みを掛けて合計を作り、バイアス(bias:出力を調整するための追加の定数)を加えます。その合計を活性化関数に通して出力を得ます。
- 活性化関数があるからこそ、出力に非線形性(直線では表せない特性)が入り、複雑なパターンを学習できます。これが「次のニューロンに渡す値を作る」という説明に対応します。
解法ステップ
- 問題文で何を問われているか確認する:活性化関数の役割。
- 活性化関数の定義を思い出す:ニューロンの出力を決める関数であること。
- 各選択肢がその定義に合うかを比較する。
- 「一つのニューロンでの処理」と「次に渡す値を出力する」を満たす選択肢を選ぶ。→ エ が該当。
選択肢別の誤答解説
-
ア: ニューラルネットワークから得られた結果を基に計算し、結果の信頼度を出力する。
→ これは「出力の後処理(例えば確率に変換して信頼度を出す)」の説明に近いです。しかし活性化関数は各ニューロン単位で働く関数であり、「結果の信頼度を出力する」ことだけが役割ではありません。特に「結果を基に計算する」という表現は活性化関数の位置づけと異なります。 -
イ: 入力層と出力層のニューロンの数を基に計算し、中間層に必要なニューロンの数を出力する。
→ これはネットワーク設計(層の構成を決める作業)に関する話で、活性化関数とは無関係です。活性化関数は構成を決める計算を行いません。 -
ウ: ニューロンの接続構成を基に計算し、最適なニューロンの数を出力する。
→ これもネットワーク設計やハイパーパラメータの自動調整に関する内容で、活性化関数の定義とは一致しません。活性化関数は接続構成を解析して数を出す機能は持ちません。 -
エ: 一つのニューロンにおいて、入力された値を基に計算し、次のニューロンに渡す値を出力する。
→ 活性化関数の基本的な役割を正しく表現しています。よって正解です。
よくある誤解
-
「活性化関数は学習後にだけ使う」
→ 誤りです。活性化関数は学習(重みの更新)時と推論(入力から出力を得るとき)の両方で常に使われます。学習時は微分を使って重みを更新するので、関数の微分可能性が重要になります。 -
「活性化関数は出力を確率にするものだけ」
→ 誤りです。確率に変換する関数(例:ソフトマックス:複数クラスの確率に変換する関数)は出力層で使われることがありますが、活性化関数全体にはシグモイド、ReLUなどさまざまな種類があり、目的に応じて使い分けます。
補足コラム
代表的な活性化関数(簡潔に)
- シグモイド(sigmoid:S字の滑らかな関数)
- 数式:
- 出力は 〜。二値分類の出力層で使われることがある。
- tanh(双曲線正接)
- 出力は 〜。ゼロ中心なので学習が安定することがある。
- ReLU(Rectified Linear Unit:負の値を0にする関数)
- 数式:
- シンプルで計算が速く、深い層でもよく使われる。
- ソフトマックス(softmax:複数クラスの確率に変換する関数)
- 出力ベクトルを確率分布に変換するため、分類問題の出力層で使われる。
活性化関数は非線形性を与えるために不可欠です。もし活性化関数を全く使わなければ、どんなに層を重ねても全体は線形変換に留まり、複雑な関係を学習できません。
簡単なPython例(活性化関数の実装例)
import numpy as np
def sigmoid(x):
return 1 / (1 + np.exp(-x))
def relu(x):
return np.maximum(0, x)
# 入力の重み付き和に対して活性化関数を適用
x = np.array([0.5, -1.2, 0.3])
w = np.array([0.8, -0.5, 1.0])
bias = 0.1
z = x.dot(w) + bias # ニューロンの入力
output = relu(z) # 活性化関数を通した出力
print(output)
FAQ
Q1: 活性化関数と出力層の関数は同じですか?
A1: 部分的に同じです。出力層でも活性化関数を使いますが、目的に応じて特別な関数(例:ソフトマックス)を使うことがあります。隠れ層では主に非線形性を与える関数(ReLUやシグモイドなど)が使われます。
A1: 部分的に同じです。出力層でも活性化関数を使いますが、目的に応じて特別な関数(例:ソフトマックス)を使うことがあります。隠れ層では主に非線形性を与える関数(ReLUやシグモイドなど)が使われます。
Q2: なぜ非線形(non-linear)が必要ですか?
A2: 非線形がないと、層を何枚重ねても全体は線形な変換に過ぎません。非線形を入れることで、複雑なパターンや関係をモデルが表現できるようになります。
A2: 非線形がないと、層を何枚重ねても全体は線形な変換に過ぎません。非線形を入れることで、複雑なパターンや関係をモデルが表現できるようになります。
Q3: どの活性化関数を選べばよいですか?
A3: 一般には隠れ層でReLUがよく使われます。分類問題の出力ではソフトマックスやシグモイドを使います。ただしデータや問題により最適な選択は変わるため、試行(実験)が必要です。
A3: 一般には隠れ層でReLUがよく使われます。分類問題の出力ではソフトマックスやシグモイドを使います。ただしデータや問題により最適な選択は変わるため、試行(実験)が必要です。
関連キーワード: ニューラルネットワーク、活性化関数、ニューロン、ReLU、シグモイド、ソフトマックス、深層学習、機械学習、バイアス、順伝播(フォワードプロパゲーション)

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

