精华内容
下载资源
问答
  • 2018-01-01 01:33:39

    近来项目组准备把批量迁移到大数据环境下,再加上新的业务需求,需要进行一些大规模数据的加工,所以号召团队往大数据方向靠,最近我也买了几本书,网上找了一些资料学习了一下,所以想谈谈自己对这门技术的粗略了解。
    大数据技术最近的火热,主要源自于google的三篇论文,
    Google File System中文版
    Google Bigtable中文版
    Google MapReduce中文版
    这几篇文章,因为时间原因,也没有时间去全部阅读,只是大概的有所了解。
    HDFS 架构
    首先就是大数据的存储基础,HDFS。HDFS分布式的存储数据,在多个节点上备份数据,使得数据的存储成本大大降低。高容错性、适合批处理、成本低、适合大数据处理。这些都是其非常显著的优点。
    MAPREDUCE
    分布式计算引擎,通过MAP操作,将任务分为多个子任务,分配给集群,而Reduce工作将各个集群的计算结果合在一起,返回给调度者。因为期间的工作,需要多次的跟硬盘进行IO操作,所以极大的影响了效率,以至于后面出现更加优秀的SPARK计算引擎。
    现在,在面对大规模数据的时候,我们能把数据存起来,同时,我们还能够把数据进行汇总。但是,用MapReduce直接进行编程,试过的人都知道,这是一件非常痛苦的事情。而,我们已经非常习惯使用关系型数据库,使用SQL语句去操作数据。故,HIVE出现了,我们在前台写入SQL语句,HIVE自动的将其翻译成MapReduce操作,极大的砍去了开发MapRedeuce程序的冗余工作。
    这里需要提一下Hbase,很多同学分不清两者的的关系,HBase是一种NoSQL,通常被称为Hadoop Database,就是一种数据库。在非关系型数据库中,我们可以把HBase看成是Oracle,而HIVE就是SQLdevelopler。
    后来,我们用着用着,发现HIVE因为底层的原因,还是不好用,比较慢,这时候,Cloudera公司的impala就出现了。Impala没有再使用缓慢的 Hive+MapReduce批处理,而是通过使用与商用并行关系数据库中类似的分布式查询引擎(由Query Planner、Query Coordinator和Query Exec Engine三部分组成),可以直接从HDFS或HBase中用SELECT、JOIN和统计函数查询数据,从而大大降低了延迟。
    上文提到了,因为mapreduce操作,在分布式计算中,需要多次跟硬盘进行IO操作,我们就在想,有没有一种可能,在分布式计算时,尽量少的于硬盘进行IO,而是跟内存进行IO。这个时候,Spark诞生了。
    今天先写到这里,以后再写。。。

    更多相关内容
  • 谈谈我对内卷的理解

    万次阅读 2021-12-18 21:26:07
    你对内卷是如何理解

    谈谈我对内卷的理解

    “内卷”一词近年来被炒的越加火热了;

    如学历内卷,起因是疫情原因造成的就业难困局让大批量大学毕业生投入到考研大军,众多的职场人士开始为学历感到焦虑;

    再比如教育内卷,铺天盖地的营销广告,不段向孩子家长们灌输一种孩子的教育起点决定其未来的意识流,让众多的80,90后父母感到身心俱疲;

    事实上,“内卷”并不是什么新生事物,而且从古至今,从未停止过。

    早在帝王时代,“科举”出生之后,“内卷”就开始了,“春风得意马蹄疾,一日看尽长安花”,正是通过科举这条途径改变人生命运的读书士子们的真实写照。

    寒窗十载,闭门苦读,两耳不闻窗外事,只为一朝登场入室,衣锦还乡,那场面,绝不亚于今天的高考。

    说到底,造成内卷的根本原因,还是供需关系的不平衡造成的,通俗来讲叫做,狼多肉少,僧多粥少。

    洛阳为什么纸贵?因为高端的官用宣纸太稀缺了。

    爱马仕,LV,劳斯莱斯为什么不能成为大众消费品呢?因为工匠的稀缺,用料的匮乏,造价成本高,做工考究且过程费时费力而已。

    回头再看今天大家熟知的通用“内卷”,疫情的牵连,IT行业裁员浪潮引发了一大波IT人士的内卷焦虑,不管是大厂小厂,纷纷断臂求生,奋力求存,裁员实属无奈之举。

    但现象背后,却是这些年互联网的高速发展,引发的一股又一股的资本狂欢盛宴,不差钱模式的疯狂输出,让众多的年轻人投入到IT大军,分一杯行业的美羹。

    随着资本热退去,行业上冲乏力,劲头不再坚挺,加上疫情对整个经济基本面冲击,各行各业业务线、业务量收紧,整体岗位存量呈递减之势,而且是断崖式缩减。

    当行业裁员之势无法抵挡时,IT从业人员因内卷的焦虑也开始升温,卷到谁,谁倒霉,这种口号听到了多次,可见供需不平衡引发的级联效应绝对是地震级的。

    如何应对“内卷”焦虑呢?个人认为,可以从下面三方面做好自身的储备:

    1. 针对和技术有较多关联性的行业,加速自身技能学习,夯实现有的技能水平,并设法拔高到一个超越大多数人的水平,这个“大多数”可以参考二八定理;
    2. 非技术强关联性行业,考虑拓展一门与自身行业相关的能甩开同行的,且未来3~5年可能热门的兴趣,并持续经营,长期学习,定期输出卓有成效的学习内容;
    3. 在做到前两点的基础上,如果还有一定的精力富裕,考虑经营一个平台的账号,通过这个账号的内容运营为自己赚取一些流量,一些粉丝,要知道,人人都是
      自媒体的时代,把想办法把自己变成优质的流量入口,是一件有意义且值得长期投资的事情,有了流量,即为未来的变现提供了一种可能。
    展开全文
  • 当时只在意那些公式、理论,应付考试,甚至不知道书中讲述了两门学科的知识:数理统计学、概率论,更不明白二者之间有何关系,直到最近拜读了陈希孺先生的《数理统计学教程》,这才开始有一些理解,于是打算先将自己...

          作为一名非统计学科班出身的同学,之前只学习过浙大《概率论与数理统计》一书,当时只在意那些公式、理论,应付考试,甚至不知道书中讲述了两门学科的知识:数理统计学、概率论,更不明白二者之间有何关系,直到最近拜读了陈希孺先生的《数理统计学教程》,这才开始有一些理解,于是打算先将自己的一些理解记录下来,待日后理解加深之时,再回来修改。

          什么是数理统计学

          我们知道,数理统计学是要去研究数据的(当数据量达到一定程度,就又出现了大数据这样一个方向),那么它研究的数据有何不同呢?答案是数据必须带有随机性,这是它不同于其它数据处理方法的根本区别。数理统计学所研究数据的随机性主要源自于两点,一是受限于一些因素,我们无法获取对象总体,一般只能选择一定样本,样本的选择就带有随机性;二是我们研究过程中的一些随机误差,比如一些未加考虑、无法控制、未知的因素,这二者就造成了数据的随机性。基于这一点,可以对数理统计学做如下认识:数理统计学是数学到的一个分支,其任务是研究如何用有效的方法去收集、使用带有随机性影响的数据。

           这里提到了两点,有效的收集数据有效的使用数据,如何去理解呢?

           有效的收集数据

           怎样的数据收集方式才能称之为有效的呢?我们可以从两个方面来衡量,一是收集的数据可以建立一个在数学上能处理、且尽可能简单的模型,用以描述这些收集到的数据;二是收集的数据中应包含尽可能多的、与所研究问题相关的信息。

           关于第一点,我是这样理解的(这里先提到了后面的一些概念)。我们一般会在一些假设前提下去建立一个数学模型来描述收集到的数据,但如果收集的数据分布毫无一定规律可言,就很难去建立这样一个数学模型,即使是我们花了九牛二虎之力建立了一个数学模型,那也不是一件值得高兴的事情,因为我们花费了巨大的精力,更可怕的是我们建立的模型只能描述这一批样本,换一批样本可能就不适合用我们建立的模型来描述了(这种情况可以称之为过拟合,最极端的情况就是用样本本身去描述样本)。此时我们就可以考虑一下我们收集的数据是不是有效的。

           关于第二点,则比较好理解,但是实际做起来则比较难。假如我们要分析一下某个地区居民的收入情况,而该地区有一片富人区,那么我肯定不能大量在富人区内选择样本,那么该如果抽取样本呢?另外一个例子,在产品质量与反应温度、压力的关系中,若考虑温度t_{1}t_{2}之间,压力p_{1}p_{2}之间,那么取多少个样点好呢?前一个例子中的问题涉及到了数理统计学中的抽样理论,后一个例子中的问题则涉及到数理统计学中的实验设计。总之来说,在收集数据时,一定要围绕待解决的问题进行,充分掌握研究对象的一些特性、规律。   

           有效的使用数据

            收集数据,目的是对其进行研究,然后得到一些结论,这种“结论”在数理统计中称为“推断”,这个过程涉及到很多数学问题,需要建立一定的数学模型,并给定某些准则,才有可能去评价和比较种种统计推断方法的优劣,这整个过程都成为使用数据的过程,但是如何评判是否是有效的使用?我想,还是得依据最终的结论是否与实际情况是否吻合来判断,尽管这必须在数据使用之后才能知道,但是我们在使用数据过程中提出的假设条件、建立的数学模型、判定准则、推断等应该是有依据的,是合理,这样不失称为有效的使用数据。

            以上的陈述确实不怎么具体,但是使用数据的过程包含多个步骤,针对不同背景、不同目的,数据也有不同的使用方法,因此也难以提出一个统一的评判标准。

            数理统计学与概率论间的联系

            数理统计学所研究的数据是带有随机性的,而随机性的研究正好是概率论的一大核心,这不可避免的将数理统计与概率论联系再一起。前面提到,收集到数据后,为了做出统计推断,是需要建立一个数学数据模型的,这个模型一般就是数据的概率分布,而概率分布就是概率论的研究内容,因此说,概率论是数理统计的理论基础,数理统计是概率论的一种应用

            举个例子,正态分布是概率论中的一种分布模型,概率论研究的是正态分布的数学性质,比如模型中参数(u,\sigma ^{2})对该模型的稳定、衰减性的影响等,但是在数理统计中,我们关心的是u,\sigma ^{2}表示的含义,比如女性的身高服从正态分布,那么u表示的就是平均身高,\sigma ^{2}可能表示的是父母身高、生活水平等对影响因素。

            数理统计学不以任何一种专门领域为研究对象,不论问题是物理学、化学、生物学、经济学还是工程计数方面的,只要在安排实验个处理数据过程中涉及一些一般性、共同的数学问题,都可以用到统计方法。这就要求我们解决一个统计问题是,不仅要掌握一定的概率论知识,而且还要对问题所涉及的领域知识有一定了解,这样才能得到尽可能可靠的结论。

           数理统计学中一些重要基本概念理解

           样本分布:样本是随机变量,其不会绝对地以某种结果出现。样本的任何一种结果出现都是带有一定概率的,这种概率分布就称为样本分布。样本是受随机性影响的,但是这种影响的具体方式如何,取决于观察指标的性质、观察手段和方法等,但所有的这些影响都可以总结到样本分布中去。

           总体分布:从概念上来讲,总体分布应该指的是对象总体的分布,但是实际中由于各种原因,我们很难、也没有必要去获取总体,因此可以将总体分布定义为样本大小为1时的样本分布。为什么定义成样本大小为1时的样本分布呢?这个问题我也不确定自己是否明白,这里只说些自己的理解。当抽取n个样本时,我们经常假设n个样本之间是独立,由于随机性的存在,但实际上这个假设不一定成立,但是当抽取一个样本时,其分布肯定是独立的,在一定的概率下,其分布能呈现总体中任何一种情况。

           统计模型:统计模型即所抽样本的分布,也即是样本分布,也成为概率模型,例如常见的指数模型、正态模型等。统计模型只取决于样本,是针对确定的样本而言的,在明确了样本的抽取方式、假定了一定提前条件后,获取到了样本,就能确定统计模型。由于随机性,样本分布不止一种,而是一个分布族,因此也可以说统计模型是样本分布族,这样定义的意义在于:样本分布族,连同其参数空间,从总的方面给出了问题的范围,分布族越小,确定的程度就越高,一般更容易做出可靠的结论

           总之,统计模型就是样本的分布,而不管抽样的目的是什么,这里也说明了很多领域的统计问题都可以抽样出来,得到统一的数学模型,再依据样本得到推断结果,然后回到具体的领域去解读这些推断结果。 

           统计量:凡是由样本计算出的量都成为统计量,或者说,统计量即是样本的函数。我们在选用统计量时,最好是要保证统计量集中反应了与问题相关的信息。

           抽样分布:由于统计量是从样本得到,因此统计量也是有其概率分布的,统计量的分布称为抽样分布。我们所做的推断是由样本得到,而样本具有随机性,因此我们得到的结果也具有随机性。一个整体上看来较好的推断方法也可能得到不好的结果,反之亦然。因此我们只能在整体上对一个推断方法的优良性进行评判,这就取决于统计量的抽样分布。总之,想要了解一种特定的统计推断方法的整体性能,就必须确定其抽样分布。例如,对正态分布,我们用样本均值\bar{X}去估计其均值u,那么\bar{X}与u的偏差超过一定限度的可能性有多大,就可以用概率P(|\bar{X}-u |>c)表示,此时我们就要求出\bar{X}的抽样分布。

           

           最后,再来具体一点说明数理统计学的任务。R.A.Fisher把数理统计学的任务概括为3条:

          1.“specification”,即确定统计模型(即样本分布)

          2.“estimation”,即估计,用样本估计模型中的未知参数

          3.“sampling distribution”,即抽样分布。

           

           

         

          

    展开全文
  • 深度学习解决机器阅读理解任务的研究进展

    万次阅读 多人点赞 2016-10-16 19:05:36
    本文是对深度学习在机器阅读理解领域最近进展的综述文章。

    /* 版权声明:可以任意转载,转载时请标明文章原始出处和作者信息 .*/

                                           author: 张俊林



    关于阅读理解,相信大家都不陌生,我们接受的传统语文教育中阅读理解是非常常规的考试内容,一般形式就是给你一篇文章,然后针对这些文章提出一些问题,学生回答这些问题来证明自己确实理解了文章所要传达的主旨内容,理解地越透彻,学生越能考出好的成绩。


    如果有一天机器能够做类似于我们人类做阅读理解任务,那会发生什么呢?很明显教会机器学会阅读理解是自然语言处理(NLP)中的核心任务之一。如果哪一天机器真能具备相当高水准的阅读理解能力,那么很多应用便会体现出真正的智能。比如搜索引擎会在真正理解文章内容基础上去回答用户的问题,而不是目前这种以关键词匹配的方式去响应用户,这对于搜索引擎来说应该是个技术革命,其技术革新对产品带来的巨大变化,远非在关键词匹配之上加上链接分析这种技术进化所能比拟的。而众所周知,谷歌其实就是依赖链接分析技术起家的,所以如果机器阅读理解技术能够实用化,对搜索引擎领域带来的巨变很可能是颠覆性的。对话机器人如果换个角度看的话,其实也可以看做是一种特殊的阅读理解问题,其他很多领域也是如此,所以机器阅读理解是个非常值得关注的技术方向。


    深度学习近年来在NLP中广泛使用,在机器阅读理解领域也是如此,深度学习技术的引入使得机器阅读理解能力在最近一年内有了大幅提高,本文对深度学习在机器阅读理解领域的技术应用及其进展进行了归纳梳理。

    什么是机器阅读理解

    机器阅读理解其实和人阅读理解面临的问题是类似的,不过为了降低任务难度,很多目前研究的机器阅读理解都将世界知识排除在外,采用人工构造的比较简单的数据集,以及回答一些相对简单的问题。给定需要机器理解的文章以及对应的问题,比较常见的任务形式包括人工合成问答、Cloze-style queries和选择题等方式。


    人工合成问答是由人工构造的由若干简单事实形成的文章以及给出对应问题,要求机器阅读理解文章内容并作出一定的推理,从而得出正确答案,正确答案往往是文章中的某个关键词或者实体。比如图1展示了人工合成阅读理解任务的示例。图1示例中前四句陈述句是人工合成的文章内容,Q是问题,而A是标准答案。


         图1. 人工合成阅读理解任务示例

    Cloze-style queries是类似于“完形填空”的任务,就是让计算机阅读并理解一篇文章内容后,对机器发出问题,问题往往是抽掉某个单词或者实体词的一个句子,而机器回答问题的过程就是将问题句子中被抽掉的单词或者实体词预测补全出来,一般要求这个被抽掉的单词或者实体词是在文章中出现过的。图2展示了完形填空式阅读理解任务的示例。图中表明了文章内容、问题及其对应的答案。这个例子是将真实的新闻数据中的实体词比如人名、地名等隐去,用实体标记符号替换掉实体词具体名称,问题中一般包含个占位符placeholder,这个占位符代表文章中的某个实体标记,机器阅读理解就是在文章中找出能够回答问题的某个真实答案的实体标记。目前的各种阅读理解任务中“完形填空式”任务是最常见的类型。


      

    图2.完形填空式阅读理解

    还有一种任务类型是选择题,就是阅读完一篇文章后,给出问题,正确答案是从几个选项中选择出来的,典型的任务比如托福的听力测试,目前也有研究使用机器来回答托福的听力测试,这本质上也是一种阅读理解任务。

    图3.托福听力测试题示例

    如果形式化地对阅读理解任务和数据集进行描述的话,可以将该任务看作是四元组:


    其中,D代表一篇文章,Q代表针对文章内容提出的一个问题,A是问题的正确答案候选集合,而a代表正确答案。对于选择题类型来说,就是明确提供的答案候选集合而是其中的正确选项。对于人工合成任务以及完形填空任务来说,一般要求:

    也就是说,要求候选答案是在文章中出现过的词汇或者实体词。

    深度学习技术进展

    本节内容对目前机器阅读理解领域中出现的技术方案进行归纳梳理,正像本文标题所述,我们只对深度学习相关的技术方案进行分析,传统技术方案不在讨论之列。

    1 文章和问题的表示方法

    用神经网络处理机器阅读理解问题,首先面临的问题就是如何表示文章和问题这两个最重要的研究对象。我们可以从现有机器阅读理解相关文献中归纳总结出常用的表示方法,当然这些表示方法不仅仅局限于阅读理解问题,也经常见于NLP其他子领域中。

    图4.文档表示方法:模型一


    首先,对于机器阅读理解中的文章来说,有两种常见的文章内容表达方式。最常见的一种即是将一篇文章看成有序的单词流序列(参考图4的模型一,图中每个圆即代表某个单词的神经网络语义表达,图中的BiRNN代表双向RNN模型),在这个有序序列上使用RNN来对文章进行建模表达,每个单词对应RNN序列中的一个时间步t的输入,RNN的隐层状态代表融合了本身词义以及其上下文语义的语言编码。这种表示方法并不对文章整体语义进行编码,而是对每个单词及其上下文语义进行编码,在实际使用的时候是使用每个单词的RNN隐层状态来进行相关计算。至于具体的RNN模型,常见的有标准RNN、LSTM、GRU及其对应的双向版本等。对于机器阅读理解来说双向RNN是最常用的表示方法,一般每个单词的语义表示由正向RNN隐层状态和反向RNN隐层状态拼接来表示,即:

    模型一往往在机器阅读理解系统的原始输入部分对文章进行表征,因为对于很多阅读理解任务来说,本质上是从文章中推导出某个概率最大的单词作为问题的答案,所以对文章以单词的形式来表征非常自然。


    另外一种常见的文章内容表达方式则是从每个单词的语义表达推导出文章整体的Document Embedding表达,这种形式往往是在对问题和文章进行推理的内部过程中使用的表达方式。典型的表达过程如图5所示的模型二所示。


    图5. 文档表示方法:模型二

    模型二的含义是:首先类似于模型一,用双向RNN来对每个单词及其上下文进行语义表征,形成隐层状态表示,然后对于向量的每一维数值,乘以某个系数,这个系数代表了单词对于整个文章最终语义表达的重要程度,将每个单词的系数调整后的隐层状态累加即可得到文章的Word Embedding语义表达。而每个单词的权重系数通常用Attention计算机制来计算获得,也有不使用权重系数直接累加的方式,这等价于每个单词的权重系数都是1的情形,所以可以看作加权平均方法的特殊版本。以公式表达的话,文章的语义表达公式如下:


    对于机器阅读理解中的问题来说,有三种常见的语义表达方式。如果将查询看作一种特殊的文章的话,很明显文章的语义表达方式同样可以用来表征问题的语义,也就是类似于文档表示方法的模型一和模型二。问题的表示方法模型一如图6所示,模型二如图7所示,其代表的含义与文章表征方式相似,所以此处不赘述。


    图6.问题表示方式:模型一


    图7.问题表示方法:模型二

    问题表示方法的另外一种表示如图8所示,我们可以称之为模型三。

    图8.问题表示方法:模型三

    模型三也是在模型一的基础之上的改进模型,也是NLP任务中表达句子语义的最常见的表达方式。首先类似于模型一,使用双向RNN来表征每个单词及其上下文的语义信息。对于正向RNN来说,其尾部单词(句尾词)RNN隐层节点代表了融合了整个句子语义的信息;而反向RNN的尾部单词(句首词)则逆向融合了整个句子的语义信息,将这两个时刻RNN节点的隐层状态拼接起来则可以表征问题的整体语义:


    理论上模型三也可以用来表征文章的语义信息,但是一般不会这么用,主要原因是文章往往都比较长,RNN对于太长的内容表征能力不足,所以类似模型三的方法会存在大量的信息丢失,而“问题”一般来说都是比较短的一句话,所以用模型三表征是比较合适的。

    以上介绍的几个模型是在机器阅读理解领域里常用的表征文章和问题的表示方法。下面我们从机器阅读理解神经网络结构的角度来进行常用模型的介绍。

    2 机器阅读理解的深度学习模型

    目前机器阅读理解研究领域出现了非常多的具体模型,如果对这些模型进行技术思路梳理的话,会发现本质上大多数模型都是论文“Teaching Machines to Read and Comprehend”提出的两个基础模型”Attentive Reader”和“Impatient Reader”的变体(参考文献1),当然很多后续模型在结构上看上去有了很大的变化,但是如果仔细推敲的话会发现根源和基础思路并未发生颠覆性的改变。

    我们将主流模型技术思路进行归纳梳理以及某些技术点进行剥离组合,将其归类为“一维匹配模型”、“二维匹配模型”、“推理模型”等三类模型,其中“一维匹配模型”和“二维匹配模型”是基础模型,“推理模型”则是在基础模型上重点研究如何对文本内容进行推理的机制。当然,还有个别模型在结构上有其特殊性,所以最后会对这些模型做些简介。

    2.1 一维匹配模型

    图9. 机器阅读理解的一维匹配结构

    目前机器阅读理解任务的解决方案中,有相当多的模型可以被归类到“一维匹配模型”这种技术范型中,这类模型本质上是“Attentive Reader”的变体。我们首先介绍这种技术思路的总体流程结构,然后说明下主流方法在这个框架下的一些区别。


    图9所示是“一维匹配模型”的技术流程示意图:首先,对文章内容使用“文章表示方法:模型一”的方式对文章语义内容进行编码,对于问题来说,则一般会使用“问题表示方法:模型三”的方式对问题进行语义编码,即使用双向RNN的头尾部节点RNN隐层状态拼接作为问题的语义表示。然后,通过某种匹配函数来计算文章中每个单词Di(编码中包括单词语义及其上下文单词的语义)语义和问题Q整体语义的匹配程度,从含义上可以理解为F是计算某个单词Di是问题Q的答案的可能性映射函数。接下来,对每个单词的匹配函数值通过SoftMax函数进行归一化,整个过程可以理解为Attention操作,意即凸显出哪些单词是问题答案的可能性。最后,因为一篇文章中,某个单词可能在多处出现,而在不同位置出现的同一个单词都会有相应的Attention计算结果,这代表了单词在其具体上下文中是问题答案的概率,将相同单词的Attention计算出的概率值进行累加,即可作为该单词是问题Q答案的可能性,选择可能性最大的那个单词作为问题的答案输出。在最后相同单词概率值累加这一步,一般容易质疑其方式:如果这样,那么意味着这个方法隐含一个假设,即出现次数越多的单词越可能成为问题的答案,这样是否合理呢?实验数据表明,这个假设基本是成立的,所以这种累加的方式目前是非常主流的技术方案,后文所述的AS Reader和GA Reader采取了这种累加模式,而Stanford AR和Attentive Reader则采取非累加的模式。之所以将这个结构称为“一维匹配模型”,主要是其在计算问题Q和文章中单词序列的匹配过程形成了一维线性结构。


    上述内容是“一维匹配模型”的基本思路,很多主流的模型基本都符合上述架构,模型之间的最大区别主要是匹配函数的定义不同。具体而言,“Attention Sum Reader”,(后文简称AS Reader,参考文献2)、“Stanford Attentive Reader”(后文简称 Stanford AR,参考文献3)、“Gated-Attention Reader”(后文简称GA Reader,参考文献4)、“Attentive Reader”(参考文献1)、AMRNN(参考文献5)等模型都基本遵循这个网络结构。


    AS Reader可以看作是一维匹配结构的典型示例,其匹配函数定义为Di和Q向量的点积:


    Attentive Reader是最早提出的模型之一,所以在整体结构上和一维匹配结构有些差异,模型性能相对差些,不过这些结构上的差异点并非性能差异的关键,而匹配函数能够解释其和效果好的模型性能差异的主要原因,其采用了前向神经网络的形式:

    Stanford AR的匹配函数则采用了双线性(Bilinear)函数:

    这里需要说明的是,Stanford AR的效果已经是目前所有机器阅读理解模型中性能最好的之一,同时其一维匹配模型相对简单,且没有采用深层的推理机制,所以这个模型是值得关注的。而其相对Attentive Reader来说,对提升性能最主要的区别就在于采用了双线性函数,而这个改变对性能提升带来了极大的帮助;相对AS Reader来说,其性能也有明显提升,很明显双线性函数在其中起了主要作用。由此可见,目前的实验结果支持双线性函数效果明显优于很多其它匹配模型的结论。


    AMRNN是用来让机器做TOFEL听力题的阅读理解系统采用的技术方案,类似于GA Reader的整体结构,其是由一维匹配模型加深层网络组合而成的方案,同样的,深层网络是为了进行推理,如果摘除深层网络结构,其结构与AS Reader也是基本同构的。其采用的匹配函数则使用Di和Q的Cosine相似性,类似于AS Reader向量点积的思路。AMRNN解决的是选择题而非完形填空任务,所以在输出阶段不是预测文中哪个单词或实体是问题的答案,而是对几个候选答案选项进行评估,从中选择正确答案。


    由上述模型对比可以看出,一维匹配模型是个结构简洁效果整体而言也不错的模型范式,目前相当多的具体模型可以映射到这个范式中,而其中的关键点在于匹配函数如何设计,这一点是导致具体模型性能差异的相当重要的影响因素。可以预见,后续的研究中必然会把重心放在如何改进设计出更好地匹配函数中来。

    2.2 二维匹配模型

    图10. 机器阅读理解的二维匹配结构

    顾名思义,“二维匹配模型”是相对“一维匹配模型”而言的,其最初的思想其实体现在”Impatient Reader”的思路中。图10是机器阅读理解中二维匹配模型的整体流程示意图,从中可以看出,其整体结构与一维匹配模型是类似的,最主要的区别体现在如何计算文章和问题的匹配这个层面上。与一维匹配模型不同的是:二维匹配模型的问题表征方式采用“问题表示方法:模型一”,就是说不是将问题的语义表达为一个整体,而是问题中的每个单词都单独用Word Embedding向量来表示。这样,假设文档长度为||D||,问题长度为||Q||,那么在计算问题和文章匹配的步骤中,就形成了||D||*||Q||的二维矩阵,就是说文章中任意单词Di和问题中的任意单词Qj都应用匹配函数来形成矩阵的位置的值。


    当二维矩阵的值根据匹配函数填充完毕后,就可以考虑进行Attention计算。因为是二维矩阵,所以可以有很多种不同的Attention计算机制。比如可以如图11这样按照二维矩阵的行来进行Attention计算,因为矩阵的一行代表文档中某个单词Di相对问题中每个单词Qj(1<j<||Q||)的匹配程度向量,按行计算Attention表达的是文档单词Di和问题中各个单词的语义相似程度。同样的,可以按照二维矩阵的列来进行Attention计算(如图12所示),因为矩阵的一列代表问题中某个单词Qi相对文档序列中每个单词Dj(1<j<||D||)的匹配程度向量,按列计算Attention表达的是问题单词Qi和文档序列中各个单词的语义相似程度

    图11.二维结构按行进行Attention


    图12. 二维结构按列进行Attention

    Consensus Attention 模型(后文简称CA Reader,参考文献6)、Attention-over-Attention模型(后文简称AOA Reader,参考文献7)和Match-LSTM模型(参考文献8)基本都符合二维匹配结构的范式,其主要区别在于Attention计算机制的差异上。CA Reader按照列的方式进行Attention计算,然后对每一行文档单词对应的针对问题中每个单词的Attention向量,采取一些启发规则的方式比如取行向量中最大值或者平均值等方式获得文档每个单词对应的概率值。AOA Reader则对CA Reader进行了改进,同时结合了按照列和按照行的方式进行Attention计算,核心思想是把启发规则改为由按行计算的Attention值转换成的系数,然后用对按列计算出的Attention加权平均的计算方式获得文档每个单词对应的概率值。Match-LSTM模型则是按行进行Attention计算,同样地把这些Attention值转换成列的系数,不过与AOA不同的是,这些系数用来和问题中每个单词的Word Embedding相乘并对Word Embedding向量加权求和,拟合出整个问题的综合语义Word Embedding(类似于“问题表示方法:模型二”思路),并和文章中每个单词的Word Embedding进行合并,构造出另外一个LSTM结构,在这个LSTM结构基础上去预测哪个或者那些单词应该是正确答案。


    由于二维匹配模型将问题由整体表达语义的一维结构转换成为按照问题中每个单词及其上下文的语义的二维结构,明确引入了更多细节信息,所以整体而言模型效果要稍优于一维匹配模型。


    从上面的具体模型介绍可以看出,目前二维匹配模型相关工作还不多,而且都集中在二维结构的Attention计算机制上,由于模型的复杂性比较高,还有很多很明显的值得改进的思路可以引入。最直观的改进就是探索新的匹配函数,比如可以摸索双线性函数在二维结构下的效果等;再比如可以引入多层网络结构,这样将推理模型加入到阅读理解解决方案中等。可以预见,类似的思路很快会被探索。

    2.3 机器阅读理解中的推理过程

    人在理解阅读文章内容的时候,推理过程几乎是无处不在的,没有推理几乎可以断定人是无法完全理解内容的,对于机器也是如此。比如对于图1中所展示的人工合成任务的例子,所提的问题是问苹果在什么地方,而文章表达内容中,刚开始苹果在厨房,Sam将其拿到了卧室,所以不做推理的话,很可能会得出“苹果在厨房”的错误结论。


    乍一看“推理过程”是个很玄妙而且说不太清楚的过程,因为自然语言文本不像一阶逻辑那样,已经明确地定义出符号以及表达出符号之间的逻辑关系,可以在明确的符号及其关系上进行推理,自然语言表达有相当大的模糊性,所以其推理过程一直是很难处理好的问题。


    现有的工作中,记忆网络(Memory Networks,参考文献9)、GA Reader、Iterative Alternating神经网络(后文简称IA Reader,参考文献10)以及AMRNN都直接在网络结构中体现了这种推理策略。一般而言,机器阅读理解过程网络结构中的深层网络都是为了进行文本推理而设计的,就是说,通过加深网络层数来模拟不断增加的推理步骤。

    图13. 记忆网络的推理过程

    记忆网络是最早提出推理过程的模型,对后续其它模型有重要的影响。对于记忆网络模型来说,其第一层网络的推理过程(Layer-Wise RNN模式)如下(参考图13):首先根据原始问题的Word Embedding表达方式以及文档的原始表达,通过f函数计算文档单词的Attention概率,然后g函数利用文章原始表达和Attention信息,计算文档新的表达方式,这里一般g函数是加权求和函数。而t函数则根据文档新的表达方式以及原始问题表达方式,推理出问题和文档最终的新表达方式,这里t函数实际上就是通过两者Word Embedding的逐位相加实现的。t函数的输出更新下一层网络问题的表达方式。这样就通过隐式地内部更新文档和显示地更新问题的表达方式实现了一次推理过程,后续每层网络推理过程就是反复重复这个过程,通过多层网络,就实现了不断通过推理更改文档和问题的表达方式。

    图14. AMRNN的推理过程

    AMRNN模型的推理过程明显受到了记忆网络的影响,图14通过摒除论文中与记忆网络不同的表面表述方式,抽象出了其推理过程,可以看出,其基本结构与记忆网络的Layer-Wise RNN模式是完全相同的,唯一的区别是:记忆网络在拟合文档或者问题表示的时候是通过单词的Word Embedding简单叠加的方式,而AMRNN则是采用了RNN结构来推导文章和问题的表示。所以AMRNN模型可以近似理解为AS Reader的基础网络结构加上记忆网络的推理过程。

    图15.GA Reader的推理过程

    GA Reader的推理过程相对简洁,其示意图如图15所示。它的第一层网络推理过程如下:其每层推理网络的问题表达都是原始问题表达方式,在推理过程中不变。而f函数结合原始问题表达和文档表达来更新文档表达到新的形式,具体而言,f函数就是上文所述的被称为Gated-Attention模型的匹配函数,其计算过程为Di和Q两个向量对应维度数值逐位相乘,这样形成新的文档表达。其它层的推理过程与此相同。




    图16. IA Reader的推理过程

    IA Reader的推理结构相对复杂,其不同网络层是由RNN串接起来的,图16中展示了从第i层神经网络到第i+1层神经网络的推理过程,其中虚线部分是RNN的组织结构,每一层RNN结构是由新的文档表达和问题表达作为RNN的输入数据。其推理过程如下:对于第i层网络来说,首先根据RNN输入信息,就是第i层的文档表达和问题表达,更新隐层状态信息;然后f函数根据更新后的隐层状态信息以及原始的问题表达,计算问题中词汇的新的attention信息;g函数根据新的attention信息更新原始问题的表达形式,形成第i+1层网络的新的问题表达,g函数一般采取加权求和的计算方式;在获得了第i+1层新的问题表达后,t函数根据第i层RNN隐层神经元信息以及第i+1层网络新的问题表达形式,更新原始文档表达形成第i+1层文档的新表达形式。这样,第i+1层的问题表达和文档表达都获得了更新,完成了一次推理过程。后面的推理过程都遵循如此步骤来完成多步推理。


    从上述推理机制可以看出,尽管不同模型都有差异,但是其中也有很多共性的部分。一种常见的推理策略往往是通过多轮迭代,不断更新注意力模型的注意焦点来更新问题和文档的Document Embedding表达方式,即通过注意力的不断转换来实现所谓的“推理过程”。


    推理过程对于有一定难度的问题来说具有很明显的帮助作用,对于简单问题则作用不明显。当然,这与数据集难度有一定关系,比如研究证明(参考文献10),CNN数据集整体偏容易,所以正确回答问题不需要复杂的推理步骤也能做得很好。而在CBT数据集上,加上推理过程和不加推理过程进行效果对比,在评价指标上会增加2.5%到5%个绝对百分点的提升。

    2.4 其它模型

    上文对目前主流的技术思路进行了归纳及抽象并进行了技术归类,除了上述的三种技术思路外,还有一些比较重要的工作在模型思路上不能归于上述分类中,本节对这些模型进行简述,具体模型主要包括EpiReader(参考文献11)和动态实体表示模型(Dynamic Entity Representation,后文简称DER模型,参考文献12)。


    EpiReader是目前机器阅读理解模型中效果最好的模型之一,其思路相当于使用AS Reader的模型先提供若干候选答案,然后再对候选答案用假设检验的验证方式再次确认来获得正确答案。假设检验采用了将候选答案替换掉问题中的PlaceHolder占位符,即假设某个候选答案就是正确答案,形成完整的问题句子,然后通过判断问题句和文章中每个句子多大程度上是语义蕴含(Entailment)的关系来做综合判断,找出经过检验最合理的候选答案作为正确答案。这从技术思路上其实是采用了多模型融合的思路,本质上和多Reader进行模型Ensemble起到了异曲同工的作用,可以将其归为多模型Ensemble的集成方案,但是其假设检验过程模型相对复杂,而效果相比模型集成来说也不占优势,实际使用中其实不如直接采取某个模型Ensemble的方案更实用。


    DER模型在阅读理解时,首先将文章中同一实体在文章中不同的出现位置标记出来,每个位置提取这一实体及其一定窗口大小对应的上下文内容,用双向RNN对这段信息进行编码,每个位置的包含这个实体的片段都编码完成后,根据这些编码信息与问题的相似性计算这个实体不同语言片段的Attention信息,并根据Attention信息综合出整篇文章中这个实体不同上下文的总的表示,然后根据这个表示和问题的语义相近程度选出最可能是答案的那个实体。DER模型尽管看上去和一维匹配模型差异很大,其实两者并没有本质区别,一维匹配模型在最后步骤相同单词的Attention概率合并过程其实和DER的做法是类似的。

    3 问题与展望

    用深度学习解决机器阅读理解问题探索历史时间并不长,经过最近一年的探索,应该说很多模型相对最初的技术方案来说,在性能提升方面进展明显,在很多数据集上性能都有大幅度的提高,甚至在一些数据集(bAbi,CNN,Daily Mail等)性能已经达到性能上限。但是总体而言,这距离让机器像人一样能够理解文本并回答问题还有非常遥远的距离。最后我们对这个研究领域目前面临的问题进行简述并对一些发展趋势进行展望。

    1. 需要构建更具备难度的大规模阅读理解数据集

    手工构建大规模的阅读理解训练数据需要花费极大成本,因此目前的不少数据集都存在一定问题。某些数据集比如MCTest经过人的精心构建,但是规模过小,很难用来有效训练复杂模型。另外一类是采用一定的启发规则自动构建的数据集,这类数据集数据规模可以做得足够大,但是很多数据集失之于太过简单。不少实验以及对应的数据分析结果证明常用的大规模数据集比如CNN和Daily Mail 相对简单,正确回答问题所需要的上下文很短(5个单词窗口大小范围)(参考文献3),只要采取相对简单的模型就可以达到较好的性能,复杂技术发挥不出优势,这从某种角度说明数据集难度偏小,这也极大限制了新技术的探索。


    为了能够促进领域技术的进一步快速发展,需要一些大规模的人工构建的阅读理解数据集合,这样既能满足规模要求,又能具备相当难度。类似SQuAD数据集(参考文献13)这种采用众包的方式制作数据集合是个比较有前途的方向,也期待更多高质量的数据集尤其是更多中文数据集的出现(哈工大在16年7月份公布了第一份中文阅读理解数据集)。

    2. 神经网络模型偏单一

    从上述相关工作介绍可以看出,目前在机器阅读理解任务中,解决方案的神经网络结构还比较单一,后续需要探索更多种多样的新型网络结构及新式模型,以促进这个研究领域的快速发展。

    3. 二维匹配模型需要做更深入的探索

    二维匹配模型由于引入了更多的细节信息,所以在模型性能上具备一定优势。但是目前相关的工作还不多,而且大多集中在Attention机制的改造上。这个模型需要做更多的探索,比如匹配函数的创新、多层推理机制的引入等,我相信短期内在这块会有很多新技术会被提出。

    4. 世界知识(World Knowledge)的引入

    对于人来说,如果需要真正理解一篇新的文章,除了文章本身提供的上下文外,往往需要结合世界知识,也就是一些常识或者文章相关的背景知识,才能真正理解内容。目前机器阅读理解任务为了降低任务难度,往往将世界知识排除在任务之外,使得阅读理解任务更单纯,这在该领域研究初期毫无疑问是正确的思路,但是随着技术发展越来越完善,会逐渐引入世界知识来增强阅读理解任务的难度,也和人类的阅读理解过程越来越相似。

    5. 发展更为完善的推理机制

    在阅读一篇文章后,为了能够回答复杂的问题,设计合理的推理机制是阅读理解能力进行突破的关键技术,如上文所述,目前的推理机制大多数还是采用注意力焦点转移的机制来实现,随着复杂数据集的逐渐出现,推理机制会在阅读理解中起到越来越重要的作用,而今后需要提出更加丰富的推理机制。

    参考文献

    [1] Karl Moritz Hermann, Tomas Kocisky, Edward Grefenstette, Lasse Espeholt, Will Kay, Mustafa Suleyman,and Phil Blunsom. 2015. Teaching machines to read and comprehend. In Proc. of NIPS, pages 1684–1692.

    [2] Rudolf Kadlec, Martin Schmid, Ondrej Bajgar, andJan Kleindienst. 2016. Text understanding with the attention sum reader network. tarXiv:1603.01547.

    [3] Danqi Chen, Jason Bolton, and Christopher D. Manning.2016. A thorough examination of the cnn / daily mail reading comprehension task. In Proc. of ACL.

    [4] Bhuwan Dhingra, Hanxiao Liu, William W Cohen, and Ruslan Salakhutdinov. 2016. Gated-attention readers for text comprehension. arXiv preprint arXiv:1606.01549

    [5] Bo-Hsiang Tseng, Sheng-Syun Shen, Hung-Yi Lee and Lin-Shan Lee,2016. Towards Machine Comprehension of Spoken Content:Initial TOEFL Listening Comprehension Test by Machine. arXiv preprint arXiv: 1608.06378

    [6] Yiming Cui, Ting Liu, Zhipeng Chen, Shijin Wang, and Guoping Hu. 2016. Consensus attention-based neural networks for chinese reading comprehension. arXiv preprint arXiv:1607.02250.

    [7] Yiming Cui, Zhipeng Chen, Si Wei, Shijin Wang, Ting Liu and Guoping Hu.2016. Attention-over-Attention Neural Networks for Reading Comprehension. arXiv preprint arXiv: 1607.04423v3.

    [8] Shuohang Wang and Jing Jiang.2016. Machine Comprehension Using Match-LSTM and Answer Pointer. arXiv preprint arXiv: 1608.07905

    [9] Sainbayar Sukhbaatar, Jason Weston, Rob Fergus, et al.2015. End-to-end memory networks. In Proc. of NIPS,pages 2431–2439.

    [10] Alessandro Sordoni, Phillip Bachman, and Yoshua Bengio. 2016. Iterative alternating neural attention for machine reading. arXiv preprint arXiv:1606.02245.

    [11] Adam Trischler, Zheng Ye, Xingdi Yuan, and Kaheer Suleman. 2016. Natural language comprehension with theepireader. arXiv preprint arXiv:1606.02270

    [12] Sosuke Kobayashi, Ran Tian,Naoaki Okazaki, and Kentaro Inui. 2016. Dynamic entity representations with max-pooling improves machine reading. In NAACL-HLT.

    [13] Pranav Rajpurkar, Jian Zhang, Konstantin Lopyrev, and Percy Liang. SQuAD: 100,000+ questionsfor machine comprehension of text. In Proceedings of the Conference on Empirical Methods inNatural Language Processing, 2016





    展开全文
  • import api from './api' import axios from 'axios' var qs = require('qs') axios.defaults.withCredentials = true export const getNewsList = params => { return axios.get (config.getNewsList, {params...
  • 你如何理解软件测试?

    万次阅读 2019-03-07 22:37:30
    1、你如何理解软件测试? 软件测试属于软件开发过程的一个环节,与软件工程一起兴起于小型软件向大型软件开发额过渡期,按照中国人所说的人体是金木水火土的说法,如果用在软件工程上,那么测试就是一个对结构进行...
  • 大家好,我是 Rocky0429,一个连数据结构和算法都不会的蒟蒻… 学过数据结构和算法的都知道这玩意儿不好学,没学过的经常听到...在简单的链表、栈和队列这些我还能靠着在草稿上写写画画理解过程,但是到了数论、图...
  • CNN笔记:通俗理解卷积神经网络

    万次阅读 多人点赞 2016-07-02 22:14:50
    通俗理解卷积神经网络(cs231n与5月dl班课程笔记) 1 前言 2012年我在北京组织过8期machine learning读书会,那时“机器学习”非常火,很多人都对其抱有巨大的热情。当我2013年再次来到北京时,有...
  • 我对Android的理解

    万次阅读 多人点赞 2015-07-09 10:54:37
    前言写这篇文章是为了和大家描述下我对Android的理解,同时会讲述下我后面的技术规划,希望能够对大家有点参考价值。大家都想学好Android,那么怎么才能学好呢?这个真不好说,但是我可以和大家交流下我自己的心得,...
  • vue中 computed和watch的一些简单理解(区别)

    万次阅读 多人点赞 2019-03-19 16:51:53
    computed也就是计算属性,它可以帮助我们将在模板中的一些稍微复杂的逻辑计算放回到js代码中,方便理解与修改维护;就拿官网给的例子,如下代码片段。 <div id="example"> {{ message.split('').reverse()....
  • 图像分析、图像理解、图像处理区别

    万次阅读 多人点赞 2018-09-09 23:00:32
    图像分析则着重于构造图像的描述方法,更地是用符号表示各种图像,而不是对图像本身进行运算,并利用各种有关知识进行推理 图像理解: 图像理解(image understanding,IU)就是对图像的语义理解。它是以图像为...
  • 如何理解指数分布?

    万次阅读 多人点赞 2019-05-06 10:34:30
    老板统计了一周每日卖出的馒头(为了方便计算和讲解,缩小了数据),想从中找到一些规律: 从中可以得到最简单的规律,均值: 这个规律显然不够好,如果把营业时间抽象为一根线段,把这段时间用来表示: ...
  • 对项目的理解

    万次阅读 2017-07-25 09:55:19
    又有好久没有更新博客了,虽然我一直告诫自己,不管有忙都要找点时间来写博客。 最近主要的精力都投入到项目中,我就说说自己的一些想法吧。 1. 项目的前期是最忙的,投入最大  当拿到一个需求之后,必须快速...
  • 无法理解线性代数怎么办?

    万次阅读 多人点赞 2019-05-20 16:15:13
    无法理解线性代数的原因有很,本文主要来讲讲各大高校使用的主流教材同济大学版的《线性代数》的问题。 之前写过一篇无法理解高等数学怎么办的文章,对同济大学版的《高等数学》教材进行过一些评论,认为这本...
  • MySQL 是怎样运行的:从根儿上理解 MySQL小孩子 著12 小时 · 25 小节从根儿上理解 MySQL,让 MySQL 不再是一个黑盒小册内容小册介绍MySQL...
  • 本文目录概念引入机器阅读理解的简要介绍论文研究背景相关数据集的时间脉络问答系统的分类研究成果实验结果 概念引入 有关中文实体命名识别 逻辑回归 线性回归 时间序列分析 神经网络 self-attention与softmax的推导...
  • 教你如何理解贝叶斯公式

    万次阅读 2018-12-20 20:54:04
    上面计算的只是某一个时间发生的概率,现在计算一下件事同时发生的概率: 喝酒并且挂科的概率为 打游戏并且挂科的概率为 学习并且挂科的概率为 现在我们来计算一下当喝酒(A)时,挂科的概率  ...
  • 对ResNet的理解

    万次阅读 多人点赞 2016-11-25 16:14:42
    如果把残差网络理解成一个Ensambling系统,那么网络的一部分就相当于少一些投票的人,如果只是删除一个基本的残差单元,对最后的分类结果应该影响很小;而最后的分类错误率应该适合删除的残差单元的个数成正比的,...
  • 对IOC的相关理解总结

    万次阅读 多人点赞 2020-04-20 13:54:07
    (一)理解IoC,即“控制反转” (二)IoC具体做什么? (三)理解IoC和DI的关系 二、对IOC容器初始化的理解 四、对DI依赖注入的理解(主要是) 参考书籍、文献和资料 一、对IOC和DI的基本认识 (一)理解IoC...
  • 如何理解异构网络

    千次阅读 多人点赞 2021-03-03 16:20:51
    如何理解异构网络 网络可以分为异构网络和同构网络,如果一个网络中包含不同的操作系统或者不同的网络架构,那么称这个网络是异构网络,举个例子: 对于一台机房,一些设备是Linux系统,一些设备是Windows系统,还有...
  • 神经网络中的 “隐藏层” 理解

    万次阅读 多人点赞 2019-09-01 14:50:20
    文章目录一、概念理解二、示例理解 一、概念理解 隐藏层的定义:除输入层和输出层以外的其他各层叫做隐藏层。隐藏层不直接接受外界的信号,也不直接向外界发送信号 隐藏层在神经网络中的作用:中间的黑盒子,可以认为...
  • 线程(1)——从生活中理解什么是线程

    万次阅读 多人点赞 2011-09-22 16:39:49
    每一个程序可以包含至少一个线程,而个线程之间可以“并发”执行。  在介绍线程前先来用生活中最常见的一个小例子来理解什么是线程:  假如你去一家餐馆吃饭,那家餐馆只有一个服务员,所以这个唯一的服务员给...
  • 对项目的理解(2)

    千次阅读 2018-02-13 14:38:43
    项目是做不完的,把近期的一些想法写出来: 1. 项目初期做好每一个功能的方案 项目初期,有一个辅助功能被我忽略了,“以为”很容易实现,就没有花时间去研究,并且当它当成低优先级任务来做;到了交付前写...
  • 你对前端工程师的理解

    千次阅读 2017-04-08 11:14:11
    jquery是一个框架它能实现js的一些效果,但是它的使用学习就更加简单。 其次,前端主要负责实现视觉和交互功能,以及与后端服务器通信,完成业务逻辑。懂一些设计方面的技能和基本素养,比如P
  • 谈谈自己对教育的理解(K12)

    万次阅读 2017-07-23 11:52:29
    博主是刚刚从985高校本科毕业的应届生,作为一个已经经历过小学到高中教育,在大学期间也做过次家教,小学,初中,高中的学生都有带过的毕业生,我想还是可以谈谈自己对教育(k12)的看法的。 首先每个人都有自己...
  • 谈谈对js面向对象的理解

    千次阅读 2017-02-14 17:37:50
    感谢阮一峰的网络日志分享了面向对象的理解:... 构造函数就是一种封装,把一些对象的属性封装在函数体里面,这种函数体在加载的时候,会被预编译, var cat1 = new Cat("大毛","黄色

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,430,809
精华内容 972,323
关键字:

多一些理解