从0理解数学基础

疑似蜜糖 · · The Attic

学习算法课程,需要很多数学基础知识,但是并不意味着需要先完整学习数学。

学习首先说人话

首先重温下数学符号,我感觉数学符号就很像地图的图标

第一次看到地铁图时,圆点、颜色和换乘标记可能都很陌生。但地图仅仅是为了把一长段话压缩到一张图里。

数学也可以同样的思路:

字母表示“这里可以放一个数”。

固定数字表示“这条规则里暂时不变”。

等号表示“左右其实是同一个数值”。

下标表示“我要序列里的第几项”。

指数表示“同一个底数要重复乘多少次”。

对数表示“反过来寻找一共乘了多少次” 。

求和符号表示“请按范围把许多项逐个加起来”。

函数表示“一台输入一个数、输出一个数的机器”。

坐标表示“先横着走,再竖着走,找到一个位置”。

斜率表示“横着每走一步,竖着变化多少”。

这东西到底有什么用

我上学的时候就一直困惑数学在生活中又能什么用,导致上了大学后松懈了很多。现在反过来想想有些唏嘘

销量预测

企业可能说:

广告投入每增加一万元,预计销量增加两百件;即使不投广告,也有一百件自然销量。

数学符号能把这条规则压缩下来。以后只要换广告投入,就能得到对应的预测销量。

客户分群

一个客户会有年龄、消费金额、到店次数等许多特征。下标让我们可以明确说“第几个客户的第几个特征”,而不会把行和列弄混。

模型损失

训练模型时,需要把每条样本产生的错误逐项加起来。求和符号就是“遍历所有样本并累计”的压缩写法。

相似度和向量

后面讲推荐、文本向量和神经网络时,会把对象放进坐标空间。坐标轴、点、方向和距离都是理解向量的入口。

趋势变化

销量随价格如何改变、风险随负债率如何改变,都涉及“横向变化多少、纵向变化多少”。斜率就是最简单的变化率。

增长预测与反向求时间

假设一个指标每过一期都乘二:

第 0 期:1
第 1 期:2
第 2 期:4
第 3 期:8

“三期以后是多少”是指数方向;“从一增长到八一共过了几期”是对数方向。

企业里这两个问题经常成对出现:

  • 正向:用户按固定比例增长,若干期后大约有多少人?
  • 反向:要增长到目标规模,大约需要多少期?
  • 正向:资金按复利积累,未来余额是多少?
  • 反向:余额达到预算目标还要多久?
  • 正向:异常传播按层扩散,几层后会影响多少节点?
  • 反向:已知影响规模,估计传播深度。

不用公式,先把过程走一遍

变量和常量

一台饮料机。

  • 你选择杯子数量,这个数量可以每次不同。
  • 每杯价格暂时固定为两元。
  • 包装费暂时固定为一元。
  • 机器先计算杯数对应的饮料费。
  • 再把包装费加上去

“杯子数量”是变量;“每杯两元”和“包装费一元”是这条规则里的常量。

常量并不表示宇宙中永远不变。它只表示在当前规则或本次计算中保持不变。

等号

机器算完以后,左边的计算过程和右边的最终金额是同一个数。

等号不是“按下计算按钮”,也不是“接下来发生”。它表达的是两边数值相同。

下标

桌上依次摆着三张卡片,卡片上的数字是二、四、六。

如果说“第二张卡片”,你从左向右数:第一张是二,第二张是四。因此答案是四。

下标就是把“第几张卡片”压缩到字母右下角。

“幂”通常指运算的结果

三重复乘两次”的动作是:

  1. 先拿一个三。
  2. 再拿一个三。
  3. 把两个三相乘。

它不是三乘二。指数告诉你底数出现多少次。

指数和对数是一对正反动作

先从一开始,每次乘二:

不乘:1
乘 1 次:2
乘 2 次:4
乘 3 次:8

这叫指数的正向动作:输入“乘几次”,输出“最终变成多少”。

现在把问题倒过来。手里已经有八,每次除二:

8 ÷ 2 = 4  ← 撤销一次乘二
4 ÷ 2 = 2  ← 撤销第二次乘二
2 ÷ 2 = 1  ← 撤销第三次乘二

一共除三次回到一,所以以二为底,八的对数是三。

请分清三种角色:

  • 底数二:每次按什么倍数变化;
  • 指数三:一共重复多少次;
  • 结果八:重复以后到了哪里。

指数运算是把“三”送到“八”,同底对数运算是把“八”送回“三”。几何上就是把 点 (3,8) 交换成 (8,3),像沿着直线 y=x 照镜子。

连续增长不能总靠整除。例如“哪个数作为e的指数会得到二” 没有整数答案。本课代码会:

  1. 把许多越来越小的项逐项加起来,近似 e的x次方 (e自然底数)
  2. 先夹住答案;
  3. 每次试区间中点;
  4. 指数结果偏小就向右找,偏大就向左找;
  5. 区间足够窄才停止。

根号

前面这个问题其实就涉及到了需要开方计算了

“开方”就是“指数为分数”的实际操作。

“开方”就是“指数为分数”的实际操作。

开平方 $x^2$ = 指数 $\frac{1}{2}$ (0.5次方)

开立方 $x^3$ = 指数 $\frac{1}{3}$ (约0.333次方)

开四次方 $x^4$ = 指数 (0.25次方)

绝对值

你站在数轴的负四位置。问你距离零点多远。

方向是“在零的左边”,距离是“四格”。距离不会是负数,因此绝对值是四。

求和

还是二、四、六三张卡片:

  1. 钱包最初是零。
  2. 读第一张卡片,把二放进钱包,现在是二。
  3. 读第二张卡片,再放入四,现在是六。
  4. 读第三张卡片,再放入六,现在是十二。
  5. 三张都读完,停止。 这就是有限求和的真实执行过程。

函数

把函数想成一台规则固定的机器:

输入一个允许的数字。

  1. 机器先乘二。
  2. 再加一。
  3. 输出一个数字。 同一个输入送进同一台机器,必须得到同一个输出。一个输入不能同时得到两个不同答案,否则它就不满足这里的函数规则。

坐标

坐标像在方格地图上找位置:

从原点出发。

  1. 先看第一个数,决定向左还是向右走多少格。
  2. 再看第二个数,决定向下还是向上走多少格。
  3. 落脚位置就是这个坐标点。

顺序不能交换:第一个数管横向,第二个数管纵向。

斜率

从第一个点走到第二个点:

  1. 先数横向走了几格。
  2. 再数纵向走了几格。
  3. 用纵向变化除以横向变化。
  4. 得到“横向每走一格,纵向平均变化几格”。

定义域和值域

  • 定义域是机器允许你放进去的所有输入。
  • 值域是这些输入实际通过机器后得到的所有输出。

先有允许的输入,再有对应的输出。二者不能混为一谈。

用几个数字亲手算一次

变量、常量和等号

输入换成三:

先算 2 × 3 = 6
再算 6 + 1 = 7
所以 2 × 3 + 1 = 7

这里:

  • 三是本次放进变量位置的数字。
  • 二和一是本条规则里的常量。
  • 等号左边算出来是七,右边也是七。

下标

a序列按顺序是:

第 1 项:2
第 2 项:4
第 3 项:6

所以“a 下标二”的值是四。

3 的二次方
= 两个 3 相乘
= 3 × 3
= 9

指数和整数对数

先建立完整指数表:

指数,也就是乘二次数 从一开始的动作 结果
0 一次也不乘 1
1 1×2 2
2 1×2×2 4
3 1×2×2×2 8

因此:

2 的 3 次方 = 8

再从八倒着整除:

已除次数 当前商 下一步
0 8 8÷2=4
1 4 4÷2=2
2 2 2÷2=1
3 1 停止

所以:

以 2 为底,8 的对数 = 3

这不是两个互不相关的答案,而是同一事实的两种问法:

输入次数 3 ──指数──> 输出结果 8
输入结果 8 ──对数──> 输出次数 3

连续情形中,用十二个泰勒项近似 (e^1)。部分和依次从一开始, 不断加入 (1/n!):

1
1 + 1 = 2
2 + 1/2 = 2.5
2.5 + 1/6 ≈ 2.6666667
继续加到第 11 项 ≈ 2.718281826198493

随后把这个近似值交给自然对数二分查找。每轮只问:

当前中点 m 的 e^m,比目标小还是大?

左右边界不断靠近,最后找回约等于一的输入。这里用约等号,是因为 泰勒展开与二分停止都使用有限容差。

根号

寻找一个非负数
它自己乘自己要等于 9
3 × 3 = 9
所以根号 9 的主值是 3

绝对值

-4 在零点左边
从 -4 走到 0 共走 4 格
所以 -4 的绝对值是 4

求和与部分和

开始:0
读到 2:0 + 2 = 2
读到 4:2 + 4 = 6
读到 6:6 + 6 = 12
结束:12

二、六、十二叫作三个“部分和”。它们把最终答案的来源完整保留下来。

函数输入输出表

规则仍然是“先乘二,再加一”:

输入 先乘二 再加一后的输出 坐标点
-2 -4 -3 (-2, -3)
-1 -2 -1 (-1, -1)
0 0 1 (0, 1)
1 2 3 (1, 3)
2 4 5 (2, 5)

所以本次允许的输入是负二、负一、零、一、二;实际输出是负三、负一、一、三、五。

坐标和斜率

为了计算斜率,再把输入三送进同一规则,得到输出七。

选择两个点:

第一个点:(1, 3)
第二个点:(3, 7)

从第一个点走到第二个点:

横向变化:3 - 1 = 2
纵向变化:7 - 3 = 4
每横走一格的纵向变化:4 ÷ 2 = 2

所以斜率是二。它正好和机器中“先乘二”的二一致。

名词翻译成人话

这些名词不是新的“知识点清单”,只是给前面已经做过的动作贴上方便交流的短标签。

术语或符号 怎么读 人话含义 本课数字
变量 x 艾克斯 可以换成不同数字的输入位置 3
常量 常量 本条规则中暂时不变的数字 2、1
= 等于 左右两边数值相同 两边都是 7
下标 a₂ a 下标二 序列 a 的第 2 项 4
底数 底数 重复参与乘法的数字 3
指数 指数 底数参与连乘的次数 2
log₂(8) 以二为底八的对数 二要连乘多少次才得到八 3
e 自然常数 e 连续增长最自然的固定底数 约 2.71828
ln(y) y 的自然对数 e 要取多少次方才得到 y ln(e) 得 1
n! n 的阶乘 从一乘到 n 3! 得 6
无穷 过程可以继续而没有最后一项 泰勒公式的上界
容差 容差 多接近才允许停止 本课由函数参数给定
根号 寻找平方后得到目标值的非负数 √9 得 3
` ` 绝对值
Σ 西格玛 按范围逐项相加 2+4+6
i 索引变量 当前读到第几项 1、2、3
下限 下限 求和从哪个位置开始 1
上限 上限 求和到哪个位置结束 3
f(x) f of x 函数 f 收到 x 后的输出 x=3 时为 7
定义域 定义域 允许送入函数的输入集合 -2 到 2 的五个数
值域 值域 本次实际得到的输出集合 -3 到 5 的五个数
坐标 (x,y) x、y 坐标 先横向后纵向的位置 (1,3)
Δ 德尔塔 终点减起点得到的变化量 横 2、纵 4
斜率 m m 或斜率 横向每走一格,纵向变化几格 2
表达式 表达式 一组尚待求值的数字和操作 2x+1
求值 求值 把输入代入并按规则算出结果 得到 7

下面这张表是本课公式和动画共用的“八栏符号身份证”。“合法范围”不是额外术语,而是在提醒你:一个符号可以接收什么,什么输入必须拒绝。

符号 读法 人话含义 手算值 类型/形状 单位 来源 合法范围
(x) 艾克斯 当前送进表达式或函数的输入 3 单个实数 黄金输入 任意实数;本课函数表限于 -2 到 3
(2x+1) 二乘 x 加一 先把输入乘二,再加一 7 单个实数 表达式求值事件 (x) 必须是实数
(a_2) a 下标二 序列 (a) 的第二个座位 4 序列中的单个数 序列 [2,4,6] 下标从 1 到 3
(3^2) 三的二次方 两个三相乘 9 非负实数 幂运算事件 本课底数、指数均为实数,指数取 2
(2^3) 二的三次方 从一开始连续乘三次二 8 正实数 指数对数轨迹 本课离散例的指数是非负整数
(\log_2(8)) 以二为底八的对数 反问二连乘几次会得到八 3 单个实数 指数对数轨迹 底数大于零且不等于一,目标大于零
(e^x) e 的 x 次方 连续指数函数在 x 处的输出 x=1 时约 2.718281826 正实数 泰勒累加事件 x 为有限实数;有限项结果是近似值
(\ln(y)) y 的自然对数 反查哪个指数产生目标 y y≈2.718281826 时约 1 单个实数 二分事件 y 必须严格大于零
(n!) n 的阶乘 一到 n 的整数连乘 3!=6 正整数乘积 泰勒项分母 约定 0!=1
(\sqrt{9}) 根号九 找到平方后等于九的非负数 3 非负实数 开方事件 实数范围内被开方数不得小于 0
(\lvert-4\rvert) 负四的绝对值 负四到零点的距离 4 非负实数 数轴格 绝对值事件 任意实数
(\Sigma) 西格玛 按给定上下界逐项相加 12 求和运算符 求和轨迹 下界不大于上界,范围内每项都存在
(i) 索引 i 当前读取到第几个座位 1、2、3 正整数 座位 求和轨迹 1 到 3
(f(x)) f of x 函数机器收到 x 后给出的输出 7 实数到实数的映射 函数表 输入必须属于定义域
((x,y)) x、y 坐标 先横向 x,再纵向 y 的位置 (3,7) 二维点 (2,) 坐标格 函数点事件 两个分量都必须是实数
(\Delta x) 德尔塔 x 终点横坐标减起点横坐标 2 单个实数 横向格 斜率事件 计算斜率时不得为 0
(m=\Delta y/\Delta x) m 等于纵向变化除以横向变化 每横走一格,纵向走几格 2 单个实数 纵格/横格 斜率事件 (\Delta x\neq0)

Replies

北侧工程师

地铁图那个比喻一下子就把我劝进了。以前一看到符号就想逃,本质是没人告诉我“这只是压缩写法”。

特别同意“不用先完整学完数学再碰算法”这句。我自己吃过亏:一上来堆定义,三天放弃;后来反过来,先拿销量预测、复利那类问题走一遍,符号才突然变成省事的工具,而不是考试题。

指数/对数那对正反动作写得很清楚。要是系列后面还写向量和距离,希望继续用这种“先走一遍过程再贴标签”的节奏,别一上来就范数。

顺手问一句:下一篇大概会先接斜率/函数,还是直接进一点线性代数入口?