西西河

主题:【原创】机器学习的基础是什么?(0) -- 看树的老鼠

共:💬154 🌺509 🌵1
全看树展主题 · 分页首页 上页
/ 11
下页 末页
家园 我的测试是看了这些视频和算法介绍后做的

记忆整个音乐曲调在我看来是机器学习了pattern,所以我去做了个测试。 Nupic算法问题是对scalar变量的equal weighting。 用hotgym的例子来说,假设健身房平均每天用电量低谷和高峰在100-10000kwh之间。100kwh的变化在高峰期是正常的,而在低谷期是异常的。

家园 讨论机器学习的一个问题和一种极限

这是和itn网友的讨论。虽然是他的一个特殊的例子,我认为具备普遍性,就提上来到这里。

按照我的理解,他的情况基本上如此:有一个时间序列A1A2A3······AN,这里N大于300。Ak是标量(不知道范围,估计可以认为在一个小范围内,比如说0-255等,他的量可能要取对数?)。他需要一个比较智能的东西来监测这个标量的变化,在异常变动时,自动报警。而且这个异常变动不仅和前后两个标量的变化幅度有关,也时间所在也有关。他说的,白天变化颇大也正常,但是晚上这个变化就不正常了。

这个事情本身不是难题,甚至可以说连问题都不是。如果是写程序来做的话,很容易。但是,我们希望的是能够让机器自己来学习,尽量减少人工的干预。现在来看如何做。

当然有很多做法。itn网友是根据Hawkins的那个脑学习算法来做的。根据他们的那个视频,他们的那个算法可以把时间序列记忆下来(恐怕也记忆不了全部,仅能记忆一段吧),而且可以预测以后若干时间的标量,至少是可以比较好的预测(这要请itn网友来仔细讲讲),就是说,如果我知道了Ak,我就可以比较好预测A(k+1),A(k+2),······,A(k+20),等。那么,有了这样的数据,是否就比较好做报警了呢?

可能可以。比如说,如果我预测A(k+10)应该仅比Ak大10(比如说的话),但是,实际上A(k+10)大了50,是不是我就可以报警了呢?这样看,好像不太用人工干预,就可以做报警了。

但是,仍然,为什么大了50,就可以报警?这个标准,不是机器可以学习的,如果没有外面的监督和指导的话。我想,这就是目前的机器学习的极限了。

其实,如果没有了外面的监督和指导,即使一个真人在那里,也不太好定这个标准。这个标准多少需要外部的反馈。这就更是学习的极限。

家园 我写的答复放在上面了,请讨论
家园 机器学习的基础是什么?(4) 与传统科学方法的区别

回到(1)线性分类器一节所说的例子。一个典型的机器学习过程是这样的:

假设我们要让机器学会从人脸中猜出人名。我们只要准备一些照片和对应的人名(这一步需要人工参与),然后,对于给机器新的照片(这些照片属于之前见过的人的不同角度的照片),机器就能自动猜测出人名。

看到这个过程后,什么感觉?人就在最初给每张照片标了标人名,然后智慧就从石头缝里蹦出来了?科学研究什么时候变得这么简单了?如果科学研究这么简单,整个物理学披荆斩棘的历史,还有什么意义?

因为这个,我总觉得,机器学习有什么地方错了。

相比于传统科学研究,机器学习得到的模型,没有智慧。在实用中表现的很好,但没法让我觉得世界真的是这么运作的。

1. 是因为机器学习算法中通常都包含了概率的成分吗?

最初,我找到的靶子是:机器学习通常都引入了某些概率分布。这一点也曾经让我困惑,在经典物理学中似乎并不常引入概率分布,大部分经典物理学定理都有一种确定性的、让人心安的感觉,而一旦引入概率论,我就失去了这种感觉,所以,或许我的不安来自于概率论。

那么,概率论到底是在说什么?

想象丢硬币这个例子,每次丢硬币会得出不同的结果。在一般的概率教材上,都会说,丢硬币是一种典型的随机实验,所以丢硬币可以用一个概率分布来建模,正面的概率为0.5,反面的概率为0.5。

在以上论述中,“随机”这个词好像有什么神圣性,赋予了使用概率分布的合法性。那么,什么是随机呢?

在我们的文化中,随机常常有一种错误的印象。我们会觉得,随机似乎意味着某种不可控的、完全无法预测的事件。从这种意义上来说,丢硬币完全不符合随机的定义。从物理学的角度来说,如果精确知道丢硬币的角度、力度,我们是可以精确预测硬币的结果的。这一点,在E.T Jaynes的《概率论沉思录》中给出了预测的方法。

我自己知道的另一个例子是轮盘赌。一般人都会觉得,轮盘赌是一个典型的随机现象,因为结果完全无法预测。

可是正如《玩转轮盘赌:简单出千技术帮你赢》http://www.guokr.com/article/412116/ 一文所说,曾经有人把单片机和简单的测量设备带入赌场,这样他们就可以以极高的精度预测弹珠最后会落在轮盘的哪个格子里。

这样一个现象,我们凭什么说它不可预测,凭什么说它是随机的?

我们重新来看硬币这个例子。至少在对于物理学没有深刻理解的人来看,似乎硬币确实是完全不可预测的。当我们说不可预测时,我们实际上是说:“在我的眼中,没有看到任何决定性的因素,能够预测硬币的行为。硬币的行为似乎是不可用其他因素解释的。”刚才我们说的这一段话,换到数学语言是什么呢?就是说在我眼中,没有什么自变量可以解释因变量。

这才是概率论的本质。只要在你眼中,没有什么自变量可以解释因变量,那么,你就可以使用概率论,你放弃了,不去寻找任何自变量。哪怕一千年后人们发现了确定性的规律,这一刻,你使用概率论的行为也是对的。就这么放弃吧,假设因变量就是自动出现的,有时是正面、有时是反面,我们不用其他因素来解释这个现象,我们只是简单的看看,这个因变量或者说硬币的很多次投掷结果,是否有一定的规律性。这个规律性不涉及自变量,不涉及变量之间的关系,没有因果的概念,所以,算不上什么“科学”(如果我们认为变量之间的关系是科学的本质的话),但是,它至少是一个唯象的、足够好的经验定理。

使用概率论并不是无代价的。一个真正的物理化的硬币投掷模型可以精确的预测硬币的行为,而现在,我们只能说,硬币有50%的概率是正面。我们因为承认自己的无知,而付出了精确度的代价。

那么,我们回到最初的问题,为什么机器学习常常要引入概率?

因为机器学习研究的问题一般都很复杂,我们能够发现的自变量通常不足以完全解释因变量,所以呢,我们坦然的承认,因变量中有一部分是由我们不知道、或者难以观测的自变量来解释的。

从以上的讨论中,我们引入概率论,只是承认了某些东西是我们所不知道的(这当然是必然的,哪怕是验证F=ma的实验,实验数据中也会有一些东西是我们所不知道的因素所控制的,所以,其实早期科学家们满足于数据的足够好的拟合,其实他们也在偷偷使用概率论,只是他们不知道罢了)。而且,随着我们引入越来越多的反应了本质的自变量,我们的模型的精确度就会越来越高,我们的模型就会越少的依赖那个未知的概率分布。

所以,概率论并不是机器学习和传统科学的区别。

2. 是因为我们更相信人脑吗?

我重新看我的微积分教材。在微分方程这一节,有一个这样的例子:

空气通过盛有CO2吸收剂的圆柱形器皿,假设吸收层厚度为d cm,最初浓度为p,则最终浓度为 p * exp(-k * d)

k是一个系数。

书上对于这个定律的解释是这样的。假设将吸收层分为n小段,则每一段的厚度是d/n。则空气通过第一段后,CO2浓度是p (1- kd/n),通过第二层后p (1- kd/n)^2。如此循环,通过n小段后,浓度是p (1 - kd/n) ^ n。

当n趋近于无穷大时,p(1-kd/n)^n 等于p * exp(-k *d)

可是,看完以上这段解释之后,我发现,自己对于整个推理过程没有丝毫信息。这就是所谓的浮沙高台。假设CO2通过第一层后,浓度确实是p(1-kd/n),那么后面的整个推理都成立。

可是,凭什么我们有p(1-kd/n)这个公式?

假设有一个科学家,做了大量的实验,得出许多不同的p、d和最终的CO2浓度数据,然后发现p(1-kd/n)有很高的精度。我应该相信这个公式吗?

如果我们把这些数据都送给机器,现代的机器学习算法可以轻而易举的发现p(1-kd/n)这个公式。既然我不相信机器学习模型,那么,这个公式的可信度、与真相的接近程度,并不会因为它是人脑发现的,而有丝毫提高。

3.

继续前一个例子。p(1-kd/n)这个公式冷冰冰的没有温度。可是当我发现它的一种物理解释之后,我就彻底的相信它了。

假设有一个吸收层,若通过q个CO2分子,这个吸收层能够吸收r个分子。

那么,如果我们通过2q个CO2分子,我们可以想象先通过q个,再通过q个。如果吸收层足够大,前q个CO2分子并没有改变吸收层的性质,那么,可以想象,唯一的结果是:2r个分子被吸收。

所以,被吸收的分子数必然与初始浓度呈正比。

以上这一段,从数学模型出发,给出了整个吸收过程的一种描述,这个描述最终落实到人可以感知的一种现象上。再抽象一点说,就是你把一个新知识和老知识建立了联系。

这种理解一方面让我们对于公式极其的信服,另一方面也可以指导我们继续做出发现。如在以上的解释中,我们可以很容易的给出新的猜测:正比关系不会永远成立,当吸收层过小时,通过q个分子,吸收层就完全饱和了,那么再通过q个分子,不会有任何分子被吸收。而对于这个公式的理解,再一次加强了我们对于分子存在的信任感。

以上例子是我个人的经验。在物理学史上,物理学家们也有着相似的信念。关于黑体辐射的瑞利-金斯定理在低频部分与实验测得的数据相符,但是在高频失效。韦恩公式则在相反的频段失效。而普朗克公式只是简单的通过数学手段将两个公式凑在一起。

到这一步,我们并不能说科学家做的事情比机器高明多少,大家都是在凑数据。可是不同的是,正如我们从p(1-kd/n)中可以猜测出分子的存在,从普朗克公式中,普朗克猜测出了量子的存在,从而改变了物理世界。

所以,是什么使得我们对传统的科学知识抱有信心?相信世界几乎就是按照科学知识所指示的那样运作?

这是因为传统科学知识在经过解析之后,可以被人的直觉所理解,从而使我们对其抱有信心(好吧,我不能进一步解释,人的信心从何而来,人脑就是这么运作的)而机器学习模型不能。

另一方面,传统科学知识是一个广泛联系的整体。一个发现往往在一个完全无法预知的方向增进我们的能力。正如从来没有人会想到,黑体辐射会导致量子概念的提出,在经过一连串的发现后,生出了固态物理这个孩子,并使得晶体管成为可能。也使得此刻的我,能够依赖电脑写出这篇文章。

而与之相比,能识别人脸的机器学习模型,对于别的任何现象都没有解释能力。

通宝推:唐家山,
家园 机器学习的基础是什么?(5) 下一步往哪走?

参照《机器学习的基础是什么?(4) 与传统科学方法的区别》一文的讨论,机器学习的本质缺陷是:它得出的模型是无法理解的。

这带来了两个麻烦:

1. 当机器学习模型失效时,人真的说不清楚到底它为什么失效了。

2. 一个可用的机器学习模型,很难告诉我们任何关于问题本质的信息。

那么,下一步该往哪走呢?

也许我们应该增强可理解性。有这么几条路线:

1. 人工的构建简单模型。比如动物识别这个问题吧,如果我们做出几个模型,毛发颜色识别、脸型识别、四肢识别,然后把这些模型组合起来,去做动物分类。这样,当模型失效时,我们至少可以看看,是不是毛发颜色识别错了?是否把尾巴也当作一条四肢了?

2. 或许我们不应该从数学上理解模型在干什么,而是从经验上来看。比如从数学上很难理解Google的神经网络上每个神经元在干什么 http://www.talkcc.com/article/3835672 。 但是呢,看看这个神经元的行为,它对于什么样的图像敏感,我们就能一眼发现,这个神经元是个猫咪控呢。

传统科学知识之间有关系,而现在的每个机器学习模型都是相互独立的,怎么解决这个问题呢?

前面说的动物识别那个例子是一个方法。这是人工来创造知识之间的联系了。我觉得短期内这种方法比更高级的方法靠谱的多。

不过呢,或许我们也可以隐含的构建一组相互联系的模型。这也是深度神经网络发展的一个方向。比如自然语言处理问题,我们创造好几个神经网络,这些网络共用一些节点。然后呢网络一去做中文分词,网络二去做词义理解,网络三去做句法分析,网络四去做语义分析。同时训练这四个网络,我们可以猜测,四个网络公用的节点上也许会形成一些词法知识,网络二和网络四共用的节点上也许会形成一些语义知识。而且呢,词法知识和语义知识之间也有网络连接。这也算是自动建立了知识的结构了。

最后,机器学习处理的问题往往都很难,比如自然语言处理、图像识别、语音识别。关于这些问题,真的有一个人可以理解的简单模型吗?我不知道。

如果我们承认,这样的模型不存在,那么,也许我们应该老老实实的,就当机器学习模型在凑答案、凑公式吧。管用就行。我们可以继续提高我们凑公式的能力。最早的时候,我们只有线性模型。后来我们有了多项式模型、支持向量机,后来呢,我们有了深度神经网络,它们都依据不同的假设,努力凑出更好的公式。

暂时就写到这里,先扛个铁牛吧。

下面也许还有两个主题:一个是解释机器学习工程师们每天都在干些什么。另一个是解释线性分类器、支持向量机和深度学习网络背后的直觉都是什么。

看大家是否感兴趣吧。

通宝推:回归,钻石象,桥上,
家园 请教大家两个问题

一是怎么才能出新兵营啊?

二是怎么把这篇文章转到科技探索去呢?

谢谢

家园 积分,升级,认证

现在好像没有人工认证了?积分等级到了自动出营。

其他的,见官方QA——虽然很旧了,八九不离十吧。

关于西西河(我们敞开大门欢迎每一个人)

家园 谢谢,我读了,可是没有哪里谈到出营啊?
家园 条件到了,自然就出来了^^
家园 哈哈,好!
家园 自主学习和接受学习

你说的“外面的监督和指导”可以归入“接受学习”的范畴,就是别人灌输给你的知识。你说的机器自己的预测,类似于“自主学习”。

对于人类来说,接受学习是不可取代的(知识的传承),完全的自主学习代价太高(所有知识都要自己从头获得)。我想对于机器学习也一样,在接受学习(标准)的基础上进行自主学习(预测)。

所以你说的应该不是“学习”的极限,而是“自主学习”的局限。

家园 丢硬币

你说:如果精确知道丢硬币的角度、力度,我们是可以精确预测硬币的结果的。但是丢硬币之所以是个概率问题,恰恰是因为,你没法精确预测下一次丢硬币的角度和力度。这里的自变量就是丢硬币的角度和力度。

具体某次丢硬币的结果必然是确定的(不是正面朝上就是反面朝上,当然还可以是竖起来,或者干脆直接消失)。但是不等于丢硬币的结果就不是个概率问题。

家园 是的

所以,当我们选择放弃观测某些自变量或者我们根本不知道这些自变量的存在时,如丢硬币的角度和力度时,那些原本能够被这些自变量解释的因变量,就可以用概率来处理了。

家园 谢谢讨论。但是的确是学习的极限

你的说法有些接近我的想法了。我说的“外面的监督和指导”,其实并没有深入说我的想法,有些偷懒不想多说。我的想法其实是这样的:学习中,从现有的已知的数据中学习,是一种有效的学习,但是有相当的局限。而更重要的学习,其实必须是参与,去主动获取反馈,也获取一切外部的资料,包括既往的一切资料,就是说去实践,去深入,从外部获取资料,才有可能深入下去。

这里的这个例子就很清楚。

你讲的自主和传授(灌输),也的确如此。不过我们的思路有所交错。

家园 我的想法是你恐怕考虑偏了一些

机器学习,或者更准确讲,现今的机器学习,实际上和你的这些思考关系并不大。你的这些思考实际上是在思考人类的认知和科学的发展,而不是现今的机器学习。

现今的机器学习要简单很多。其实就是一门比较专门的计算机学科,用一些方法(主要是统计学的方法),试图让计算机程序可以根据输入(或者说训练)的数据而产生一些程序自身的改进,从而使得这个程序工作得更好。

如此而已。因此机器学习不具备认知能力,就非常正常。这就是我想你可能考虑偏了一些的原因。你说,“到这一步,我们并不能说科学家做的事情比机器高明多少,大家都是在凑数据”。你观察到这点,非常好。但是,这个凑数据的深度和广度完全不同,最关键的是背后的推动模式完全不同,或者说,凑数据用的道理的方式,完全不同。机器学习是用的现成的数学模型,唯一可以改变的就是模型的参数。而科学家群体能够做的事情,背后的推动,就完全不是现成的数学模型可以涵盖的。

但是,机器学习正在迅速发展,很可能十年二十年后的机器学习就很不相同了。这就是我说的,类脑计算。完全可以想象,以后的每一个科研组,都配有他们专门的类脑计算机,从事他们的思考活动,帮助他们理清科研思想,提出科研假说,做广泛的联想,等等。

类脑计算有什么特别之处?就可以使得能够超越现在的计算技术到如此的程度?我认为,关键的地方就是:现有的计算技术是建立在已知的数学模型上的,没有一个数学模型,寸步难行,因此也就被局限在这个数学模型中了。而类脑技术,可以容纳数学模型,这是远远超过人脑的地方。我们的脑力仅可以容纳一些比较小的数学模型。同时,类脑技术更是基于连接的,可以不用数学模型也能自动工作。这样的结合,就使得计算能力空前提高。

今天报道,谷狗购买英国的深度思想公司。这就是这些大发展的前奏。

全看树展主题 · 分页首页 上页
/ 11
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河