泰勒展开的前提是“函数足够光滑”可导甚至二阶可导。但真实世界里到处是“不可导”的函数怎么办答案是用其他工具替代泰勒展开。我们分三个层次来说。层次一为什么不可导就没法用泰勒泰勒展开的本质是用多项式去匹配各阶导数。一阶近似需要 (f’(x_0)) 存在二阶近似需要 (f’(x_0)) 存在如果函数在某个点尖刺、折断、有角导数根本不存在那泰勒展开就没有意义不能直接套用。例(f(x) |x|) 在 (x0) 处左导数 -1右导数 1导数不存在 → 无法写出泰勒展开层次二那怎么近似不可导的函数方法 1分段处理把不可导点当作分界点在每一段内部函数是光滑的分别泰勒展开。例(f(x) |x|)(x0)(f(x) -x)泰勒就是它自己(x0)(f(x) x)泰勒也是它自己在 (x0) 处不展开只做左右极限这是工程上最常用的方法避开“坏点”。方法 2用次导数 / 次梯度优化领域对于凸但不可导的函数如 (|x|)、ReLU有次导数的概念在 (x0) 处(f(x)|x|) 的次导数是 ([-1, 1])任何介于 -1 和 1 之间的数都可以算“广义斜率”机器学习里的ReLUmax⁡(0,x)\max(0,x)max(0,x)在 (x0) 也不可导但实践中直接取 0 或 1 作为“伪导数”就是用了次梯度思想。方法 3数值差分不要解析导数如果你没有公式只有函数值可以用差商代替导数f′(x0)≈f(x0h)−f(x0)h f(x_0) \approx \frac{f(x_0h) - f(x_0)}{h}f′(x0​)≈hf(x0​h)−f(x0​)​即使函数在 (x_0) 不可导这个差分仍然有定义只是不收敛到唯一值。这是计算机做近似优化的常用手段。层次三泰勒展开的地位——光滑函数的特权函数类型泰勒展开替代方案光滑无穷可导✅ 最理想高精度—有限次可导如 (x^{1.5}) 在 0⚠️ 可用但余项不同用低阶展开注意误差连续但不可导如 (x)不连续❌ 完全无效其他数值方法插值、逼近论泰勒展开是“光滑函数”的专属利器。遇到不可导就要换工具。真实案例机器学习中的 ReLUReLU 函数(f(x) \max(0, x))(x0)(f0)导数为 0(x0)(fx)导数为 1(x0)不可导实践中怎么用泰勒不直接用。而是在 (x\neq 0) 时用一阶近似在 (x0) 处人为规定“次导数”为 0 或 1通常取 0这称为次梯度下降是深度学习的标准做法本质放弃严格的泰勒展开改用广义的“近似更新规则”。一句话总结泰勒展开要求函数可导。如果不可导你有三条路1️⃣ 避开坏点分段展开2️⃣ 用次导数广义斜率3️⃣ 用数值差分代替导数现实世界不总是光滑的所以我们需要一整套**“不需要导数”的近似工具**。我们直接算一个不可导函数f(x)∣x∣f(x) |x|f(x)∣x∣在x00x_0 0x0​0附近的例子。你会看到泰勒展开在这里彻底失效但数值差分仍然能给你一个“能用的近似”。第一步为什么泰勒展开失效在x00x_0 0x0​0处左导数lim⁡x→0−∣x∣−0x−xx−1\lim_{x \to 0^-} \frac{|x| - 0}{x} \frac{-x}{x} -1limx→0−​x∣x∣−0​x−x​−1右导数lim⁡x→0∣x∣−0xxx1\lim_{x \to 0^} \frac{|x| - 0}{x} \frac{x}{x} 1limx→0​x∣x∣−0​xx​1导数不存在 → 无法写出f(0)f′(0)⋅Δxf(0) f(0) \cdot \Delta xf(0)f′(0)⋅Δx。强行“假装”可导会怎样如果你硬选一个“伪导数”比如取 0你得到f(0.1)≈00×0.10 f(0.1) \approx 0 0 \times 0.1 0f(0.1)≈00×0.10但真实值是0.10.10.1→ 误差 100%。第二步用数值差分不要解析导数数值差分不依赖导数存在只依赖函数值。前向差分公式f′(0)≈f(0h)−f(0)h f(0) \approx \frac{f(0h) - f(0)}{h}f′(0)≈hf(0h)−f(0)​取h0.1h 0.1h0.1∣0.1∣−00.10.10.11 \frac{|0.1| - 0}{0.1} \frac{0.1}{0.1} 10.1∣0.1∣−0​0.10.1​1取h−0.1h -0.1h−0.1从左逼近∣−0.1∣−0−0.10.1−0.1−1 \frac{|-0.1| - 0}{-0.1} \frac{0.1}{-0.1} -1−0.1∣−0.1∣−0​−0.10.1​−1结果不同但这恰好反映了真实情况左、右斜率不同。第三步用差分结果做“类泰勒近似”我们想预测f(0.1)f(0.1)f(0.1)但0.100.1 00.10所以用右差分得到的斜率111更合理。构造“数值一阶近似”f(0.1)≈f(0)(右差分)×0.101×0.10.1 f(0.1) \approx f(0) (\text{右差分}) \times 0.1 0 1 \times 0.1 0.1f(0.1)≈f(0)(右差分)×0.101×0.10.1✅ 完全精确因为∣x∣|x|∣x∣在x0x0x0就是直线如果预测f(−0.1)f(-0.1)f(−0.1)用左差分 (-1)f(−0.1)≈0(−1)×(−0.1)0.1 f(-0.1) \approx 0 (-1) \times (-0.1) 0.1f(−0.1)≈0(−1)×(−0.1)0.1真实值也是0.10.10.1✅第四步如果函数更“不可导”呢考虑f(x)∣x∣0.5f(x) |x|^{0.5}f(x)∣x∣0.5在x0x0x0附近尖刺更严重x真实值一阶近似用右差分 h0.01误差0.010.10.1斜率≈10近似 010×0.010.100.040.20.4斜率≈10近似 010×0.040.4100%❌ 误差巨大因为函数不是线性的即使做了差分一阶近似在更大步长下仍然失败。第五步结论对比表以x0.04x0.04x0.04为例方法预测f(0.04)f(0.04)f(0.04)真实值 0.2适用性假装可导 泰勒无法定义—❌ 根本不能用数值差分 线性近似0.40.2⚠️ 误差 100%分段精确表达式0.20.2✅ 完美但需要知道分段形式一句话总结泰勒展开在不可导点直接崩溃。数值差分能给你一个“伪斜率”用它做的线性近似在不可导点附近可能有用但如果函数在局部非线性很强如∣x∣\sqrt{|x|}∣x∣​线性近似会迅速失效。真正的解决办法是避开坏点或者用更复杂的非光滑优化方法次梯度、近端算子等。