主题:【原创】机器学习的基础是什么?(0) -- 看树的老鼠
一个数字代表一个点的颜色。
如果同一个人的照片,彩色的还原度,黑白的曝光量不同的话,怎样判别?
宇宙为什么是简单的?
本质上确实是构造一个函数.
我觉得机器学习有两个挑战。这两个挑战都不是机器学习特有的,而是学习,或者说人类智慧所特有的局限。
先看第一个挑战。为什么宇宙是可理解的?
想象有一个上帝,这个上帝的特点是什么呢?无穷大的计算能力、无穷大的感知能力、感知所有过去未来与所有位置的信息。
那么,上帝理解这个宇宙根本不需要任何函数。
这有点像今天大数据时代的某些机器学习算法,即简单的记忆。如果我们预先给一台机器从1到1亿的所有数字对的加法结构,那么人很可能根本就不会发现这台机器根本对于加法没有任何“理解”。
在上面,我给理解加了引号。因为什么是“理解”,似乎只有人才能说清楚。
爱因斯坦说,这个宇宙最难以理解的,就是它竟然是可以理解的。听起来真的很不可思议。
不过我想给“理解”加一个见仁见智的定义。那就是假设我们有1M的数据,如果我们能用小于等于1M的方法来存储这些数据,我觉得这就是某种程度的理解了。如果我们把数据分成两部分,一部分是输入,一部分是输出,假设在给定输入的时候,我们可以极大地压缩输出。那么这更像是一种理解了。
如果这么说,这个宇宙是可以理解的,似乎也不那么神奇。如果我们生活在一个不可理解的宇宙中,那等于是说,这个宇宙的信息量完全不可压缩。
第二个挑战也很有趣,就是为什么宇宙是简单可理解的?
为什么今天的机器学习都focus在简单的函数类呢,最基本的当然就是线性函数类了。
我觉得这是爱因斯坦那句名言的第二重解释了。生活在一个有冗余信息的宇宙,似乎并不令人惊奇。但是生活在一个简单的宇宙中就比较神奇了。
什么叫做简单呢?
从人脑的层面来讲,人脑比起整个宇宙来说算不上复杂。所以,第一种简单的定义就是:模拟人脑的结构。人脑可以模拟什么样的函数,我们就使用什么样的函数类。这也是神经网络的发展方向。
从数学的层面来讲,人类现在能够发现的所有函数都算是简单函数。所以,另一种简单的定义就是:使用人类现在发现的函数。当然,其中最简单的就是线性函数了。
想象一下,宇宙的冗余性竟然达到了这样一个程度,仅仅使用微不足道的原子(人脑这么多的原子),竟然可以在某种程度上理解宇宙。这的确令人感到不可思议。
总的来说,机器学习就是在抄袭人脑的思考方式。
首先,假设宇宙是可理解的、可压缩的,局部观察得出的结论可以推广到更广的范围与更长的时间中去。
其次,假设宇宙是简单可理解的。
现在机器学习的优点是:可以以简单的函数为基础不断的叠加出人直接用逻辑无法发现的复杂函数。所以就算大家集中在简单线性函数上,我觉得也算是一种进步了。
缺点呢,是能够允许的函数类,从某种意义上还不如人脑已经发现的函数复杂。
不过呢,只从复杂性的角度看,以后机器智能必然会超过人类的,因为它能够使用的原子数一定会超过人脑。现在机器比较傻,只是它使用原子的方式太不经济了。
这里,我尽情的胡扯一下,完全没有任何依据。整个宇宙的信息量确实无穷无尽。但是是否信息有不同的强度和适用范围?
人类虽然没有能力理解整个宇宙的信息,但是有能力理解极其微小的某个时刻产生的有限信息。假设引力产生于宇宙诞生之初某个极其微小的时刻,它本身的信息量并不大。所以人类可以理解。因为它诞生的足够早,所以任何后续的信息都无法决定性的修改引力的行为,所以看起来引力符合一个非常简单的规则。因为它诞生的足够早,所以它随着宇宙的扩张而复制到整个宇宙。所以,越基础的定理,反而越容易理解、规则越简单、适用范围越宏大。而预测我今天晚上吃什么,反而没有一个简单的规则。
本帖一共被 1 帖 引用 (帖内工具实现)
我完全接受您的意见,我对于科学史不太熟,所以说的太不严谨了。
我之所以谈到人类推理和火鸡推理类似,在于人类和火鸡都假设,在我们看到的有限数据上成立的规律,能够推广到非常大的范围和非常长的时间范围去。
而这个假设是没有人能够保证的。这个更多的是一个信念。
关于这个信念,我又多写了一点宇宙为什么是简单的?
不知您是否认同。再次感谢您的帮助。
在我这个例子中使用了原始像素点作特征.但是这种方法,一旦涉及还原度、曝光量这种问题就会一塌糊涂。
通常图像都要预处理的,比如做边界识别、去除噪声。
我不太熟悉图像识别领域,也许还有专门处理曝光和还原的过程。
微博@白马的确不是马(河里的id是萝卜酒)
@白马的确不是马:这是错的。π不能够枚举所有的字符串。
以前看见说圣经包含各种密码可以解释世界,和上述说法有些类似;纳什发疯也是因为在周围世界看到太多编码。
如果π能够枚举所有的字符串的话,引用部分能否成立?
现代数学家发现,无穷也是有级别的。最简单的区别就是可数无穷(所有整数的个数)和不可数无穷(所有实数的个数)。
宇宙应该属于哪个无穷,pi的位数应该属于哪个无穷,需要请学数学和物理的同学来回答。如果他们两者不一样,则不存在一一对应关系。
即便他们两者可以一一对应,我不确定后面的推广想说些什么。
不知鸿乾兄有没有读过这本书? (by Jeff Hawkins, founder of Palm)
Jeff在书中阐述了他关于人脑学习的理论。理论非常impressive。 他开了个公司Grok,最近开源了其算法。我试过一下作anomaly detection,并没有别的算法更好。当然我对这算法也就是Hello world的水平。鸿乾兄如有空研究一下,交流一下体会。
的确,正如爱因斯坦很深刻地看到的:“这个宇宙最难以理解的,就是它竟然是可以理解的”。我来对这个思想做一些解释。我们都知道,人类做科学研究,其实仅是就可以接触的范围做一种近似和模拟,然后从有限经验中揣测出一些公式。事实上,的确就是这么一回事。但是,令人非常吃惊的是,这种在小范围中间搞出来的东西,竟然适合非常巨大的时空。从牛顿力学起,一步一步,麦克斯韦,原子物理,量子物理,宇宙学,都是这样,在小范围内部搞出来的公式,竟然可以在非常巨大的时空中相当精确地再现出来。一个非常典型的例子就是现在的量子通讯。如果谁人对此不感到吃惊和难以理解,他恐怕就缺乏基本的科学敏感性。
按照我们对于通常复杂事物的理解,其实应该是这样的,我们搞出的那些物理公式等,仅应该在一个比较局限的范围内有效,超过了这个范围,就无效了。其实,这正是除开物理的其他大多数科学学科的境况。有没有什么医疗公式,写出来,就可以古今中外通吃?
这样理解,爱因斯坦的疑惑就清楚了,他是在深刻思考,为什么物理世界容许如此?道理何在?
但是,就我看来,其实事情正该如此。用一句话可以概括我的想法:事物的基础运动规则应该是简单的,但是世界是规律的反反复复和重重叠叠的实现,因此复杂性就逐渐积累了起来。
因此,爱因斯坦说那句话的时候,他恐怕是想说:是不是物理真的就是最基础的运动规则,只有如此才能解释为什么可以做那样深远的时空的推演而不面临规律破裂,但是,谁又真的知道什么是最基础的规则呢?那么,最基础的规则就一定是简单的,美的,不是统计规则的。
在我们看来,恐怕就不要想太多了,我们就接受物理的确是最基础的运动规则,因此可以做最深远广大的推论,也最简单,几个公式可以全宇宙普适。但是,接下来的世界,就不简单了,特别是生物世界,那是物理规则不知反复用了多少次,在历史中重重叠叠中过来的,自然就超级复杂了。
而人脑,就是这个复杂世界的顶端产物。
至于机器学习,那还太早。现有的机器学习全是建立在数学模型上的,而数学模型必然是简单的,这是相当于生物世界来说的。只有在机器从图灵机进化到类脑计算,其原理可以和生物世界比拟的时候,其复杂性才有可能提升到足够的程度。
本帖一共被 1 帖 引用 (帖内工具实现)
围绕脑科学而发生的若干玄想:链接出处
以及这个:链接出处
你做了些什么测试呢?请多讲讲,我们来看,为什么他们的东西不是很有效?但是,关键还在你想达到什么目的。
我们用“传统”统计学习算法做了数据中心服务器异常检测。一天分成24个小时,每个小时一个模型学习服务器的用量。用量大大高于或低于平时就是异常。实用中这机器学习基本达标。前提或缺点是事先要了解服务器用量的pattern,确定一天分成24个模型。
看到nupic(Grok开源的算法)我想nupic能否根据数据机器自己建模。初步测试的结果不令人满意。nupic自带一些例子。其中一个hotgym的例子跟我的use case很像。这hotgym的例子是预测健身房的用电量。健身房的用电白天高,半夜很低,但不会降到0。 降到0意味健身房断电,属异常。我把hotgym例子中一些半夜用电量设成0. Nupic没能检测出异常。
我想如把一天时间分成24段给Nupic。它可能会检测出异常。但这前提是了解用电量的pattern,这与我现有的算法比就没有本质的优越性了。
准备先确认一些事情,再做评论。其实我对你说的事情是外行。但是,应该是很有趣的事情。
就是说,你有一个标量,随时间轴变动,你有一个程序监测这个量(什么时候监测一次呢?),如果这个标量低于某个标准,或者有某种反常的变化,就希望报警。你现在用通常的统计方式,可以解决问题。但是,这种方式,需要对这个标量的变化规律先有一个大致的了解,即pattern,然后再根据这个pattern来设计统计的方法。不过,只要你有了这个pattern,你可以用统计的方式比较好解决问题。这种理解对吗?
那么你希望用神经元的方法更进一步,就是说,不需要先知道这个pattern,仅通过一定的数据输入作为训练,也可以达到解决问题的目的。但是,你试用了他们的软件,发现还不能解决问题。这样理解对吗?问题还是出在,你还是先需要一个大致的pattern。对吗?
了解清楚后,再做些讨论。
视频:外链出处
从44分钟看起。可能比较接近你的问题。他们那个东西可以记忆整个音乐曲调,大概也就可以记忆你的那些数据,因此就可以在这个记忆的基础上做认知/判断/报警等等。
监测标量的频率在这不是关键点。可想成个电表,每5-10分钟读一次用电量。