July 21, 2011

[无责任乱翻] M.L.是咩啊

[无责任乱翻] Machine Learning, Wald I, July 2002

M.L.是咩啊?(这个缩写邪恶吧)

神经网络(Neural Net,NN)大约发明于1985年,它将两个不同的团体带到了一起:
脑科学家——用NN为人脑的各种功能建模
计算机学者——研究语音识别(Speech Recognition)、字迹识别(Written Character Recognition)以及其他一些困难的预测问题(Prediction Problem)

之后:
一群机器人狂热分子也加入了这个团体,他们感兴趣的有:
监督式训练(Supervised Training)、自学习机器人(Self-learning Robots)

还有:
其余杂七杂八的团体人工智能(Artificial Intelligence)、PCA学习(PAC Learning)

然后,有个毛会——NIPS(Neural Information Processing Systems)诞生了。刚开始,NIPS是各种NN应用目的萌发的温床。NN在预测问题上工作得很好,尽管存在它有一坨局部极值,尽管它总是面临过拟合(Overfitting)的危险。一些牛掰的人开始裁剪NN巨大的结构,来解决一些特殊的问题,比如旋转平移无关的字母识别,等等。

再后来,NIPS发展啊发展啊,变得越来越复杂,包含很多兴趣完全不同的团体,比如信号处理(Signal Processing)、机器视觉(Computer Vision),等等等等。

到了2000后,NIPS上发表的论文五花八门,也迎来了越来越多的外籍与会者,他们中大多数是计算机学者,还有一些工程师、物理学家、数学家。都很年轻,30来岁,充满活力。他们的工作都是严格意义上算法级别的。也是这个时候,M.L.在统计学方向,迎来了荒野上的第一阵歌声。预测问题成为研究热点,包括回归(Regression)和分类(Classification)。

2001年,重大的突破,两类牛掰算法的诞生:
-- 支持向量机(Support Vector Machines,Vapnik)
-- 联合预测模型(Combining Predictors):Bagging(Breiman)、Boosting(Freund and Schapire)
Bagging和Boosting都是将一坨小预测模型联合在一起,组成强模型(“我来组成头部!”“我来组成身体!”“我来组成腿~~!”“…”)。
不同的是它们的训练过程。
Bagging,又叫Bootsrap Aggregating,将样本集随机采样形成若干个子样本集,其中一些样本可能出现多次,而另一些则可能一次都不出现。Bagging针对每一个子样本集训练一个弱模型,再把它们联合起来形成强模型,联合的方法通常对于回归问题是Average,对于分类问题则是Voting。典型的算法,比如Random Forests。
Boosting,可能稍微有名一点,则是在迭代训练过程中,逐渐改变各个样本的权重,来生产新的弱模型,并加入强模型。在训练过程中,被成功识别或离回归函数近的样本权重不断下降,而错误识别或离回归函数远的样本则权重不断增加,这类似于高考前做模拟题时老师总是叮嘱好好看做错的题目,一样的道理。典型的算法,比如有名的AdaBoost。
(SVM我跳过,不感兴趣,简单地说是个将已经很复杂的样本空间折腾到一乱七八糟的超空间然后画一超平面的算法)

再后来的事,就是现在的事了,统计学习统治世界什么的。不过,我一向认为统计学习并不是机器学习——尤其是人工智能——的终点,因为人类似乎并不是这么思考的。

July 4, 2011

GOOD LUCK MY WAY

钢炼今年剧场版的主题歌

Hyde老了。曲子和词还是欢乐的,可是高音不亮了。今天我还写检讨了。最近这什么日子啊 Crying face Crying face Crying face

当年钢炼05的OP,放在同一张单曲里,差别感好强烈。

Ready Steady Go

好怀念青春年少!Crying face Crying face Crying face LARUKU、吉普力、小BONEZ,你们都怎么了?!

July 1, 2011

吐槽Android和宫崎大神

忙了一阵,写了个Android上的媒体程序杂烩,图片浏览、视频播放什么的,用作手势识别的控制Demo。Android或者说Java这个东西,果然是写C++的人三天就能上手的。不过,我还是很不喜欢Java不让主动释放对象这一设计,前段时间写Cuda让我对内存什么的变得相当敏感,定义个状态能bool一定不char,存个值能short一定不int。说到底,还是不信Java能管理任意程序的内存都管理得比开发者或者和开发者一样好。对于没有指针这件事情,也另人纠结,我喜欢星号啊。另外,吐槽一下Java里的boolean,为啥不用bool呢,明明是基于C++,为啥不延续,而偏偏让人多敲3个字符。。不满啊。不过,我很喜欢Java的接口设计。

至于Android,槽点太多,我都懒得吐了。充满差错的注释,混乱的函数命名,死板的工程结构,以及比摩托罗拉还慢的速度,我每天晚上吃饭前都要骂它几句,这货到底是不是Google生的啊。除了开源,除了便宜,除了能方便地用Google的服务,我想不到它有什么好处。如果让我挑平台,一定果断地投靠iOS,人家有一级流畅的UI,酷的基础气质,更重要的是有消费习惯良好的用户群体啊。以前我还抱怨过QT的UI,现在用过Android我就知道自己错了,QT相对Android在UI方面绝对是神级的存在。
有天吃饭时,边上一mm用一HTC手机切水果,黄香蕉出来的时候那叫一个卡啊,一帧一帧的,我这厢拿一iPhone眼看着水果一个个噌噌噌往下掉,羡慕嫉妒恨啊,原来在Android的机器上有没冰香蕉是一样的效果啊。

上个礼拜出了「借东西的小人」的DVD,所以国内的我终于可以看到宫崎大神的片了。可惜小小失望了一把,除却音乐没发现什么眼前一亮的东西,故事本身只比「波妞」复杂了那么一点点。对“借”这一行为的阐述有些浅薄,为什么叫“借”不叫“偷”呢,借了是要还的,那小人的存在对人类而言“还”了什么呢。如果说回归自然才是小人族逃避灭族的出路的话,那相应地,是不是应该交代下小人族的历史?小人族和会说话的小老鼠的区别是什么呢,只是人形生物和野兽的区别么?另外,我一直很好奇,不想被人类发现的小人为啥会把窝建在一个这么好找到and好打开and便于被抓的地方。我一直期待的小人和小动物正面冲突也没有发生,小人和人类的正面冲突也没有发生。也许是2个小时总归短了点,使得这片世界观的塑造只到了床头故事的层次,就像某些寓言故事里某些动机不明的事件,只是存在着,没有前因后果。真的怀念「幽灵公主」和「风之谷」的厚重感。