CS285课程解释_00_综述

  本文是一个综述,主要说一下写作目的、课程的主要内容、记录一下时间进度等等。

写作目的:

       机器学习和深度学习所引领的这一波人工智能的热潮好像有所降温,但是在研究领域其热度还一直在持续,特别在某些领域,例如深度强化学习,研究的热度还是处于上升趋势,因为大家其实都认识到了一个问题:复杂的控制问题很难有好的解决方式,用学习的方式去学会一种控制方式是一个不错的选择,或者说在没有太多的选择的情况下,起码它是一个选择。

       世界上的大部分问题可能都可以泛泛的称为一个决策问题,例如人每天都在做很多的决策,吃什么?去哪里?怎么去?等等;机构、部门、公司、国家都在做出决策。很多决策问题可以等同于控制问题,因为它们都是在解决一个输入和输出的问题,也就是给定一个输入去找到它最合理的输出。所以后面的叙述中我们并不严格的区分控制和决策,基本就是认为它们是同义词。

       强化学习解决的问题是在一个时间序列上的决策问题。就是说,在一段时间上需要做出多次决策,以便最终能达到一个好的结果。这样的例子非常多,例如:下棋、打游戏、控制机器人完成任务、库存的动态管理、智能交易,甚至是战争、职业规划、人生等等。强化学习为解决这种问题提供了一个框架,其实就是定义一些概念、规则和算法。

       虽然强化学习提供了一个框架,但是很多问题是复杂的,如何具体解决依然面临着很大的困难。例如下棋、游戏和机器人控制等等,输入和输出的维度都很高,例如游戏,它的输入可能是一个游戏界面(图像),怎么从这个界面找到一个合适的输出(游戏动作),不是一个很容易的事情。同样的事情也发生在机器人控制方面,例如控制机器人去抓起一个杯子也不是一件很容易的事情。以往我们解决类似问题的方式往往是为一个特定的问题去编写一个程序,例如我们可以编写程序去:识别杯子的形状、确定抓取的合适位置、控制机器人到达那个位置、做抓取动作。虽然最终我们可以完成这个抓取动作,但是付出的努力却很大,而且这种处理方式往往很不灵活,可能程序并不能够适应杯子的形状、大小,甚至姿态和位置的改变。

       所以,我们看到,用人为编程的方式去解决复杂的控制问题很难;用经典的强化学习算法也解决不了维度很高的学习问题。所以深度强化学习就应运而生了,简单来说,深度强化学习就是在强化学习的框架下,用深度学习的方法去解决复杂的时间序列决策问题。这种方式很有诱惑性,因为这几年大家确实看到了深度学习的能力,在解决很多问题方面表现都很好,例如图像、视频、语音、文字处理、自动驾驶等等,有一种包打天下的感觉。所以深度学习和强化学习的结合也是一种自然,而且近些年也做出了很多成绩,例如游戏控制和机器人控制等等。

       但是,最近的一些研究表明, 深度强化学习可能没有想象中的那么容易,很多问题不是很好解决,原因可能有很多,但是一个基本的原因就是序列决策问题与一般的机器学习问题有很大的不同,这些不同大概表现在:数据分布不同、难以取得良好的训练数据、控制会影响数据的分布、可能会存在严重的过拟合问题、训练数据和实际使用数据不匹配,以及算法的复杂性问题等等。这样一系列的问题使得深度强化学习变得很难,也很不单纯,很多的时候难以训练出好的结果。所以在这个领域的研究也比普通的机器学习感觉要难不少,而且真正在这个领域有所建树的研究机构和大学也不是太多,最近一两年好像多了起来。

       在这些研究机构中,伯克利大学是其中的佼佼者,其实伯克利和斯坦福在机器学习和强化学习领域的渊源很深,它们的教授往往都是互为师生的关系。伯克利大学从2017年开始推出了一门深度强化学习的课程,现在课程的编号是CS285,以前的编号的CS294-112,目前课程的链接是:

http://rail.eecs.berkeley.edu/deeprlcourse/

这个课程到目前为止一共讲过5次,分别是2017年春季、2017年秋季、2018年秋季、2019年秋季、2020年秋季。

       我大概是从这个课程的第一次开课就发现这个课程,当时学习了一下,根本学不动,因为自己的深度学习和强化学习的功底都不够。大概有点系统的学习是从2018年开始,但是基本也就学习了一半,因为后面的一些东西基本学起来就很困难了。2019年的课程是坚持学习完成了,因为当时深度学习和强化学习的基础都算比较扎实了。2020年秋季的课程刚刚发布时间不算太长,也基本学习了一遍,但是有些内容还需要继续深入学习一下。

       我为什么要持续的学习这个课程呢,可能有下面的一些原因:

  • 这个课程应该是深度强化学习领域最好的课程。
  • 在深度强化学习领域挖掘的很深很透彻。
  • 老师都是这个领域的领军人物和奠基者之一。
  • 课程的覆盖面比较广,不仅仅是深度强化学习、还有别的各种学习、控制和优化。
  • 理论讲解比较透彻,和实际结合的也很好。
  • 内容紧密联系当前最新的研究、延伸性也很好。

       但是,这个课程是有一定难度的,它的难度大概有下面几个方面:

  • 纯英文授课,有的时候老师的语速比较快,对于中国学生可能有不少困难。
  • 不是每个地方讲解的都很仔细,因为这个课程假设你有一些深度学习和强化学习的基础。
  • 有的地方难以理解,即使你能听懂老师讲的每一句话。
  • 有的地方没有讲明白,或者老师自认为已经讲明白了。
  • 可能还少讲了一些东西,或者一些内容之间的联系没有讲透彻。

       所以,这就引出了本文的写作目的,就是要对CS285这个课程做一个解释,所谓解释,就是基本用中文把这个课程的主要内容再复述一遍,其中会加上我自己的理解以及一些我认为重要的内容。也就是用我的语言描述一下这个可能的主要内容,加上我的想法和一些课程中没有讲到的内容。

       这是一个总结和写作的过程。这一想法在去年或者前年就有过,当时甚至想录一些讲解的视频,自己稍微录了一点,但是感觉不是太好。原因就是讲课没有你想象的那么容易,有些东西你以为你理解了,但是讲出来就会发现可能你还没有完全的理解。现在,我比去年对这个课程的理解要加深了一些,但是仔细想想,有些东西的理解可能还是不太到位,或者本来一些东西就没有太好的解释,所以自己也不太知道怎么解释。但是写作就可以弥补这一点,因为你发现错误就可以去改,因为真理是相对的,只有错误是永恒的。

     

课程的主要内容:

       待续…

 

写作进度:

2021-01-08:完成综述的写作目的部分。

2021-01-12: 完成第一课的写作。链接地址:https://blog.csdn.net/bizzard/article/details/112463917

 

 

你可能感兴趣的:(CS285,算法,深度学习)