别盲目调参!深度学习要先找到最佳策略

原创 2018年02月10日 17:56:12
  1. 编辑
  2. 删除

【AI科技大本营导读】R2RT 是一个很有特色的机器学习/人工智能技术博客,作者是一个在 Github 上用户名为 spitis 的机器学习、人工智能专家。这位真名不知为何的专家,目光深邃,擅长对于一些深邃的技术话题娓娓道来,更难得的是作者对于机器学习、特别是深度学习有一个大局观。 他总会反复提醒读者,我们在干什么,讨论什么问题,在人工智能这盘大棋里处于哪个环节。这样的文章在当前的机器学习和深度学习当中,还是非常少见和难得的。
这就是为什么 AI100 决定将这个博客已发表的文章全部翻译出来以飨读者。

这篇文章是这个系列的第一篇,讨论的是深度学习当中的技巧和策略。在《The Master Algorithm》一书中,作者将机器学习分成五大学派,其中深度学习属于其中“连接学派”。而连接学派的核心算法就是所谓“反向传播”算法。


反播算法的强势地位以及大量的超参数,使得大多数人将学习和应用人工神经网络的重点都放在了算法的调优、超参数的调整之中。然而作者告诉我们,如果你不能够站在全局看待问题,寻找最佳的策略,你可能只是在一个第二流甚至第三流的策略中费劲心机的寻求局部最优而已。


拿作者举的第一个例子来说,如果你不能够发现甚至创造新的投篮策略,而只是不断优化朱利安式的投篮技术,你永远都不可能达成最好的投篮效果。同样的,如果我们在使用深度学习时,不能够首先考虑清楚最佳的网络结构、最重要的输入特征,是一头扎进去调超参,同样也有可能会捡了芝麻丢了西瓜。作者提出了“社交学习”和“创造力”两个思路来“切换策略”,但更重要的是意识到技巧与策略的差别,并且有意识的提醒自己要保持大局观。


深度学习的技巧 vs 策略


在这篇文章中,我会与大家一起讨论几个现实生活中与策略息息相关的实例,而这些实例仅仅凭借某些劣势策略的单纯实践是无法实现的。


反向传播算法是一种类似于上述“单纯实践”的算法,因为反向传播算法会以一种特定的策略开发新技巧(也就是说,它会学习某个特定的局部最小值)。就像实践一样,反向传播算法本身并不能使得算法切换到更高级的策略上。


在实际的例子中,我先是研究了如何实现策略上的转换,然后还询问了哪些算法可以允许机器有效地切换策略。


投篮


同样是篮球运动员,12岁球员和NBA球员之间投篮的差异就非常明显。你可以通过下面的图片比较一下12岁的朱利安·纽曼与德克·诺维茨基投篮的镜头:




朱利安的投篮技术和他的年龄及身体特征相匹配。但是请注意朱利安是怎样从胸部开始投篮的:先将身体前倾,然后将球从身体推出去(胸部投篮)。这种投篮方法与德克的方法完全不同,德克的身高比较高,他首先会把球举过头顶,然后伸出胳膊并挥动他的手腕进行投篮(手腕投篮)。


在朱利安成长的过程中,他一定能很快地发现,对手的手会出现在他投篮的路径上,阻碍最终的投篮。与此同时,他很快也能足够的高大和强壮,并且像德克一样投篮。


然而有趣的是,随着年龄的增长,朱利安的胸部投球技巧并不会完美地切换到手腕投球模式。唯一可以切换到手腕投球模式的方法就是训练新的投球风格。


对于我们观察人士而言,上述投球模式的转变似乎非常明显。然而,从我和我的篮球朋友们的经验来看,投球模式的转变过程是非常自然的,并不那么显而易见。


当我们跟朱利安的年龄一样大时,我们都在自然而然地使用着胸部投篮的方法,它会使我们的投篮准确率更高(即使是对手的手在我们前面的情况下也是如此)。也许是由于逻辑和信念在不断地训练过程中相互作用的结果,也许只是单纯的跟别人学习的缘故,又或许是卡特教练的投篮训练使我们发生了改变的原因,我们最终确实改变了我们的投篮方式。不管是什么原因,现在再投球时,球会通过我的手腕被轻推出去,越过头部向外抛出,就像德克一样(当然没有他投的准~~)。


背越式跳高


背越式跳高是奥运会跳高运动中的其中一种方式,正如手腕投球是投篮的其中一种方式。20世纪60年代中期,奥运会跳高运动员在跳高时所采用的过杆方式有:跨越式过杆、滚竿式过杆、“霍莱恩”式过杆或剪式过杆方式等。但是在1968年,一位年轻的美国运动员迪克·福斯贝里创造了一项新的世界纪录,他采用了一种非传统的新方法,以一种背向横杆的方式进行跳跃。由此,背越式跳高便诞生了。


从先前占优势的前背越式过杆方式,到跨越式过杆方式,再到现在的背越式跳高。


与手腕投球方式相比,胸部投球方式显然更容易被对手的手抓住,但是目前并没有证据表明背越式跳高确实比跨越式跳高的效果好。的确,在福斯贝里第一次使用背越式跳高时,他的教练就警告过他。即使在今天,你也会发现跳高运动员仍然在争论每一种跳跃风格的相对优势。但是,自从1978年跨越式跳高的世界纪录被打破,背越式跳高逐渐流行开来并在每一次世界纪录中屡试不爽。


像17加24一样简单


另一个例子是我最喜欢的例子之一,它涉及到人类的一项基本技能。不同于篮球运动员的手腕投篮和跳高运动员的背越式跳高,这种技术对受益者来说也相对陌生。


在中学的时候,有一次我的音乐老师给我们讲述过某个学生的故事,这位学生利用大脑进行计算的速度比用计算器进行计算的速度还要快。当学校老师教我们依次从右至左相加时,这位学生选择依次从左到右相加。这难道就是他的秘密?作为一名怀疑论者,我自己亲自测试了这位学生的技术。在练习一段时间之后,我的数字求和速度竟然也比计算器的速度快。事实证明,在1秒之内调整答案并不像看起来那么难。在数学课上,我的代数才刚起步;但是最终在音乐课上,我学会了正确的加法。


好的策略是局部最优的


类似的情况非常常见。对于大多数的任务来说,都存在着多种不同效果的策略:在竞技体育中有多种不同的表现方式,多种不同的学习方式,甚至多种不同的思考人生和追求幸福的方式。


在机器学习的语言中,简单来说,现实世界的具体情境涉及多种非凸目标函数,而这些函数均具有多个局部最小值。每个局部最小值周围处的点均对应一种特定的策略,而最小值本身对应的是能够完美执行的策略。由此看来,反向传播算法是一种能够提高技巧的算法。


或许并不出人意料,上述每个示例中都有一个能够使得任务有效执行下去的次佳策略。它可能不如最佳的策略那么有效,但是却可以完成工作(否则它就不是一个策略)。这与实证研究结果类似,尽管神经网络的误差曲面具有非凸性质,但是反向传播算法通常会在表现良好的局部最小值处呈现收敛状态。你可以这样来思考这个问题,直到某个事件出现“某种作品”(即存在表面上的某些策略),此时它还没有开始收敛;你不可能熟练掌握非策略事件。


尽管次佳策略也会在一定程度上发挥作用,但上面的例子表明,一个优异的策略可以让结果明显更好些。优异的策略还可以打开以前在相关领域中不曾开启的大门(例如,我们的祖先在开发出写作功能之前需要先开发出对生拇指)。这对于创建强大的人工智能至关重要,因此此处存在一个问题:是什么促使人们去选择一种更为优越的策略?我们如何利用这一点来建立更强大的人工智能?


[注释:从那时起我就知道,此处我的想法与强化学习中的探索与开发问题相关联。稍后会再写更多内容。]


为什么随机猜测行不通?



在策略中隐含的是一个目标,这个目标可以是投篮成功,也可以是最小化任意的损失函数。


我们通常会在某种背景下执行某种策略,这样可以更容易实现目标。如果身高再高一点,投篮就会更容易;相应地,当你拥有更多的数据时,就会更容易训练一个模型。


由于环境的某些特征在我们的控制之中,通常情况下,我们的策略首先涉及的就是这些特征的开发工作。在打篮球时,你可以通过传球或越过对手实现近距离的投篮。在训练神经网络时,你可以收集更多的数据或选择更好的功能。


由于开发这些特性需要花费一段时间,而且不同的策略往往会依赖不同的特性,因此切换策略的代价非常昂贵。虽然改变小型神经网络的结构可能相对便宜,但是将律师重新培训成软件工程师会比较困难,因为要开发领域相关的专业知识需要大量的投资。因此,一般情况下,我们需要有一个绝对令人信服的理由,才能促使我们切换策略,而不仅仅是一个随机的猜测。


排除随机猜测的另一个原因正是我们需要开启反向传播算法的根本原因。我们可以做出无穷多的随机猜测,但是我们的时间却是有限的。因此,反向传播算法及其各种变体就成了我们必备的元策略,它会告诉我们如何在有效策略处收敛,我们可能会想知道是否还有其他的元策略能够告诉我们如何有效地切换策略。


通过社交学习切换策略


有一种元策略叫做社交学习,也就是通过外界影响进行学习。无论是教练的投篮训练,还是看到其他球员用手腕投三分球,亦或者是迪克·福斯伯里用他的背越式跳高创造了一个新的世界纪录,又或者是听到一个数学天才心算加法速度比计算器更快的故事,在我有限的经验中,人工智能界仍然不存在真正的平行。


[注释:我当时的经验确实非常有限:遗传算法以及相关的保留全部候选人的算法,如博内特(Bonet)等人的互信息最大化的输入集群(MIMIC)等,正是此种类型的社交学习。]


我们的机器学习模型确实会因为受到其创作者的外部影响而切换策略。例如,视觉研究在2012年提出了所谓的“AlexNet”架构(在本文中有描述),并且此后模型已经被复制并且被进一步改进过。不幸的是,这种改进不是机器自动执行的,需要人的直接干预。有些情况下,模型通过模拟过去样本的数据库而得到改进,但很难将这种程序化的模拟与自动或智能相提并论。


那么重要的问题来了,我们如何才能让机器进行社交学习?相比平均模型或复制权重变量,是否有办法在更高级的水平上进行社交学习?肯定有,因为人类可以做到这一点。


要想能够接受外部影响,机器需要具备理解产生该结果的过程的能力。我们可以看到并传达出胸部投篮和手腕投篮的精确差异,因此我们能够接受外部影响并通过模仿进行学习。但即使是人类的交流也仅限于接受者所理解的概念。一个象棋爱好者看一场大师赛可能会收获很少,而一个大师可能会学到很多东西。我认为,我们的程序肯定有能够理解更高阶概念的一天,能够通过外部影响来学习,此时我们将会非常接近人工智能。


[注释:这些想法与我在关于离散嵌入的文章中提出的第三阶段模型的想法非常相似。]


“首发命中”策略,为什么仅有社交学习是不够的?


通过社交学习,我们的机器可以站在巨人的肩膀上。但是如果没有巨人呢?


当然,第一次就能收敛至最佳策略处也是可能的,但篮球中胸部投篮的事实告诉我们,我们的第一种策略可能是带有偏见的。在孩子长大的过程中,由于他们的身体不强壮,也不够高,因此无法通过手腕进行投篮,不可避免地向胸部靠拢。当孩子们长大了的时候,他们的胸部对他们来说可能是一个局部极小的地方,但是如果没有创造力或外界帮助,他们永远无法逃脱胸部投篮。


假设我们试图将人类的图像分类为男性图像和女性图像,并通过反向传播算法来训练图像分类神经网络。从某次随机初始化开始,网络就会达到一个局部最小值。然而问题在于:我们能确定这个局部最小值接近整体的最小值吗? 对此,我们可以尝试通过重新初始化权重并重新训练网络进行测试。


假设我们重新对网络进行了一百万次的训练,每个局部最小值都达到了几乎相同的性能。那么,这一事实足够让我们得出先前的策略接近最佳策略的结论吗?我的回答是否定的; 我们不能确定一个随机的初始化会通过反向传播算法得到最佳策略。这可能是一种类似于胸部投篮的情况,为了达到最佳的策略,网络在学习了一些有用的隐藏功能后,必须重新进行训练。


例如,身高很可能是一个重要的特征,通过反向传播算法训练的神经网络会迅速学会使用这个特征,甚至严重依赖。我们知道,虽然身高与性别有关,但有些更微妙的特征如面部结构等是更加优异的预测因子。即使最终学会了使用面部结构特征,通过反向传播算法训练出的神经网络也可能永远无法彻底完全改变自己的策略,并且无法忘记使用高度这一特征。


因此,即使机器能够相互学习策略,也可能不足以产出像背越式跳高或广义相对论等这样的重大突破。同样,像猴子那样依葫芦画瓢的模仿方式也是不行的,因为猴子做不到真正的智能:智能机器必须能够独立产生新的策略。


通过创造力切换战略



在没有外部影响的情况下,切换策略的能力是智能的最终标志。


既要训练机器能够停止目前正在做的事情,又要训练机器尝试做其他完全不同的事情。你需要这样一个假设:另一种方法在你尝试之前就能变得更好。在打篮球的例子中,对手可能会在你试图投篮的时候把一只手放在你的脸上,这可能会激发出你的这一想法:“要是我能投的更高就好了。” 但是,利用反向传播算法训练出的神经网络不能对其权重和结构产生这样的想法。


独立策略相互切换的关键是假设——一个猜测。 按照费曼(Feynman)的鸿运国际,这是科学方法的核心(详见视频):


视频地址:https://youtu.be/EYPapE-3FRw


然而正如费曼(Feynman)所指出的,这些猜测并不是随机的——有些猜测比另一些猜测好。我们的任务是找出一种算法来进行有效的猜测:一种创造性的算法。


[注释 :做出假设的能力非常关键。请注意,贪心算法或其他随机的探索方法仍可能发挥作用——它们是与科学方法无关的另一种社交学习形式(从自己的社交学习中学习)。]


原文地址:https://r2rt.com/skill-vs-strategy.html
————— 推荐阅读 ————— 点击图片即可阅读


版权声明:本文为博主原创文章,未经博主允许不得转载。
  1. 本文已收录于以下专栏:

深度学习调参策略(一)

经常会被问到你用深度学习训练模型时怎么样改善你的结果呢?然后每次都懵逼了,一是自己懂的不多,二是实验的不多,三是记性不行忘记了。所以写这篇博客,记录下别人以及自己的一些经验。 Ilya Sutske...
  1. xiaocong1990
  2. xiaocong1990
  3. 2017年05月20日 20:08
  4. 450

深度学习训练模型调参策略

重要性:学习率>正则值>dropout 学习率:0.001,0.01,0.1,1,10  …….以10为阶数尝试 小数据集上合适的参数大数据集上一般不会差,可以先减少训练类别。   欠拟合: ...
  1. Suodislie
  2. Suodislie
  3. 2017年05月31日 20:55
  4. 575

深度学习调参策略

英文介绍:] http://lamda.nju.edu.cn/weixs/project/CNNTricks/CNNTricks.html 知乎上的一些比较好的解答:https://www.zhihu...
  1. LIYUAN123ZHOUHUI
  2. LIYUAN123ZHOUHUI
  3. 2017年03月10日 08:54
  4. 1333

深度学习网络调参技巧1

好的实验环境是成功的一半 由于深度学习实验超参众多,代码风格良好的实验环境,可以让你的人工或者自动调参更加省力,有以下几点可能需要注意: 将各个参数的设置部分集中在一起。如果参数的设置分布在代码...
  1. TTdreamloong
  2. TTdreamloong
  3. 2017年10月18日 20:14
  4. 250

深度学习调参技巧

近两年论文基本都用同样的参数设定: epoch迭代几十到几百次。 sgd,mini batch size从几十到几百。 步长0.1,weight decay取0.005,momentum取0.9。dr...
  1. u011081315
  2. u011081315
  3. 2016年06月15日 11:10
  4. 1305

互联网时代,别盲目学东西,请先打造自己强大的知识体系!

互联网时代,我们每天都在接受各种平台的知识的轰炸。每天看一些最新的知识,心灵鸡汤,干货,但是,我们却没有坐下来思考一下,我们看这些东西自己学习到了什么?...
  1. h18210512585
  2. h18210512585
  3. 2016年07月09日 17:32
  4. 772

深度学习调参技巧(二)

我们在学习使用深度学习的过程中最最重要的就是调参,而调参的能力是需要长期积累才能形成的,因为每一种数据库和每一种网络结构都需要不同的参数以达到最佳效果。而寻找这个最佳的参数的过程就叫做调参。 ...
  1. scutjy2015
  2. scutjy2015
  3. 2017年05月30日 17:28
  4. 1046

深度学习调参技巧总结

做dl也有一段时间了,积累了一些经验,也在网上看到一些别人的经验。 为了面试,结合知乎上面的问答,我也总结了一下,欢迎大家补充。知乎 深度学习调参有哪些技巧?一. 初始化 有人用normal初始化...
  1. gdmmzmj
  2. gdmmzmj
  3. 2017年08月13日 17:30
  4. 1306

深度学习调参技巧(五)

经常会被问到你用深度学习训练模型时怎么样改善你的结果呢?然后每次都懵逼了,一是自己懂的不多,二是实验的不多,三是记性不行忘记了。所以写这篇博客,记录下别人以及自己的一些经验。 Ilya Suts...
  1. scutjy2015
  2. scutjy2015
  3. 2017年05月30日 17:33
  4. 695

深度学习调参技巧(六)

超参数(Hyper-Parameter)是困扰神经网络训练的问题之一,因为这些参数不可通过常规方法学习获得。 神经网络经典五大超参数: 学习率(Leraning Rate)、权值初始化(W...
  1. scutjy2015
  2. scutjy2015
  3. 2017年05月30日 17:35
  4. 721
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:别盲目调参!深度学习要先找到最佳策略
举报原因:
原因补充: (最多只允许输入30个字)
鸿运国际,鸿运国际娱乐官网,鸿运国际娱乐场