Categories

Calendar

June 2018
M T W T F S S
« Jun    
 123
45678910
11121314151617
18192021222324
252627282930  

同义反复

忘记了之前在哪里看到说数学其实就是同义反复而已。从某种程度上来说,这样的言论也不能说完全是乱说,比如一系列的等价的推导,其实可以说就是在说同一件事情。但是“同义反复”多少有些贬义的意思,具体来说应该是指“不必要的反复”吧,但是数学应该不是这样吧。实际上,来考虑一下什么样的“反复”是“不必要的反复”就可以了,我觉得,那些只要是“不太明显” (non-obvious) 的关系,把这样的关系建立起来,应该也都是有其意义的,而尤其重要的是其中那些“深刻”的关联。

不过“深刻”这样的词是不是太抽象了呢?实际上,最近一年一来,接触了些数学专业的人,在同他们讨论问题的时候——好吧,其实大部分时候是我在听他们讲问题的时候——“深刻”这个词便时常在我脑子里出现。有时候听到他们说一些东西,会觉得很震惊,惊讶“原来如此”,惊讶自己从前的理解是如此的“肤浅”和不得要领。然而我一直想要来描述“深刻”这个词,却一直没有想法。也许应该举一个例子,不过有许多例子一时也想不起来了,也许有很多比较合适的经典的例子,比如 5 次以上方程不可用根式解之于 Galois Theory 的联系,我却又没法讲出来。

实际上大致就是那种感觉,不仅仅存在于数学,也存在于任何学科任何领域。从某一方面来说,世间的万事万物,作为一个个的独立的存在的话,并不是什么重要的存在,反而是它们之间的相互关联更加重要一些。所以,如果看到一个现象,得到的只是一些很明显的联系的话(也就是所谓的 obvious 的东西),也就是所谓肤浅了,这样用处大概并不大;但是如果是能抓住更深层次的东西(也就是 non-obvious 的东西),往往就能把问题看得更透彻——这样的带来的优势是可以比较形象地比喻的。比如说,各大洲上的生物有一些具有非常高的相似性,如果能顺着这个线索最终追查出原来曾经几块大陆是连在一起的,那么不仅为什么相差十万八千里的生物具有很高的相似性的问题变得豁然开朗,而且可以由此得到更多的结论来。

深刻,也就是抓住本质的东西,就好比照妖镜照出妖怪的本来面目。唐僧看不见妖怪的原形,所以妖怪用一些“烟雾弹”轻易就让唐僧上当受骗了;但是孙悟空有火眼金睛,却能看透妖怪的本质。这似乎让看透本质这样的能力越来越虚幻起来。但是神话毕竟只是神话,现实中没有人能有火眼金睛,但是看问题看得深刻——或者说,看到本质的东西,这样的能力却并不是遥不可及的。

» Continue reading 同义反复

久别重逢的 std::bad_alloc

久别重逢是说,自从在教科书上见过它一面之后,这才是第二次碰面。也就是说,在这些年的编程经历中,从来没有遇到过吧——至少在我印象中是这样的。以至于我都开始怀疑在“平常的”程序中,它是否真正存在了。内存分配,C 里的 malloc (或者配套的函数) ,如果分配失败了会返回地址 0 ,所以,“作为良好的编程习惯,每次申请内存之后,应该检查一下返回值是不是 NULL ”,这样的“良好习惯”也许刚开始写几个程序的时候还能坚持,到后来就完全不管了——因为从来没有遇到过 malloc 返回 0 的情况,申请内存怎么会失败呢?如果连内存都申请失败了,那接下去估计也没有什么好做的了,估计系统已经处于崩溃边缘了,与其每次都费力去检查,还不如让它自生自灭好了——反正之后如果尝试去访问这个 0 地址,肯定会碰到段错误 (segment fault) 而挂掉的,当然,一个不好的地方可能就是这个挂掉的位置和最初申请内存失败的位置已经相差了十万八千里,可能追踪起来会比较麻烦。

至于 C++ 里,就更简单了,new 的时候如果申请不到那么多内存的话,会抛出 std::bad_alloc 异常,如果没把这个异常接住,让它一直跳到最顶层的话,程序会立即挂掉。比 C 更加“人性化”——当场挂掉,而不是在某个未知的其他地方 segment fault 。如此一来,就更加熟视无睹了。

总而言之,渐渐地有了这样一种印象:像内存申请失败之类的情况,大概只有在嵌入式设备等非常极端的资源匮乏的平台上编程的时候才会碰到吧。结果这次却在一个内存很大很大(256G 物理内存)的环境里遇到了。果然是和车祸之类的类似,越是在看上去很太平的路段,越会让驾驶员掉以轻心呀。

» Continue reading 久别重逢的 std::bad_alloc

拓扑空间的紧性

Klein Bottle

参加暑期讨论班其中有一场是我讲,第一次这样子讲数学的东西,有点紧张,于是先在这里整理一下。内容大致是拓扑空间的紧性。

关于空间的紧性,我们在之前的分析中已经见过了:例如在实数轴上的有界闭区间就是典型的紧集,紧集具有很多优良的性质,比如我们知道在有界闭区间上的连续函数一定是一致连续的,并且能取到最大值和最小值。所以,在将空间的概念推广到一般的拓扑空间之后,我们也希望将紧性这一优良性质也带到拓扑空间中来。为此,我们需要找到什么是紧集最本质的东西。在实数轴上的紧集 $K$,有如下的一些等价刻画:

  1. $K$ 是有界闭集
  2. $K$ 的任意无限子集必存在极限点
  3. $K$ 中的任意序列必有收敛子列
  4. $K$ 的任意开覆盖必有有限子覆盖

其中第一条无法在拓扑空间中使用,因为“有界”的概念无法定义。第二或者第三条曾经被认为是实质性的,但是后来由于 Tychonoff 定理,人们发现最后一条才是真正好的定义,因此将其作为拓扑空间紧性的定义,而第二条和第三条分别被叫做“极限点紧(Limit point compact)”和“序列紧(Sequencially compact)”。下面是正式内容,在给出定义之前,我先给出一个提纲:

  • 首先当然是要给出拓扑空间紧性的定义。
  • 接下来当然是会举一些例子,一方面是把枯燥的定义从抽象中拉回来,另一方面也是非常重要的是给出紧空间的存在性的证据,因为定义总是可以随便给的,这样子我可以给出具有任意优良性质的定义来,然而所定义的东西如果是不存在的话,相关的一切性质其实都是空谈。
  • 然后我们将介绍从已有的紧空间构造新的紧空间的方法:包括集合的交、并、补,以及子空间、商空间和积空间——这一系列都是标准套路。在这里将会出现一个大定理,就是刚才提到的 Tychonoff 定理。
  • 接下来将暂时中断一下,讨论一下稍微具体一点的度量空间中的紧性。因为度量空间更加具体一些,所以能得到的性质也更丰富一些。
  • 最后我们将简要介绍一些将非紧空间(non-compact space)转化为紧空间(compactification,紧化)的初步知识。

啊,不过,由于一次报告是两个人一起讲的,这次我大致负责前半部分,因此从度量空间的紧性开始那部分内容就不列在这里了。

» Continue reading 拓扑空间的紧性

MSTC 月刊第三期(十周年特辑)

MSTC 月刊第三期,距离第一期创刊号发布已经快要有两年了,所以说叫“月”刊当然不太合适,当然现在就不去纠结这些细节问题了。这次是第三期,也是特别的一期,因为今年是俱乐部成立十周年,所以是十周年特辑。比较遗憾的是没有能在十周年 party 之前弄完,不过现在既然终于要正式出炉了,那么这些话也不多说了吧,制作过程当然是很辛苦和漫长,当然最需要感谢的是各位供稿人,没有你们提供的内容,月刊是绝对做不出来的啦。

先提供下载吧,顺便附上前两期下载以供怀旧之用(校内下载是 FTP 地址,由于历史原因路径中有中文,如果浏览器无法正确处理,请用 FTP 软件下载):

我作为这次月刊的重大苦力,迫不及待地想要提一下这次月刊相对于之前版本的特点:首先是风格比较统一,因为整个排版是由我一个人完成的,首次尝试了采用 Adobe InDesign 来排版——果然是专业的排版软件,比 Word 弄出来的东西看起来更加正规了。一开始就希望做成杂志的样子,就按照双页对开为整个一个版面的方式来排版了,加入了大量的图片元素,所以页数(和文件大小)也比以前的两期增加了许多。除了少数照片是在网上找的之外,大部分图片都是出自俱乐部的照片,此外我还动手为其中一些内容画了插图,虽然有些一下子就看出了功力不足或者偷懒嫌疑,但是也有碰巧自己觉得感觉还不错的——比如游记中的水墨风格的那张。

当然除了排版工作之外,还有众多其他苦力,大家都非常辛苦才有这样的成果啊。而且我很期待这次的版本实际打印出来的效果,俱乐部稍大量打印的可能性团长还在评估中,不过我想回头我自己应该会去印一份的。 :) 总之就是这样啦,要给好评哦亲!给差评我会删帖的哦亲! :D

» Continue reading MSTC 月刊第三期(十周年特辑)

GIP Everywhere

GIP 全称 Ghost Instrumentality Program ,看过《攻殻機動隊》和《Neon Genesis Evangelion》的同学应该都知道我是怎么来造这个词的,不过这里就不多说这个名称的含义了,反正取一个神秘一点的名称一直是 CS 人的一大爱好嘛。不过我要说的是这个活动,这是 MSTC 内部的一个活动,简单地来说就是读书会。到目前为止,我逐渐体验了不少类似的活动,作为组织者、参与者甚至被参与者,一点感言,写在这里吧。

先说 GIP ,还记得是在某个暑假里,俱乐部一干人在办公室里讨论俱乐部的未来发展,大概也是那阵子刚好有几位神秘人找我聊过想让我接手俱乐部 Technology Group Leader 的事,GIP 的想法其实我已经酝酿了一阵子了,于是就趁势提了出来。大家的讨论下做了一些分析,优点、缺点以及可行性等等,但是并没有下定论,也没有说支持或者反对,我有一点点感觉到大家并没有能完全理解我的想法,而且之所以酝酿了许久才提出来,也是由于这个我差不多预料到的反应——如果真想做的话,大概就是得由我一个人来筹备和组织以及(最困难的)坚持下去了,所以,既然决心了要试一试自己是否有能力做 TG Leader (因为我一直认为自己在俱乐部是一个纯技术份子,并不适合组织、管理之类的工作,我想甚至考虑找我接任的那只家伙当时肯定也是这么认为的),那总得做些事情吧。

» Continue reading GIP Everywhere

概率与测度 (2):积分与期望

本文属于概率与测度系列

上一次我们谈到零测集的概念。之所以提出来,一方面是因为它比较好玩,另一方面是它和另一个重要概念息息相关。这个东西就是“几乎处处 (Almost everywhere)”,经常被缩写为“a.e.”。例如,“函数 $f$ 几乎处处等于零”——当我第一次看到这个样子的话的时候,就被深深地雷到了。 =.=bb 当然,我是后来才知道,这个东西是有严格定义的。把一个听起来就模棱两可的词强行加上一个严格的定义,然后直接拿来用,果然搞数学的人好洒脱!

回到 a.e. ,它的定义其实很简单,我们说某个性质“几乎处处”成立,严格地来说,就是在讲它除了在一个零测集上不成立之外,在其他地方都成立。例如,传说中的 Dirichlet function $\chi_\mathbb{Q}$,它在有理数上取值为 1 ,在无理数上取值为 0 (题外话:这个玩意它还是一个处处不连续的函数)。注意到 $\mathbb{Q}$ 的 (Lebesgue) 测度为零的,因此 $\chi_\mathbb{Q}$ 除了在一个零测集上之外,其他地方都取值为零,那么我们就说它“几乎处处为零”。

和这个对应的概率论里常用的还有一个看起来更雷人的概念,叫做 almost surely (或者叫做 almost certain 、almost always) ,说某件事情 almost surely 成立,就是说这件事情在一个“满测度”集合上成立。所谓“满测度”集就是说它的补集的测度为零,而并不一定要求补集是空集。不过零测集和空集之间的关系,如果不严加定义的话,仅用文字描述起来很难搅清楚,而用上了 almost surely 这样的看起来很模糊的词,就更加雪上加霜了。也许,都是那些数学工作者的错——选了一些表面上看起来很混淆的用词,结果导致一些人在并不知道真正严格含义的情况下纠缠在字面上的意思,最终沦落为民科啊……

当然,抛开用词不说,a.e. 的引入在实分析中是必要的——而并不只是简单的把原来的一些“处处成立”的定理推广为“几乎处处成立”这样一个看上去无关痛痒的扩展。可以想像一下,应该是某个定理在条件中不是 a.e. ,但是结论只能得到 a.e. ,所以说如果去掉 a.e. 这个概念的话,整条路就走不通了。不过,这里暂时还没法详细说这个问题。于是下面以一幅 6 格漫画结束开场白,正式进入这次的主题——“积分”吧!

» Continue reading 概率与测度 (2):积分与期望

概率与测度 (1):关于测度

本文属于概率与测度系列

我又来挖坑了。因为打算抽时间(比如下学期或者下下学期)来学一下概率论,所以学习过程中的一些感想或者笔记什么的应该会不定期地整理出来。这算一个开头吧。

其实概率论似乎经常处于一个比较尴尬的地位,在历史上一度被认为并不属于数学的一部分,直到将测度论引入以建立起严格的公理体系之后,才被数学界所承认。当然,说它“不是数学”,仅仅就是字面上的意思,并没有说什么东西不是数学就一定是不好的。事实上,在被严格化之前,概率统计作为一种工具就已经被广泛应用到各个领域中了,当然,在严格的理论体系建立之后,不论从理论上还是应用上,都得到了爆炸性的发展。然而,仅从大学的教育来看,概率论似乎仍然处境尴尬。

比如在 ZJU 本科,似乎概率论是像 C 语言一样的全校必修的一门课(我从来没有搞清楚过学校的选课规则,以前选课大致都是跟风室友的),足见其用途之广泛。然而除了理学院的一些专业之外,其他专业的概率论教学并没有得到近代概率论的严格化所带来的好处。或者说,这样的东西在这样的上下文下原本就是不需要的吧,毕竟对于工科甚至文科的学生来说,概率就是一种工具而已。其实大部分时候都没有什么问题,但是一些模糊的没有良好定义的概念,有时候会带来问题,看看网络上各种流行的概率相关的趣味问题,比如好像有一个问题是说,有三扇门,其中一个后面有奖励,让你任选一扇门,然后主持人打开剩下的两扇中的其中一扇给你看后面没有奖励,然后问你要不要放弃最开始的选择,而选剩下的那一扇门。类似的问题经常会引发大量的争论,大家各执一词,互不相让,许多情况下引起争议的根源都来自于其中有一些“看起来很明显”但是其实并没有经过严格定义的术语的理解的偏差。

另一方面,虽然数学系的概率论课程确实从严格的角度来教授了,但是听我身边认识的数学系的人说来,他们专业的好多人其实都并不对概率论这门课很有兴趣。因为大家选了两门课“概率论”和“实变函数”,然后发现两门课讲的东西差不多是一样的。实分析课上讲测度论,而概率差不多就是一个归一化了的测度,于是大家都有一种“被坑了”的感觉。 ^_^bb

» Continue reading 概率与测度 (1):关于测度

这篇文章本来是给 MSTC 月刊写的稿子,但是发现好像这里已经有两个月没有出现新文章了,为了避免有人认为我已经偷偷地死掉了,而月刊又一时半会儿出不来,干脆贴到这里吧。其实是很大的一个话题,而且我写的东西又杂乱到连一个合适的总结性的名字都想不到,而且我在这方面明显还是很新手,但是不管是菜鸟还是大虾,总会有自己的想法嘛,所以我就胡乱写了些文字,就是我自己的非常 personal 的(并且只是“目前”的)想法的一些整理了,希望有人看了会觉得有趣或者是有一些同感。 :)

画画其实和编程很像,对吧?

你有的不过是线条,而你要表达的是整个宇宙——一切你心里能装得下的东西。当然,这很难,有多难呢?大概……就像用C语言写出完整的Linux内核那么难吧。

» Continue reading 绘

让 Photoshop 的快捷键兼容数位板压感笔

在 Corel Painter 里快速调整笔刷的大小可以通过 Ctrl+Alt 然后拖拽鼠标来完成,Photoshop 也有类似的功能,不过快捷键是 Alt 加上鼠标右键拖拽。另外 Photoshop 一直让不少人有些不满的就是没有一个 color picker 面板,每次都要打开那个 color picker 对话框着实有些麻烦,甚至有第三方开发了 color picker 面板插件。不过新版本添加了一个叫做 HUD color picker 的东西,按 Shift+Alt 加上鼠标右键就可以打开,虽然(我个人觉得)用起来也不是很方便,不过总比没有强。不过这个功能也必须要打开 OpenGL 加速选项才有,如果显卡很破的话也用不了了。

不过本文的重点是数位板(比如 Wacom),因为 Photoshop 把这些重要的快捷键都搞到了鼠标右键上,而且还不提供修改这些快捷键的功能,数位板的压感笔上虽然说通常会有按钮可以模拟鼠标右键,但是这个时候不能把笔尖放在板子上,拖拽起来就像拿毛笔一样,甚是不方便。于是只好请快捷键利器 AutoHotkey 出马了。这个可是在 Windows 下拦路抢劫和篡改鼠标、键盘信号的利器呀,当然也是我的系统必备。脚本如下:

» Continue reading 让 Photoshop 的快捷键兼容数位板压感笔

支持向量机:Kernel II

本文是“支持向量机系列”的第七篇,参见本系列的其他文章

在之前我们介绍了如何用 Kernel 方法来将线性 SVM 进行推广以使其能够处理非线性的情况,那里用到的方法就是通过一个非线性映射 $\phi(\cdot)$ 将原始数据进行映射,使得原来的非线性问题在映射之后的空间中变成线性的问题。然后我们利用核函数来简化计算,使得这样的方法在实际中变得可行。不过,从线性到非线性的推广我们并没有把 SVM 的式子从头推导一遍,而只是直接把最终得到的分类函数

\[
f(x) = \sum_{i=1}^n\alpha_i y_i \langle x_i, x\rangle + b
\]

中的内积换成了映射后的空间中的内积,并进一步带入了核函数进行计算。如果映射过后的空间是有限维的,那么这样的做法是可行的,因为之前的推导过程会一模一样,只是特征空间的维度变化了而已,相当于做了一些预处理。但是如果映射后的空间是无限维的,还能不能这么做呢?答案当然是能,因为我们已经在这么做了嘛! :) 但是理由却并不是理所当然的,从有限到无限的推广许多地方都可以“直观地”类比,但是这样的直观性仍然需要严格的数学背景来支持,否则就会在一些微妙的地方出现一些奇怪的“悖论”(例如比较经典的芝诺的那些悖论)。当然这是一个很大的坑,没法填,所以这次我们只是来浮光掠影地看一看核方法背后的故事。

» Continue reading 支持向量机:Kernel II