<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>科学松鼠会 &#187; 计算机科学</title>
	<atom:link href="http://songshuhui.net/archives/category/major/cs/feed" rel="self" type="application/rss+xml" />
	<link>http://songshuhui.net</link>
	<description>让我们来剥开科学的坚果</description>
	<lastBuildDate>Sat, 26 May 2012 04:36:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>基于用户投票的排名算法（二）：Reddit</title>
		<link>http://songshuhui.net/archives/66981</link>
		<comments>http://songshuhui.net/archives/66981#comments</comments>
		<pubDate>Wed, 16 May 2012 05:19:54 +0000</pubDate>
		<dc:creator>科学松鼠会</dc:creator>
				<category><![CDATA[计算机科学]]></category>
		<category><![CDATA[Reddit]]></category>
		<category><![CDATA[原创]]></category>

		<guid isPermaLink="false">http://songshuhui.net/?p=66981</guid>
		<description><![CDATA[Reddit是美国最大的网上社区，它的每个帖子前面都有向上和向下的箭头，分别表示"赞成"和"反对"。用户点击进行投票，Reddit根据投票结果，计算出最新的"热点文章排行榜"。怎样才能将赞成票和反对票结合起来，计算出一段时间内最受欢迎的文章呢？如果文章A有100张赞成票、5张反对票，文章B有1000张赞成票、950张反对票，谁应该排在前面呢？]]></description>
			<content:encoded><![CDATA[<p>本文作者：科学松鼠会</p>
<p><a href="http://songshuhui.net/archives/66981/reddit_troll_face_by_rubbaninja-d33pokb-2" rel="attachment wp-att-66985"><img class="size-full wp-image-66985 alignnone" title="reddit_troll_face_by_rubbaninja-d33pokb" src="http://songshuhui.net/wp-content/uploads/2012/05/reddit_troll_face_by_rubbaninja-d33pokb1.jpg" alt="" width="240" height="235" /></a></p>
<p>【图片出处：<a href="http://rubbaninja.deviantart.com/">http://rubbaninja.deviantart.com</a>】</p>
<p>作者： <a href="http://www.ruanyifeng.com/">阮一峰</a></p>
<p>原文发表日期： <a href="http://www.ruanyifeng.com/blog/2012/03/"><abbr>2012年3月 7日</abbr></a></p>
<p>上一次，我介绍了<a href="http://www.ruanyifeng.com/blog/2012/02/ranking_algorithm_hacker_news.html">Hacker News</a>的排名算法。它的特点是用户只能投赞成票，但是很多网站还允许用户投反对票。就是说，除了好评以外，你还可以给某篇文章差评。</p>
<p><a href="http://www.reddit.com/"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="bg2012030701" src="http://songshuhui.net/wp-content/uploads/2012/05/bg2012030701.jpg" alt="bg2012030701" width="644" height="357" border="0" /></a></p>
<p><a href="http://www.reddit.com/">Reddit</a>是美国最大的网上社区，它的每个帖子前面都有向上和向下的箭头，分别表示"赞成"和"反对"。用户点击进行投票，Reddit根据投票结果，计算出最新的"热点文章排行榜"。</p>
<p>怎样才能将赞成票和反对票结合起来，计算出一段时间内最受欢迎的文章呢？如果文章A有100张赞成票、5张反对票，文章B有1000张赞成票、950张反对票，谁应该排在前面呢？</p>
<p>Reddit的程序是<a href="https://github.com/reddit/reddit">开源</a>的，使用Python语言编写。排名算法的<a href="http://pastebin.com/bygavdb7">代码</a>大致如下：</p>
<p><a href="http://pastebin.com/bygavdb7"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="bg2012030702" src="http://songshuhui.net/wp-content/uploads/2012/05/bg2012030702.png" alt="bg2012030702" width="704" height="426" border="0" /></a></p>
<p>这段代码考虑了这样几个因素：</p>
<p>（1）帖子的新旧程度t</p>
<blockquote><p>　　t = 发贴时间 - 2005年12月8日7:46:43</p></blockquote>
<p>t的单位为秒，用unix时间戳计算。不难看出，一旦帖子发表，t就是固定值，不会随时间改变，而且帖子越新，t值越大。至于2005年12月8日，应该是Reddit成立的时间。</p>
<p>（2）赞成票与反对票的差x</p>
<blockquote><p>　　x = 赞成票 - 反对票</p></blockquote>
<p>（3）投票方向y</p>
<p><a href="http://songshuhui.net/wp-content/uploads/2012/05/chart.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="chart" src="http://songshuhui.net/wp-content/uploads/2012/05/chart_thumb.png" alt="chart" width="207" height="104" border="0" /></a></p>
<p>y是一个符号变量，表示对文章的总体看法。如果赞成票居多，y就是+1；如果反对票居多，y就是-1；如果赞成票和反对票相等，y就是0。</p>
<p>（4）帖子的受肯定（否定）的程度z</p>
<p><a href="http://songshuhui.net/wp-content/uploads/2012/05/chart1.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="chart(1)" src="http://songshuhui.net/wp-content/uploads/2012/05/chart1_thumb.png" alt="chart(1)" width="252" height="84" border="0" /></a></p>
<p>z表示赞成票与反对票之间差额的绝对值。如果对某个帖子的评价，越是一边倒，z就越大。如果赞成票等于反对票，z就等于1。</p>
<p>结合以上几个变量，Reddit的最终得分计算公式如下：</p>
<p><a href="http://songshuhui.net/wp-content/uploads/2012/05/chart2.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="chart(2)" src="http://songshuhui.net/wp-content/uploads/2012/05/chart2_thumb.png" alt="chart(2)" width="401" height="84" border="0" /></a></p>
<p>这个公式可以分成两个部分来讨论：</p>
<h2>（一）</h2>
<p><a href="http://songshuhui.net/wp-content/uploads/2012/05/chart3.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="chart(3)" src="http://songshuhui.net/wp-content/uploads/2012/05/chart3_thumb.png" alt="chart(3)" width="119" height="54" border="0" /></a></p>
<p>这个部分表示，赞成票与反对票的差额z越大，得分越高。</p>
<p>需要注意的是，这里用的是以10为底的对数，意味着z=10可以得到1分，z=100可以得到2分。也就是说，前10个投票人与后90个投票人（乃至再后面900个投票人）的权重是一样的，即如果一个帖子特别受到欢迎，那么越到后面投赞成票，对得分越不会产生影响。</p>
<p>当赞成票等于反对票，z=1，因此这个部分等于0，也就是不产生得分。</p>
<h2>（二）</h2>
<p><a href="http://songshuhui.net/wp-content/uploads/2012/05/chart4.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="chart(4)" src="http://songshuhui.net/wp-content/uploads/2012/05/chart4_thumb.png" alt="chart(4)" width="98" height="84" border="0" /></a></p>
<p>这个部分表示，t越大，得分越高，即新帖子的得分会高于老帖子。它起到自动将老帖子的排名往下拉的作用。</p>
<p>分母的45000秒，等于12.5个小时，也就是说，后一天的帖子会比前一天的帖子多得2分。结合前一部分，可以得到结论，如果前一天的帖子在第二天还想保持原先的排名，在这一天里面，它的z值必须增加100倍（净赞成票增加100倍）。</p>
<p>y的作用是产生加分或减分。当赞成票超过反对票时，这一部分为正，起到加分作用；当赞成票少于反对票时，这一部分为负，起到减分作用；当两者相等，这一部分为0。这就保证了得到大量净赞成票的文章，会排在前列；赞成票与反对票接近或相等的文章，会排在后面；得到净反对票的文章，会排在最后（因为得分是负值）。</p>
<h2>（三）</h2>
<p>这种算法的一个问题是，对于那些有争议的文章（赞成票和反对票非常接近），它们不可能排到前列。假定同一时间有两个帖子发表，文章A有1张赞成票（发帖人投的）、0张反对票，文章B有1000张赞成票、1000张反对票，那么A的排名会高于B，这显然不合理。</p>
<p><strong>结论就是，Reddit的排名，基本上由发帖时间决定，超级受欢迎的文章会排在最前面，一般性受欢迎的文章、有争议的文章都不会很靠前。</strong>这决定了Reddit是一个符合大众口味的社区，不是一个很激进、可以展示少数派想法的地方。</p>
<p>[参考资料]</p>
<p>* <a href="http://amix.dk/blog/post/19588">How Reddit ranking algorithms work</a></p>
<p>（完）</p>
<h5>文档信息</h5>
<ul>
<li>版权声明：自由转载-非商用-非衍生-保持署名 | <a href="http://creativecommons.org/licenses/by-nc-nd/3.0/deed.zh">Creative Commons BY-NC-ND 3.0</a></li>
<li>原文网址：<a href="file:///D:/下载/基于用户投票的排名算法（二）：Reddit - 阮一峰的网络日志_files/基于用户投票的排名算法（二）：Reddit - 阮一峰的网络日志.htm">http://www.ruanyifeng.com/blog/2012/03/ranking_algorithm_reddit.html</a></li>
<li>最后修改时间：2012年4月 1日 10:30</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://songshuhui.net/archives/66981/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>不可能的任务和不可能的工具</title>
		<link>http://songshuhui.net/archives/66330</link>
		<comments>http://songshuhui.net/archives/66330#comments</comments>
		<pubDate>Fri, 27 Apr 2012 12:52:49 +0000</pubDate>
		<dc:creator>猛犸</dc:creator>
				<category><![CDATA[科幻]]></category>
		<category><![CDATA[计算机科学]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[安德烈·海姆]]></category>
		<category><![CDATA[耦合共振]]></category>

		<guid isPermaLink="false">http://songshuhui.net/?p=66330</guid>
		<description><![CDATA[豆瓣上有网友评论，说这部电影应该改名叫《苹果和宝马拯救世界》。我觉得这个名字未免有失偏颇，从出场频率看，也许改成《伊森和苹果拯救世界，宝马帮了一点忙》更合适一点。Google的前首席执行官埃里克·施密特（Eric Schmidt）曾说过的那样：“汽车早于计算机发明，应该算是一个错误。”]]></description>
			<content:encoded><![CDATA[<p>本文作者：猛犸</p>
<p><a href="http://songshuhui.net/archives/66330/images-49" rel="attachment wp-att-66362"><img class="alignleft size-full wp-image-66362" title="images" src="http://songshuhui.net/wp-content/uploads/2012/04/images3.jpg" alt="" width="284" height="177" /></a>对于我这样的技术宅来说，《碟中谍》系列的意义就在于一对耀眼双星：靓老汤和高科技道具。IMF的装备部门实力一定不输于007的班底，总是能搞出一些充满想象力、徘徊于真实和科幻之间的小玩意。在整个观影过程中，“这玩意真酷！”和“这东西是什么原理？”两句话一直在我大脑中此起彼伏，差一点影响了理解剧情——不过幸好，这一系列的剧情也不用太过大脑就是了。</p>
<p>《碟中谍4》也是如此，一开始就不让人失望。又帅又邪的乔什•哈洛威（Josh Holloway）用一枚毒戒指轻松搞定了倒霉的快递特工，几秒钟之后又被女王范儿杀手蕾雅•赛杜（Léa Seydoux）干掉，好一出螳螂捕蝉黄雀在后。不过蕾雅姑娘显然没有关注最新的科技进展，连自己的高清玉照被哈洛威的隐形眼镜摄像机留在了手机里也没有注意到——顺带说一句，那好像是一部iPhone 4S。</p>
<p>这种隐形眼镜要是上市的话，一定会成为年度最受欢迎产品之一。想想看哪，能拍摄、能人脸识别、能显示、还能无线连接手机和打印机，绝对是豆瓣文艺小清新的至爱利器。只有一个问题——这东西……可能吗？</p>
<h1>眨眨眼，拍张照</h1>
<p>在接受《大众机械》杂志采访时，《碟中谍4》的导演布兰德•伯德（Brad Bird）说：“有些技术是已经实现了的，例如隐形眼镜摄像头；还有些未来几年将会投入使用，例如壁虎手套。”这句话只对了后一半。要把高清级别的摄像头整合进隐形眼镜中，恐怕存在着无法逾越的巨大鸿沟。</p>
<p>虽然现在摄像头的体积已经越来越小，能够以毫米级的体积提供不输于十几年前手持摄像机的功能，但是它们的基本原理并没有变化——这种原理，和我们的眼睛十分相似。对我们的眼睛来说，光线进入瞳孔，经过晶状体的调节，投影在视网膜上；而摄像头使用的则是镜头组和感光器件，把光转化成电信号，再存储或者播放出来。摄像头研发的重点之一，正在于镜头组的焦距和感光元件的尺寸。</p>
<p>但是隐形眼镜的表面积和厚度限制，却让摄像头无法施展 。即使最厚的隐形眼镜，厚度也只在0.1毫米以下，留给镜头聚焦的空间实在太小。如果想要布设摄像头的话，也许更好的方式是像远程视频指挥特种部队那样，把摄像头固定在眼镜框上——甚至可以说，这是唯一的随身摄像方式。如果哈洛威出场时戴一幅框架眼镜的话，可能会更有说服力一些。</p>
<h1>紧贴瞳孔的显示</h1>
<p>既然拍摄无法实现，那么其他功能是不是也是科幻呢？幸好并非如此。实际上，影片中这幅隐形眼镜的其他所有功能都是可以实现的，只不过可能存在一点点时间上的障碍而已。</p>
<p>从显示装置开始吧。我们都知道，虽然隐形眼镜覆盖整个角膜，但是其中真正起作用的只有覆盖瞳孔的那部分。这也就意味着在隐形眼镜上，依然还有相当大的空间可以利用，而不至于遮挡视线。</p>
<p>华盛顿大学的电子工程学助理教授的巴巴克•帕尔维兹（Babak Parviz）就进行过这方面的探索。帕尔维兹是个妙人，获得过英国文学、电子工程、物理学和化学等诸多领域的学位，目前主要关注的是微机电系统和生物电机系统界面，试图把人和机器更好地连接在一起——为了这一目的，他还花了很多时间和兔子打交道。就是他，率先把显示装置集成在隐形眼镜上。</p>
<p>他采用的材料是OLED，即有机发光二级管，一种耗电低、耐用而可以做得很薄的显示技术。最好的一点，是这种三明治结构的显示单元可以实现柔软的透明显示面板。实际上，索尼爱立信的某款实验性手机和三星的一款概念笔记本电脑已经实现了基于OLED技术的透明显示屏，想来它们也会很快出现在我们身边 。</p>
<p>2008年，帕尔维兹把OLED像素阵列、控制显示的芯片和供电模块集成在了隐形眼镜上，并且给兔子试戴了一段时间。据他说，“兔子没有表现出不舒服的迹象。”</p>
<p>虽然如此，但是就目前来看，这还只是一个概念性的设计，而只让温顺的兔子带上这种隐形眼镜还远远不够。 帕尔维兹设计的这种显示器只能提供100个像素的显示，还不足以推向市场。当然，如果IMF有兴趣进一步开发的话，让特工们戴上这种东西并非完全没有可能。而IMF版隐形眼镜显示器的功能还需要再强大一点——最少需要能够实现人脸识别吧。</p>
<h1>眼镜知道你是谁</h1>
<p>姑且让我们给电影中的特工戴上一副假想的框架眼镜好了。就算眼镜拍摄到了图像，然后进行人脸识别——且慢，难道一听就很高科技的人脸识别系统也能集成到隐形眼镜中吗？</p>
<p>本着多一事不如少一事的设计原则，我认为人脸识别技术并没有内置在隐形眼镜之中。人脸识别需要快速的计算和大量的存储，而这些都会增大隐形眼镜的厚度，挤占本来就不多的空间。更好的做法，是把它们分离出去，比方说，让随时在线的手机和远程服务器来完成这种计算工作，而只把识别结果显示在隐形眼镜上。</p>
<p><a href="http://songshuhui.net/archives/66330/bits-glasses2-blog480" rel="attachment wp-att-66363"><img title="bits-glasses2-blog480" src="http://songshuhui.net/wp-content/uploads/2012/04/bits-glasses2-blog480.jpg" alt="" width="480" height="346" /></a></p>
<p>【谷歌展示的具有强大互联网功能的Google Glass】</p>
<p>其实，计算机人脸识别系统和我们认出熟悉的人的过程差不多。我们在大脑中已经存储了 目标人物的长相，在人来人往中只需要观察所有的人脸，并且和脑中的人脸逐一进行对比就好。对机器来说，这个过程则意味着事先需要准备好一个数据库，里面存放了目标人物的面部特征。对今天的人脸识别系统来说，这些特征主要包括面部骨骼和结构特征——特别是眉骨、双眼、鼻和嘴等在五官轮廓中的距离、位置、角度和大小，来作为判断依据。如今的面部识别系统每秒钟可以比较五十万张以上的面孔，对影片开头那种任务已是绰绰有余。即使不用连接到IMF总部的服务器，单凭iPhone 4S的存储和运算能力，也能实现。要是早两年有了这种技术，《穿普拉达的恶魔》的助理小姐也就不用背人名背得那么辛苦了吧。</p>
<p>所以， 可以这样理解，手机和隐形眼镜可以视为一台计算机，其中手机相当于 机箱，完成存储和计算的任务；而隐形眼镜就是显卡和显示器。嗯，这看起来也不算出奇，采用眼镜式显示器的随身计算机一般都是这么设计的。</p>
<p>那么，既然隐形眼镜显示器需要和手机连接，下一个问题就应该是：选取什么类型的网络？</p>
<h1>无处不在的WiFi</h1>
<p>《碟中谍4》里面有一点很令人惊讶：特工们使用的都是诸如iPad和iPhone之类的民用设备。这让人不得不钦佩苹果公司赞助这部电影的力度，也容易产生某种误解。例如一直在影片的前半段，我都想当然地认为，隐形眼镜应该使用蓝牙方式和手机连接。直到影片中段，看到特工们直接用隐形眼镜和打印机传递合同的时候才感觉出不大对劲。以两层楼之间的距离，用蓝牙通信可能会有点不够稳定才是。直到这时我才意识到，也许采用Wifi会是更合理的选择；因为iPhone也可以设置成Wifi热点。</p>
<p>这样一来，一切就都说得通了。隐形眼镜将拍摄到的照片传递给兼做Wifi热点和数据接收装置的iPhone，再由iPhone转发给打印机；或者直接传给打印机就好。当然，隐形眼镜使用蓝牙和手机连接也是一样，但是鉴于影片中这一段并没有出现手机，所以我们姑且认为采用最简单的方式就好。</p>
<p>嗯，对于这么一部惊人的隐形眼镜，我几乎已经能看到发售前夜在专卖店前排队的人群了。不过，还有最重要的一个问题没有解决：它的电源是从哪里来的呢？</p>
<h1>无线供电的梦想</h1>
<p>无线供电其实不神秘，看看公交一卡通就知道。公交一卡通中的无线射频识别（RFID）芯片周围总是绕着几圈线圈，当人们把卡片放进读卡机的磁场的时候，这些线圈就会产生感应电流，来让芯片发出信号。电磁感应原理嘛，中学就学过了。</p>
<p>不过，身负重任的隐形眼镜显示器不能使用这样不稳定的电源。也许另一种电磁感应技术可能更合适一点；一种叫做“耦合共振”的技术。</p>
<p>我们对共振都很熟悉，而人们也早就发现，共振能够非常高效地传递能量。但是，把共振用于无线供电，却还只是近几年的事。2007年6月，麻省理工学院的物理学助理教授马林•索尔贾希克（Marin Soljacic）用两个精确调制过的线圈制造出了第一个室内距离无线供电系统，所消耗的电能只有传统电磁感应供电技术的百万分之一，产生的磁场只与地球磁场类似，而能量转化效率能达到40%。</p>
<p>一年后，英特尔公司西雅图实验室的约书亚•史密斯（Joshua R. Smith）把这一技术发扬光大，实现了75%的能量转化效率。在2011年六月，他更是和一位胸外科医生合作，开发出了能够无线供电的人工心脏系统，能输送超过90%的能量。这种技术同样可以用于隐形眼镜的供电系统上，只要使用者口袋里带着一块电池就行。</p>
<p>所以我们可以看出，如果想买《碟中谍4》中的那种隐形眼镜，怕是会受到一些物理学上的阻力，不过如果变通一下的话，也并非全不可能。与之相比， 《碟中谍4》中其他神奇玩意的真实程度更高一些；比方说那个隐身幕布，甚至可以尝试自己在家DIY一块。</p>
<h1>简陋的隐身衣</h1>
<p>在潜入克里姆林宫那一段，老汤又用iPad、相机、小型投影仪和幕布出了番风头，骗过警卫溜进了资料室。那块隐身幕布的原理一望可知：拍摄后面的景物，再投射到前面的幕布上。虽然没有哈利•波特的隐身衣那么拉风，但是效果也还不错。</p>
<p>说起来，这还真能算是隐身衣的一个流派。2006年，日本东京大学的田智前教授(Susumi Tachi)就已经开发出了这种技术，将之称为“视觉伪装”，其关键之一，就是幕布上涂抹了一层反向反射材料。</p>
<p>反向反射材料在日常生活中很常见——那种灯光照上去就会明晃晃的交通标志就是它的应用之一。这种材料一般是微小的棱镜，能够让入射光线沿原路返回； 当摄像头拍摄好幕布后的图像并投影在涂有反向反射幕布上时，幕布后的阿汤哥也就进入了隐身状态。</p>
<p>虽然阿汤哥使用的幕布是从背面而非正面进行投影的，但是基本原理一致。不过，这种技术有几个明显的弱点，其中之一就是它需要在特定角度才能实现欺骗的效果，这也是为什么iPad一直在跟踪警卫眼睛的位置，而当出现两名警卫时，这种把戏马上就会穿帮的原因。</p>
<p>作为一种暂时的欺敌之术，隐身幕布还是有价值的，否则也不会有这么多顶级特工都在用它——007《择日再亡》里面那部能隐身的阿斯顿•马丁，用的也应该是同样的技术。</p>
<h1>壁虎侠诞生</h1>
<p>有些评论认为，迪拜那一段高潮迭起，以至于让影片后半段相形失色。可以理解，毕竟不是每天都能看见有人在千米高迪拜塔的玻璃幕墙上爬来爬去；而除了我们的主角艺高人胆大之外，装备得力才是这段好戏的决定性因素。那么，能紧贴玻璃的爬墙手套又是什么原理呢？答案是：靠原力。</p>
<p>开玩笑的……这是《碟中谍》系列，不是《星球大战》。不过大体可以确定，伊森特工的壁虎手套的确主要是靠一种相当原始的力量起作用——分子间的范德华力。当物体之间贴得很近的时候，分子之间的吸引力就是范德华力，当我们从新买的手机上撕下贴膜的时候，就能感受到这种力的存在。</p>
<p>壁虎就是靠这种力量缘墙而上的。它们的脚掌上长着诸多皱褶，生满了细细的刚毛，而在这些刚毛的顶端又会分叉出许多更小的细毛，直径甚至只有纳米级别。正是这些细毛末端和墙壁分子间产生的范德华力，让壁虎履玻璃窗如走平地，而挪动脚步也轻捷快速，就像人们撕下手机贴膜一样。</p>
<p>这么好的材料，科学家自然不会放过。从事这项研究的甚至不乏大牌物理学家，例如“曾获2010年诺贝尔物理学奖俄罗斯裔荷兰物理学家安德烈·海姆（Andre Geim）。他2003年发表在顶级杂志《自然•材料》上的论文描述了制备这种“壁虎”材料的方法，配图也非常应景地选择了一个蜘蛛侠玩偶，只在右掌心用了一小块这种材料，就能悬挂在一块玻璃板上。</p>
<p><a href="http://songshuhui.net/archives/66330/test_of_gecko_tape" rel="attachment wp-att-66364"><img class="alignnone size-full wp-image-66364" title="Test_of_gecko_tape" src="http://songshuhui.net/wp-content/uploads/2012/04/Test_of_gecko_tape.jpg" alt="" width="295" height="393" /></a></p>
<p>【Spider-Man test" of gecko tape 图片出处：维基百科】</p>
<p>不过，这也不是明天就能在商店里买到的东西。现在这种纳米材料的价格还很惊人，估计做一只手套就要花上几十万美元，耐用性也很成问题。而且，这种材料现在能够提供的粘力有限，不足让一个人只靠两只手套就能爬上天际。</p>
<p>这就是为什么《碟中谍4》里面的壁虎手套需要电池——也许它还附有大量电动的微小真空吸盘来增强吸力吧。</p>
<h1>宝马惊艳</h1>
<p>豆瓣上有网友评论，说这部电影应该改名叫《苹果和宝马拯救世界》。我觉得这个名字未免有失偏颇，从出场频率看，也许改成《伊森和苹果拯救世界，宝马帮了一点忙》更合适一点。</p>
<p>不过，虽然出场不多，宝马那部电动力概念车i8却依然让人印象深刻，特别是那套支持手势操作的风挡玻璃显示系统，相信每位车主都会想在自己车上装一套。这倒不能算是彻底的创新——2008年，大众公司就已经开发出了内嵌透明OLED的风挡玻璃，能够直接在风挡玻璃上显示驾驶路径。至于手势操作嘛，像手机那样用触摸屏就行。</p>
<p>这当然是可能的方案之一，但是未免有些小题大做。在战斗机上，类似的系统已经应用了很长时间，这种让飞行员不必低头看仪表的显示装置早就有了一个专有名词：平视投影系统。虽然听起来有点高深，但是它的技术基础和家用投影仪差不多，不过是把图像投影在风挡玻璃上罢了。至于手势识别，也不能算是大问题：只要在车顶和风挡玻璃处装上几个摄像头，拍摄手部的动作再提供相应的反应就好——微软的游戏控制器Kinect做这种事早已经驾轻就熟了。</p>
<p>不过，这种人车交互技术其实大有潜力可挖。最近，麻省理工学院和奥迪合作开发了一种叫做“艾达2.0”（AIDA 2.0）的智能驾驶辅助装置，给驾驶者提供了更多帮助：车主面部识别、路线选择、报告实时交通状况、甚至提出驾驶建议。简而言之，驾驶时所需的一切信息，艾达2.0都能提供。</p>
<p><a href="http://songshuhui.net/archives/66330/aida-dashboard-001" rel="attachment wp-att-66366"><img class="alignnone size-full wp-image-66366" title="aida-dashboard-001" src="http://songshuhui.net/wp-content/uploads/2012/04/aida-dashboard-001.jpg" alt="" width="600" height="315" /></a></p>
<p>【AIDA 2.0的界面】</p>
<p>考虑到汽车行业竞争的激烈程度，相信i8也会拥有类似、甚至更加令人惊艳的智能系统，而不只是在电影中的那惊鸿一瞥。毕竟汽车和电脑的结合早已经是大势所趋；就像Google的前首席执行官埃里克·施密特（Eric Schmidt）曾说过的那样：“汽车早于计算机发明，应该算是一个错误。”</p>
<p>也许现在正是弥补这一错误的时机吧？</p>
]]></content:encoded>
			<wfw:commentRss>http://songshuhui.net/archives/66330/feed</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>基于用户投票的排名算法（一）：Delicious和Hacker News</title>
		<link>http://songshuhui.net/archives/66279</link>
		<comments>http://songshuhui.net/archives/66279#comments</comments>
		<pubDate>Tue, 24 Apr 2012 06:48:19 +0000</pubDate>
		<dc:creator>科学松鼠会</dc:creator>
				<category><![CDATA[计算机科学]]></category>
		<category><![CDATA[Delicious]]></category>
		<category><![CDATA[Hacker News]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[排名算法]]></category>

		<guid isPermaLink="false">http://songshuhui.net/?p=66279</guid>
		<description><![CDATA[互联网的出现，意味着"信息大爆炸"。用户担心的，不再是信息太少，而是信息太多。如何从大量信息之中，快速有效地找出最重要的内容，成了互联网的一大核心问题。而本系列文章，将介绍互联网世界过滤信息的主要办法：算法排名。]]></description>
			<content:encoded><![CDATA[<p>本文作者：科学松鼠会</p>
<p>作者： <a href="http://www.ruanyifeng.com/">阮一峰</a></p>
<p>发布日期： <a href="http://www.ruanyifeng.com/blog/2012/02/"><abbr>2012年2月24日</abbr></a></p>
<p>互联网的出现，意味着"信息大爆炸"。</p>
<p>用户担心的，不再是信息太少，而是信息太多。如何从大量信息之中，快速有效地找出最重要的内容，成了互联网的一大核心问题。</p>
<p><a href="http://songshuhui.net/wp-content/uploads/2012/04/bg2012022401.jpg"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="bg2012022401" src="http://songshuhui.net/wp-content/uploads/2012/04/bg2012022401_thumb.jpg" alt="bg2012022401" width="354" height="366" border="0" /></a></p>
<p>各种各样的排名算法，是目前过滤信息的主要手段之一。对信息进行排名，意味着将信息按照重要性依次排列，并且及时进行更新。排列的依据，可以基于信息本身的特征，也可以基于用户的投票，即让用户决定，什么样的信息可以排在第一位。</p>
<p>下面，我将整理和分析一些基于用户投票的排名算法，打算分成六个部分连载，今天是第一篇。</p>
<h1><strong>一、Delicious</strong></h1>
<p>最直觉、最简单的算法，莫过于按照单位时间内用户的投票数进行排名。得票最多的项目，自然就排在第一位。</p>
<p>旧版的<a href="http://www.google.com/url?sa=D&amp;q=http://del.icio.us/&amp;usg=AFQjCNFp5KllThyYtlA74rqSRKdqRtAjxw">Delicious</a>，有一个"热门书签排行榜"，就是这样统计出来的。</p>
<p><a href="http://songshuhui.net/wp-content/uploads/2012/04/bg2012022402.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="bg2012022402" src="http://songshuhui.net/wp-content/uploads/2012/04/bg2012022402_thumb.png" alt="bg2012022402" width="467" height="178" border="0" /></a></p>
<p>它按照<strong>"过去60分钟内被收藏的次数"</strong>进行排名。每过60分钟，就统计一次。</p>
<p>这个算法的优点是比较简单、容易部署、内容更新相当快；缺点是，一方面，排名变化不够平滑，前一个小时还排名靠前的内容，往往第二个小时就一落千丈，另一方面，缺乏自动淘汰旧项目的机制，某些热门内容可能会长期占据排行榜前列。</p>
<h1><strong>二、Hacker News</strong></h1>
<p><a href="http://news.ycombinator.com/">Hacker News</a>是一个网络社区，可以张贴链接，或者讨论某个主题。</p>
<p><a href="http://songshuhui.net/wp-content/uploads/2012/04/bg2012022403.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="bg2012022403" src="http://songshuhui.net/wp-content/uploads/2012/04/bg2012022403_thumb.png" alt="bg2012022403" width="504" height="266" border="0" /></a></p>
<p>每个帖子前面有一个向上的三角形，如果你觉得这个内容很好，就点击一下，投上一票。根据得票数，系统自动统计出热门文章排行榜。但是，并非得票最多的文章排在第一位，还要考虑时间因素，新文章应该比旧文章更容易得到好的排名。</p>
<p>Hacker News使用Paul Graham开发的Arc语言编写，源码可以从<a href="http://arclanguage.org/">arclanguage.org</a>下载。它的排名算法是<a href="http://pastebin.com/ZF57qQPi">这样</a>实现的：</p>
<p><a href="http://pastebin.com/ZF57qQPi"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="bg2012022404" src="http://songshuhui.net/wp-content/uploads/2012/04/bg2012022404.png" alt="bg2012022404" width="604" height="292" border="0" /></a></p>
<p>将上面的代码还原为数学公式：</p>
<p><a href="http://songshuhui.net/wp-content/uploads/2012/04/chart.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="chart" src="http://songshuhui.net/wp-content/uploads/2012/04/chart_thumb.png" alt="chart" width="187" height="64" border="0" /></a></p>
<p>其中，</p>
<p>P表示帖子的得票数，减去1是为了忽略发帖人的投票。</p>
<p>T表示距离发帖的时间（单位为小时），加上2是为了防止最新的帖子导致分母过小（之所以选择2，可能是因为从原始文章出现在其他网站，到转贴至Hacker News，平均需要两个小时）。</p>
<p>G表示"重力因子"（gravityth power），即将帖子排名往下拉的力量，默认值为1.8，后文会详细讨论这个值。</p>
<p>从这个公式来看，决定帖子排名有三个因素：</p>
<p><strong>第一个因素是得票数P。</strong></p>
<p>在其他条件不变的情况下，得票越多，排名越高。</p>
<p><a href="http://www.wolframalpha.com/input/?i=plot(+(30+-+1)+%2F+(t+%2B+2)%5E1.8%2C++(60+-+1)+%2F+(t+%2B+2)%5E1.8%2C+(200+-+1)+%2F+(t+%2B+2)%5E1.8+)+where+t%3D0..24"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="bg2012022405" src="http://songshuhui.net/wp-content/uploads/2012/04/bg2012022405.png" alt="bg2012022405" width="609" height="310" border="0" /></a></p>
<p>从<a href="http://www.wolframalpha.com/input/?i=plot(+(30+-+1)+%2F+(t+%2B+2)%5E1.8%2C++(60+-+1)+%2F+(t+%2B+2)%5E1.8%2C+(200+-+1)+%2F+(t+%2B+2)%5E1.8+)+where+t%3D0..24">上图</a>可以看到，有三个同时发表的帖子，得票分别为200票、60票和30票（减1后为199、59和29），分别以黄色、紫色和蓝色表示。在任一个时间点上，都是黄色曲线在最上方，蓝色曲线在最下方。</p>
<p>如果你不想让"高票帖子"与"低票帖子"的差距过大，可以在得票数上加一个小于1的指数，比如(P-1)^0.8。</p>
<p><strong>第二个因素是距离发帖的时间T。</strong></p>
<p>在其他条件不变的情况下，越是新发表的帖子，排名越高。或者说，一个帖子的排名，会随着时间不断下降。</p>
<p>从前一张图可以看到，经过24小时之后，所有帖子的得分基本上都小于1，这意味着它们都将跌到排行榜的末尾，保证了排名前列的都将是较新的内容。</p>
<p><strong>第三个因素是重力因子G。</strong></p>
<p>它的数值大小决定了排名随时间下降的速度。</p>
<p><a href="http://www.wolframalpha.com/input/?i=plot%28+%28p+-+1%29+%2F+%28t+%2B+2%29%5E2.0%2C++%28p+-+1%29+%2F+%28t+%2B+2%29%5E1.8%2C+%28p+-+1%29+%2F+%28t+%2B+2%29%5E1.5+%29+where+t%3D0..24%2C+p%3D10"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="bg2012022406" src="http://songshuhui.net/wp-content/uploads/2012/04/bg2012022406.png" alt="bg2012022406" width="623" height="306" border="0" /></a></p>
<p>从<a href="http://www.wolframalpha.com/input/?i=plot%28+%28p+-+1%29+%2F+%28t+%2B+2%29%5E2.0%2C++%28p+-+1%29+%2F+%28t+%2B+2%29%5E1.8%2C+%28p+-+1%29+%2F+%28t+%2B+2%29%5E1.5+%29+where+t%3D0..24%2C+p%3D10">上图</a>可以看到，三根曲线的其他参数都一样，G的值分别为1.5、1.8和2.0。G值越大，曲线越陡峭，排名下降得越快，意味着排行榜的更新速度越快。</p>
<p>知道了算法的构成，就可以调整参数的值，以适用你自己的应用程序。</p>
<h1><strong>参考文献</strong></h1>
<p>* <a href="http://amix.dk/blog/post/19574">How Hacker News ranking algorithm works</a></p>
<p>* <a href="http://blog.linkibol.com/2010/05/07/how-to-build-a-popularity-algorithm-you-can-be-proud-of/">How to Build a Popularity Algorithm You can be Proud of</a></p>
<p>（完）</p>
<pre>本文授权转载自阮一峰老师博客<a href="http://www.ruanyifeng.com/blog/2012/02/ranking_algorithm_hacker_news.html" target="_blank">基于用户投票的排名算法（一）：Delicious和Hacker News</a>欲再转载者请联系原作者</pre>
]]></content:encoded>
			<wfw:commentRss>http://songshuhui.net/archives/66279/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>用公共WiFi上网会危害银行账户安全吗？</title>
		<link>http://songshuhui.net/archives/66051</link>
		<comments>http://songshuhui.net/archives/66051#comments</comments>
		<pubDate>Fri, 20 Apr 2012 00:25:21 +0000</pubDate>
		<dc:creator>奥卡姆剃刀</dc:creator>
				<category><![CDATA[计算机科学]]></category>
		<category><![CDATA[公共WiFi]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[网络支付]]></category>

		<guid isPermaLink="false">http://songshuhui.net/?p=66051</guid>
		<description><![CDATA[据说，近日有黑客自曝，使用公共WiFi上网会被窃取个人信息和密码，甚至危害网银的安全。果真如此吗？]]></description>
			<content:encoded><![CDATA[<p>本文作者：奥卡姆剃刀</p>
<p><a href="http://songshuhui.net/wp-content/uploads/2012/04/h84waw.png"><img class="alignleft" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-style: initial; border-color: initial; border-image: initial; border-width: 0px; margin: 0px;" title="h84waw" src="http://songshuhui.net/wp-content/uploads/2012/04/h84waw_thumb.png" alt="h84waw" width="270" height="206" border="0" /></a></p>
<p><strong>流言：</strong> 【近日有黑客自曝：在星巴克、麦当劳这些提供免费WiFi的公共场合，用一台Win7系统电脑、一套无线网络及一个网络包分析软件，15分钟就可以窃取手机上网用户的个人信息和密码。国内某知名安全机构的工程师承认，这个真可以做到。网银、支付宝密码……你懂的 】</p>
<p><strong>真相：</strong> 这是从昨天开始微博上疯传的一个帖子。其实，无论你使用电脑、iPad、还是手机，只要通过WiFi上网，数据都有可能被控制这部WiFi设备的黑客电脑截获到，其实也未必一定是Win7系统，信息是有可能被窃取的，当然包括未经加密处理的用户名和密码信息。但是，无论什么系统的电脑，架设了多么高级的WiFi热点，黑客都无法在用户正确操作下获取网银和支付宝密码，更不要说盗窃其中的钱了。</p>
<h1>手机银行如何保障安全</h1>
<p>用户可通过手机上的专门客户端程序，通过WAP方式与银行系统建立了连接，并进行账户查询、转账、缴费付款、消费支付等金融服务，这种方式被称为“手机银行”。与一般上网方式显著不同的是，其网址的头三个字母是WAP。手机银行的帐户信息是经过静态加密处理的，而且与手机绑定，假使他人盗取了你的账户信息，但其它手机上也无法操作。经与工行客服核实，他们称现在为了方便用户，允许非指定手机操作手机银行账户了，但允许操作的资金额度很低。</p>
<p>最重要的是，手机银行还有认证手段。加密的原理很简单，其目的是让非授权用户即使获取了数据也无法利用，而认证则是对数据是否篡改、接收数据的人是不是授权用户等方面的审查措施，用来保证数据是真实可靠的，接收者是被授权的。从采用的具体技术和算法而言，加密与认证并没有明显的区别，但从功能角度而言，两者非常不同，相互不能取代，并可通过有效配合而达到很高的安全性。</p>
<p>你输入了正确的帐号和密码，当进行涉及到账户资金变动的操作时，手机银行会提示你输入特定的电子口令，而电子口令卡就是一种有效的认证手段。例如下图就是张工行的电子口令卡，它发来信息C5H8，你就要在相应的输入框里输入138141，而且银行每次发来的信息都不会相同。</p>
<p><a href="http://songshuhui.net/wp-content/uploads/2012/04/uufzw8.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="uufzw8" src="http://songshuhui.net/wp-content/uploads/2012/04/uufzw8_thumb.png" alt="uufzw8" width="394" height="265" border="0" /></a></p>
<p>【工行的电子口令卡】</p>
<p>不同的银行可能会采用不同的认证方法，比如建行就是通过绑定手机发送手机验证码，但都起到了类似的作用。</p>
<h1>个人网上银行如何保障安全</h1>
<p>个人网上银行会采用https的加密协议来保障交易安全，结尾比你常见的http多了个s。你在电脑上输入个人网上银行地址，当跳转到账户信息输入页面时，网址栏就由http变为https了，而且在最后面还多了一只小挂锁，这寓示着通过这个页面输入并传送的数据，会被128位的加密算法进行加密，只有银行方面才能正确解密，即使这些加密数据被黑客全部拿到，也毫无用途。</p>
<p><a href="http://songshuhui.net/wp-content/uploads/2012/04/kcsso9.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="kcsso9" src="http://songshuhui.net/wp-content/uploads/2012/04/kcsso9_thumb.png" alt="kcsso9" width="504" height="287" border="0" /></a></p>
<p><a href="http://songshuhui.net/wp-content/uploads/2012/04/6v9uvh.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="6v9uvh" src="http://songshuhui.net/wp-content/uploads/2012/04/6v9uvh_thumb.png" alt="6v9uvh" width="504" height="241" border="0" /></a></p>
<p>【网银和支付宝的https页面和小挂锁标示，点击黄色小挂锁，就会弹出“网站标识”框，可查看证书情况。】</p>
<p>而且，用电脑通过https方式访问个人网上银行时，还有认证手段的保护，操作帐户资金限额的大小与认证手段的强度相匹配，电子口令卡的认证强度低，能操作的资金少，而U盾的认证强度大，能操作的资金就多。使用https协议与个人网上银行进行连接，这是银行为了保证安全而采取的强制措施，通过非加密协议传送的信息是不会被银行所接纳的。</p>
<p>用过个人网上银行的网友都会知道，使用前必须安装银行提供的安全控件，否则帐户信息栏是灰色的，根本无法输入任何信息。而手机的系统无论是苹果、安卓、还是塞班，统统都不支持这个控件，根本就安装不了，帐号自然无法输入，被盗取更是毫无可能。</p>
<p>有些高水平玩家会在手机上装虚拟机，这倒是可能安装上银行的安全控件并成功操作个人网上银行，这时手机就已可看作是个简版电脑了，自然也要跟使用普通电脑一样，通过https这种安全协议与个人网上银行进行数据交换。</p>
<h1>警惕钓鱼网站</h1>
<p>不少账户被盗的案例其实是因为访问了钓鱼网站。他们伪装成正规的银行页面或是支付页面，骗取你输入的帐户名和密码，而这未必一定需要通过WiFi热点这种方式来实现，任何上网的方式都有可能上当。不过，公共的WiFi确实提供了植入钓鱼网站的潜力，利用ARP欺骗，可以在用户浏览网站时植入一段HTML代码，使其自动跳转到钓鱼网站。从这个角度说，公共WiFi网络为用户提供了一个便利的钓鱼环境。</p>
<p>避免被钓要注意使用安全。一方面，需要对别人发来的网络地址多留心，因为这个地址可能非常接近如淘宝、网上银行的域名地址，打开的页面也几乎和真实的页面完全一致，但是实际你进入的是一个伪装的钓鱼网站；另一方面，尽量选择具有安全认证功能的浏览器，这些浏览器能够自动提示你打开的页面是否安全，避免进入钓鱼网站。对于智能手机用户，在下载和交易有关的客户端软件时尽量选择官方渠道下载，不要安装来路不明的客户端。</p>
<h1><strong>结论</strong></h1>
<p><strong></strong>银行账户是否安全与手机是否是通过免费的WiFi上网，并没有必然的联系。使用基于WAP客户端的手机银行是安全的，用电脑通过https使用个人网上银行也是安全的，但不要用手机上个人网上银行，现在银行也还不支持这项业务。用电脑上个人网上银行时，请核实下https和地址栏后面的小挂锁标志。</p>
<p>P.s. 互联网没有绝对的安全，这话确实不假……</p>
<p>文章主要针对大家最担心的网上银行的安全性来讨论，关于公共WiFi安全性的更多讨论，请看果壳问答 <a href="http://www.guokr.com/question/99127/">在公众场所蹭网会被黑客暗算吗？</a> 里的回答和讨论。</p>
<p><strong>特别鸣谢：</strong> <a href="http://www.guokr.com/i/1879686291/">snowmark-zhang</a> <a href="http://www.guokr.com/i/1072824660/">晓风残月</a> <a href="http://www.guokr.com/i/0381544758/">HelloPlanet</a> <a href="http://www.guokr.com/i/1775598936/">HX</a> 对本文的帮助。</p>
<pre>本文首发于果壳网（<a href="http://www.guokr.com/">guokr.com</a>）<a href="http://www.guokr.com/site/fact/">谣言粉碎机</a>主题站《<a href="http://www.guokr.com/article/100110/" target="_blank">用公共WiFi上网会危害银行账户安全吗？</a>》</pre>
]]></content:encoded>
			<wfw:commentRss>http://songshuhui.net/archives/66051/feed</wfw:commentRss>
		<slash:comments>42</slash:comments>
		</item>
		<item>
		<title>绿坝娘眼中的AV什么样？</title>
		<link>http://songshuhui.net/archives/65807</link>
		<comments>http://songshuhui.net/archives/65807#comments</comments>
		<pubDate>Mon, 09 Apr 2012 05:40:03 +0000</pubDate>
		<dc:creator>Albert_JIAO</dc:creator>
				<category><![CDATA[计算机科学]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[小波分析]]></category>
		<category><![CDATA[绿坝娘]]></category>

		<guid isPermaLink="false">http://songshuhui.net/?p=65807</guid>
		<description><![CDATA[为了保护小朋友的纯洁心灵，不让他们过早地接触不和谐的内容，程序员们开发了很多自动识别色情图片和AV影片的电脑软件来过滤这些信息。那么，你知道这些“绿坝娘”们都是怎么工作的吗？]]></description>
			<content:encoded><![CDATA[<p>本文作者：Albert_JIAO</p>
<p><a href="http://songshuhui.net/wp-content/uploads/2012/04/b1bbkz.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="b1bbkz" src="http://songshuhui.net/wp-content/uploads/2012/04/b1bbkz_thumb.png" alt="b1bbkz" width="264" height="208" border="0" /></a></p>
<p>【图为绿坝娘的经典形象】</p>
<p>是不是色情作品，一般人扫一眼心里就有数了。但对电脑来说，它们可不会自己分辨屏幕上那对男女是在谈情说爱，还是在宽衣解带。想让电脑知道哪些东西是不和谐的，还得靠程序员们的调教。不过，想教电脑会看AV并不是一件很容易的事情，因为机器没有七情六欲，没有感情，没有性冲动，唯一能接受的只有各种数据，程序员们要做的，就是让电脑识别色情作品特有的数据特征。</p>
<h1>识色、辨形、听声</h1>
<p>在计算机中，每张图片里的任何一个点都包括亮度值、色相值、饱和度值，通过这三个值的大小的范围，电脑就能识别出“肉色”，进而猜测出图片里裸露的人体皮肤区域。 而那些“色图”相比于正常图片，最明显的特点就是画面像素中人体皮肤的颜色所占的比例比较大，整张图片比较“黄”，确切地说，研究者发现虽然不同肤色的主角在光线明暗不同环境下拍出来的皮肤颜色不尽相同，但是画面里人体皮肤的颜色总是在一定的范围内。另外，研究人员还发现暴露的区域图片一般纹理值比较小，颜色比较平滑，这也可以作为判断人体皮肤的依据之一。</p>
<p><a href="http://songshuhui.net/wp-content/uploads/2012/04/uofce3.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="uofce3" src="http://songshuhui.net/wp-content/uploads/2012/04/uofce3_thumb.png" alt="uofce3" width="629" height="215" border="0" /></a></p>
<p>【电脑自动识别出图片里的人体皮肤区域。（图片来自原研究 ）】</p>
<p><a href="http://songshuhui.net/wp-content/uploads/2012/04/2126fl.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="2126fl" src="http://songshuhui.net/wp-content/uploads/2012/04/2126fl_thumb.png" alt="2126fl" width="640" height="296" border="0" /></a></p>
<p>【计算肤色区域的几何关系。（图片来自原研究 ）】</p>
<p>当电脑“看到了”图片上有类似于人体皮肤颜色的一些区域之后，需要进一步确定这些区域的来源，看看它们是没穿衣服的女主角，还是来源于正常物体。假设两块黄色区域分别是两条腿或两只胳膊，另外一块区域是人的身体，这些区域的长度值、宽度值必须符合人体的大小比例，之间的位置必须满足一定的几何关系，这些都可以依靠电脑的计算得出结果。如果这些区域之间大小和位置不像是人的身体，就可以排除掉色情图片的嫌疑了。</p>
<p>把肤色和人体构造比例这两招教给电脑是研究者最先想到的解决方案，也是应用得最多的图片自动扫黄方法。凭借这两个简单而有效的主意，美国爱荷华大学和加州伯克利大学的研究人员在1996年发表了一篇名为《找到裸露的身体》（ <em>Finding Naked People</em> ）的论文（有点标题党的嫌疑）。</p>
<p>后来，世界各国对于此领域情有独钟的研究人员又想出了各种各样提高识别AV图片准确率的方法。</p>
<p>例如斯坦福大学的研究者通过对图片进行“小波分析”（编者按：这只是一个数学方法的名称）可以把色情图片里的人体轮廓提取出来，由于同一个女主角可以被摄像机从不同的角度拍摄，研究者还对提取出的轮廓进行了平移、转动、伸缩的数学变换。接下来，比对被测试的画面提取出的数据和几百张真正色情图片数学变换提取出的信息，两者越接近就说明被测试的图片越可能是色情图片。这样就能让电脑来判定被测试的图片里，不和谐内容出现的概率大小。</p>
<p><a href="http://songshuhui.net/wp-content/uploads/2012/04/94cpqa.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="94cpqa" src="http://songshuhui.net/wp-content/uploads/2012/04/94cpqa_thumb.png" alt="94cpqa" width="682" height="198" border="0" /></a></p>
<p>【提取图片里的人体轮廓。（图片来自原研究 ）】</p>
<p>而中科院自动化研究所的研究人员提出的方法里，为了识别电影里是否有限制级片段，可以先分析一下电影里是否含有限制级的声音。他们收集了592段“声优”的声音片段，然后分析了这些声音信号的十几项参数。根据需要被测试的声音片段的各项参数与这些例子的接近程度，可以计算出一个声音片段是“限制级声音”的概率，如果概率足够大，就要检查声音对应的视频画面有没有问题了。</p>
<h1>错杀与漏放</h1>
<p>在此类研究中，各个研究论文里都提到了作者测试了大量的样本，收集了包括几百部、上千部高清无码的片子和正常的片子（看来这一类研究做起来还是蛮有意思的……），有的研究识别准确率可以达到90%以上，不过电脑的人工智能还是经常有失手的时候，把正常的画面冤枉成AV画面，或者让真正的“咸湿图片”漏网，市面上此类的软件也都不免有“看走眼”的问题。</p>
<p>比如下面三张图片就是此类软件算法出错的例子，让无辜的图片受冤屈。图片(a)（b）因为整张图片颜色“太黄”了，很像人皮肤的颜色，被电脑误判；图片（c）大老爷们光着膀子的画面让电脑来区分是否属于色情就颇有难度。此外，动物和雕像的图片也容易被错划入不健康图片。</p>
<p><a href="http://songshuhui.net/wp-content/uploads/2012/04/pew8i1.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="pew8i1" src="http://songshuhui.net/wp-content/uploads/2012/04/pew8i1_thumb.png" alt="pew8i1" width="492" height="148" border="0" /></a></p>
<p>【让电脑迷惑的图片1（图片来自原研究 ）】</p>
<p>与此相反，以下三张应该被处理掉的图片却因为背景颜色纹理过多或者清晰度不够高而漏网</p>
<p><a href="http://songshuhui.net/wp-content/uploads/2012/04/npmvf0.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="npmvf0" src="http://songshuhui.net/wp-content/uploads/2012/04/npmvf0_thumb.png" alt="npmvf0" width="471" height="148" border="0" /></a></p>
<p>【让电脑迷惑的图片2（图片来自原研究 ）】</p>
<p>由此可见，要想给视频和图片来个靠谱的自动分级，还需要让电脑更聪明才行。</p>
<p>PS： 相信以后计算机会在这个领域取得新的进展，不过至少目前的常用方法，还是通过征募一些有牺牲精神的壮士，进行人工鉴定来实现的。</p>
<p>PPS：当绿坝娘擦枪走火…… 你懂的，有图有真相。</p>
<p><a href="http://songshuhui.net/wp-content/uploads/2012/04/7k4j9s.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="7k4j9s" src="http://songshuhui.net/wp-content/uploads/2012/04/7k4j9s_thumb.png" alt="7k4j9s" width="566" height="418" border="0" /></a></p>
<h2><strong>参考资料</strong></h2>
<p><strong></strong>1.Fleck, Margaret M., David A. Forsyth, and Chris Bregler (1996) “Finding Naked People,” 1996 European Conference on Computer Vision</p>
<p>2. Haiqiang Zuo, Ou Wu, Weiming Hu, Bo Xu;RECOGNITION OF BLUE MOVIES BY FUSION OF AUDIO AND VIDEO 3.Wang, J. and Wiederhold, G. and Firschein, O;System for Screening Objectionable Images Using Daubechies' Wavelets and Color Histograms</p>
<pre>原文发表于果壳网（<a href="http://www.guokr.com/">guokr.com</a>）<a href="http://www.guokr.com/site/sex/">性 情</a> 主题站 <a href="http://www.guokr.com/article/137539/" target="_blank">绿坝娘眼中的AV什么样？</a></pre>
]]></content:encoded>
			<wfw:commentRss>http://songshuhui.net/archives/65807/feed</wfw:commentRss>
		<slash:comments>43</slash:comments>
		</item>
		<item>
		<title>计算机原来要晃一晃才好用</title>
		<link>http://songshuhui.net/archives/65689</link>
		<comments>http://songshuhui.net/archives/65689#comments</comments>
		<pubDate>Tue, 03 Apr 2012 10:59:14 +0000</pubDate>
		<dc:creator>Albert_JIAO</dc:creator>
				<category><![CDATA[计算机科学]]></category>
		<category><![CDATA[dithering]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[图象处理]]></category>

		<guid isPermaLink="false">http://songshuhui.net/?p=65689</guid>
		<description><![CDATA[二战时，美国轰炸机执行任务时会搭载一部齿轮机构的计算机，飞行中的晃动会不会让机器失灵？可这家伙真上了飞机，人们却意外发现它们不仅没有出问题，计算结果反而比在地面用的时候更准确，难道这些机器对于过山车的感觉情有独钟？人们知道了机器的这个“怪毛病”之后，干脆在地面的机器里安装上了振动器，让它们一边轻轻晃，一边工作，]]></description>
			<content:encoded><![CDATA[<p>本文作者：Albert_JIAO</p>
<p><a href="http://songshuhui.net/archives/65689/pic2-2" rel="attachment wp-att-65709"><img src="http://songshuhui.net/wp-content/uploads/2012/04/pic2.jpg" alt="" width="0" height="0" /></a></p>
<p>话说二战的时候，美国轰炸机每次执行任务，除了满载着威力强大的炸弹以外，还常常要装配一台计算机，飞机飞行方向和投弹的抛物线的计算都离不开这台机器。可是世界上第一台电子计算机在二战结束后才发明，轰炸机上当时携带着的“计算机”其实就是个装有一大堆齿轮的大箱子，这台笨重的箱子计算能力还远远比不上今天的手里拿着的casio计算器，用起来也就比算盘好一些吧。这些机械计算机设计者最为担心的问题是里面的一大堆齿轮零件哪天不高兴掉下来一两个，整台机器或许就玩不转了，飞机迷失航向，炸弹误扔到自己的阵地上就要出大麻烦了。在轰炸机飞来飞去的时候，不断的晃动会不会让机器失灵成了很多人心头的忧虑。可这家伙真上了飞机，人们却意外发现它们不仅没有出问题，计算的结果反而比在地面用的时候更准确，令人疑惑不解，难道这些机器对于过山车的感觉情有独钟？人们知道了机器的这个“怪毛病”之后，干脆在地面的机器里安装上了振动器，让它们一边轻轻晃，一边工作，体验一下地面飞行的感觉，它们不仅不会进入梦乡，还会工作得更好。</p>
<p>这些计算机究竟为什么会喜欢坐灰机而不晕呢？经过研究发现，在精度上，这些机械玩意肯定没法跟现在的电脑比，计算不可能算到小数点之后很多位，常常要四舍五入。举个例子，假设计算机在完成一个任务的时候，一个参数先后被乘了五次，这个参数的精确值是5.4，但是计算机只能用整数，5.4只好每次都被四舍五入成了5，正确的结果应该是5.4*5.4*5.4*5.4*5.4=4591.65，可是计算的结果只有5*5*5*5*5=3125，两者有不小的误差，因为每次四舍五入之后的值都比正确的值“矮了一小截”，几次误差叠加在一起就变得越来越大。机器在晃动的时候，会再额外产生一些的小误差，但并不会雪上加霜，5.4可能被晃成5.5，5.6，四舍五入就是6了，当然也可能被晃成5.3，5.2。虽然晃动的误差完全是随机的，但是5.4还是更接近于5，所以最后变成5的可能性更大，假设五次里5.4三次变成成了5，两次被化成了6，这样计算的结果是5*5*5*6*6=4500,比起3125精确了好多。当然“晃动”一定要轻微，不能太厉害，如果5.4最后变成了10就完全不靠谱了。</p>
<p>在这些机器里，通过加一些随机晃动的小误差，化解掉计算机四舍五入时候大的误差，这一招称为dithering（抖动）技术，是一个“以毒攻毒”的绝妙主意。</p>
<p>虽然机械计算机在几年后就被淘汰了，可是dithering技术却一直被沿用着，近日各种数码产品上显示的图片，视频，声音也时不时需要“抖动”一下。</p>
<p>很多人小时候一定玩过这样的游戏，用硬纸板制作一个小圆盘，小圆盘上交替涂上红色和黄色，然后把小圆盘中间穿上一根小支柱，让小圆盘像陀螺一样快速旋转，你会看到什么？没错，小圆盘既不是红色，也不会黄色，而是红黄两色快速“轮班”在你的眼前闪过，被“调成”了中间的橙色。</p>
<p><a href="http://songshuhui.net/archives/65689/pic_1" rel="attachment wp-att-65716"><img class="alignnone size-full wp-image-65716" src="http://songshuhui.net/wp-content/uploads/2012/04/pic_1.jpg" alt="" width="260" height="262" /></a></p>
<p>如果一段视频播放的时候可以显示的颜色有限，比如只能显示红色和黄色，不能显示橙色（当然今天一定不会有那么落后的设备了，不过几百种、几千种颜色还是可能有不够用的时候），视频画面里橙色部分只能像5.4被四舍五入成5一样，看更接近哪一个，或者被算成红色，或者被算成黄色。视频每秒钟要快速播放24张画面，眼睛反应不过来，觉着看到的是连续的图像。我们也可以加一些”抖动“，让画面的颜色红色和黄色交替出现，该显示黄色时候也闪两下红色，该显示红色的时候也闪两下黄色，每次随机的发生。如果我们想展示“深橙色”，就让画面显示红色的概率大一点，每秒平均多显示一些次，如果想展示浅橙色，就让画面显示黄色的概率大一点，以这样的方式“调色”。像小圆盘一样，这样快速变换画面的dithering就可以欺骗住你的眼睛，“无中生有”创造出画面中本来没有的深橙色、橙色、浅橙色各种额外颜色。</p>
<p>一段视频里可以调出新的颜色，那么一张静止的图片又怎么办呢？dithering同样可以发挥作用。首先拿黑白图片来说，这是一张正常的黑白照片，里面有黑色，有白色，也有各种深浅不同的灰色元素。</p>
<p><a href="http://songshuhui.net/archives/65689/pic0" rel="attachment wp-att-65706"><img class="size-full wp-image-65706 alignnone" src="http://songshuhui.net/wp-content/uploads/2012/04/pic0.jpg" alt="" width="180" height="215" /></a></p>
<p>现在如果只给你两种画笔，纯黑色和纯白色，没有灰色的画笔。你还能画出这幅图的效果吗？如果只是把图片里比较浅的灰色将就着用白色表示，把图片里比较深的灰色“四舍五入”成黑色，图片就会不幸变成下面的样子：</p>
<p><a href="http://songshuhui.net/archives/65689/pic1-2" rel="attachment wp-att-65708"><img class="size-full wp-image-65708 alignnone" src="http://songshuhui.net/wp-content/uploads/2012/04/pic1.jpg" alt="" width="180" height="215" /></a></p>
<p>效果惨不忍睹。</p>
<p>再看一下下面这张图片</p>
<div class="mceTemp">
<dl>
<dt><a href="http://songshuhui.net/archives/65689/pic2-2" rel="attachment wp-att-65709"><img class="size-full wp-image-65709 " src="http://songshuhui.net/wp-content/uploads/2012/04/pic2.jpg" alt="" width="179" height="215" /></a></dt>
<dd></dd>
</dl>
</div>
<p>貌似ok呀！里面颜色深浅可变，咋看起来不只有黑白两种颜色。可是仔细一看，里面并没有灰色的元素，和上一幅图完全一样，只有黑点和白点。</p>
<p>相比于第二幅图，我们在第三幅图里进行了dithering，在黑色的区域加了一些白点，在白色的区域加了一些黑点，黑点比例比较多的区域可以表示深灰色，白点比较多的区域可以表示浅灰色，我们神奇的变了个魔术，只用黑点白点就可以画出深浅变化的图片。</p>
<p>下面还有一张质量更好的dithering图片，中间的那一个Lena小姐图里其实只有白色和黑色，没有任何中间的颜色，不论你相不相信。</p>
<p><a href="http://songshuhui.net/archives/65689/pic3-2" rel="attachment wp-att-65710"><img class="size-medium wp-image-65710 alignnone" src="http://songshuhui.net/wp-content/uploads/2012/04/pic3-300x97.jpg" alt="" width="300" height="97" /></a></p>
<p>看完了黑白、灰度的照片，我们再来看一下彩色的照片</p>
<p><a href="http://songshuhui.net/archives/65689/pic4-2" rel="attachment wp-att-65711"><img class="alignnone size-full wp-image-65711" src="http://songshuhui.net/wp-content/uploads/2012/04/pic4.jpg" alt="" width="132" height="200" /></a></p>
<p>这里有六张图片，最左上角的那张图片是神马颜色的？红色和蓝色。最右下角的那张图片是神马颜色的？紫色。错了！最右下角的那一张图片也只有红色和蓝色，这六张图片里红色小方格和蓝色小方格依次变小，到最后很小的时候，红色和蓝色都会消失，相当于我们把红色和蓝色小点”勾兑“成了紫色，在动态视频里，通过不同时间点显示不同颜色，dithering可以在你的眼前变出不存在的颜色；在静态的图片里，dithering则是在不同的位置洒下密密麻麻不同颜色的小点来让你产生颜色错觉。</p>
<p>在下面三张图里，第一张图是正常的图片，在第二张图里，可以用的颜色数量大大减少，这只猫成了“大花脸”，图片变得模糊。在第三张图里我们用了dithering技术，虽然颜色的种类和第二张一样多，但是看起来却舒服了好多。</p>
<p><a href="http://songshuhui.net/archives/65689/pic5-2" rel="attachment wp-att-65713"><img class="alignnone size-medium wp-image-65713" src="http://songshuhui.net/wp-content/uploads/2012/04/pic5-300x80.jpg" alt="" width="300" height="80" /></a></p>
<p>dithering除了可以在图像中欺骗你的眼睛以外，在声音中也可以欺骗你的耳朵。如果一段音乐每个时间点的幅度都被四舍五入处理，原来的音乐里就会掺杂进其他频率的杂音，影响效果。如果我们让各个时间点的幅度加上一点小的误差，这种四舍五入产生的杂音就会被削弱和平均化，表面上降低声音质量的方法反而让声音效果更好。</p>
<h2>参考资料</h2>
<p>1、http://en.wikipedia.org/wiki/Dither</p>
]]></content:encoded>
			<wfw:commentRss>http://songshuhui.net/archives/65689/feed</wfw:commentRss>
		<slash:comments>68</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.249 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-05-26 20:52:22 -->

