从0理解数学基础
学习算法课程,需要很多数学基础知识,但是并不意味着需要先完整学习数学。
学习首先说人话
首先重温下数学符号,我感觉数学符号就很像地图的图标
第一次看到地铁图时,圆点、颜色和换乘标记可能都很陌生。但地图仅仅是为了把一长段话压缩到一张图里。
数学也可以同样的思路:
字母表示“这里可以放一个数”。
固定数字表示“这条规则里暂时不变”。
等号表示“左右其实是同一个数值”。
下标表示“我要序列里的第几项”。
指数表示“同一个底数要重复乘多少次”。
对数表示“反过来寻找一共乘了多少次” 。
求和符号表示“请按范围把许多项逐个加起来”。
函数表示“一台输入一个数、输出一个数的机器”。
坐标表示“先横着走,再竖着走,找到一个位置”。
斜率表示“横着每走一步,竖着变化多少”。
这东西到底有什么用
我上学的时候就一直困惑数学在生活中又能什么用,导致上了大学后松懈了很多。现在反过来想想有些唏嘘
销量预测
企业可能说:
广告投入每增加一万元,预计销量增加两百件;即使不投广告,也有一百件自然销量。
数学符号能把这条规则压缩下来。以后只要换广告投入,就能得到对应的预测销量。
客户分群
一个客户会有年龄、消费金额、到店次数等许多特征。下标让我们可以明确说“第几个客户的第几个特征”,而不会把行和列弄混。
模型损失
训练模型时,需要把每条样本产生的错误逐项加起来。求和符号就是“遍历所有样本并累计”的压缩写法。
相似度和向量
后面讲推荐、文本向量和神经网络时,会把对象放进坐标空间。坐标轴、点、方向和距离都是理解向量的入口。
趋势变化
销量随价格如何改变、风险随负债率如何改变,都涉及“横向变化多少、纵向变化多少”。斜率就是最简单的变化率。
增长预测与反向求时间
假设一个指标每过一期都乘二:
第 0 期:1
第 1 期:2
第 2 期:4
第 3 期:8
“三期以后是多少”是指数方向;“从一增长到八一共过了几期”是对数方向。
企业里这两个问题经常成对出现:
- 正向:用户按固定比例增长,若干期后大约有多少人?
- 反向:要增长到目标规模,大约需要多少期?
- 正向:资金按复利积累,未来余额是多少?
- 反向:余额达到预算目标还要多久?
- 正向:异常传播按层扩散,几层后会影响多少节点?
- 反向:已知影响规模,估计传播深度。
不用公式,先把过程走一遍
变量和常量
一台饮料机。
- 你选择杯子数量,这个数量可以每次不同。
- 每杯价格暂时固定为两元。
- 包装费暂时固定为一元。
- 机器先计算杯数对应的饮料费。
- 再把包装费加上去
“杯子数量”是变量;“每杯两元”和“包装费一元”是这条规则里的常量。
常量并不表示宇宙中永远不变。它只表示在当前规则或本次计算中保持不变。
等号
机器算完以后,左边的计算过程和右边的最终金额是同一个数。
等号不是“按下计算按钮”,也不是“接下来发生”。它表达的是两边数值相同。
下标
桌上依次摆着三张卡片,卡片上的数字是二、四、六。
如果说“第二张卡片”,你从左向右数:第一张是二,第二张是四。因此答案是四。
下标就是把“第几张卡片”压缩到字母右下角。
幂
“幂”通常指运算的结果
三重复乘两次”的动作是:
- 先拿一个三。
- 再拿一个三。
- 把两个三相乘。
它不是三乘二。指数告诉你底数出现多少次。
指数和对数是一对正反动作
先从一开始,每次乘二:
不乘:1
乘 1 次:2
乘 2 次:4
乘 3 次:8
这叫指数的正向动作:输入“乘几次”,输出“最终变成多少”。
现在把问题倒过来。手里已经有八,每次除二:
8 ÷ 2 = 4 ← 撤销一次乘二
4 ÷ 2 = 2 ← 撤销第二次乘二
2 ÷ 2 = 1 ← 撤销第三次乘二
一共除三次回到一,所以以二为底,八的对数是三。
请分清三种角色:
- 底数二:每次按什么倍数变化;
- 指数三:一共重复多少次;
- 结果八:重复以后到了哪里。
指数运算是把“三”送到“八”,同底对数运算是把“八”送回“三”。几何上就是把 点 (3,8) 交换成 (8,3),像沿着直线 y=x 照镜子。
连续增长不能总靠整除。例如“哪个数作为e的指数会得到二” 没有整数答案。本课代码会:
- 把许多越来越小的项逐项加起来,近似 e的x次方 (e自然底数)
- 先夹住答案;
- 每次试区间中点;
- 指数结果偏小就向右找,偏大就向左找;
- 区间足够窄才停止。
根号
前面这个问题其实就涉及到了需要开方计算了
“开方”就是“指数为分数”的实际操作。
“开方”就是“指数为分数”的实际操作。
开平方 $x^2$ = 指数 $\frac{1}{2}$ (0.5次方)
开立方 $x^3$ = 指数 $\frac{1}{3}$ (约0.333次方)
开四次方 $x^4$ = 指数 (0.25次方)
绝对值
你站在数轴的负四位置。问你距离零点多远。
方向是“在零的左边”,距离是“四格”。距离不会是负数,因此绝对值是四。
求和
还是二、四、六三张卡片:
- 钱包最初是零。
- 读第一张卡片,把二放进钱包,现在是二。
- 读第二张卡片,再放入四,现在是六。
- 读第三张卡片,再放入六,现在是十二。
- 三张都读完,停止。 这就是有限求和的真实执行过程。
函数
把函数想成一台规则固定的机器:
输入一个允许的数字。
- 机器先乘二。
- 再加一。
- 输出一个数字。 同一个输入送进同一台机器,必须得到同一个输出。一个输入不能同时得到两个不同答案,否则它就不满足这里的函数规则。
坐标
坐标像在方格地图上找位置:
从原点出发。
- 先看第一个数,决定向左还是向右走多少格。
- 再看第二个数,决定向下还是向上走多少格。
- 落脚位置就是这个坐标点。
顺序不能交换:第一个数管横向,第二个数管纵向。
斜率
从第一个点走到第二个点:
- 先数横向走了几格。
- 再数纵向走了几格。
- 用纵向变化除以横向变化。
- 得到“横向每走一格,纵向平均变化几格”。
定义域和值域
- 定义域是机器允许你放进去的所有输入。
- 值域是这些输入实际通过机器后得到的所有输出。
先有允许的输入,再有对应的输出。二者不能混为一谈。
用几个数字亲手算一次
变量、常量和等号
输入换成三:
先算 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) |