【Excelで微分を計算するやり方】どんなに複雑な関数の傾きだって計算できる!

2024年5月18日

高校で微分を習った時、

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

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

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

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

今回は微分についての話しです。

今なら理解できるかもしれませんよ。

 

◆仕事や勉強の息抜きに。。。

微分は傾きのこと

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

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

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

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

 

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

その中から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で一定になります。

 

解析的解法と数値的解法

解析的解法は厳密だが難しい

高校生の頃、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で計算できます。

 

Excelで微分を計算するやり方

まずは簡単な関数を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まで変化させながら、対応する微分値を求めてみましょう。

 

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

 

複雑な関数でもExcelで簡単に微分できる

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

例えば

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

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

 

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

 

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

 

活性化関数の微分もExcelで簡単に計算

シグモイド関数の微分

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

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

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

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

と求められます。

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

 

ほぼ一致しました。

 

tanh関数の微分

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

関数の式は

f(x) = tanh(x)

で、導関数は

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

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

 

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

 

まとめ

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

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

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

 

この他に、計算グラフを使う方法もあります。

こちらは簡単な関数の微分さえ知っていれば、その組み合わせにより複雑な関数の微分を求めることができます。

ニューラルネットワークの計算で用いられている方法です。

ソフトプラス関数とソフトサイン関数の逆伝播関数を計算グラフで求める

 

おまけ(積分もできる)

微分の数値解をExcelで求める方法を紹介しましたが、同様のことが「積分」でもできます。

【Excelで積分を計算】複雑な関数でも台形に分けて面積を計算するだけ!