【微分をわかりやすく】Excelであらゆる関数の微分を簡単に計算する方法

2021年11月17日

高校で微分を習った時、

「こんなもん勉強して、将来何の役に立つんだ!」

と思った人は少なくないと思います。

世の中の物理現象は微分積分を使わないと説明できないのですが、確かにエンジニアでもない限りは知らなくても困ることはありません。

でも、これから多くの人が勉強することになると思われるAIは、微分積分を知らないと理解できません。

今回は、

  • 微分は簡単なんだよ
  • どんな微分もExcelで計算できるよ
  • ニューラルネットワークで出てくる活性化関数の微分もExcelで簡単に計算できるよ

ということについてのお話しです。

 

微分は簡単なんだよ

データを採ってきて、そのデータに何らかの規則性があれば式で書くことができます。

その式をグラフにしてみましょう。

微分とは、グラフ上の各点における傾きのことです。

例えば、下のグラフを見て下さい。

 

クネクネしたグラフになっているので、グラフ上の各点における傾きは異なります。

その中から3点における傾きを書いてみました。

このように傾きとは、その点における接線の傾きのことです。

更にいうと、傾きとはx方向に1増えた時に、y方向にどれだけ増えるかを表します。

この例では、接線1はxが1増えるとyは0.7くらい増えているので、傾きは0.7です。

接線2はxが1増えるとyは0.7くらい減っているので、傾きは-0.7です。

接線3はxが1増えるとyは2くらい増えているので、傾きは2ということになります。

このように、微分の値はグラフ上の各点で異なります。

ニューラルネットワークの世界では微分のことを勾配と言ったりしますが、各点における勾配は異なります。

 

それでは、次のような直線のグラフの微分、または勾配はどうなるのでしょうか?

 

この場合は、どの点でも微分、または勾配は0.5で一定になります。

 

どんな微分もExcelで計算できるよ

高校生の頃、x2の微分は2xだとか、sinxの微分はcosxだとか習いましたね。

このように微分にはいくつかの基本公式があり、その基本公式を使って複雑な微分を式変形するというのが高校で習った微分でした。

このように式変形すると、例えばy=x2のx=1の点での微分(勾配)は、2xにx=1を代入して2と簡単に求まります。

このように式変形によって微分の値を求めることを「解析的解法」と言います。

 

ところが、世の中には解析的に求められない微分は沢山あります。

その場合は、数値計算によって近似的に求めます。

ここで、先ほどの図の接線2を拡大して見てみましょう。

 

赤色の直線が本当の接線で、紫色の直線が近似の接線になります。

そしてhを小さくすればするほど、紫色の近似直線は赤色の本当の接線に近くなります。

紫色の直線は、(x,f(x))と(x+h,f(x+h))を通る直線なので、傾きは

{f(x+h)-f(x)}/h

で求められます。

この性質を利用して微分を近似的に求めるやり方が「数値的解法」で、これはExcelで計算できます。

 

それでは試しにやってみましょう。

f(x)=x2

のx=1における微分(勾配)を求めてみます。

先ほどの式に代入すると次のようになります。

hは1千万分の1(10の-7乗)とします。

{f(x+h)-f(x)}/h

= {(1+10-7)2-12}/10-7

= 2.0000001

解析的に求めると2ですので、精度の高い近似解になっています。

 

この計算をExcelで行うと、xのあらゆる値についての微分がコピペで簡単に計算できます。

例えば、xを-1から0.1刻みで1まで変化させながら、対応する微分値を求めてみましょう。

 

このように解析解とほぼ同じ値を数値計算で求めることができます。

この例の場合、x2の微分は2xというように簡単に解析解を求められるため、数値解をこのように求めるメリットはありませんが、解析解が求めるのが難しい場合にはメリット大です。

例えば

の微分を解析的に求めるのはかなりの難問ですが、これをExcelで数値的に求めてみましょう。

同じように-1から1まで0.1刻みのxについて計算すると次のようになります。

 

そしてグラフにすると、こうなります。

 

このように解析的には解けないような難問でも、Excelによる数値計算で求めることができます。

 

ニューラルネットワークで出てくる活性化関数の微分もExcelで簡単に計算できるよ

よく使われる活性化関数であるシグモイド関数

f(x) = 1 / (1+e-x)

で表され、その微分(導関数)は解析的に

f’(x) = f(x) (1 – f(x))

と求められます。

これを解析解とし、数値解と比較することをExcelで行うと次のようになります。

 

ほぼ一致しました。

次に同じく活性化関数としてよく使われるtanh関数でも比較してみましょう。

関数の式は

f(x) = tanh(x)

で、導関数は

f’(x) = 1 – f(x)2

と解析的に求められます。

 

この場合も数値解と解析解は、ほぼ一致していることが分かります。

このようにどんな関数でも

{f(x+h)-f(x)}/h (hは10-7くらいに設定)

に当てはめて計算すれば数値解が近似的に求められ、Excelで計算してグラフにすることもできます。

 

なお、同様のことが「積分」でもできます。

【積分をわかりやすく】Excelであらゆる関数の積分を簡単に求める方法