ディープラーニングG検定の勉強中 その13(商の微分)

書籍「最短コースでわかるディープラーニングの数学」の内容に沿って勉強しています。

今回は、商の微分についてです。

f(x)をg(x)で割ったものを微分したもの

式1
2-8-1.png

について見ていきます。

参考サイト
KIT数学ナビゲーション(基本的な関数の微分 1/x)
KIT数学ナビゲーション(合成関数を微分する手順)

式1の、

式2
2-8-2.png

となります。

よって、積の微分の公式により、

式3
2-8-3.png

が成り立ちます。
ただし、h'(x)のままでは計算できないため、一旦式を分解してから、合成関数の形にして計算できるようにします。

まずは、式2のg(x)の分数表示を、分数の指数表示にします。

式4
2-8-4.png

ここで、g(x)を u に置き換えて、2つの関数に分解します。

式5
2-8-5.png

①をdy/duとして、微分します。

式6
2-8-6.png

②をdu/dxとして、微分します。

式7
2-8-7.png

①と②に分解した微分を合成関数の微分の公式に代入します。

式8 合成関数の微分の公式
2-8-8.png

式9
2-8-9.png

これで、計算可能な形になったので、式3に代入して、

式10
2-8-10.png

この式10で導き出された式が商の微分の公式となります。


それでは、商の微分の公式に、実際の関数を代入してみます。

以下の2つの関数があるときに、

式11
2-8-12.png

商の微分の公式、
式12
2-8-11.png

に代入すると、式13となり、

式13
2-8-13.png

これを計算すると、式14の、2つの関数による商の微分の結果となります。

式14
2-8-14.png


この計算結果の検算として、Pythonでも確かめてみます。

--------------------
import sympy as sym

x = sym.Symbol('x')

fx = 2 * x**3 + 4 * x**2  #f(x)
gx = 3 * x**4      # g(x)

fxd = sym.diff(fx)    # f '(x)
gxd = sym.diff(gx)   # g '(x)

fxgx = ((fxd * gx) - (fx * gxd))   # 商の微分の公式の分子の計算

sym.Eq(sym.Derivative(fx/gx), sym.expand(fxgx / (gx**2)))

--------------------
出力結果
2-8-15.png


Pythonで商の微分をsympy.diff()だけで行おうとすると、出力結果が分かりにくいものとなるため、
今回は、計算が単純になるようにしてから微分しています。


商の微分の次は積分ですが、テキストの第6章までは特に活用されないみたいなので、
先に次の章となる、ベクトル・行列の勉強に進みます。


ディープラーニングG検定の勉強の進捗状況

最短コースでわかるディープラーニングの数学
76/328(23.2%)

ディープラーニングG検定の勉強中 その12(逆関数の微分)

書籍「最短コースでわかるディープラーニングの数学」の内容に沿って勉強しています。

今回は、逆関数の微分についてです。

y = f(x) のグラフの接点が(a, b)であるときの接線の傾きは、

式1
2-7-2-1.png

となります。

f(x)の逆関数 y = g(x)のグラフの接点が(b, a)である接線の傾きは、

式2
2-7-2-2.png

となります。

実際の関数 f(x) = x^2 - 2x + 1 で見てみます。

式3
2-7-2-3.png

以上です。

ディープラーニングG検定の勉強中 その11(合成関数の微分)

書籍「最短コースでわかるディープラーニングの数学」の内容に沿って勉強しています。

今回は、合成関数の微分についてです。

f(x)という関数の出力結果をg(x)という関数として使い、その結果を出力するのが合成関数で、
その合成関数の微分の公式は以下となります。

式1
2-7-1-1.png

実際の合成関数(式2)にこの公式を当てはめてみます。

合成関数の最初の関数が①、その出力を関数として使ったのが②で、
その最終的な結果が y として出力される場合は、

式2
2-7-1-6.png

微分の公式を利用して、

式3 rは実数
2-7-1-3.png

まずは、式2の②の出力 y を微分します。

式4
2-7-1-4.png

u に①を代入して式5となります。

式5
2-7-1-5.png

次に①の関数を微分して、式6です。

式6
2-7-1-7.png


これでdy/duとdu/dxが分かったので、式1の合成関数の微分の公式に当てはめて、

式8
2-7-1-8.png

合成関数の微分の結果が導き出されました。


これをPythonで確認してみます。

--------------------
import sympy as sym

x = sym.Symbol('x')

u = x**2 - 2 * x + 1
y = u ** (1/2)

sym.Eq(sym.Derivative(y), sym.diff(y))

--------------------
出力結果
2-7-1-9.png

()の0.5乗というのは、平方根のことです。Pythonでは、計算結果として平方根が出る場合は、自動でルートの記号で表示してくれるみたいなのですが、平方根の計算そのものだとルート記号を使ってくれないみたいで……(方法を見つけたら更新するかも)。

アズールレーン クロスウェーブをプレイ中 その3

PS4でいろいろな艦船(女の子)が出てくるアクションゲームをプレイしています。


連休の最終日、数学の勉強の傍らでアズレンをプレイしました。
何とか第4章の最初まで進めました。

ストーリーが進むことで、

「重桜」以外の国のKAN-SENと出会ったり、

プリケツが面白いサングラスしてる
20190916-1.jpg

しようや(直球)
20190916-4.jpg


汎用艦船と戦ってみたり、

敵のKAN-SENをフォローするモブ敵。でも放置すると面倒なので適宜やっつける必要あり。
20190916-2.jpg

セイレーンの人物と出会ってしまったり、

北斎漫画かな?
20190916-3.jpg

しています。

また、合同演習が進むと、「Aポイント」を使って、仲間のKAN-SENも増やすことができ、

しようか(直球)
20190916-6.jpg

森に行こうか
20190916-7.jpg

踏んでください! お願いします!
20190916-8.jpg

という感じで、アズレン各国のKAN-SENを仲間にできて嬉しいです。


バトルでは、メインの攻撃艦を3艦まで、修復等のフォロー艦も3艦までメンバーにすることができるのですが、
敵の構成が分からないときには、駆逐艦、軽巡か重巡と空母か戦艦、という風にいろいろな種類を入れておくと、どのような敵にも対処しやすいと思いました。
でも、イベントバトルの後は、同じ敵と何度でも戦えるので、敵の構成が分かっているときには、同じ艦種で一気に片を付けるのもありです。


うん、だんだん面白くなってきました。バトル時の艦種の選択を誤ると、轟沈させられることも出てきたので、歯ごたえも感じてきています。

という感じでプレイを進めていきます。










最近聴いた音楽












HI! VEVO(とか) Vol.168

YesSongs #7: YES - Roundabout


アニメジョジョのED曲。クリアな音質版はこちら





クラシック曲を忘れない Vol.68

トリッチ・トラッチ・ポルカ


ヨハン・シュトラウス2世作曲。運動会御用達。







ニコニコ動画のリンク


沢蟹は美味しそうだ




キャラはパルムだし、GODモードだしで完璧だな




MMDの種類にもいろいろあるね



ゆべしはなかなかうまいね

ディープラーニングG検定の勉強中 その10(積の微分)

書籍「最短コースでわかるディープラーニングの数学」の内容に沿って勉強しています。

今回は、積の微分についてです。

関数と関数を掛けたものを微分する……えっ、何でそんな面倒なことするの?

と思ったりもしておりますが、計算は可能なので、見ていきます。

積の微分では、f(x)とg(x)を掛け合わせたものを微分するわけですが、
その際に、f '(x)の接線の接触部分である接点を中心に拡大すると直線とほとんど同じになることから、

ディープラーニングG検定の勉強中 その9(微分と関数値の近似、極大・極小)
の中で、関数と微分の近似の式を導き出しています。


であれば、g'(x)も同様に当てはまることになります。それが式1です。

式1
2-6-1.png

積の微分では、式1を利用して2つの関数から算出します。
式1をf(x)とg(x)の積の形に変形します。

式2
2-6-2.png

そもそもの微分の式は、以下ですが、

式3
2-3-1-7.png

その式の分子をf(x)とg(x)の積に応用します。

式4
2-6-3.png

この式4は、式2に置き換えることができるので、これを計算すると、式5となります。

式5
2-6-4.png

式5に置き換えているのは、積の微分を計算可能とするためです。
この式は、積の微分の式の分子部分となります。


ここで、式3を積の微分に応用した式6によって、計算しますが、

式6
2-6-5.png

このままでは、計算し辛いため(※)、

※このことを説明しているサイト
高校数学の美しい物語(積の微分公式とその証明の味わい)

分子を式5と入れ替えて計算を行い、積の微分を算出します。

式7
2-6-6.png


それでは、実際に異なる2つの関数(式8)を代入して計算してみます。

式8
2-6-7.png

式9
2-6-8.png

式9で算出された積の微分が正しいかどうか、Pythonで検算してみます。

参考サイト
note.nkmk.me(Python, SymPyの使い方(因数分解、方程式、微分積分など))
Python 数値計算入門([SymPy] 多項式の展開と因数分解)

--------------------
import sympy as sym

x = sympy.Symbol('x')

fx = x**2 + 4 * x    # f(x)
gx = x**3 + 3 * x ** 2  #g(x)

fxgx = sym.expand(fx * gx)  # f(x) × g(x)

sym.Eq(sym.Derivative(fx*gx), sym.diff(fxgx))  # 積の微分の式、その計算結果とその出力

--------------------
出力結果

2-6-9.png

式9と同じ結果となりました。
Pythonでは式や計算結果を整形して出力する機能があるのでこれも便利ですね。
積の微分では、今回の方法の他に「仲介役」を挟んで計算する方法もあるので(上記数学サイトに記載があります)、こちらも理解しておきます。

進捗状況

最短コースでわかるディープラーニングの数学
66/328(20.1%)

ディープラーニングG検定の試験日まであと54日