欢迎来到 Free Mind ,这是由 pluskid 所维护的 blog ,主要记录一些机器学习、程序设计以及各种技术和非技术的相关内容。如非特别指明,本站的文章遵循 Attribution-ShareAlike Creative Commons 协议。更多文章索引请浏览 Archive, Categories, 和 Tags。 部分文章前后有一定的关联,也可在 Series 中找到索引。早期的博客文章请参见 Free Mind 2009~2012Free Mind 2007~2009

2017 风衣

当时禁不起 你我情绪的暴雨 后来美如一场风景
是年纪的笔 不知不觉地改写自己
把晴空万里 搬进我的世界里 听歌 餐叙 旅行
快乐与伤心 一一沉淀安静成四季
像候鸟飞去 留下了一个北极 我把太阳大声叫醒
还一身率性 穿上风衣我推门出去 找寻星星

2017 是我漫长的学生旅途的终结,也是一段全新的旅程的开始。寒假回家从国内买了一大堆音乐相关的书的便宜影印版,难得一年续签证意外地顺利,也难得一年没有顺道再去一次杭州,二月回到波士顿迎接大雪,兴致勃勃地堆了雪人。三月找工作。四月去法国开会,很幸运地得了 best paper,也认识了一些新朋友。由于赶回来写毕业论文,会议结束之后立刻就回了美国。五月赶一篇论文未果。六月写 PhD Thesis 和玩塞尔达荒野之息,顺便还去了一趟和 MXNet 小伙伴门一起的夏令营。七月到九月跑去伦敦实习,满欧洲地跑。十月回波士顿答辩。十一月放空,时隔五年再去滑了一次雪,摔疼了屁股,画了很多画,也录了悲怆的第二乐章。十二月从东岸飞到西岸,在悠闲的节日气氛中入职,找房子装家具,赶在年末的尾巴上去了一趟死亡谷的 Road Trip,以及在年末的尾巴尖上去了一趟夏威夷看 Lava!

Distributed Learning in Julia

我之前在这里介绍过 Julia 这个语言,提到了它的许多好的(和不好的)特性,不过有一点没有提到的是它方便的并行和分布式计算的能力,结合优质的数值计算能力,其实让它非常方便用于做分布式数据处理——比如 distributed optimization、learning 之类的任务。虽然 Julia 这些年一直在稳步发展并且每个版本都会 break 一些东西,让人需要不断地维护和修改代码有点心累,同时 community 里的第三方库也还不够强大,不过最近在做一点点 distributed optimization 相关的东西中体会到它在这方面的好处,在这里简单分享一下。一方面因为 Julia 的文档虽然比较全,但是似乎还是比较难找到一个完整的例子。本文相关的完整代码会放在这里

Plotting 3D Surfaces in Python

最近需要 visualize 一些三维的曲面数据,于是简单调查了一下 Python 绘制三维曲面的一些常用的办法,贴在这里以免自己将来再需要用到的时候又想不起来了。比如我们想要画这个样子的 3D 曲面图。

2016 无限大

那一年留在膝盖粉红的伤疤 还刻着
那些在学会奔跑疼痛的过程 都过了
好几年终于碰到肩膀的长发 刺刺的
我要的 爱情在距离永恒最靠近那次 毁灭了
像一篇还没懂得分辨谎言的 笨心得

朋友们开始问起我今年准备用哪一首歌的时候,我发现 2016 年又到了尾巴上。现在发在博客上的文章数量越来越少,以至于都快要只剩下年度总结了,不过至少年度总结是要认真写的。我想以一张今年的照片开头,但是好像虽然一年只在一转眼,要用单单一张照片来总结也还是不容易,于是就随便找一次喜欢的经历吧:深秋踩着冰凉的浪在沙滩上疯跑,裤子湿透了,爬满沙子。

Could a neuroscientist understand a microprocessor?

最近看到一篇有趣的文章叫做 Could a neuroscientist understand a microprocessor? (DOI: 10.1101/055624)。讲的是用神经科学的分析方法来把计算机微处理器当做一个黑盒子来研究。这让我想起之前听过的一个 talk,里面有提到这篇叫做 A search for life on Earth from the Galileo spacecraft 的文章。

Disable OS X System Integrity Protection

大学时代曾经一度在 Linux 和 Windows 之间挣扎徘徊,直到后来开始用 Mac,几乎是瞬间就觉得各种满意。好用的命令行加上好用的 UI,基本上不能奢求更多了。不过近年来感觉 Mac OS X 好像在某些奇怪的路上越走越远,特别是在命令行的兼容性方面经常出各种各样的事情。比如之前某次由于一个奇怪的原因需要手工恢复一部分 dotfile 配置文件,于是直接用 cp 命令从 Time Machine 的备份里把一堆文件复制过来,结果系统各种 run 不起来,后来发现好像是奇怪的权限问题,总而言之似乎是 OS X 在 shell 的基础权限之外又做了其他的权限,而 cp 不知道这些东西,所以拷贝过来的东西也用不了。由于我也不是 sys admin,对这些东西也不感兴趣,最后就用 Finder 比较麻烦地重新拷贝了一遍才好了。

不过今天要 fix 的是这个叫做 System Integrity Protection (SIP) 的东西,又叫 rootless,总之就是保护系统了。听上去感觉很有用的样子,似乎确实也很有用,不过刚出来的时候好像导致 homebrew 出了很多问题,然后最近由于 DYLD_LIBRARY_PATH 的问题终于忍无可忍决定要把它 disable 掉。

Optimization and Assumptions

因为想要熬夜看 Alpha Go 和 Lee Sedol 的围棋比赛,自己的围棋知识又没有达到能全盘 follow 看懂的地步,所以决定一边看一边写点东西。跟 AI 没有什么关系,当然非要扯上一点关系的话,可以这样来 motivate 一个话题。我们都知道人和电脑各自有一些各自擅长的东西,比如电脑擅长计算,而人脑擅长……呃,这里先留白,等我想到了再补上。总之我在最初接触 optimization 这个问题的时候其实也是这样的概念:计算机算法在这里似乎相当笨拙,比如我们经常看到类似图中的例子被用来说明当计算机面临 non-convex 问题的时候会如何陷入 local minimum 出不来。

相反对于这个例子,人“一眼”就能找到 global minimum 的位置。但是其实仔细想一想大概只是自我感觉良好而已。

The Volume of High-dimensional Unit Ball

高维度数据是现代机器学习的一个重要特点,而人脑无法直观地对超过三维的东西进行 visualize (至少我自己做不到)一直是我觉得作为一个人类最痛苦的事情之一,如果什么时候有机会做一回超人或者宇宙人什么的,能够选择技能树的话,我大概会优先选择这一项吧。正因为如此在高维空间中的许多现象看起来非常“反直觉”。比如今天我们要讲的结论是:高维空间的单位球(半径为 1 的球)的体积随着维度的增大趋向于 0。我跟一个朋友提起这件事情的时候她说这是她在听说了“奇数和整数一样多”这件事以来让她最为震惊的事情。

2015 就是这样

今年是老歌《就是这样》。

不穿鞋子 体会真的感觉 环游世界 不在乎明天天气 我的世纪 梦与我没有距离 说去就去 发出讯息 接收我的频率 冒险前进 顺从心里的好奇

Denoising Lena

在之前讲 Projected Gradient Method 的文章中,我们举了一个对加了白噪声的 Lena 的照片进行 denoising 的例子,文中提到了两种方法,一种是直接对 DWT 的系数进行 hard thresholding,将数值较小的值设为零,再用逆向离散小波变换得到 denoising 之后的图片。另一种方法是解一个 Can't decipher request parameter 正则化的线性回归,我们选了后者因为刚好那个优化问题经过变化之后可以用 Projected Gradient Method 来解,这也是当时选这个问题作为那篇文章的原因。但是当时并没有解释为什么这些算法可以实现降噪,而这就是今天的话题。