zoukankan      html  css  js  c++  java
  • IR和ML的发展

    前天读了一篇SIGIR的文章,所做的是引入 implicit feedback 以提升IR的效果。文章提出了使用用户浏览网页时的表情来进行 feedback 的方法,在我看来,这和之前所提出的使用 eye tracking 等技术没有本质上的区别,文章中使用的方法也没有什么新奇的地方,看得挺无味的。希望 SIGIR 的文章并不都是这样。

    不过这篇文章的 introduction 还是对我有一些帮助的,毕竟对 IR 这个领域没有很透彻的认识,读了这个 introduction 之后,对 IR 的发展历史与趋势都有了一些了解。

    按我的理解,IR(Information Retrieval)解决的问题就是三个方面:1)了解用户需要什么样的信息;2)有效地获取信息;3)有效地将信息进行存储、组织和管理。目前的检索系统技术上已经能较好的解决2)和3)的问题,当我们使用Google的时候,它往往能够在0.1秒左右就给出检索结果,对于用户来说,在这个效率上的问题已经并不那么令人关注了。而最令人困扰的莫过于问题1)。1)与2)和3)相比有本质的难度。因为加进了人的因素,固有的模糊性、不确定性之类的都被引入近来,使得理解和分析都有了很大困难,而只与机器打交道的2)和3)则没有这些突出的困难。

    如何了解用户需要什么样的信息呢?我们使用搜索引擎的时候,总是只在搜索框中输入搜索词或者一些短句。从这个输入中我们能提取的有效信息实际是非常有限的。这里面的问题有:1)用户的输入非常少,所提供的信息量很少;2)由于用户对事物的认知程度不同,他们对于想要获取的信息的描述方式也因而会千差万别。这两个主要问题带来的困难是:1)少输入带来的是结果的不确定性,对于一个用户输入,很可能有许多检索结果都可以与之相对应,如何对他们进行筛选和排序的进一步处理?2)对于同一个信息各个用户的描述方式差别很大,如何从查询中分析出用户的查询需求究竟是什么?有时候用户的输入和想查的东西甚至会差别很大,这时候应该怎么处理?(这里涉及到一个搜索引擎的服务对象的问题了,我们应该对用户的认知程度做怎样的假设呢?)

    对于上面的第1)个问题,现在解决的办法是引入反馈(feedback),拓广对用户信息需求的理解。如何获取用户对搜索结果的反馈,就需要对用户的行为进行分析和解释。最初的反馈机制是显式的,类似于让用户对检索结果直接进行评价或者打分的形式,检索系统使用用户反馈的结果,例如标出的相关或者不相关的正反例子,进一步理解和扩充用户的查询需求(通过整合正例和反例内容的方式),并进行二次检索给用户更好的结果。不过虽然这样得到的反馈是比较准确的,但很少有用户愿意这样去一一标注检索结果,而且让用户对结果进行标注,实际上是降低了其使用这个检索系统的效率。所以进一步的反馈机制是隐式的,系统通过分析用户的点击日志数据等来分析什么样的查询应该和什么样的文章关联在一起,表达什么样的查询需求。这种隐式的机制不会给使用者增加额外的负担,但给系统带来的分析和挖掘任务的挑战则更大了。不过从提升用户检索效率的意义上讲,这些努力总是走在正确的方向上。这些年来,越来越多的隐式反馈形式被引入,用户行为的分析范围也得到了逐步扩大,后来的一些方法甚至引入了 eye tracking 以及这一篇的 facial expression recognition。不过我个人觉得,这样增加各种反馈形式并不是一个很本质的解决方法。引入一种新的反馈形式,做一个实验验证其有效性给 IR 带来的影响其实很微弱,这些工作的发表除了有一个花哨的题目,我想其他的亮点真的不多。他们并没有切入 IR 的核心主题,而仅仅是在做一些加法,而这些加法在实际中的效用或许并不会像他们在实验中做出的那样好。

    对于第2)个问题,解决的办法是个人化(personalization),对每一个个人的信息需求特征进行分析,以克服每个人各说各话的问题。这就需要对于每个用户的喜好进行建模。实际上这个策略往往是和上面提到的策略一起使用的。

    个人认为,IR 的本质困难在于人对信息需求的理解和计算机对信息的表示之间的鸿沟。反馈当然是跨越这个鸿沟的非常重要的方法,在自动控制里面,正是反馈的作用使得被控制系统能够被逐渐调整到接近目标状态,在 IR 里面反馈的作用也是类似的。我朦胧地觉得关于反馈的机制其实还有更多可以深入挖掘的东西,但以现在的积累和思考还远远不足以指出问题的症结所在。不过对于上面那种加法式研究的做法,我是确定得非常不喜欢的。IR 不是我的主要研究方向,不过也是很相关的一个应用领域,以后会持续关注。


    以上是有关 IR 发展的一些思考。对于 Machine Learning 的发展的一点小想法来自于昨天晚上的国际关系分析课。当时提到了文化的演变过程。我想,ML 的发展就正是这样的一个过程。对于文化的变化而言,物质层面的变化最为迅速和频繁,比如如今中国的城市建设,数年之后说不定就已经认不出那些曾经生活过得地方。制度层面的变化相对慢一些,例如封建朝代的更迭,奴隶制向封建制的转变等,往往需要数百年甚至更长的时间。而发展最慢的则是精神和思想层面上的,从汉朝开始占主导地位的儒家思想,大杂烩的文化渊源,到现在都一直深入中国人的骨髓。

    而对于 Machine Learning 的发展而言,物质层面的变化可以类比为具体方法、模型的改变和改进,这些对大厦的修补和完善每天都会有。制度层面的变化可以理解为大类方法的建立,如 kernel 方法、SVM、semi-supervised learning、graphical models 等等(了解有限,我的列举地可能不准确)。而思想和精神层面的变化则是主导整个人工智能发展的。从神经网络到专家系统、基于规则的方法,到现在统计方法大行其道数十年会有一个潮流的变革。而现在统计方法的潮流还远远未到退潮的时候,路还很广,但它的局限也在慢慢显露并被认识。更深入的研究需要更深入的认识和理解以及更大的勇气。至于统计方法之后对于人工智能的前进方向,现在还真不知道。


    最后是一点感触,big picture 对于研究的指导至关重要,对于它的理解可以引导研究走在正确的方向上。但另一方面,只谈 big picture 而没有积累,则不管怎么谈都是泛泛而不深入的。回顾之前数月的研究,我所缺乏的是对这个领域的整体把握和认识,而现在,写这些分析和理解的时候,才发现对于图景有了一些了解和思考,但是看很多细部都还觉得十分模糊而无法深入,而要达到清晰地认识这种水平,需要的正是进一步的学习、积累和思考。正如王国维所说“诗人对宇宙人生,须入乎其内,又出乎其外。入乎其内,故能写之。出乎其外,故能观之。入乎其内,故有生气。出乎其外,故有高致。”其实做研究又何尝不是一样。所以今后的数月,我将入其内而观之!
  • 相关阅读:
    关于vs2005、vs2008和vs2010项目互转的总结
    程序员
    八款JS框架介绍及比较
    ExtJS,JQuery,Dojo的小比较
    SQL触发器实例讲解
    五个最佳编程文本编辑器
    JAVA程序设计2——面向对象程序设计(上)
    JAVA程序设计3——包装类、常量池技术与单例类的实现
    JAVA程序设计1——开发环境搭建、数据类型及流程控制语句
    Web前端浏览器兼容初探【转】
  • 原文地址:https://www.cnblogs.com/alexdeblog/p/3119740.html
Copyright © 2011-2022 走看看