想理解深度学习,究竟应该降维打击 or 升维思考?

想理解深度学习,究竟应该降维打击 or 升维思考?_第1张图片
题图 | Designed by Freepik

让我们从一道选择题开始今天的话题。

什么是神经网络?请选择以下描述正确的一项或多项。

A. 神经网络是一种数学函数,它接收输入并产生输出。
B. 神经网络是一种计算图,多维数组流经其中。
C. 神经网络由层组成,每层都具有「神经元」。
D. 神经网络是一种通用函数逼近器。

你的答案是________。

正确答案是……ABCD。

是不是有点懵?对于神经网络,难道就没有唯一、统一的描述吗?

塞思·韦德曼(Seth Weidman)是前Facebook数据科学家。他曾受邀走访世界各地,为来自不同行业的人们讲授数据科学和机器学习。

想理解深度学习,究竟应该降维打击 or 升维思考?_第2张图片
前Facebook数据科学家塞思·韦德曼
图源:sethweidman.com

在其著作《Python深度学习入门:从零构建CNN和RNN》中,韦德曼写道:

对于讲解神经网络,我发现最具挑战性的就是为「什么是神经网络」传达正确的思维模型。这主要是因为,了解神经网络需要的不是一个而是多个思维模型,每一个都说明了神经网络工作方式的不同方面(而且每个方面都必不可少)。

诚然,神经网络与深度学习是一个立体的领域,仅从数学层面或代码层面学习,难免以偏概全,无法融会贯通。正因为如此,韦德曼提出了一种全新的学习方法:同时从数学、示意图、Python代码三个维度立体地理解每一个概念,从而领略深度学习领域的全貌。

想象你要构建自己的深度学习大厦。你或许钟情于算法,又或许习惯于视觉型学习,但唯有进行「升维思考」,你才能建造出多面玲珑的建筑。

韦德曼提出以如下步骤学习导数、嵌套函数、链式法则等概念。这些基本概念就如同一块块砖,有了它们,你终将建造出属于自己的深度学习大厦。

  • 以一个或多个方程式展示数学原理。

  • 给出示意图,类似于在参加编码面试时画在白板上的图。

  • 给出对应的Python代码。

让我们一起看看用这种学习方法如何理解导数的概念。

导数是深度学习的一个非常重要的概念。总体来说,函数在某一点上的导数,可以简单地看作函数输出相对于该点输入的「变化率」。

维度1:数学

首先在数学维度上定义导数。可以使用一个数来描述极限,即当改变某个特定的输入值a 时,函数f 的输出有多大变化:

想理解深度学习,究竟应该降维打击 or 升维思考?_第3张图片

通过为Δ设置非常小的值(例如0.001),可以在数值上近似此极限。因此,如果Δ=0.001,就可以将导数计算为:

想理解深度学习,究竟应该降维打击 or 升维思考?_第4张图片

虽然近似准确,但这只是完整导数思维模型的一部分。下面来从示意图的维度认识导数。

维度2:示意图

为函数曲线画出一条切线,则函数f 在点a 处的导数就是该线在点a 处的斜率。可以通过两种方式来计算这条线的斜率。第一种方式是使用微积分来实际计算极限,第二种方式是在a−0.001处和a+0.001处取连线f 的斜率,如下图所示。

想理解深度学习,究竟应该降维打击 or 升维思考?_第5张图片

另一种可视化方式是将函数想象成小型工厂,并想象其输入通过一根线连接到输出。求解导数相当于回答这样一个问题:如果将函数的输入a 拉高一点,那么根据工厂的内部运作机制,输出量将以这个小数值的多少倍进行变化呢?

想理解深度学习,究竟应该降维打击 or 升维思考?_第6张图片

对理解深度学习而言,第二种表示形式比第一种更为重要。

维度3:Python代码

可以通过编码来求解前面看到的导数的近似值:

from typing import Callable
def deriv(func: Callable[[ndarray], ndarray],
          input_: ndarray,
          delta: float = 0.001) -> ndarray:
    '''
    计算函数func在input_数组中每个元素处的导数。
    '''
    return (func(input_ + delta) - func(input_ - delta)) / (2 * delta)

当我们说P E(随机选的字母)的函数时,其实是指存在某个函数f,使得f (E) = P。或者说,有一个函数f,它接收对象E 并产生对象P。也可以说,P 是函数f 应用于E 时产生的任意函数值:

想理解深度学习,究竟应该降维打击 or 升维思考?_第7张图片

可以将其编码为下面这种形式。

def f(input_: ndarray) -> ndarray:
    # 一些转换
    return output
P = f(E)


在《Python深度学习入门:从零构建CNN和RNN》一书中,你可以通过上面这种多维度学习方式理解所有重要的深度学习概念,并运用这一块块「砖」,从零开始构建深度学习模型。

 限 时 半 价 

想理解深度学习,究竟应该降维打击 or 升维思考?_第8张图片

塞思·韦德曼 著
郑天民 译

以多个维度立体地认识深度学习
PyTorch神经网络实战
前Facebook数据科学家力作

想理解深度学习,究竟应该降维打击 or 升维思考?_第9张图片

直 播 活 动

AI:昨天 · 今天 · 明天

1956 年,达特茅斯会议的召开标志着人工智能学科的诞生。2016 年,在人工智能诞生 60 周年之际,人工智能在世界范围内开始进入新一轮的飞速发展期,此后几年也是中国 AI 企业的创业热潮期。

你说这个时代是大数据时代也好,人工智能时代也好,与身在特殊时代的我们都息息相关。即使是作为普通人,我们也需要充分了解这个时代,认识这个时代。深入真实的 AI,才能看见更好的自己。

为此,我们特别策划了一期直播节目。

本期直播,我们请到了非常特殊的三位专家

 

• 乌镇智库理事长、《人工智能简史》作者尼克

• CSDN 创始人&董事长、极客帮创投创始合伙人蒋涛

• 智源人工智能研究院副院长、图灵联合创始人刘江

3 月 26 日 本周五晚 20:00,三位专家将共同聚焦人工智能的昨天、今天和明天,解读技术发展历史、应用发展现状及未来演进趋势,聊一聊“实实在在”的人工智能,让我们“往前 60 年,往后 10 年,深入真实的 AI,看见更好的自己”。

活动现场,我们将进行多轮抽奖活动,除了送出尼克老师亲笔签名的 20 多本《人工智能简史(第2版)》,还有更多其他惊喜小礼物。直播现场,我们不见不散!

想理解深度学习,究竟应该降维打击 or 升维思考?_第10张图片

图 灵 社 群

想理解深度学习,究竟应该降维打击 or 升维思考?_第11张图片

想理解深度学习,究竟应该降维打击 or 升维思考?_第12张图片

点个「赞」

求「在看」想理解深度学习,究竟应该降维打击 or 升维思考?_第13张图片

你可能感兴趣的:(人工智能,算法,神经网络,python,机器学习)