【初心者】ネコでも分かる「活性化関数」ってなに?

3 min read読了の目安(約3200字

はじめに

今回は、「活性化関数」 (かっせいかかんすう)について解説します。
人工知能や機械学習やディープラーニングの記事を見ていると、活性化関数はよく目にすると思います。
「調べてみたけど、いまいちよくわからない...」という方向けに、分かり易く解説します。
分からない点があればコメントしてください。

●対象の読者

  • 活性化関数が全く分からない人
  • 活性化関数がなんとなく分かる人

●この記事でわかること

  1. ニューラルネットワークの流れ
  2. 活性化関数の役割
  3. 活性化関数の種類
  4. なぜ活性化関数は非線形じゃなければいけないのか

この記事は現在執筆中です。
より分かりやすくするための図解を準備しています。
随時アップデートしていきますので、「いいね」よろしくお願いします。


Created by NekoAllergy

ニューラルネットワークの復習

活性化関数は、ニューラルネットワークを作る時 に使います。
(ニューラルネットワークって長くて面倒なので、NNって略して書きます。)
NNでは、入力された数字に、いろいろな変換(計算) をしていき、最終的な出力を出します。

●具体的に何をしているの?

値を変換する流れとしては、こんな感じです。
 Step1:「重み」を掛け算する
 Step2:「ニューロンの値」を足し算する
 Step3:「活性化関数」による変換を行う

もう少し細かく、NNの中の「1つの数字の流れ」を見てみましょう。


●1つ目の変換

最初に、NNに入力された数字は「ニューロン」に入れられます。
ニューロンとは、図にある水色の丸いやつのことです。
ニューロンは数字を1つだけ持つことができる、箱みたいなもんです。
数字を黄色の丸で表しています。

そのニューロンの値は「シナプス」という線を通って、次のニューロンへ進みます。
シナプスとは、数字の通り道です。

このシナプスを通る時に、値は変換されます。これが1つ目の変換です。
ニューロンの値にシナプスに設定されている「重み」が掛け算されます。

たとえば、1つ目(図の一番上)のニューロンの値が3だったとすると、その値に重みの2が掛けられ、次のニューロンへと運ばれます。
この重みは、シナプスごとに異なります。

●2つ目の変換

たくさんの前ニューロンからきた数字が、1つのニューロンに集まり、足されます。
これが2つ目の変換です。

1か所のニューロンに値をまとめるイメージです。
その数字が、また次のニューロンへと進んでいきます。
しかしこの時、ニューロンの値はそのまま次へは進みません。

●3つ目の変換

数字は、ニューロン内である変換をされてから、次ニューロンへと進みます。
この変換のことを 「活性化関数」(かっせいかかんすう)と呼びます。
これが3つ目の変換です。

活性化関数とは?

活性化関数は、足し算や掛け算のような簡単な計算ではありません。
活性化関数は、その値を次のニューロンに 「どのように出力するか」 を決めます。

活性化関数を使って値を変換することで、とてもいいことがあります。
というか、活性化関数がなければ、NNを作ることができません。

活性化関数を使うメリットは、複雑な計算をすることができる点です。
難しい言い方をすると、活性化関数を使うことで 「表現の自由度を上げる」 ことができます。
逆に、活性化関数を使わなければ、難しい予測や分類をすることはできません。

たとえば、大量のデータを分類したり、音声認識によって言葉を聞き取ったりなど、解決したい問題のほとんどは難しい問題です。
超簡単な問題なら、活性化関数なしでも解くことができますが、高度な計算はできません。
このように、活性化関数を使う目的は、「表現の自由度を上げる」ことです。

活性化関数を使うことで「表現の自由度を上げる」ことができる

活性化関数のイメージ


イメージはこんな感じです。
2色の〇を、線を引いてきれいに分類したいです。
実際にはこの〇に、ひとつひとつのデータが入ります。

この時、活性化関数なしではまっすぐな直線しか引くことができません。
しかし、活性化関数を使うことでくねくねした曲線 を引くことができます。

「表現の自由度を上げる」とは、このようなイメージです。
詳しく分からなくても、活性化関数のイメージをつかんでもらえればOKです。

活性化関数を使うことで、くねくねした曲線を引くことができる

活性化関数の種類

活性化関数にはいくつか種類があります。
使用する活性化関数を変えることで、変換の方法が変わり、最終的な結果も変わってきます。
それぞれの活性化関数には役割が決まっていて、「こんな時にはこの活性化関数を使う」というのが、ある程度決まっています。

活性化関数の種類はどんどん増えていますが、だいたい5.6種類くらい知っていればOKです。
今回は、代表的な活性化関数を5つ解説します。

  1. ステップ関数
  2. シグモイド関数
  3. ReLU関数
  4. Softmax関数
  5. 恒等関数

続きの内容は本にまとめてあります。
手に取って頂けるととても喜びます。

これ↓

https://zenn.dev/nekoallergy/books/904df952389317