【PR】この記事には楽天アフィリエイト・Amazonアソシエイトの広告リンクが含まれます。商品やサービスは公式の仕様・条件と販売情報を確認して選んでおり、実機テストによる評価ではありません。 Amazonのアソシエイトとして、PROBEFOLIOは適格販売により収入を得ています。
活性化関数は、ニューラルネットワークの各ニューロンの最後で、計算の結果を「曲げる」ための関数です。これがないと、層をいくら重ねても、1段の単純な計算と同じことしかできません。
この記事では、2026年9月25日に確認したGoogleの機械学習の教材と論文をもとに、なぜ必要かを小さな数字の例で確かめ、よく使われる種類の違いまで説明します。
この記事の目次
結論:ないと、何層重ねても1つの直線の計算にまとまるから
Googleの機械学習の教材は、「線形の計算に線形の計算を重ねても、線形のまま」と説明しています。掛けて足すだけの計算(線形の計算)は、何段重ねても、1段の掛けて足す計算にまとめられてしまいます。
つまり、活性化関数がないと、層を100段重ねても、1段のネットワークと同じことしかできません。 直線1本で分けられない問題は、いつまでも解けないままです。
活性化関数があるときとないときの違いは、表「活性化関数のあり・なしの違い」のとおりです。
| 項目 | 活性化関数なし | 活性化関数あり |
|---|---|---|
| 層を重ねた結果 | 1段の直線の計算にまとまる | 折れ曲がった複雑な形を作れる |
| 分けられる境目 | 直線(平面)だけ | 曲がった境目も作れる |
| XORのような問題 | 解けない | 解ける |
| 層を深くする意味 | ほとんどない | 深いほど複雑な特徴を作れる |
活性化関数はどこに入るのか
活性化関数は、ニューラルネットワークの1個1個のニューロンの中で、計算の最後に入ります。流れは、図「1個のニューロンの中の計算」のとおりです。
入力に重みを掛けて足し、バイアスを足すところまでは、どのニューロンも同じ「掛けて足す」計算です。その結果を次の層に渡す前に、活性化関数で形を整えます。
1個のニューロンの中の計算
- 入力を受け取る
前の層から、いくつかの数字を受け取る
- 重みを掛けて足す
入力ごとに重みを掛け、全部を足す
- バイアスを足す
基準の高さを調整する数字を足す
- 活性化関数を通す
結果を曲げてから、次の層に渡す
1〜3番目は、どれだけ重ねても直線の計算です。4番目があることで、層ごとに折れ曲がりが加わり、重ねる意味が生まれます。
層の数だけ、この流れが繰り返されます。出力層だけは、答えの形に合わせた関数を使います。
身近なたとえ:まっすぐな紙は重ねても平ら
まっすぐな紙を何枚重ねても、平らな紙の束のままです。どれだけ枚数を増やしても、立体の形は作れません。掛けて足すだけの層を重ねるのは、これと同じです。
一方で、1枚ずつ折り目を付けてから重ねると、箱や鶴のような形を作れます。活性化関数は、この「折り目」の役目をします。
折り目の付け方がReLUやシグモイドなどの種類の違いで、折り目の位置や深さは、学習の中で重みとバイアスが決めていきます。
数字で確かめる:2段の直線は1段の直線にまとまる
入力をxとして、1段目で「2倍して1を足す(y=2x+1)」、2段目で「3倍して4を引く(z=3y−4)」という計算をするネットワークを考えます。どちらも掛けて足すだけの計算です。
1段目の式を2段目に入れると、z=3×(2x+1)−4=6x−1になります。2段の計算が、「6倍して1を引く」という1段の計算にまとまりました。
これは、何段重ねても同じです。掛けて足すだけの計算は、どれだけ重ねても「何倍かして何かを足す」1つの計算になります。層を重ねる意味がなくなってしまうのです。
| 入力 x | 2段で計算した z | 1段の式 6x−1 |
|---|---|---|
| −2 | 3×(−3)−4=−13 | −13 |
| 0 | 3×1−4=−1 | −1 |
| 1 | 3×3−4=5 | 5 |
| 2 | 3×5−4=11 | 11 |
間にReLUを入れると、線が折れ曲がる
同じ例で、1段目の結果に「マイナスなら0、プラスならそのまま」にするReLUを入れてみます。z=3×ReLU(2x+1)−4です。
xが−0.5より小さいとき、2x+1はマイナスなのでReLUで0になり、zは−4のまま平らになります。xが−0.5以上のときは、z=6x−1の直線になります。つまり、線がx=−0.5で折れ曲がりました。
折れ曲がりを作れるようになると、折れ線を何本も組み合わせて、どんな形にも近い線を作れるようになります。これが、活性化関数が「曲げる」役目と呼ばれる理由です。
| 入力 x | ReLUなしの z | ReLUありの z |
|---|---|---|
| −2 | −13 | −4(平ら) |
| −1 | −7 | −4(平ら) |
| 0 | −1 | −1 |
| 2 | 11 | 11 |
折れ目を増やすと、どんな形にも近づける
ReLUを何個か組み合わせると、折れ目を増やせます。たとえば、ReLU(x)−2×ReLU(x−1)+ReLU(x−2)という計算は、xが0から1で上がり、1から2で下がる「山」の形になります。
xが0のとき0、1のとき1、2のとき0、3のとき0です。ReLU3個で、平らな所・上り坂・下り坂・平らな所を持つ形を作れました。
山をたくさん並べて高さを変えれば、どんな曲線にも近い形を作れます。ニューロンの数が多いネットワークほど複雑な関係を学べるのは、このためです。
| 入力 x | ReLU(x)−2×ReLU(x−1)+ReLU(x−2) | 形 |
|---|---|---|
| 0 | 0−0+0=0 | 平ら |
| 1 | 1−0+0=1 | 山の頂上 |
| 2 | 2−2+0=0 | 下り終わり |
| 3 | 3−4+1=0 | 平ら |
直線では解けない問題を解く:XORの例
XOR(排他的論理和)は、2つの入力のどちらか一方だけが1のときに1を出す問題です。(0,0)と(1,1)は0、(1,0)と(0,1)は1になります。この4点は、直線1本では0の組と1の組に分けられません。
ReLUを使った隠れ層を1つ入れると解けます。h1=ReLU(x1+x2)、h2=ReLU(x1+x2−1)を計算し、出力をh1−2×h2にします。結果は表「ReLUでXORを解く計算」のとおりで、4点とも正しく答えられます。
活性化関数がなければ、この計算もh1−2×h2が1つの直線の式にまとまり、XORは解けません。直線で分けられない問題を解けることが、活性化関数が必要な一番分かりやすい理由です。
| 入力(x1, x2) | h1 と h2 | 出力 h1−2×h2 |
|---|---|---|
| (0, 0) | h1=0、h2=0 | 0 |
| (1, 0) | h1=1、h2=0 | 1 |
| (0, 1) | h1=1、h2=0 | 1 |
| (1, 1) | h1=2、h2=1 | 0 |
よく使われる活性化関数の違い
活性化関数には、いくつかの種類があります。Googleの教材は、シグモイド・tanh・ReLUの3つを代表として紹介しています。
使われる場所と特徴は、表「代表的な活性化関数」のとおりです。今の隠れ層では、ReLUやその仲間が定番です。
| 名前 | 出力の形 | 主な使いどころ・特徴 |
|---|---|---|
| ステップ関数 | 0か1のどちらか | 昔のパーセプトロン。学習に使いにくい |
| シグモイド | 0〜1のなめらかなS字 | 確率を出す出力層。深い層では勾配が消えやすい |
| tanh | −1〜1のS字 | シグモイドより中心がそろう |
| ReLU | マイナスは0、プラスはそのまま | 隠れ層の定番。計算が軽い |
| GELU | ReLUをなめらかにした形 | BERTやGPTなどの言語モデル |
シグモイドの弱点:勾配が消える
ニューラルネットワークは、誤差逆伝播法で、出口から入口に向かって「直す向き(勾配)」を計算して学びます。この計算では、各層の傾きを次々に掛け合わせます。
シグモイドの傾きは、一番大きいところでも0.25です。10層で0.25を掛け合わせると、0.25の10乗で約0.00000095になります。入口に近い層ほど、直す向きがほとんど0になり、学習が進まなくなります。これを勾配消失と呼びます。
Googleの教材は、ReLUが勾配消失の問題を受けにくいため、シグモイドやtanhより少しうまく働くことが多いと説明しています。深いネットワークの隠れ層でReLUが選ばれる大きな理由です。
ReLUは単純なのに、なぜうまくいくのか
ReLUは「マイナスなら0、プラスならそのまま」という、とても単純な関数です。それでも隠れ層の定番になった理由は、主に3つあります。
- 計算が軽い:0と比べて大きいほうを取るだけなので、たくさんのニューロンでもすばやく計算できる。
- 勾配が消えにくい:プラスの側の傾きはいつも1なので、層を重ねても直す向きが小さくなりにくい。
- 折れ目を組み合わせられる:折れ線を何本も足し合わせれば、複雑な形にも近づける。
単純さと、組み合わせたときの表現力の両方を持っていることが、ReLUが広く使われる理由です。
ReLUにも弱点がある:動かなくなるニューロン
ReLUはマイナスをすべて0にするため、あるニューロンの入力がいつもマイナスになると、出力がずっと0になります。こうなると、そのニューロンは学習にまったく参加しなくなります。
Googleの教材は、これを「死んだReLU」と呼び、学習率を下げることや、マイナスの側にも少しだけ傾きを残すLeakyReLUを使うことを対策に挙げています。
どの活性化関数にも得意・不得意があります。「隠れ層はまずReLU、うまくいかなければ仲間の関数を試す」と考えると選びやすくなります。
LLMで使われるGELU
ChatGPTのもとになるような言語モデルでは、GELUという活性化関数がよく使われます。GELUは2016年の論文で提案された関数で、ReLUの折れ曲がりをなめらかにしたような形をしています。
2018年に発表された言語モデルBERTの論文には、OpenAIのGPTにならい、標準的なReLUではなくGELUを使ったと書かれています。
なめらかな形のほうが、大きなモデルの学習が安定しやすいと考えられています。ただ、「なぜ必要か」という基本は、ReLUの例と同じです。
GELUも、ReLUと同じく、マイナスの入力はほぼ0に近づけ、プラスの入力はほぼそのまま通します。違いは、0の近くの形がなめらかかどうかです。
よくある3つの誤解
- 活性化関数が「判断」している:判断を決めているのは重みとバイアスで、活性化関数は結果の形を整えるだけ。
- 活性化関数は出力を0か1にするもの:0か1にするのは昔のステップ関数だけ。ReLUはプラスの値をそのまま通し、シグモイドは0〜1のなめらかな値を出す。
- 種類を変えれば性能が大きく上がる:多くの場合、隠れ層はReLUの仲間で十分に働く。性能はデータの量や層の設計のほうが大きく左右する。
この3つを押さえておくと、解説記事や試験の選択肢で迷いにくくなります。
選び方の手順
初めて自分でネットワークを作るときは、次の順に考えると迷いません。
- 出力層を先に決める:答えが2択ならシグモイド、3つ以上から選ぶならソフトマックス、数値ならそのまま。
- 隠れ層はReLUから始める:多くの場合、まずReLUで試す。
- 学習がうまく進まなければ変える:出力が0のまま動かないニューロンが多いなら、LeakyReLUなどの仲間を試す。
言語モデルのような大きなモデルを一から作ることはまれですが、使われている関数の名前を見て、その意味が分かるようになると解説が読みやすくなります。
出力層の関数は、答えの形で選ぶ
隠れ層の活性化関数とは別に、最後の出力層では、答えの形に合わせて関数を選びます。
- はい・いいえの2択:シグモイドで0〜1の確率にする。迷惑メールかどうか、など。
- 3つ以上から1つを選ぶ:ソフトマックスで、全部の確率の合計が1になるようにする。写真が猫・犬・鳥のどれか、など。
- 数値を当てる:何もしないでそのまま出す。家の値段の予想、など。
言語モデルが次の言葉を選ぶときも、たくさんの言葉の候補から1つを選ぶので、ソフトマックスのような計算で確率にしています。
出力層の関数を間違えると、確率の合計が1にならないなど、答えの意味がおかしくなります。隠れ層より先に、出力層の関数を答えの形で決めてください。
表計算で試す:ReLUの折れ曲がりを見る
この記事の例は、ExcelやGoogleスプレッドシートで確かめられます。A列に−2から2までのxを並べ、B列に「=3*(2*A2+1)-4」、C列に「=3*MAX(0,2*A2+1)-4」と入れます。
2つの列をグラフにすると、B列は1本の直線、C列は途中で折れ曲がった線になります。MAX(0, …)の部分が、ReLUの役目をしています。
XORの例も、h1とh2の式を同じように入れれば確かめられます。数字が式どおりに変わるのを見ると、「曲げる」意味が実感できます。
山の形の例も、「=MAX(0,A2)-2*MAX(0,A2-1)+MAX(0,A2-2)」と入れてグラフにすると、折れ目が3つある形を目で確かめられます。
資格の勉強で押さえたい点
JDLAのE資格の出題範囲では、「深層学習の基礎」の中に順伝播型ネットワークが含まれています。活性化関数は、その基本の部品です。
勉強では、次の3点を自分の言葉で説明できるようにしておくと安心です。
- なぜ必要か:線形の計算は重ねても線形のままだから。
- シグモイドの弱点:傾きが小さく、深い層で勾配が消えやすい。
- ReLUの利点と弱点:勾配が消えにくく計算が軽い一方、出力がずっと0になるニューロンが出ることがある。
用語を覚えるだけでなく、この記事の「2段の直線が1段にまとまる」計算を自分で書いてみると、選択肢の言いかえにも迷わなくなります。
よくある疑問を、ここで。
使い始める前に、気になるところから。
活性化関数を一言でいうと?
ニューロンの計算の最後で、結果を曲げるための関数です。これがあることで、層を重ねたニューラルネットワークが、直線では分けられない複雑な関係を学べるようになります。
活性化関数がないとどうなりますか?
層をいくら重ねても、1段の掛けて足す計算にまとまります。y=2x+1とz=3y−4を重ねると、z=6x−1という1つの式になるのがその例です。
どの活性化関数を使えばよいですか?
隠れ層ではまずReLUが定番です。2択の確率を出す出力層にはシグモイド、3つ以上から選ぶ出力層にはソフトマックスを使います。言語モデルではGELUもよく使われます。
なぜシグモイドは隠れ層で使われなくなったのですか?
傾きが最大でも0.25と小さく、深い層で掛け合わせると勾配がほとんど0になり、学習が進まなくなるためです。ReLUは勾配が消えにくく、計算も軽いため定番になりました。
「線形」「非線形」とは何ですか?
線形は、「何倍かして何かを足す」だけで表せる、まっすぐな関係です。非線形は、折れ曲がったり曲線になったりする関係です。活性化関数は、ネットワークに非線形を持ち込む役目をします。
この記事を共有する
商品情報の提供:Supported by Rakuten Developers
出典と、この記事について
公式資料や、記事で参照した発表・報道をまとめています。仕様や料金は、利用する前に最新の案内をご確認ください。
- Google Machine Learning Crash Course:Activation functions(新しいタブで開きます)
- Google Machine Learning Crash Course:Training using backpropagation(新しいタブで開きます)
- Google Machine Learning Crash Course:Neural networks(新しいタブで開きます)
- Devlin ほか「BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding」(2018年)(新しいタブで開きます)
- Hendrycks・Gimpel「Gaussian Error Linear Units (GELUs)」(2016年)(新しいタブで開きます)
- JDLA:E資格(エンジニア資格)試験概要(新しいタブで開きます)
確認した内容と条件は本文に記載しています。結果や使い勝手は、資料や環境によって異なります。編集方針を読む




ぜひコメントください