6.2 梯度下降法
我们一直强调, 概念是知识体系中最重要的基础。 梯度下降法(Gradient Descent)是用来找到合适函数的方法。 为什么叫这个名字?我们把这个词拆开分三部分 「梯」、「度」、「下降」。 (前方预警,此章节文字纯属个人观点。)
先拿出第一个字,「梯」。你肯定头脑中会想到木梯子或楼梯的样子。 人们借助 这个工具到达房顶等高处或是下到一个深坑里。 试想一下, 你正在一个迷宫里往前 走, 突然前面出现扇门,打开门有一段往下或往上去的楼梯。 你要自然而然地拾阶而下(上)。你不会停留在中间。 梯代表着一种不稳定的状态,在一个维度上讲,要么 往上,要么往下; 要么往大里变,要么往小里去。
再说第二字, 「度」。 梯子是一格一格, 或是楼梯的话, 是一个台阶一个台阶 的。 每一阶的高度都要合适, 不能过高, 也不能过低, 否则人在使用时会极不舒 服,相信你在生活中有这样的经验。 这里,称之为度。
第三部分,是个字面意义上的词,就是要往下走。
看到这里,我请大家回答一个问题?为什么是往下,不能往上吗? 答案是不能往 上。因为我们在第二步已经定义好用来挑选函数的准则叫损失。 当然损失越小越好。 假设, 我们在第二步定义的挑选函数的准则叫收益(Benefit)。 我们肯定用一个叫 「梯度上升」的方法。 到这里, 你看梯度下降法就是迭代法的另一个别名。 这个名 字,我个人认为命名还不错,仔细想想,还有道理, 总体上「字如其象」。
吐槽并强调一下,名字其实是概念的浓缩版,代表着背后发明者朴素的思维。 如 果翻译不好,会让后来者曲解发明者的意图, 造成学习上先入为主的巨大的障碍和鸿 沟。 举个例子,计算机编程上的术语。 早年间,我刚学 Windows 32 位编程, 第一次 看到 Win32 窗口编程书中的「窗口句柄」(handle)、 「钩子」(hook),根本就不知道 说得是什么。 还有对象(object),实例(instance),运行时(run-time), 也不知道这 些术语是谁翻译的,还不如不翻译呢。 大家脑子里想的形象和其在计算机体系中的含 义差着〸万八千里。1
同样的, 大家不要以为, 学人工智能的人, 是干的高科技的活, 个个水平都很 高。 一说起来,概率分布,梯度下降,拟合,回归, 决策树、支撑向量、编程框架, 再时不时嘴上挂着英文的单词, 乍一看,会唬住不少人。其实,大部分人的水平并不 高, 尤其是语文水平,甚至个别人水准很低。 再举个例子,超参数(Hyper-parameters) 这个翻译词, 用的是超市,超人,超过的第一个字。 在中文语言里, 「超」 的第一 印象本身有「更好」(better)的含义在里面。 比如,超赞,超好,赶超,超过, 甚至 身边同学朋友名字中也有用「超」字的。 如果你对英文熟悉,hyper 可不是 super 的意 思, hyper 是指一个事物里有明确的、特别的特点在里面。 hyper-parameters 参数的意 思是这个参数很特别, 和其它大多数的参数不一样, 机器学习中是指要你手工指定的 系数。 其根本就没有「好」的意思。 翻译成这样,也是典型的词不达意。 从原则上 讲,其在翻译上歪曲了技术概念背后的朴素思维。
另外,汉字并不是语言或声音的符号系统。它与英文不同, 其从物不从音。 在莱 布尼茨的《人类理智新论》中认为, 汉字是针对眼睛为输入的符号系统,且在创造汉 字时, 背后更多是理性的思考,而且决不是约定俗成的。 甚至,约翰韦伯说,汉字是巴别塔混乱之前的人类的语言。 所以,个人认为,上面如句柄之类翻译的水准属于典 型的误人子弟。
八卦一下,大家知道微软的 Windows 95,或 Windows 98, 央视新闻联播怎么翻译Windows 这个单 词的吗? 如果叫「窗口 95/98」实在太土。当时叫「视窗 95/98」。 到后来,也是干脆不翻译了直接念 英文发音。 ↩︎