zoukankan      html  css  js  c++  java
  • 机器学习能做什么

    标题很大,其实我只想记录一下最近遇到的一个例子,或者说一个故事。

    最近董喵喵同学在微信上玩起了神秘,她在微信上发了下面这张图片并附注说去了一个神秘的地方,然后当然就很多人开始猜了。。
    虽然我号称走遍南京(那是以前我在豆瓣组织的一个系列徒步活动),但是这个地方说真的没有印象见过,或者说见过类似的地方有点多,这个被严重PS加光晕做旧的照片实在太有难度。。说白了我不知道是哪,但知道肯定不是南京比较有名的那几个湖(玄武湖,月牙湖,紫霞湖,莫愁湖等,我都去过)。

    这时候就想起了google的图片搜索,可以通过上传一个图片找到相似的图片。直觉上,这个严重模糊化的图片真是为难谷歌,即使它有一点的特征:宽阔水面、两片陆地、远处是山。直接用图片搜索的结果是这样:

    毫无意外,谷歌也是抓到了宽阔水面、陆地和远处是山这个特点。但是谷歌明显误认为那个PS的光晕是一张日出或日落的图片。谷歌也捕捉到了陆地上的树的轮廓,但是对于树的位置显然没有表现的很精确:人一眼就能辨别原图中陆地尖尖上那各有一颗伞形的树。这应该说是这个图中最有代表性的特征了。显然,这个搜索结果我无法判断这个湖。
    然后当然,我把自己知道的有关这个图的信息告诉google,比如董喵喵在南京,这应该是南京的湖。然后添加关键字“南京”:

    嗯,的确多了好多南京的元素:长江、玄武湖的影子都依稀可见。但是不得不说那个光晕效果的对谷歌的误导实在太大了,它始终不肯放弃它,宁愿放弃树的轮廓、山,甚至两边的陆地这些特征。这个结果一看(其实好几百张都看了一遍)就知道不是想要的。
    再告诉google一些信息 “南京 湖”, 因为我没印象南京的哪个江面是这样子的,所以压缩范围到湖:

    搜索结果虽然好了很多,但是前面的这些其实就第三行第二个有点像(但还是可以马上判断不是,因为原图中山的轮廓不是这样的),其他都不用考虑。但在这个结果列表中有一个让我觉得很像:

    (右上角那个)这已经是结果列表中大概第200个图片了(当然,其实人判断一个图片像不像只需要零点几秒的时间),而打动我的就是陆地尖角上的两棵树。而这正是正确的答案:佛手湖。

    当然,后来我发现在前几十个结果里已经有一个正确答案(也不排除在更早的结果中有正确答案的可能)(依然是右上角那个):


    谷歌的图片搜索还是非常强大的,特别是你搜索的是一些有大量素材且有明显特征的图片。比如搜使用一张玄武湖的图片,准确率应该会非常高。它的背后正式机器学习在图像识别方面的应用。这个领域的顶级应用应该是当前很火的谷歌无人驾驶汽车。但是,很多时候也不需要过度的迷信机器学习的算法有多高级,往往有决定性影响的是一份高质量的数据和精确的特征提取,至于用什么样的算法建立模型,可能是其次的。

    忽然想去去年那部有关图灵的电影《模拟游戏》,图灵虽然造出了一部很强的机器,但是由于太过于通用导致搜索空间非常大,以致根本不可用。最后当他在酒吧听到有关纳粹电报总是以某个固定的短语开头后就异常兴奋,并很快破解了密码。这也从某个侧面说明数据特征提取的重要性。就目前而言,如果一个问题人无法将观测数据与结果联系起来,也很难期望通过计算机能够从观测数据预测结果。大部分情况是,我大概知道今晚的月晕与明天是否下雨有一定的关系(但不知道什么关系,仅仅是知道每次看到月晕第二天就很可能下雨),然后通过机器学习的方法来训练一个模型并预测明天会不会下雨。在运用机器学习的方法之前,往往需要通过统计的方法寻找和提取数据中的特征,从而将数据与结果关联起来。

    特征提取是如此的重要,而这与刚接触接触机器学习的人(比如我)经常太过于注重算法形成鲜明对比。这可能是很多媒体上往往都是报道当前某某人或公司通过什么算法取得了多么辉煌的成绩有关,其中最广为人知的要数“google通过神经网络的算法让计算机从youtube的视频学会了猫这个概念”。然而当我真正运用某些算法去解决某个问题时,其实最为困难的部分不是在如何运用好一个算法,而是将数据与什么样的形式告诉这个算法。这个领域其实也有一些特征选取的方法,只是我也是在学习中。。

    今天机器学习的课只有不到十个人上课了。。








  • 相关阅读:
    css 计数器
    页面自动刷新的几种方式
    jq的“钉”插件--jquery.pin.js
    CSS3之Transform(变形)一
    css3之Transition(转换)
    常用css+css3集锦
    JQuery需要手动回收xmlHttpRequest对象
    javascript 闭包暴露句柄和命名冲突的解决方案
    firefox浏览器删除插件
    jQuery中的.bind()、.live()和.delegate()之间区别分析
  • 原文地址:https://www.cnblogs.com/zwCHAN/p/5229561.html
Copyright © 2011-2022 走看看