はじめに
前回の記事では、指数関数の微分を考え、自然対数の底 \(e\) が特別な理由を学びました。特に、自然指数関数には、
$$
\frac{d}{dx}e^x=e^x
$$
という性質がありました。
今回は、この指数関数と深い関係を持つ「対数関数」を考えます。たとえば、自然対数関数 \(y=\ln x\) を微分すると、
$$
\frac{d}{dx}\ln x=\frac{1}{x}
$$
となります。なぜ、対数関数を微分すると、このような式になるのでしょうか?
また、対数には、掛け算を足し算に変えたり、累乗の指数を前に出したりする便利な性質があります。これらの性質を使うと、通常の微分公式では扱いにくい関数も、簡単に微分できるようになります。
この記事では、指数関数との逆関数関係から対数の意味を理解し、対数法則と微分公式を導きながら、対数微分の仕組みを学びます。 さらに、AIで使われる対数損失や交差エントロピーとのつながりも考えていきます。
この記事では、対数関数を指数関数の逆関数として理解し、指数法則から対数法則を導きます。さらに、自然対数と一般の対数関数の微分公式、対数微分の仕組み、AIの損失関数との関係まで学びます。
この記事でわかること
この記事では、次の内容の理解を目指します。
- 対数関数は、指数関数とどのような関係にあるのか?
- 対数法則は、なぜ成り立つのか?
- 自然対数の微分公式は、どのように導けるのか?
- 一般の対数関数は、どのように微分するのか?
- 対数微分を使うと、なぜ複雑な関数を微分しやすくなるのか?
- 対数関数は、AIの損失関数でどのように使われるのか?
1.対数関数とは何か?|指数関数との逆関数関係
まず、対数関数の意味を確認しましょう。
1.1.対数は指数を求める計算
次の式を考えます。\(2^3=8\) は、\(2\) を \(3\) 乗すると \(8\) になることを表しています。では、\(2\) を何乗すると \(8\) になるのでしょうか?
この問いを表すのが対数であり、\(\log_2 8=3\) と書きます。一般に、
$$
a^y=x\quad\Longleftrightarrow\quad y=\log_a x
$$
という関係が成り立ちます。ここで、\(a\) を底、\(x\) を真数と呼びます。実数の範囲で対数関数を考えるときは、\(a\gt 0\)、\(a\ne1\)、\(x\gt 0\) という条件が必要です。
つまり、対数は「底を何乗すると、その数になるか」を表すものなのです。
1.2.対数関数は指数関数の逆関数
指数関数 \(y=a^x\) と対数関数 \(y=\log_a x\) は、互いに逆関数の関係にあります。たとえば、\(2^3=8\) であれば、\(\log_2 8=3\) です。
指数関数が「指数から値を求める」のに対して、対数関数は「値から指数を求める」関数です。
逆関数では、入力と出力の役割が入れ替わります。そのため、指数関数と対数関数のグラフは、直線 \(y=x\) に関して対称になります。次の図で確認してみましょう。

青色の \(y=e^x\) と緑色の \(y=\ln x\) は、破線の \(y=x\) に関して対称になっています。たとえば、指数関数が通る点 \((0,\ 1)\) は、対数関数では \((1,\ 0)\) に対応します。このように、入力と出力を入れ替えると、グラフ上の点の座標も入れ替わるのです。
1.3.自然対数とは何か?
前回の記事では、自然対数の底 \(e\) を学びました。この \(e\) を底とする対数を「自然対数」と呼び、\(\ln x=\log_e x\) と表します。
自然対数と自然指数関数には、
$$
e^{\ln x}=x\quad(x\gt 0),\quad \ln(e^x)=x
$$
という関係があります。この逆関数の関係が、自然対数の微分公式を導く鍵になります。
2.対数法則はなぜ成り立つのか?
対数には、計算を簡単にする「対数法則」という性質があります。これは単なる計算の決まりではなく、指数法則を対数の形に書き換えたものです。
以下では、底 \(a\gt 0\)、\(a\ne1\)、真数 \(x\gt 0\)、\(y\gt 0\) とします。
2.1.積の対数が和になる理由
まず、次の指数法則を思い出しましょう。
$$
a^{p+q}=a^pa^q
$$
ここで、\(x=a^p\)、\(y=a^q\) とおくと、
$$
xy=a^{p+q}
$$
となります。
ここで、第1章で学んだ対数の定義を思い出しましょう。
$$
a^t=z\quad\Longleftrightarrow\quad t=\log_a z
$$
\(a^t=z\) の両辺の底 \(a\) の対数をとると、\(\log_a(a^t)=\log_a z\) です。定義より \(\log_a z=t\) なので、
$$
\log_a(a^t)=t
$$
が成り立ちます。つまり、底 \(a\) の対数をとると、指数部分を取り出せるのです。
この関係を \(xy=a^{p+q}\) に使うと、
$$
\begin{aligned}
\log_a(xy)&=\log_a(a^{p+q})\\
&=p+q
\end{aligned}
$$
となります。一方、\(p=\log_a x\)、\(q=\log_a y\) なので、
$$
\log_a(xy)=\log_a x+\log_a y
$$
が得られます。つまり、対数を使うと、掛け算を足し算に変換できるのです。
たとえば、
$$
\begin{aligned}
\log_2(8\cdot4)
&=\log_2 8+\log_2 4\\
&=3+2\\
&=5
\end{aligned}
$$
となります。
2.2.商の対数が差になる理由
次に、指数法則、
$$
a^{p-q}=\frac{a^p}{a^q}
$$
を考えます。2.1節と同じように、\(x=a^p\)、\(y=a^q\) とおけば、
$$
\frac{x}{y}=a^{p-q}
$$
です。両辺の底 \(a\) の対数をとり、2.1節で確認した逆関数関係を使うと、
$$
\begin{aligned}
\log_a\frac{x}{y}
&=p-q\\
&=\log_a x-\log_a y
\end{aligned}
$$
となります。つまり、対数を使うと、割り算を引き算に変換できるのです。
2.3.累乗の指数が係数になる理由
最後に、指数法則、
$$
(a^p)^r=a^{pr}
$$
を考えます。\(x=a^p\) とおけば、\(x^r=a^{pr}\) です。両辺の底 \(a\) の対数をとると、
$$
\begin{aligned}
\log_a(x^r)&=pr\\
&=r\log_a x
\end{aligned}
$$
が得られます。この式は、\(x\gt0\) であれば実数の \(r\) に対して成り立ちます。
つまり、累乗の指数を、対数の前に係数として取り出せるのです。
2.4.対数法則を整理する
ここまでの結果をまとめましょう。
$$
\begin{aligned}
&\log_a(xy)=\log_a x+\log_a y\\[6pt]
&\log_a\frac{x}{y}=\log_a x-\log_a y\\[6pt]
&\log_a(x^r)=r\log_a x
\end{aligned}
$$
ただし、\(a\gt 0\)、\(a\ne1\)、\(x\gt 0\)、\(y\gt 0\) とします。
これらの対数法則によって、積は和に、商は差に、累乗の指数は係数に変換できます。この変換の関係を図で整理してみましょう。

これらの関係は、別々の公式を暗記するものではなく、指数法則から導かれる一連の性質です。特に、掛け算や累乗を含む式を、足し算や係数を使った式に変換できることが重要です。この特徴は、第5章で扱う対数微分につながります。
3.自然対数の微分公式を導く
ここから、対数関数の微分を考えます。まずは、自然対数 \(y=\ln x\) を微分してみましょう。
3.1.指数関数との逆関数関係を使う
自然対数と自然指数関数は逆関数なので、\(y=\ln x\) は \(x=e^y\) と書き換えられます。
ここで、両辺を \(x\) で微分します。右辺では \(y\) が \(x\) の関数であることに注意し、自然指数関数の微分公式と連鎖律を使います。
$$
\begin{aligned}
&1=e^y\frac{dy}{dx}\\[6pt]
&\frac{dy}{dx}=\frac{1}{e^y}=\frac{1}{x}
\end{aligned}
$$
したがって、
$$
\frac{d}{dx}\ln x=\frac{1}{x}
$$
が得られます。ただし、実数の自然対数 \(\ln x\) は \(x\gt 0\) で定義されます。
つまり、自然対数の微分公式は、自然指数関数との逆関数関係と連鎖律から導けるのです。
3.2.導関数からグラフの特徴を理解する
自然対数の導関数は \(f'(x)=1/x\) です。\(x\gt 0\) では \(1/x\gt 0\) なので、自然対数関数は増加します。一方、\(x\) が大きくなるほど接線の傾きは小さくなります。
たとえば、
$$
\begin{aligned}
f'(1)&=1\\
f'(2)&=\frac12\\
f'(4)&=\frac14
\end{aligned}
$$
です。このように、自然対数関数は増加し続けますが、接線の傾きは次第に小さくなります。指数関数が急速に増加するのに対して、対数関数がゆっくりと増加することも、両者の逆関数関係と深く結びついています。
3.3.合成関数の自然対数を微分する
次に、\(y=\ln(g(x))\) という関数を考えます。ここでは、\(g(x)\gt0\) であり、\(g(x)\) は微分可能とします。
内側の関数を \(u=g(x)\) とおけば、\(y=\ln u\) です。連鎖律を使うと、
$$
\begin{aligned}
\frac{dy}{dx}
&=\frac{dy}{du}\frac{du}{dx}\\
&=\frac1u\,g'(x)\\
&=\frac{g'(x)}{g(x)}
\end{aligned}
$$
となります。したがって、合成関数の自然対数の微分公式は、
$$
\frac{d}{dx}\ln(g(x))=\frac{g'(x)}{g(x)}
$$
です。
たとえば、\(y=\ln(x^2+1)\) なら、内側の関数 \(g(x)=x^2+1\) の導関数は \(g'(x)=2x\) なので、
$$
\frac{dy}{dx}=\frac{2x}{x^2+1}
$$
となります。このように、対数関数の中に別の関数が入っていても、連鎖律を使えば微分できます。
なお、\(g(x)\ne0\) であれば、\(\ln|g(x)|\) の微分についても同じ形の公式が成り立ちます。
4.一般の対数関数の微分と底の変換
ここまでは、自然対数を扱いました。では、底が \(e\) 以外の場合は、どのように微分すればよいのでしょうか?
4.1.底の変換公式を導く
一般の対数 \(y=\log_a x\) を考えます。対数の定義から \(x=a^y\) なので、両辺の自然対数をとり、対数法則を使うと、
$$
\begin{aligned}
\ln x&=\ln(a^y)\\
&=y\ln a
\end{aligned}
$$
となります。\(\ln a\ne0\) なので、\(y\) について解くと、
$$
\log_a x=\frac{\ln x}{\ln a}
$$
が得られます。これを「底の変換公式」と呼びます。ただし、\(a\gt 0\)、\(a\ne1\)、\(x\gt 0\) とします。
4.2.一般の対数関数を微分する
底の変換公式から、\(\log_a x=\ln x/\ln a\) でした。ここで、\(\ln a\) は \(x\) に依存しない定数なので、
$$
\begin{aligned}
\frac{d}{dx}\log_a x
&=\frac{1}{\ln a}\frac{d}{dx}\ln x\\
&=\frac{1}{x\ln a}
\end{aligned}
$$
となります。つまり、一般の対数関数の微分公式は、
$$
\frac{d}{dx}\log_a x=\frac{1}{x\ln a}
$$
です。
4.3.底によって増加・減少が変わる
一般の対数関数の導関数は \(f'(x)=1/(x\ln a)\) です。\(x\gt 0\) なので、導関数の符号は \(\ln a\) によって決まります。
- \(a\gt 1\) の場合:\(\ln a\gt 0\) なので増加する。
- \(0\lt a\lt 1\) の場合:\(\ln a\lt 0\) なので減少する。
このように、指数関数と同じく、対数関数も底によって増減が変わります。
5.対数微分とは何か?|積・累乗を微分する
ここまで、対数関数の微分公式を学びました。しかし、対数は、対数関数そのものを微分するときだけに使うわけではありません。
対数法則を利用すると、積や累乗を含む複雑な関数を、微分しやすい形に変換できます。この方法を対数微分と呼びます。
5.1.なぜ対数をとると微分しやすくなるのか?
たとえば、\(y=x^2(x+1)^3\) という関数を考えます。この関数は積の微分公式と連鎖律でも微分できますが、最初に両辺の自然対数をとる方法もあります。
ここでは \(x\gt0\) とします。この範囲では \(y=x^2(x+1)^3\gt0\) なので、対数法則を使って、
$$
\begin{aligned}
\ln y
&=\ln\left(x^2(x+1)^3\right)\\
&=2\ln x+3\ln(x+1)
\end{aligned}
$$
と変形できます。掛け算と累乗が、足し算と係数に変換されました。
両辺を \(x\) で微分します。左辺の \(\ln y\) では、\(y\) 自体が \(x\) の関数なので、連鎖律を使います。
$$
\frac{d}{dx}\ln y
=\frac{d}{dy}\ln y\cdot\frac{dy}{dx}
=\frac1y\frac{dy}{dx}
$$
一方、右辺はそれぞれの項を微分するので、
$$
\frac1y\frac{dy}{dx}=\frac2x+\frac{3}{x+1}
$$
となります。両辺に \(y\) を掛け、最後に \(y=x^2(x+1)^3\) を戻すと、
$$
\begin{aligned}
\frac{dy}{dx}
&=x^2(x+1)^3\left(\frac2x+\frac{3}{x+1}\right)\\
&=x(x+1)^2(5x+2)
\end{aligned}
$$
が得られます。このように、対数微分を使うと、積や累乗を含む関数を、和の微分へ変換できるのです。
5.2.\(x^x\) は通常の微分公式で扱えるのか?
次に、\(y=x^x\) という少し変わった関数を考えます。
通常の累乗関数 \(y=x^n\) では指数 \(n\) が定数であり、指数関数 \(y=a^x\) では底 \(a\) が定数です。しかし、\(x^x\) では、底も指数も変数になっています。
そのため、これまでの微分公式をそのまま当てはめることはできません。そこで、対数微分を使って、この関数の導関数を求めてみましょう。
5.3.対数微分で \(x^x\) を微分する
実数の範囲で \(x^x\) を考えるため、ここでは \(x\gt0\) とします。\(y=x^x\) の両辺の自然対数をとり、対数法則を使うと、
$$
\ln y=\ln(x^x)=x\ln x
$$
となります。
両辺を \(x\) で微分します。左辺は、5.1節と同じように、\(y\) が \(x\) の関数であることに注意して連鎖律を使います。
$$
\frac{d}{dx}\ln y=\frac1y\frac{dy}{dx}
$$
一方、右辺は積の微分公式を使って、
$$
\begin{aligned}
\frac{d}{dx}(x\ln x)
&=\ln x+x\frac1x\\
&=\ln x+1
\end{aligned}
$$
となります。したがって、
$$
\frac1y\frac{dy}{dx}=\ln x+1
$$
です。両辺に \(y\) を掛け、\(y=x^x\) を戻せば、
$$
\frac{d}{dx}x^x=x^x(\ln x+1)
$$
が得られます。つまり、対数をとることで、変数が指数に入っている関数を、積の微分公式で扱える形に変換できたのです。
なお、前回学んだ指数関数の性質を使い、\(x^x=e^{x\ln x}\) と書き換えてから連鎖律で微分しても、同じ結果が得られます。
6.AIの対数損失・交差エントロピーとのつながり
対数関数は、AIの学習でも重要な役割を持っています。特に、予測と正解のずれを評価する「損失関数」で使われます。
6.1.対数損失とは何か?
AIがある事象の起こる確率を予測する状況を考えます。実際に起こった事象に対してAIが割り当てた確率を \(p\) とすると、次のような損失を考えることができます。
$$
L(p)=-\ln p
$$
ただし、\(0\lt p\le1\) とします。この式は、実際に起こった事象に低い確率を割り当てるほど、大きな損失を与えるという性質を持ちます。
たとえば、
$$
\begin{aligned}
L(0.9)&\approx0.105\\
L(0.5)&\approx0.693\\
L(0.1)&\approx2.303
\end{aligned}
$$
となります。実際に起こった事象に割り当てた予測確率 \(p\) と、対数損失 \(L(p)=-\ln p\) の関係をグラフで確認してみましょう。

グラフを見ると、\(p\) が \(1\) に近づくほど損失は \(0\) に近づき、\(p\) が \(0\) に近づくほど損失は急激に大きくなります。つまり、AIが実際に起こった事象に低い確率を割り当てた場合、大きな損失が与えられるのです。
6.2.対数損失を微分するとどうなるのか?
対数損失 \(L(p)=-\ln p\) を \(p\) で微分すると、
$$
\frac{dL}{dp}=-\frac1p
$$
となります。これは、\(p\) が小さいほど損失の傾きの絶対値が大きくなり、確率 \(p\) の変化に対して損失が敏感に変化することを意味します。
ただし、実際のニューラルネットワークでパラメータを更新するときの勾配は、確率を計算する関数も含めて連鎖律で求めます。そのため、ここでの \(-1/p\) がそのままパラメータに対する勾配になるわけではありません。
6.3.交差エントロピーとの関係
複数のクラスを予測する分類問題では、交差エントロピー損失がよく使われます。
正解を表す分布を \(t_i\)、AIの予測確率を \(p_i\) とすると、
$$
L=-\sum_{i=1}^{m}t_i\ln p_i
$$
と表せます。
ここで、予測確率は \(p_i\gt 0\) であり、\(\sum_{i=1}^{m}p_i=1\) とします。
正解クラスだけが \(1\)、それ以外が \(0\) となる「one-hot表現」を使う場合、交差エントロピーは正解クラスの予測確率 \(p_{\mathrm{true}}\) を用いて、
$$
L=-\ln p_{\mathrm{true}}
$$
となります。
つまり、先ほどの対数損失と同じ形です。
また、独立な観測データの尤度を掛け合わせるときも、対数をとることで積を和に変換できます。この性質は、対数尤度や最尤推定でも重要になります。
対数関数がAIで使われる理由の1つは、確率の積を和に変換でき、確率に基づく損失を微分して学習に利用できることなのです。
交差エントロピーの詳しい意味や、ソフトマックス関数と組み合わせた微分は、AI編で説明します。
まとめ
今回は、対数関数の意味と、対数法則・対数微分が成り立つ理由を学びました。
- 対数関数は、指数関数の逆関数である。
- 対数法則は、指数法則から導ける。
- 対数を使うと、積を和、商を差、累乗の指数を係数に変換できる。
- 自然対数の微分公式は、指数関数との逆関数関係と連鎖律から導ける。
- 一般の対数関数は、底の変換公式を使って微分できる。
- 対数微分を使うと、積や累乗を含む関数を微分しやすくなる。
- 対数関数は、AIの対数損失や交差エントロピーでも使われる。
重要な公式をまとめると、
$$
\begin{aligned}
&\frac{d}{dx}\ln x=\frac1x\\[6pt]
&\frac{d}{dx}\log_a x=\frac{1}{x\ln a}\\[6pt]
&\frac{d}{dx}\ln(g(x))=\frac{g'(x)}{g(x)}\\[6pt]
&\frac{d}{dx}x^x=x^x(\ln x+1)
\end{aligned}
$$
となります。
なお、最初の2式は \(x\gt 0\)、3式は \(g(x)\gt 0\)、最後の式は \(x\gt 0\) で成り立ちます。また、一般の対数では \(a\gt 0\)、\(a\ne1\) とします。
対数関数の微分公式は、指数関数との逆関数関係から導けます。また、対数法則を使うと、積や累乗を含む関数を微分しやすい形に変換できます。この考え方は、AIの損失関数や確率モデルにもつながっています。
次回は、導関数を使って関数の最大値・最小値を求める方法を考えます。導関数の符号と極値の関係を理解し、AIの損失関数を最小化する考え方へつなげていきます。
関連記事


(準備中)

シリーズ全体を理解する
(準備中)
関連書籍
対数関数の微分をさらに深く理解したい方には、微分積分の入門書がおすすめです。特に、指数関数との逆関数関係、対数法則の導出、連鎖律を使った微分計算を確認すると、理解が深まります。



コメント