月度归档:2016年01月

时间的朋友——罗振宇2015年终演讲

时间的朋友是2015年底逻辑思维的罗振宇在水立方的一场演讲,本书《时间的朋友》是演讲的内容。罗振宇是自媒体视频脱口秀《罗辑思维》主讲人,互联网知识型社群试水者,资深媒体人和传播专家。

这次演讲的内容是关于商业文明,过去一年的变量,未来一年的想象。创业是今年变量最大的话题,从创业热到资本寒冬,发生着怎样的变化。

为什么要做时间的朋友?人的本质,其实是一段时间。因为人拥有的只是时间,耗费的也只是时间。让所有人看到都能看到时间的力量。

这本书中,从头至尾贯穿了一个思路——用生物学的“演化论”来透视商业现象。说道生物学,人类是一个另类,自然选择的剪刀再也没有用了。人类文明不允许残忍地淘汰失败者,吃的再胖也不能拖去喂狼。性选择好想也没有用了,就算长得丑,但我们可以掏出房产证说服丈母娘。

那人类还怎么进步呢?好在我们除了自己身上的这个生殖器,还有三个生殖器:思想、技术和资本。

其中思想繁殖的最快,让每个人都不同于他人。只要我们在思考、感知和交流,我们的大脑就在不断交合、怀孕和生娃。所以虽然我们的肉身在原地踏步,但是我们的文明却一直在飞速的演化。没一个勾搭的眼神,没一个听懂的字句,每一交头接耳、神交默会,都在让你成为另一个迥然不同的物种。

三个概念:
“进托邦”

进托邦是指,自启蒙时代和科学发明以来,我们每一年的创造都比我们每一年的破坏多出那么一丁点

“了不起的不对称”

增长之所以不可逆转,乃是由于‘了不起的不对称’。创造通常略多于摧毁,这正是进化 的神通所在。源源不断的人类注意力和思想所用于发明新工具、设计新娱乐和创造新需求。然而无论一下给创新是多么的微不足道和不符合逻辑,他都将成为其他创新启动的平台。

“复利”

这是“了不起的不对称”在当代人类文明中混成一片的表现。即使从一个很短的时间来看,它也不再试微不足道的、缓慢的进展,而已经是一个飞速的进程。

1.必须尊重未来——因为时间的开放性

2.必须尊重过去——因为时间的连续性

3.必须尊重速度——因为时间在加快

4.必须尊重真诚——因为在时间面前,一切无所遁形

“没有任何道路可以通向真诚,真诚本身就是道路”。真诚是我们的一种内心状态,没有任何方法,矫饰,策略,技术可以抵抗,除非你本就真诚。

[本文开头的图片来自科技快报]

Logistic函数(sigmoid函数)

一.Logistic函数

Logistic函数的表示形式如下:

QQ截图20160115170338

它的函数图像如下,由于函数图像很像一个“S”型,所以该函数又叫 sigmoid 函数。

QQ截图20160115164821

满足的性质:

1.对称性,关于(0,0.5)中心对称

QQ截图20160115170601

2.逻辑斯谛方程即微分方程

QQ截图20160115170825

最早logistic函数是皮埃尔·弗朗索瓦·韦吕勒在1844或1845年在研究它与人口增长的关系时命名的。广义Logistic曲线可以模仿一些情况人口增长(P)的 S 形曲线。起初阶段大致是指数增长;然后随着开始变得饱和,增加变慢;最后,达到成熟时增加停止。

当一个物种迁入到一个新生态系统中后,其数量会发生变化。假设该物种的起始数量小于环境的最大容纳量,则数量会增长。该物种在此生态系统中有天敌、食物、空间等资源也不足(非理想环境),则增长函数满足逻辑斯谛方程,图像呈S形,此方程是描述在资源有限的条件下种群增长规律的一个最佳数学模型。在以下内容中将具体介绍逻辑斯谛方程的原理、生态学意义及其应用。

二.Logistic Regression(逻辑斯蒂回归)

Logistic regression (逻辑回归)是当前业界比较常用的机器学习方法,用于估计某种事物的可能性。之前在经典之作《数学之美》中也看到了它用于广告预测,也就是根据某广告被用户点击的可能性,把最可能被用户点击的广告摆在用户能看到的地方,然后叫他“你点我啊!”用户点了,你就有钱收了。这就是为什么我们的电脑现在广告泛滥的原因了。

还有类似的某用户购买某商品的可能性,某病人患有某种疾病的可能性啊等等。这个世界是随机的(当然了,人为的确定性系统除外,但也有可能有噪声或产生错误的结果,只是这个错误发生的可能性太小了,小到千万年不遇,小到忽略不计而已),所以万物的发生都可以用可能性或者几率(Odds)来表达。“几率”指的是某事物发生的可能性与不发生的可能性的比值。

Logistic regression可以用来回归,也可以用来分类,主要是二分类。它不像SVM直接给出一个分类的结果,Logistic Regression给出的是这个样本属于正类或者负类的可能性是多少,当然在多分类的系统中给出的是属于不同类别的可能性,进而通过可能性来分类。

假设我们的样本是{x, y},y是0或者1,表示正类或者负类,x是我们的m维的样本特征向量。那么这个样本x属于正类,也就是y=1的“概率”可以通过下面的逻辑函数来表示:

QQ截图20160125200523

这里的θ是模型参数,也就是回归系数,σ是sigmoid函数。这样y=0的“概率”就是:

QQ截图20160125200514

考查逻辑斯蒂回归模型的特点,一个事件的几率(oods)是指这件事发生的概率与不发生概率的比值,如果事件发生的概率是p,那么该事件的几率是p/(1-p),该事件的对数几率(log odds)或者logit函数是

QQ截图20160125163555

对于逻辑斯蒂回归而言,可以得到如下的对数几率

QQ截图20160125163606

这就是说,在逻辑斯蒂回归模型中,输出y=1的对数几率是输入x的线性函数,或者说,输出y=1的对数几率是由输入x的线性函数表示的模型,即逻辑斯蒂回归模型。换句话说,y就是我们的关系变量,例如她喜不喜欢你,与多个因素有关,比如你的人品,你的长相,你是否有钱等。我们把这些因素表示成变量x1, x2,…, xm,那么这个女生是怎么考虑这些因素的呢,每个人心理其实都有一杆秤,例如有人比较看重你的人品,人品的权重是0.8,;也有人比较看重你有钱,有钱的权重设置成0.7等等。我们把这些对应于x1, x2,…, xm的权值叫做回归系数,表达为θ1, θ2,…, θm。他们的加权和就是你在心目中的得分。

三.模型参数学习

在参数学习时,可以用极大似然估计方法求解。假设我们有n个独立的训练样本{(x1, y1) ,(x2, y2),…, (xn, yn)},y={0, 1}。那每一个观察到的样本(xi, yi)出现的概率是

QQ截图20160125194639

对于整个样本集,每个样本的出现都是独立的,n个样本出现的似然函数为(n个样本的出现概率是他们各自的概率乘积)

QQ截图20160125194648

那么上述的似然函数就是模型的代价函数(cost function),我们要求的参数就是θ*。我们稍微对上式进行转换

QQ截图20160125194659

对L(θ)的极大值,得到θ的估计值。问题变成了以对数似然函数为木匾函数的最优化问题。用L(θ)对θ求导,得到

QQ截图20160125195933

无法解析求解的,所以一般使用迭代的方法求解,通常采用梯度下降法和拟牛顿法。

四.多项逻辑斯蒂回归

上面介绍的是儿分类的模型,用于二类分类。可以将其推广为多项逻辑斯蒂回归模型(multi-nominal regression model),用于多分类,假设离散随机变量Y的取值是{1,2,3,…,K}那么多项逻辑斯蒂回归的模型是

QQ截图20160125213742

同理,二项逻辑斯蒂回归的参数估计的方法也可以推广到多项逻辑斯蒂回归。

 

参考资料:

[1].机器学习算法与Python实践之(七)逻辑回归(Logistic Regression)

[2].《统计学习方法》 李航 著

【转】StackOverflow程序员推荐:每个程序员都应读的30本书

转自:酷勤网。

“如果能时光倒流,回到过去,作为一个开发人员,你可以告诉自己在职业生涯初期应该读一本,你会选择哪本书呢?我希望这个书单列表内容丰富,可以涵盖很多东西。”

很多程序员响应,他们在推荐时也写下自己的评语。以前就有国内网友介绍这个程序员书单,不过都是推荐数 Top 10的书。其实除了前10本之外,推荐数前30左右的书籍都算经典,伯乐在线整理编译这个问答贴,同时摘译部分推荐人的评语。下面就按照各本书的推荐数排列。

  1. 《代码大全》史蒂夫·迈克康奈尔

推荐数:1684

20002L5a-0.jpg

“优秀的编程实践的百科全书,《代码大全》注重个人技术,其中所有东西加起来,就是我们本能所说的“编写整洁的代码”。这本书有50页在谈论代码布局。” —— Joel Spolsky

对于新手来说,这本书中的观念有点高阶了。到你准备阅读此书时,你应该已经知道并实践过书中99%的观念。– esac

  1. 《程序员修炼之道》

推荐数:1504

20002LQ4-1.jpg

对于那些已经学习过编程机制的程序员来说,这是一本卓越的书。或许他们还是在校生,但对要自己做什么,还感觉不是很安全。就像草图和架构之间的差别。虽然你在学校课堂上学到的是画图,你也可以画的很漂亮,但如果你觉得你不太知道从哪儿下手,如果某人要你独自画一个P2P的音乐交换网络图,那这本书就适合你了。—— Joel

  1. 《计算机程序的构造和解释》

推荐数:916

20002H4N-2.jpg

就个人而言,这本书目前为止对我影响醉倒的一本编程书。

《代码大全》、《重构》和《设计模式》这些经典书会教给你高效的工作习惯和交易细节。其他像《人件集》、《计算机编程心理学》和《人月神话》这些书会深入软件开发的心理层面。其他书籍则处理算法。这些书都有自己所属的位置。

然而《计算机程序的构造和解释》与这些不同。这是一本会启发你的书,它会燃起你编写出色程序的热情;它还将教会你认识并欣赏美;它会让你有种敬畏,让你难以抑制地渴望学习更多的东西。其他书或许会让你成为一位更出色的程序员,但此书将一定会让你成为一名程序员。

同时,你将会学到其他东西,函数式编程(第三章)、惰性计算、元编程、虚拟机、解释器和编译器。

一些人认为此书不适合新手。个人认为,虽然我并不完全认同要有一些编程经验才能读此书,但我还是一定推荐给初学者。毕竟这本书是写给著名的6.001,是麻省理工学院的入门编程课程。此书或许需要多做努力(尤其你在做练习的时候,你也应当如此),但这个价是对得起这本书的。

你还不确信么?那就读读第一版的前言或序言。网上有免费的电子版。-Antti Sykäri

  1. 《C程序设计语言》

推荐数:774

20002J531-3.jpg

这本书简洁易读,会教给你三件事:C 编程语言;如何像程序员一样思考;底层计算模型。(这对理解“底层”非常重要)—— Nathan

  1. 《算法导论》

推荐数:671

20002IN2-4.jpg

《代码大全》教你如何正确编程;《人月神话》教你如何正确管理;《设计模式》教你如何正确设计……

在我看来,代码只是一个工具,并非精髓。开发软件的主要部分是创建新算法或重新实现现有算法。其他部分则像重新组装乐高砖块或创建“管理”层。我依然梦想这样的工作,我的大部分时间(<50%)是在写算法,其他“管理”细节则留给其他人…… —— Ran Biron

  1. 《重构:改善既有代码的设计》

推荐数:617

20002H018-5.jpg

我想我不得不推荐《重构》:改进现有代码的设计。—— Martin

我必须承认,我最喜欢的编程语录是出自这本书:任何一个傻瓜都能写出计算机能理解的程序,而优秀的程序员却能写出别人能读得懂的程序。—— Martin Fowler

  1. 《设计模式》

推荐数:617

20002La3-6.jpg

就我而言,我认为四人帮编著的《设计模式》是一本极为有用的书。虽然此书并不像其他建议一样有关“元”编程,但它强调封装诸如模式一类的优秀编程技术,因而鼓励其他人提出新模式和反模式(antipatterns),并运用于编程对话中。—— Chris Jester-Young

  1. 《人月神话》

推荐数:588

20002G024-7.jpg

  1. 《计算机程序设计艺术》

推荐数:542

20002HM2-8.jpgThe Art of Computer Programming 计算机程序设计艺术

这是高德纳倾注心血写的一本书。—— Peter Coulton

  1. 《编译原理》(龙书)

推荐数:462

20002J550-9.jpg

我很奇怪,居然没人提到龙书。(或许已有推荐,我没有看到)。我从没忘过此书的第一版封面。此书让我知道了编译器是多么地神奇绝妙。- DB

  1. 《深入浅出设计模式》

推荐数:445

我知道四人帮的《设计模式》是一本标准书,但倒不如先看看这部大部头,此书更为简易。一旦你了解了解了基本原则,可以去看四人帮的那本圣经了。- Calanus

  1. 《哥德尔、艾舍尔、巴赫书:集异璧之大成》

推荐数:437

如果下昂真正深入阅读,我推荐道格拉斯·侯世达(Douglas Hofstadter)的《哥德尔、艾舍尔、巴赫书》。他极为深入研究了程序员每日都要面对的问题:递归、验证、证明和布尔代数。这是一本很出色的读物,难度不大,偶尔有挑战,一旦你要鏖战到底,将是非常值得的。 – Jonik

  1. 《代码整洁之道》

推荐数:329

虽然《代码整洁之道》和《代码大全》有很多共同之处,但它有更为简洁更为实际的清晰例子。 – Craig P. Motlin

  1. 《Effective C++》和《More Effective C++》

推荐数:297

在我职业生涯早期,Scott Meyer的《Effective C++》和后续的《More Effective C++》都对我的编程能力有着直接影响。正如当时的一位朋友所说,这些书缩短你培养编程技能的过程,而其他人可能要花费数年。

去年对我影响最大的一本书是《大教堂与市集》,该书教会我很有关开源开发过程如何运作,和如何处理我代码中的Bug。 – John Channing

  1. 《编程珠玑》

推荐数:282

尽管我不得不羞愧地承认,书中一半的东西我都没有理解,但我真的推荐《编程珠玑》,书中有些令人惊奇的东西。 – Matt Warren

  1. 《修改代码的艺术》by Michael Feathers

我认为没有任何一本书能向这本书一样影响了我的编程观点。它明确地告诉你如何处理其他人的代码,含蓄地教会你避免哪些(以及为什么要避免)。- Wolfbyte

同意。很多开发人员讨论用干净的石板来编写软件。但我想几乎所有开发人员的某些时候是在吃其他开发人员的狗食。– Bernard Dy

  1. 《编码:隐匿在计算机软硬件背后的语言》

我推荐Charles Petzold的《编码》。在这个充满工具和IDE的年代,很多复杂度已经从程序员那“抽取”走了,这本书一本开眼之作。 – hemil

  1. 《禅与摩托车维修艺术 / Zen and the Art of Motorcycle Maintenance》

对我影响最大的那本书是 Robert Pirsig 的《禅与摩托车维修艺术》。不管你做什么事,总是要力求完美,彻底了解你手中的工具和任务,更为重要的是,要有乐趣(因为如果你做事有乐趣,一切将自发引向更好的结果)。 – akr

(编注:关于这本书,也可以看看阮一峰的读后感。)

  1. 《Peopleware / 人件集:人性化的软件开发》

Demarco 和 Lister 表明,软件开发中的首要问题是人,并非技术。他们的答案并不简单,只是令人难以置信的成功。第二版新增加了八章内容。 – Eduardo Molteni

  1. 《Coders at Work / 编程人生》

一本非常有影响力的书,可以从中学到一些业界顶级人士的经验,了解他们如何思考并工作。 – Jahanzeb Farooq

  1. 《Surely You’re Joking, Mr. Feynman! / 别闹了,费曼先生!》

虽然这本书可能有点偏题,但不管你信不信,这本书曾在计算机科学专业课程的阅读列表之上。一个优秀的角色模型,一本有关好奇心的优秀书籍。 – mike511

  1. 《Effective Java 中文版》

此书第二版教你如何编写漂亮并高效的代码,虽然这是一本Java书,但其中有很多跨语言的理念。 – Marcio Aguiar

  1. 《Patterns of Enterprise Application Architecture / 企业应用架构模式》

很奇怪,还没人推荐 Martin Fowler 的《企业应用架构模式》- levi rosol

  1. 《The Little Schemer》和《The Seasoned Schemer》 nmiranda

这两本是LISP的英文书,尚无中文版。美国东北大学网站上也有电子版。

  1. 《交互设计之路》英文名:《The Inmates Are Running The Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity》该书作者:Alan Cooper,人称Visual Basic之父,交互设计之父。

本书是基于众多商务案例,讲述如何创建更好的、高客户忠诚度的软件产品和基于软件的高科技产品的书。本书列举了很多真实可信的实际例子,说明目前在软件产品和基于软件的高科技产品中,普遍存在着“难用”的问题。作者认为,“难用”问题是由这些产品中存在着的高度“认知摩擦”引起的,而产生这个问题的根源在于现今软件开发过程中欠缺了一个为用户利益着想的前期“交互设计”阶段。“难用”的产品不仅损害了用户的利益,最终也将导致企业的失败。本书通过一些生动的实例,让人信服地讲述了由作者倡导的“目标导向”交互设计方法在解决“难用”问题方面的有效性,证实了只有改变现有观念,才能有效地在开发过程中引入交互设计,将产品的设计引向成功。

本书虽然是一本面向商务人员而编写的书,但也适合于所有参与软件产品和基于软件的高科技产品开发的专业人士,以及关心软件行业和高科技行业现状与发展的人士阅读。

他还有另一本中文版著作:《About Face 3 交互设计精髓》

  1. 《Why’s (Poignant) Guide to Ruby 》

如果你不是程序员,阅读此书可能会很有趣,但如果你已经是个程序员,可能会有点乏味。

27.《Unix编程艺术》

It is useful regardless operating system you use. – J.F. Sebastian 不管你使用什么操作系统,这本书都很有用。 – J.F. Sebastian

  1. 《Practices of an Agile Developer / 高效程序员的45个习惯:敏捷开发修炼之道》

45个习惯,分为7个方面:工作态度、学习、软件交付、反馈、编码、调试和协作。

每一个具体的习惯里,一开始提出一个谬论,然后展开分析,之后有正队性地提出正确的做法,并设身处地地讲出了正确做法给你个人的“切身感受”,最后列出几条注意事项,帮助你修正自己的做法(“平衡的艺术”)。

  1. 《Test-Driven Development by Example. / 测试驱动开发》

前面已经提到的很多书都启发了我,并影响了我,但这本书每位程序员都应该读。它向我展示了单元测试和TDD的重要性,并让我很快上手。 – Curro

我不关心你的代码有多好或优雅。如果你没有测试,你或许就如同没有编写代码。这本书得到的推荐数应该更高些。人们讨论编写用户喜欢的软件,或既设计出色并健壮的高效代码,但如果你的软件有一堆bug,谈论那些东西毫无意义。– Adam Gent

  1. 《Don’t Make Me Think / 点石成金:访客至上的网页设计秘笈》

取决于你所追求的目标。我喜欢《代码大全》是因纯编程,《点石成金》是一本有关UI设计的卓越书籍。 – Justin Standard

奥巴马,在卫斯理大学毕业典礼上的演讲

  你们每个人,都可以拿了毕业证、走下这个讲台,然后去追求锦衣玉食等等这个 金钱社会视为理所当然的东西。你可以选择只关心自己的喜怒哀乐,把你的生活 和国家的发展割裂开来。 
  但我不希望你这样做。这不仅仅是因为你对那些没有你幸运的人负有责任,尽管 你确实负有责任;也不仅仅是因为你对帮助你走到今天的人欠有债,尽管你确实 欠下了债。 这是因为:你对你自己负有使命和责任。这是因为:我们个人的命运依赖于群体的 命运。
  这是因为:如果你仅仅考虑你自己、满足眼前的需要,这是一种贫乏。这是 因为:只有你把你自己的战车和其他一些更伟大的东西绑定到一起的时候,你才能 发现你真正的能量,才能发现你为美国这个国家继续书写历史时所能扮演的角色。

【转】卖萌的大牛你桑不起啊 ——记CVPR2011一篇极品文章

   CVPR2011正在如火如荼的进行中,在网上能看到的部分文章中,我终于找到一篇让我眼前冒光的文章。虽然,其实,也许,主要的理由是我好不容易能看懂一篇。不过,这并不妨碍该文章定会成为今年CVPR的一朵奇葩这件事。不过它肯定拿不了best paper啦,因为它只是篇poster,但我猜也许是组委会认为如果让他们当oral,大牛现场卖萌会雷死观众,并可能引起大面积恐慌。

   鉴于我没有找到更好的平台共享这一发现,就只好先放到校内了。不过这个主题不光是对计算机视觉的人有意义,只要是搞数据的人都会有些用处吧。

   文章题目是:Unbiased Look at Dataset Bias,无偏见的研究数据集偏见。首先看看作者,一个是MIT的Antonio Torralba,另一个是CMU的Alexei A. Efros。 MIT和CMU在计算机视觉领域是两个绝对的巨人,无人能望其项背。这两个人这几年刚拿到副教授职位,而且又是那种论文又高产又高质的家伙。要注意哦,这篇文章没有研究僧,也就是说,这是一篇大牛和大牛的强强联合之作。也正是如此,该文章发挥出了大牛卖萌的极致。满篇充斥着“矮油”(alas),“让我们玩儿个游戏/玩具实验(toy experiment)”等等,各种你很难在一般论文里看到的搞笑语言。特别是文章的致谢和声明:

   The authors would like to thank the Eyjafjallajokull volcano as well as the wonderful kirs at the Buvette in Jardin du Luxembourg for the motivation (former) and the inspiration (latter) to write this paper. “作者要感谢埃Eyjafjallajokull的火山(就是2010年冰岛那个倒霉的让欧洲航线大面积瘫痪的火山)以及Buvette in Jardin du Luxembourg(法国一个酒吧)的美味基尔酒,前者给了我们写作的动机,而后者给了我们灵感。”我猜测是那个时候他们在法国开会,结果被火山给关在那儿了,几个无聊的人只好跑去酒吧喝酒,于是在酒精的刺激下想出了这个题目。唉,大牛就是大牛,这种时候都能搞出这样一篇文章,让我等草民怎么活啊,以后天天去喝酒好了。

   Disclaimer: No graduate students were harmed in the production of this paper. Authors are listed in order of increasing procrastination ability.

   声明:没有研究僧在制作论文的过程中受到伤害(喂喂,难道研究僧是保护动物么?那有木有研究僧保护协会啊?啊?有木有?)。作者是按照拖延症的程度顺次递增排列(看来大牛们也有同样问题)。

   如此搞笑的文章,真的让人欲罢不能。关键是两位大牛在疯狂卖萌的同时,适时的提出了一个计算机视觉界一个极富有争议的问题,并做了很好的分析,可能会在未来很多年掀起一个风气。不得不说,两位大牛挖了一个超级NB的大坑。来来来,让我们一起跳下去吧。

   计算机视觉里面很大一块是在做物体检测、识别、分类(object detection, recognition, classification)。为了公平的比较不同的算法,大家就设计出了很多数据集(dataset)作为基准(benchmark)来比较算法的性能。所以,当你阅读了灰常多的论文后,你会发现,大家的实验部分都会说:在某某个数据集上我的算法是最牛X的;在某某数据集上我的算法和当前最牛X的其他地方差不多,但速度快/准确率高/误报率低;虽然我的算法在某数据集一般,但几个数据集一平均,我的最牛X…… 但是,这些数据集真的可以评价算法的优劣么?两位大牛向这些数据集提出了挑战。

   首先,咱玩儿个游戏,叫连线配对,下面的每组图片都是从同一个数据集挑出的,请把他们和正确的数据集名称对应起来:

b_large_MBdE_664b0001b88d5c42.jpg

   在他们的实验室(大家都是搞这些的),所有人配对的正确率超过75%。其实随便看看也能看出门道,有的数据集就是车,有的就是自然景色,有的就是局部场景,有的就是实物,有的就是干净背景,有的就是专业摄影师拍摄的,有的就是随便找的等等。所以,尽管大多数数据集都号称“我们尽可能的多样化,非刻意的人工的(in the wild)寻找样本”,但事实上还是带了偏见了。为了验证这个假设,他们用最简单的一些特征训练了一个12路分类器,结果,分类效果还不错,每类分正确的比例最小也有20%,有6个超过30%,1个超过99%,要知道随机猜对的概率只有1/12 =8%。而且当训练数据慢慢增多到每类1000个时,正确率还没有收敛的迹象。一般来说,分类效果越好,证明两个类别的区分度越高,也可以说不同的数据集来自“不同的世界”,而随着样本量增加,还很有可能区分度越来越高。我勒个去,你们都说自己“多样化”的描述了这个世界,而实验却证明你们表现了不同世界,你们太坑爹了!特别是Caltech101,人家分类器正确率都99%了,你到底描述了一个多么简单的世界啊!桑不起啊桑不起!大牛指出,和机器学习领域不同,它们的数据集就是它们自己的世界。而视觉领域不同,于是大牛把这些“伪世界”称为“Corel世界”“Caltech101世界”“PASCAL VOL世界”等等,还是非常形象的。

   那么换个角度,不同数据集中的同一个物体(例如车、人)会不会相对比较相似呢,如果相似不就说明他们还是展现了同一个世界,只不过角度不同嘛。 b_large_MwwS_37e50001bfdb5c3f.jpg

   遗憾的是,即使是同一种物体,偏见还是大大的存在,人眼都看的出来!为了谨慎,作者还是对上述5个例子做了相同实验,结果分类器正确率61% 远大于随机猜对的20%。所以,别说你们什么“多样化”了,神马都是浮云,事实证明,没有偏见的数据集到现在还没出生呢。

   文章的小标题写作“序幕”(prologue)…..“尾声”(epilogue),二位果然是在演一台卖萌大戏啊。文章首先回顾了视觉领域数据集的发展史,然后声讨了一下数据集带给这个领域的坏处。“这个领域过度的追求数据评估,浪费很多时间在precision-recall曲线上而不是在像素上”,“现在的研究都是在前人基础上,而很少有完全创新工作,因为全新的工作刚开始肯定拼不过那些经过认真细致调教的算法”,“大家越来越多的关注自己的算法在某一个数据集上胜出,而从不考虑它是不是有统计显著性”。大牛啊,你们道出了我们的心声啊!!大牛还说,从发展史看出,尽管我们不停的说要避免“偏见”,但每一个新数据集都不可避免的进入了另一种“偏见”,如果不搞明白到底错在哪儿,我们注定会继续错下去的。

   如果要谈“偏见”我们就得有个标准,即观测者和任务(人看到的世界和鸟看到的肯定不同)。好吧,那我们就定义“给定人类感受到的典型视觉环境世界,任务是去检测其中的常见物体”。那么“偏见”就是拿一个数据集和真实视觉世界作比较。而真实世界,呃,我们得拿另一个数据集做代表,而另一个数据集,呃,它还是带偏见的。肿么办?肿么办?还是大牛比较聪明,他们提出了如下方法,即交叉检验。

   用一个数据集上训练的分类器去分类另一个数据集。因为我们前提假定这些数据集都是在描绘同一个世界,那么就可以分出优劣了。具体的任务分为两个,一个叫做分类(classification),即给定一张图,指它是否包含某个特定物体。一个叫做检测(detection),即给定一张图,找出所有特定物体并指出它们的位置。 实验结果表明,两个任务基本都是,在任一个数据集上做的分类器,在其数据集上的效果都会变差,平均而言下降了40%左右,是非常显著的。而且要不是因为有Caltech101和MSRC这两个各种简单的数据集罩着,可能下降更多。

   作者分析偏见的罪魁祸首估计是这么几个:1.“选择偏见”,大家更偏爱选择某类数据,例如风景、街景、或用关键词搜索的网络图片。2.“拍照偏见”,摄影师更喜欢用相似角度拍同一种物体。3.“标签偏见”,特别是语义分类的时候,同种东西可能有不同称呼,例如“草地”“草坪”,“绘画”“图片”。4.“负样本偏见”,对于分类器而言,想要分出来的东西是正样本,其余都是负样本。一般来说,负样本应该是无穷大的,但实际上,我们只能用有限多的负样本。那么这些有限的负样本有代表性么?足够了么?

   我们再做个实验,对每个数据集用它们自己的正负样本训练分类器,但测试时,从所有的数据中挑选负样本。如果错分率增加,说明其他数据集的负样本被这个分类器当成了正样本,进一步说明不同数据集的负样本是不同的。结果也证实了我们的猜测,有3个数据集中招了,错分率增加了20%,但ImageNet,Caltech101, MSRC没有中招。据分析,ImageNet确实负样本丰富多样,这个实验没有给它造成困扰。但是,另外两个嘛,你们太特么简单了,简单到不会分错啊。简单的数据集尼桑不起啊!

   至于是否足够?这里作者提出了一个有意思的问题。当我们要分类“船”的时候,假如你的船样本都在水里,你怎么知道“懒惰的”分类器不是提取了“水”或者“岸”的特征呢?因此这确实很重要,但限于要求有大量的人力标定工作,暂时还没有做,不过有了Mechanical Turk我们可以以后慢慢来。

   讨论完数据集的偏见,我们可以讨论一下数据集的价值,特别偏见的价值就少,无偏见的价值就应该高。想象一下如果我们想提高一个分类器的准确率,当然牛X人选择改进特征、物体表示方法以及学习算法,而简单些的则是扩大样本数量。但讨厌的是,样本数量的增大和准确率的提高是一个倒霉的对数关系,要想增加一点儿准确率,需要指数级增长的样本量;另一方面,如前所述,如果增加了不是同一种“偏见”关系的样本,可能还会造成负增长。

   那么问题来了,我们到底能不能用一个数据集的样本去提高另一个数据集的准确率呢?或者说怎么定义它们的关系呢?神奇的大牛给了我们如下方法: 

假设从A数据集用1000个样本训练出的分类器,测A的数据集得到的平均precision-recall值(一种正确率)是30,又假设用B数据集训练出的分类器测A数据集,要想得到30的值需要5000个样本。 那么这两个数据集的关系就是1000/5000 = 0.2,也就是说一个A中的样本值0.2个B中的样本。 b_large_bLse_44f00001bef05c71.jpg

这样一来,数据集市场就呈现出这样一种兑换关系,要想在PASCAL的市场上将用1250个训练出的分类器增加10%的准确率,那么你需要1/0.26125010=50000个LabelMe样本,好不值钱啊!而且你会发现,每个数据集都是“我的市场我做主”,其他数据集在自己市场永远是不值钱的。所以如果你要问,如果用当前的数据集训练一个真实世界的分类器,这些数据集值多少钱呢?那我的回答恐怕只能是“聊胜于无”了。

   也许会有人说,这不是数据集的错,而是你的表示物体的方法、训练算法有问题,最终都会“过学习”使得看上去是数据集的错。你看,我们人类学习时候也只见过一小部分实例,但我们的视觉系统克服了这个问题学到了正确的东西。好吧,大牛说,咱退一步,至少现在还不要把所有的错都推给算法,毕竟,如果你的数据集只给出了“从后面观看的赛车”是汽车,你不能期待我的算法能告诉你“侧面看过去的家庭轿车”也是汽车吧。

而就目前情况来看,哪些数据集不错,哪些比较垃圾呢?大牛说,毋庸置疑,Caltech101和MSRC,你们该下岗下岗,该回家回家,赶紧洗洗睡吧。而PASCAL VOC, ImageNet, SUN09看上去还凑合,也许我们正朝着正确的路在走。

   那我们是不是应该关心我们的数据集的质量呢?大牛说,如果你只关心把你的数据集变成一堆特征向量并拿去机器学习的算法里去学习,那就不用管它了。而如果你想弄一种能理解真实世界的算法,那数据集的质量就至关重要了

   那么我们小弱们到底该怎么做呢?大牛解释道,你们应该先试着做做交叉检验,我们很愿意公开代码和数据集(小弱们开始欢呼雀跃)。大牛继续说道,我们再给出几个建议供你们制作数据集时参考:对于“选择偏见”建议你们从多种源获取,例如不同国家的不同搜索引擎,或者你们找一堆没人标记过的图片,然后人肉做标记;对于“拍照偏见”,(嘿嘿,大牛莞尔一笑)你们有没有注意过,google image搜索“mug”绝大多数杯子的手柄都在右边。对于这类问题,我们建议你们做做图像变换,翻转啦,扭曲啦神马的。而对于“负样本偏见”,你们可以加入其他数据的负样本,或者用一些标准算法从没标记过的样本中搜索那些不容易区分的负样本。但这同样是带偏见的,即“增加你算法的难度”偏见。

   最后,大牛略作谦虚的表示,尽管标题是“无偏见的”,但也许我们自己的偏见已然融入了文字中。不过本文的目的是希望大家来一起讨论一下这个重要但又一直被忽略的问题。

   至此,文章戛然而止,留给了我们无限遐想的空间。此文一出,炸开了好大一个坑,不知道多久会被灌满。冥冥之中也得罪了不少人,“我们还想靠着不同数据集的结果吃饭呢!”“我们的方法只能在这个数据集上行得通,你还让不让我们发表了!”“我的结果就是比你的好1.7%,怎么样怎么样!”当然,一群小牛也要跟上,赶紧做交叉检验,赶紧提出各种理论,争取早日灌满此坑。而至于我们这些小弱们,唉,还是不玩儿这么高端的了。老板让干嘛就干嘛,偶尔看看如此卖萌的大牛们就心满意足了。各种羡慕去参会的人们,你们赶紧发游记发pp发总结!!!!