みんなのAI
機械学習AI論文
Loading...

学ぶ

🏅マイ実績

Chapter 03

対数関数:かけ算を足し算に、損失設計の言語

対数は「底を何回かけたらその数になるか」を表します。指数の逆演算であり、ディープラーニングの損失・確率の式で指数とともに使われます。

チャプター別 数学図

チャプターを選ぶと、下の図がそのチャプターの内容に切り替わります。基礎数学の流れを一覧で確認できます。

対数は指数の逆です。y=log⁡2xy = \log_2 xy=log2​x は 2y=x2^y = x2y=x を満たします。以下は y=log⁡2xy = \log_2 xy=log2​x とその逆関数 y=2xy = 2^xy=2x のグラフです。

012345678012345678xy(x=1.0, y=0.00)(x=0.0, y=1.0)

例: log⁡21=0\log_2 1 = 0log2​1=0, log⁡22=1\log_2 2 = 1log2​2=1, log⁡24=2\log_2 4 = 2log2​4=2, log⁡28=3\log_2 8 = 3log2​8=3(2y=x2^y = x2y=x のとき yyy が log⁡2x\log_2 xlog2​x)

紫: y=log⁡2xy=\log_2 xy=log2​x、青緑: y=2xy=2^xy=2x

対数関数とは何か

対数は「指数の時間を逆に回す」ようなものです。23=82^3 = 823=8 という式で、結果の 8 を見て「2 を何回かけたら 8 になった?」と聞くときの回数(3)が対数 log⁡28=3\log_2 8 = 3log2​8=3 です。ここで 2 は底、8 は真数です。
「桁数を数える」と思えばよいです。100100100 は 10210^2102 なので log⁡10100=2\log_{10} 100 = 2log10​100=2、100010001000 は 10310^3103 なので log⁡101000=3\log_{10} 1000 = 3log10​1000=3。数が 10 倍(×10\times 10×10)になっても対数値は 1(+1+1+1)しか増えません。つまり対数は急激に大きくなる数をとてもなだらかにするフィルターです。基本性質:log⁡a1=0\log_a 1 = 0loga​1=0(底を 0 回かけると 1)、log⁡aa=1\log_a a = 1loga​a=1(底を 1 回かけると自分自身)です。
対数の利点は「積を和に変える」性質にあります。log⁡a(b×c)=log⁡ab+log⁡ac\log_a(b \times c) = \log_a b + \log_a cloga​(b×c)=loga​b+loga​c。コンピュータでは積は和よりコストが高く、数が大きくなりすぎ・小さくなりすぎる危険がありますが、対数をとれば複雑な積が安全で簡単な和の問題に変わります。
真数条件(x>0x>0x>0)が重要です。0 や負の対数は定義されません。そのため AI のコードでは log⁡(0)\log(0)log(0) でエラーにならないよう、ごく小さい数(ϵ\epsilonϵ)を足すテクニックをよく使います。また底が eee の自然対数(ln⁡\lnln)は微分をきれいにし、ディープラーニングの標準として使われます。
アンダーフロー防止が不可欠だからです。AI が確率 0.10.10.1 を 100 回かけると 0.11000.1^{100}0.1100 になり、コンピュータは「小さすぎて表現できない 0」として扱います。しかし対数をとると log⁡(0.1100)=100×log⁡(0.1)=−100\log(0.1^{100}) = 100 \times \log(0.1) = -100log(0.1100)=100×log(0.1)=−100 となり、意味のある数として扱えます。
情報量(エントロピー)を測る物差しだからです。確率が低いほど(珍しいほど)対数値の大きさは増します(絶対値で)。「明日太陽が西から昇る」のような稀な事象は情報量が大きく、「明日朝が来る」のような当たり前の事象は情報量が 0 に近い。AI はこの対数に基づく情報量で「どれだけ驚く情報を学んだか」を測ります。
間違いに厳しくペナルティをかけるためです。y=ln⁡xy=\ln xy=lnx(0<x<10<x<10<x<1)のグラフでは xxx が 0 に近づくと yyy は −∞-\infty−∞ に急落します。正解確率を 0.9 と予測すれば損失は小さいが、0.01 と誤ると対数が爆発し「とてつもないペナルティ(損失)」になります。そのおかげで AI は間違いをはっきり直そうとします。
交差エントロピー損失が代表的です。分類問題では正解クラスの確率に対数をかけ、符号を反転した値(−log⁡p-\log p−logp)を最小化します。これは「正解である確率をできるだけ 1 に(対数値は 0 に)近づけよ」という数学的な指令です。
最尤推定(MLE)で使います。「このデータが観測される確率を最大にせよ」は多くの確率の積を最大にする問題ですが、対数をとると和の最大化になり、微分しやすく数値計算も安定します。
  • 例log⁡28\log_2 8log2​8
  • 値3(23=82^3=823=8)
  • 例log⁡24\log_2 4log2​4
  • 値2
  • 例log⁡39\log_3 9log3​9
  • 値2
例値
log⁡28\log_2 8log2​83(23=82^3=823=8)
log⁡24\log_2 4log2​42
log⁡39\log_3 9log3​92
真数が底のべき乗のときだけ対数が整数になります。
対数でよく使う演算(AIの損失・確率の式でよく使われます):
  • 演算対数の和
  • 公式log⁡ab+log⁡ac=log⁡a(b⋅c)\log_a b + \log_a c = \log_a(b \cdot c)loga​b+loga​c=loga​(b⋅c)
  • 説明積 → 和
  • 演算対数の差
  • 公式log⁡ab−log⁡ac=log⁡a(b/c)\log_a b - \log_a c = \log_a(b/c)loga​b−loga​c=loga​(b/c)
  • 説明商 → 差
  • 演算べき乗
  • 公式log⁡a(bn)=n⋅log⁡ab\log_a(b^n) = n \cdot \log_a bloga​(bn)=n⋅loga​b
  • 説明指数は前に
演算公式説明
対数の和log⁡ab+log⁡ac=log⁡a(b⋅c)\log_a b + \log_a c = \log_a(b \cdot c)loga​b+loga​c=loga​(b⋅c)積 → 和
対数の差log⁡ab−log⁡ac=log⁡a(b/c)\log_a b - \log_a c = \log_a(b/c)loga​b−loga​c=loga​(b/c)商 → 差
べき乗log⁡a(bn)=n⋅log⁡ab\log_a(b^n) = n \cdot \log_a bloga​(bn)=n⋅loga​b指数は前に
  • 例対数の和
  • 計算log⁡22+log⁡24=1+2=3\log_2 2 + \log_2 4 = 1 + 2 = 3log2​2+log2​4=1+2=3
  • 例対数の差
  • 計算log⁡28−log⁡22=3−1=2\log_2 8 - \log_2 2 = 3 - 1 = 2log2​8−log2​2=3−1=2
例計算
対数の和log⁡22+log⁡24=1+2=3\log_2 2 + \log_2 4 = 1 + 2 = 3log2​2+log2​4=1+2=3
対数の差log⁡28−log⁡22=3−1=2\log_2 8 - \log_2 2 = 3 - 1 = 2log2​8−log2​2=3−1=2
下の問題で対数の値・真数・対数の和・対数の差を求めてください。