专栏首页DeepHub IMBA机器学习中的数学:为什么对数如此重要

机器学习中的数学:为什么对数如此重要

如果你住在一栋楼的10层,你会选择走楼梯还是乘电梯。

这两种选择的目的都是一样的:在漫长的一天工作之后,你想回到你的公寓。

当然,如果你是一个忙碌的人,没有时间去健身房,把楼梯当作是有氧运动的简易版,那么走楼梯会更好。但是除此之外,你更可能选择乘电梯。

我们再举一个例子:

假如你要去上班,当没有交通堵塞的时候,开车需要十分钟,走路需要五十分钟。

你可以选择开车或者步行。虽然最终到达同一个目的地,但是你想要节省时间。你每天都去上班而不是一辈子只去一次。因此,你可能需要定期做出决定。

你想要更快地去上班,这样你就有很多的时间和家人朋友待在一起,开始你的副业,读一下你在当地书店买的那本书,观看一下你一直想看的课程。

你不想花那么多时间去同一个目的地,你想驾车或乘公交车帮你到达那里。这样,你就有更多的时间去做其他事。

使用对数的好处的例子

使用对数也是一样的:你需要找到使损失函数最小的参数,这是你在机器学习中试图解决的主要问题之一。

假设你的函数如下:

如果我们求出了他的一阶导数,我们最终会得到如下表达式:

有时,我们甚至需要求出它的二阶导数来判断这个函数是否是凸函数。当一个函数是凸函数时,我们知道它只有一个最小值,所以每一个局部最小值实际上就是全局最小值。

在我们的表达式中,我们会有以下的内容:

正如你看到的,它很混乱,对吧?

此外,也很乏味

同一函数的对数函数的一阶导数要简单得多:

二阶导数也很简单:

当你实际使用对数时,你会得到一个不同的函数。

你走路和开车时不需要走相同的路线。你有与行人使用的车道分开的汽车车道。但你其实并不在乎这么多。

这并不是说你太关心那些在路边开着的商店。你已经在家里吃了一顿简单的快餐,想直接去上班,这意味着这些都不重要。

你想要最小化某些参数的损失函数。你需要最小化损失函数的参数。这正是一个函数和该函数的对数函数共同之处:相同的参数可以最小化损失函数。

对这个函数和它对数函数同时求导就得到损失函数的最小值。

一个数学证明

我们来证明一个使函数最小化的参数等于这个函数的对数函数的最小化的参数。

假设w*是g(w) = log f(w)的局部最小值点,这意味着w*附近的点都满足g(w*)≤ g(w),现在由于 e(通常也表示为exp)具有单调性,则有:

换句话说,w*是函数f的最小值点,这也是我们要证明的。

这意味着我们将对数应用于任何函数时,我们会保留最小值或最大值点(使函数最大化或最小化的参数,而不是函数的实际值)

正如我们在上面的例子所看到的,这样可以简化计算并提高稳定性。

如果你理解起来有困难,让我们用一些图来说明。

我们取以下函数:

它的部分图像如下:

它的对数函数是:

部分图像如下:

可以看到,在这两种情况下,函数的最大值都是当x=0.3时取得。

是的,我们没有得到相同的函数,但是我们仍然有相同的临界点来帮助我们最小化损失函数。

一句话总结:一个函数和该函数的对数函数有一个共同之处,就是最小化的参数是相同的,对数求导要简单很多,会加快我们的计算速度。

deephub翻译组:gkkkkkk

DeepHub

本文分享自微信公众号 - DeepHub IMBA(deephub-imba),作者:P**nHub兄弟网站

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • XGBoost算法背后的数学:尽可能简单地解释XGBoost算法背后的数学机制

    XGBoost是一个很优美的算法,它的过程不乏启发性。这些通常简单而美丽的概念在数学术语中消失了。我在理解数学的过程中也遇到过同样的挑战,所以我写这篇文章的目的...

    deephub
  • 反向传播算法:定义,概念,可视化

    通常,当我们使用神经网络时,我们输入某个向量x,然后网络产生一个输出y,这个输入向量通过每一层隐含层,直到输出层。这个方向的流动叫做正向传播。

    deephub
  • 深度学习基础:为什么神经网络的感知机中的神经元需要偏置项?

    每个人都知道神经网络中的偏置(bias)是什么,而且从人类实现第一个感知器开始,每个人都知道神经元需要添加偏置项。但你是否考虑过我们为什么要使用偏置项呢?就我...

    deephub
  • 7.3 函数总结

    (2)如果使用库函数,应该在本文件开头用#include指令将调用有关库函数时所需用到的信息“包含”到本文件夹中来。

    C语言入门到精通
  • 码如其人,同学你能写一手漂亮的Python函数吗

    与多数现代编程语言一样,在 Python 中,函数是抽象和封装的基本方法之一。你在开发阶段或许已经写过数百个函数,但并非每个函数都生而平等。写出「糟糕的」函数会...

    CDA数据分析师
  • Kotlin中let()with()run()apply()also()函数的使用方法与区别

    相比Java, Kotlin提供了不少高级语法特性。对于一个Kotlin的初学者来说经常会写出一些不够优雅的代码。在Kotlin中的源码标准库(Standard...

    砸漏
  • 什么是python的函数体

    函数的概念,函数是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集

    砸漏
  • Matlab系列之那些数学函数(讨论功能已加入)

    本来是打算写关于矩阵的一些东西,但是弄了一半,发现需要的线代知识有点多,直接讲相关的使用,就太直白了,可能根本无法理解是什么意思,如果讲线代的知识,就感觉和该系...

    狂人V
  • 程序员的函数

    在对函数求导数或者微分的过程中,如果能够知道原函数的图像,对照图像去理解各点的导数、微分、梯度等概念,比纯粹靠函数式理解要直观得多。

    叶锦鲤
  • 写 Python 代码不可不知的函数式编程技术

    近来,越来越多人使用函数式编程(functional programming)。因此,很多传统的命令式语言(如 Java 和 Python)开始支持函数式编程技...

    机器之心

扫码关注云+社区

领取腾讯云代金券