本文隶属于分类

互联网

广告推荐

技术交流学习或者有任何问题欢迎加群

编程技术交流群 : 154514123 爱上编程      Java技术交流群 : 6128790  Java

一、增强学习/强化学习(Reinforcement Learning

        我们总是给定一个样本x,然后给或者不给label y。之后对样本进行拟合、分类、聚类或者降维等操作。然而对于很多序列决策或者控制问题,很难有这么规则的样本。比如,四足机器人的控制问题,刚开始都不知道应该让其动那条腿,在移动过程中,也不知道怎么让机器人自动找到合适的前进方向。另外如要设计一个下象棋的AI,每走一步实际上也是一个决策过程,虽然对于简单的棋有A*的启发式方法,但在局势复杂时,仍然要让机器向后面多考虑几步后才能决定走哪一步比较好,因此需要更好的决策方法。

        对于这种控制决策问题,有这么一种解决思路。我们设计一个回报函数(reward function),如果learning agent(如上面的四足机器人、象棋AI程序)在决定一步后,获得了较好的结果,那么我们给agent一些回报(比如回报函数结果为正),得到较差的结果,那么回报函数为负。比如,四足机器人,如果他向前走了一步(接近目标),那么回报函数为正,后退为负。如果我们能够对每一步进行评价,得到相应的回报函数,那么就好办了,我们只需要找到一条回报值最大的路径(每步的回报之和最大),就认为是最佳的路径。

        增强学习(Q-learning)要解决的是这样的问题:一个能感知环境的自治agent,怎样通过学习选择能达到其目标的最优动作。agent的任务就是从这个非直接的,有延迟的回报中学习,以便后续的动作产生最大的累积效应Agent通过学习改进自身的性能并选择行为

        所谓强化学习是指从环境状态到行为映射的学习,以使系统行为从环境中获得的累积奖赏值最大。该方法不同与监督学习技术那样通过正例、反例来告知采取何种行为,而是通过试错(trial-and-error)的方法来发现最优行为策略。强化学习的目标就是学习从环境状态到行为的映射,使得智能体选择的行为能够获得环境最大的奖赏,使得外部环境对学习系统在某种意义下的评价(或整个系统的运行性能)为最佳。

        增强学习的目的就是求解马尔可夫决策过程(MDP)的最优策略,基本的解法有:动态规划法,蒙特卡罗方法,时间差分法,Q学习。

        增强学习在很多领域已经获得成功应用,比如自动直升机,机器人控制,手机网络路由,市场决策,工业控制,高效网页索引等。

        发展(AlphaGo结合了深度学习、强化学习和蒙特卡洛树搜索这三种算法):

        深度强化学习(DQN)是深度学习与强化学习的结合,就是用深度学习网络自动学习动态场景的特征,然后通过强化学习学习对应场景特征的决策动作序列。

二、增量学习(Incremental learning

 为什么需要增量学习算法?

 1)数据库中的数据是动态变化的

 2)数据量(训练样本)的变化引起重复学习

 3)应避免在海量数据的情况下重复学习

 4˜只需修改因数据变化而涉及的规则

 5)增量学习算法是数据挖掘算法走向实用化的关键问题之一

增量式算法的重要性体现在2个方面:

1)在实际的数据库中,数据量往往是逐渐增 加的,因此,在面临新的数据时,学习方法应能对训练好的系统进行某些改动,以对新数据中蕴涵的知识进行学习。

2) 对一个训练好的系统进行修改的时间代价通常低于重新训练一个系统所需的代价。

        增量式算法:就是每当新增数据时,并不需要重建所有的知识库,而是在原有知识库的基础上,仅做由于新增数据所引起的更新,这更加符合人的思维原理。

        对于传统的批量学习技术来说,如何从日益增加的新数据中得到有用信息是一个难题。随着数据规模的不断增加,对时间和空间的需求也会迅速增加,最终会导致学习的速度赶不上数据更新的速度。机器学习是一个解决此问题的有效方法。然而传统的机器学习是批量学习方式,需要在进行学习之前,准备好所有的数据。为了能满足在线学习的需求,需要抛弃以前的学习结果,重新训练和学习,这对时间和空间的需求都很高,因此,迫切需要研究增量学习方法,可以渐进的进行知识更新,且能修正和加强以前的知识,使得更新后的知识能适应新增加的数据。

        与传统的数据分类技术相比,增量学习分类技术具有显著的优越性,这主要表现在两个方面:一方面由于其无需保存历史数据,从而减少存储空间的占用;另一方面,由于其在新的训练中充分利用了历史的训练结果,从而显著地减少了后续训练的时间。增量学习技术(incremental learning technique)是一种得到广泛应用的智能化数据挖掘与知识发现技术。其思想是当样本逐步积累时,学习精度也要随之提高。

        增量学习(Incremental Learning)是指一个学习系统能不断地从新样本中学习新的知识,并能保存大部分以前已经学习到的知识。增量学习非常类似于人类自身的学习模式。因为人在成长过程中,每天学习和接收新的事物,学习是逐步进行的,而且,对已经学习到的知识,人类一般是不会遗忘的。

        随着人工智能和机器学习的发展,人们幵发了很多机器学习算法。这些算法大部分都是批量学习(Batch Learning)模式,即假设在训练之前所有训练样本一次都可以得到,学习这些样本之后,学习过程就终止了,不再学习新的知识。然而在实际应用中,训练样本通常不可能一次全部得到,而是随着时间逐步得到的,并且样本反映的信息也可能随着时间产生了变化。如果新样本到达后要重新学习全部数据,需要消耗大量时间和空间,因此批量学习的算法不能满足这种需求。只有增量学习算法可以渐进的进行知识更新,且能修正和加强以前的知识,使得更新后的知识能适应新到达的数据,而不必重新对全部数据进行学习。增量学习降低了对时间和空间的需求,更能满足实际要求。

一个增量学习算法应同时具有以下特点:

    1)可以从新数据中学习新知识;  

    2)以前已经处理过的数据不需要重复处理;

    3)每次只有一个训练观测样本被看到和学习;

    4)学习新知识的同时能保存以前学习到的大部分知识;

    5)—旦学习完成后训练观测样本被丢弃;

    6)学习系统没有关于整个训练样本的先验知识;

三、迁移学习(Transfer Learning

        在传统的机器学习的框架下,学习的任务就是在给定充分训练数据的基础上来学习一个分类模型;然后利用这个学习到的模型来对测试文档进行分类与预测。然而,我们看到机器学习算法在当前的Web挖掘研究中存在着一个关键的问题:一些新出现的领域中的大量训练数据非常难得到。我们看到Web应用领域的发展非常快速。大量新的领域不断涌现,从传统的新闻,到网页,到图片,再到博客、播客等等。传统的机器学习需要对每个领域都标定大量训练数据,这将会耗费大量的人力与物力。而没有大量的标注数据,会使得很多与学习相关研究与应用无法开展。其次,传统的机器学习假设训练数据与测试数据服从相同的数据分布。然而,在许多情况下,这种同分布假设并不满足。通常可能发生的情况如训练数据过期。这往往需要我们去重新标注大量的训练数据以满足我们训练的需要,但标注新数据是非常昂贵的,需要大量的人力与物力。从另外一个角度上看,如果我们有了大量的、在不同分布下的训练数据,完全丢弃这些数据也是非常浪费的。如何合理的利用这些数据就是迁移学习主要解决的问题。迁移学习可以从现有的数据中迁移知识,用来帮助将来的学习。迁移学习(Transfer Learning)的目标就是将从一个环境中学到的知识用来帮助新环境中的学习任务。因此,迁移学习不会像传统机器学习那样作同分布假设。举一个通俗的例子,一个会下象棋的人可以更容易的学会下围棋;一个认识桌子的人可以更加容易的认识椅子;

        在迁移学习方面的工作目前可以分为以下三个部分:同构空间下基于实例的迁移学习,同构空间下基于特征的迁移学习与异构空间下的迁移学习。基于实例的迁移学习有更强的知识迁移能力,基于特征的迁移学习具有更广泛的知识迁移能力,而异构空间的迁移具有广泛的学习与扩展能力。

        迁移学习即一种学习对另一种学习的影响,它广泛地存在于知识、技能、态度和行为规范的学习中。任何一种学习都要受到学习者已有知识经验、技能、态度等的影响,只要有学习,就有迁移。迁移是学习的继续和巩固,又是提高和深化学习的条件,学习与迁移不可分割。

        对于人工智能的发展路径,很多人可能对基于大数据的人工智能很熟悉,但其实还有基于小样本的尝试和迁移,这也是人工智能的一种路径。

        数据需求量太大正是目前人工智能的一个显著缺点。拥有大数据的人毕竟是少数,这样发展下去,拥有数据越多的人,就能做出越好的人工智能产品,反过来,因为能提供更加便捷的服务,这些人又能吸引更多的用户贡献数据。如此循环,就会形成一些“数据寡头”,进而成为“人工智能寡头”。这会带来复杂的社会问题,从技术上来讲,小样本的迁移学习提供了一个缓解问题的方案,可以让初创公司在数据较少的领域也能提供人工智能的创新服务。就像深度学习必须具备大数据,而经过学习训练后的知识又很难迁移到新的领域,这也导致了计算机学习效率不高。有网友曾开玩笑,要和alphago比拼麻将,这恰恰戳中了它的软肋。alphago要学会打麻将,必须输入新的数据从头学起!迁移学习,可以让计算机把大数据领域习得的知识和方法迁移到数据不那么多的领域,这样,计算机也可以“举一反三”“触类旁通”,而不必在每个领域都依赖大数据从头学起。

 

技术交流学习或者有任何问题欢迎加群

编程技术交流群 : 154514123 爱上编程      Java技术交流群 : 6128790  Java

广告推荐

讨论区