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

2023-10-31


题图 | Designed by Freepik

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

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

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

你的答案是________。

正确答案是……ABCD。

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

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


前Facebook数据科学家塞思·韦德曼
图源:sethweidman.com

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

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

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

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

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

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

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

  • 给出对应的Python代码。

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

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

维度1:数学

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

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

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

维度2:示意图

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

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

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

维度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 时产生的任意函数值:

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

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


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

 限 时 半 价 

塞思·韦德曼 著
郑天民 译

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

送书规则

公众号回复:送书 ,参与抽奖(共5本)

本次送书5本

或者扫一扫下方的二维码回复:送书  即可!

点个「赞」

求「在看」

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

送书|想理解深度学习,究竟应该降维打击 or 升维思考? 的相关文章

随机推荐

  • Android Bitmap图像处理(1)- 图片压缩

    一直以来Bitmap都是开发中很棘手的问题 这个问题就是传说中的OOM java lang OutofMemoryError 内存溢出 那么Bitmap为何如此丧失 令无数Android开发者所懊恼 一 Bitmap引发OOM的原因 由于每
  • 介绍中国传统节日的网页html,关于中国传统节日介绍的作文

    关于中国传统节日介绍的作文 春节的另一名称叫过 是我国的传统节日之一 小编为大家收集整理的传统节日作文 欢迎感兴趣的小伙伴们前来查阅 中国传统节日介绍的作文 过春节了 孩子的脸上露出了春节特有的快乐 大人们一年的劳累得到了安抚 春节是多么重
  • 【自监督论文阅读 3】DINOv1

    文章目录 一 摘要 二 引言 三 相关工作 3 1 自监督学习 3 2 自训练与知识蒸馏 四 方法 4 1 SSL with Knowledge Distillation 4 2 教师网络 4 3 网络架构 4 4 避免坍塌 五 实验与评估
  • Python软件基本操作

    经过这几天关于Python的分享 下面我们分享一下关于Python的小操作 顺便编写一些小程序供大家一起学习 探讨 一 个税的计算 从网上我们找到了关于税率的内容 我提取了一些重要的部分 下面我们根据这些内容 我们用Python它编写为小程
  • 湍流系数计算器_雷诺数Re计算公式与在线计算器_三贝计算网_23bei.com

    输入雷诺数Re 流速v m s 密度 kg m 3 动力黏性系数 Pa s 特征长度 内径 d mm m 等5个变量中任意4个已知变量 选择输入特征长度的单位 点击计算按钮 可快速求出未知变量 雷诺数是作为判别流体流动状态的准则 计算公式如
  • H5 手机适配

    刘海屏 水滴屏 小黑条适配 兼容ios 安卓 当我们在写h5页面的时候 常常会遇到刘海屏 水滴屏 小黑条等手机 加入以下css 即可以解决适配 padding constant safe area inset top constant sa
  • 码住!IC设计常用工具合集!

    芯片设计过程中 选择和使用适合的工具是非常重要的 芯片设计工具通常分为三类 EDA工具 模拟仿真工具和布局工具 一 EDA工具 EDA工具是芯片设计的核心 它包括原理图绘制 逻辑综合 门级仿真工具和物理版图编辑等 可以帮助设计师设计出电路的
  • 微CLI工具箱-WeToolkit

    当需要将一个Python脚本快速提供给用户使用时 直接提供纯命令行指令给用户 不友好 如果开发可视化的GUI界面 又太废时间 而且无法在Linux服务器上使用 于是就整了这个微CLI工具箱 WeToolkit 解决这个问题 微CLI工具箱
  • TCP连接探测中的Keepalive和心跳包. 关键字: tcp keepalive, 心跳, 保活

    TCP连接探测中的Keepalive和心跳包 关键字 tcp keepalive 心跳 保活 TCP连接探测中的Keepalive和心跳包 关键字 tcp keepalive 心跳 保活 分类 linux2013 11 29 17 46 3
  • 好用的函数在线绘图工具

    网址https www desmos com calculator 左侧可以填写函数名 左键拖动图形 按住shift键 通过滚轮来对不同轴进行缩放
  • K8S生命周期---钩子函数(postStart/preStop)

    容器生命周期钩子 容器生命周期钩子 Container Lifecycle Hooks 监听容器生命周期的特定事件 并在事件发生时执行已注册的回调函数 支持两种钩子 postStart 容器创建后立即执行 注意由于是异步执行 它无法保证一定
  • 【无标题】视频看看

    已有视频 宅在家里学编程丨1 循环重复 腾讯 花了2万多买的Python教程全套 现在分享给大家 入门到精通 Python全栈开发教程 Python基础入门教程 常用文件操作 学习python必备技能
  • vue项目中,封装一个全局过滤器,用来过滤时间

    在Vue项目中 封装一个全局过滤器filter 需求如下 我们在动态渲染数据的时候 需要把 2019 10 15T07 20 47 000Z 改变成 2019 10 15 在页面中显示 步骤如下 1 先封装一个全局过滤器filter 封装项
  • Linux系统删除文件硬盘没有释放问题

    最近遇到一个问题 就是Linux系统删除文件 结果发现硬盘没有变化 找了很久才找到原因 在Linux或者Unix系统中 通过rm或者文件管理器删除文件将会从文件系统的文件夹结构上解除链接 unlink 然而假设文件是被 打开的 有一个进程正
  • win10+ubuntu双系统无法进入ubuntu,bios设置修复grub

    1 进入bios 2 选择Boot Sequence Boot List Option gt Add boot Option 3 弹框 任意填充Boot Option Name 选择File Name路径为 EFI ubuntu grubx
  • 由一本缺页的"书"引发出一系列思考

    写这篇文章 源自于 vb6 0 数据库开发经典实例精解 这本书 事件起因 6 8日晚上 米老师查看我带的学妹看的 vb6 0 数据库开发经典实例精解 电子版的书 结果发现她看的电子版的书只有实例1到实例5 没有开篇也没有结尾 作为她的导师的
  • 【华为OD机试】完全二叉树非叶子部分后序遍历【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 给定一个以顺序储存结构存储整数值的完全二叉树序列 最多1000个整数 请找出此完全二叉树的所有非叶子节点部分 然后采用后序遍历方式将此部分树 不包含叶子 输出 1 只
  • Dependency-Track单机版容器化部署

    官方文档 Dependency Track 官方说明 Dependency Track是一个智能组件分析平台 允许组织识别和降低软件供应链中的风险 Dependency Track通过利用软件材料清单 SBOM 的功能 采取了一种独特且非常
  • Java实现顺序表

    目录 一 顺序表的简单理解 1 为什么我们要以数组为基础来构建顺序表呢 2 顺序表都具有哪些功能 二 顺序表的代码实现 1 构建并且初始化顺序表 2 在顺序表中添加元素 1 判断需要添加元素的下标是否在顺序表的范围内 2 如果添加元素下标合
  • 送书|想理解深度学习,究竟应该降维打击 or 升维思考?

    题图 Designed by Freepik 让我们从一道选择题开始今天的话题 什么是神经网络 请选择以下描述正确的一项或多项 A 神经网络是一种数学函数 它接收输入并产生输出 B 神经网络是一种计算图 多维数组流经其中 C 神经网络由层组