关于 NIPS 2016 你应该知道的 50 件事情

    xiaoxiao2021-04-16  203

    应用机器学习

    1. 哪些方法能在 Kaggle 竞赛中胜出?梯度树提升(尤其是 XGBoost)和深度神经网络(对图像问题来说,尤其是卷积网络;对其他时间序列问题是 RNN)。

    2. 集成方法比最佳的单一方法在性能上高 2%~5%,但会使系统更复杂,因此在实践中通常价值不大。(以上两点,了解更多请参看 Ben Hamner 主页:https://www.kaggle.com/benhamner)

    3. 当训练数据和真实数据来自相同的分布时,当前的机器学习技术能取得最好的性能。当算法可能应用于与训练设置不同的设置时,测试集与训练集的分布不同会更好,最好能反应实际应用数据也来自不同的分布。这样能更好地了解算法在分布变化时的效果。

    4. 更具体地说,如果你有两个数据源,比如一个是大型的通用语音数据集,另一个是较小的车载语音数据集,而你想建一个在小数据集上表现良好的监督学习,吴恩达推荐将两个数据集分别分割开来,然后逐步降低四个错误率。(以上两点,了解更多请参看吴恩达主页:http://www.andrewng.org/)

    神经网络

    5. 深度学习的许多核心思想20年前就有了,但为什么深度学习现在很有效,而当时没有多少大的应用呢?用一句话来说:因为我们现在能得到更多的数据,更强的计算能力,更好的软件工程,以及一些算法上的创新(多层、ReLU、更好的初始化和学习速率的提升、Dropout、LSTM、卷积网络)。(了解更多,参考:http://mlg.eng.cam.ac.uk/zoubin/)

    6. 但为什么基于梯度的优化方法对所有神经网络都能起效,尽管存在非凸性问题?一种可能的原因是过量配置:通常有许多隐藏的单元,并且神经网络可以有许多方式近似地实现期望的输入 - 输出关系。只需要找到一种方式即可。(了解更多,参考:https://cs.stanford.edu/~pliang/)

    7. 有一个在生物学意义上似乎更合理的替代反向传播的方法叫均衡传播(Equilibrium Propagation),该方法既不需要显式的损失函数,也不要求梯度。其训练过程如下:(1)将系统的输入固定为某个输入值;(2)让系统收敛,直到得到一个稳定的预测输出;(3)测量系统的一些统计数据;(4)将输出限定为真实输出值;(5)让系统再次收敛;(6)测量与前述相同的统计数据;(7)根据统计数据的差异调整系统参数。(了解更多,参看 Yoshua Bengio 主页:http://www.iro.umontreal.ca/~bengioy/yoshua_en/index.html)

    8. 如果你采用 LSTM 并添加一个“时间门”(time gate),该时间门可以控制为新的输入开门的频率以及决定每次开门多长时间,你能得到不同的神经元,这些神经元能学习观察不同频率的序列,为梯度创造一个“虫洞”,节省计算量,并且在长序列以及需要处理来自多个以不同速率采样的传感器的输出时有更好的表现(了解更多,参看:https://www.ini.uzh.ch/people/dneil)

    NIPS 2016 大会会场。来源:Andreas Stuhlmüller

    与人类的交互

    9. 想要连接大型数据集(例如图像数据集)和人类实际使用案例?你首先应该做的是找到一些原型(基于原型和数据分布之间的最大均值差异的最小化),然后添加几个原型和数据分布非常不同(使MMD最大)的非典型的例子。(了解更多,参看:http://people.csail.mit.edu/beenkim/)

    10. 有一种让机器人不那么恼人的方法:当人类对机器人说 “现在做 x”时,使机器人直接执行命令 x。然后使用与这些命令有关的数据,在人类没有下命令时机器人能学会做事情。

    (了解更多,参看:http://www.tech.plym.ac.uk/SoCCE/CRNS/staff/esenft/)

    11. 如果我们评估当人们试图在战舰游戏中找出战舰位置时的问题,我们发现人们能够判断哪些问题是最好的(根据预期的信息增益)。但是大多数情况下,他们自己想到的问题并不是最具信息量的。(了解更多,参看:http://psych.nyu.edu/gureckis/)

    12. 如果你想在一个没法接近真实数据的众包设置中获取人们的真实信念,例如假设你想知道“这篇文章是否论证周密?”,你应该怎么做?是的,可以使用 Bayesian Truth Serum,但假如你不想提问元层次困难的问题时,应该怎么办?只要你有多个独立的任务,就可以使用 Correlated Agreement Mechanism,当人们在相关的任务达成协议时,你对其给予奖励;反之给予惩罚。(了解更多,参看:http://www.eecs.harvard.edu/~parkes/)

    13. 当用户与机器学习系统交互时,不仅是系统在学习——用户的系统模型也会发生改变,但这点常常被忽视。我们应该如何对这个共同学习的过程建模?

    14. 在构建机器学习系统时,让人参与到循环中通常是有用的,例如,使系统能够主动将特别困难的任务交给人类处理,或者向人类提问。但是我们还无法通过人类的思维进行区分,这阻止了对其他组件的基于梯度的端到端优化。(以上两点,了解更多可参看:https://www.microsoft.com/en-us/research/people/jawillia/)

    NIPS 2016 会场。来源:Andreas Stuhlmüller

    神经元中的贝叶斯  

    15. 考虑在神经网络参数上建一个后验分布,而不是寻找一个单独的良好参数设置,这很有吸引力。事实上,贝叶斯神经网络的主要思想大约在1987至1995年就已发端。可以参看 Yarin Gal 的论文了解其历史。(了解更多,参看:http://mlg.eng.cam.ac.uk/zoubin/)

    16. 人们普遍认为这是一个艰难的任务,但很容易忘记在真实的任务中这有多么困难,例如高分辨率图像合成问题:参数空间的维度通常很大,远大于输入空间的维度,而输入空间本身已经相当高维。(了解更多,参看 Ian Goodfellow 主页:http://research.google.com/pubs/IanGoodfellow.html)

    17. 另一方面,一种随机梯度 HMC(Springenberg, et al.,2016)似乎能使贝叶斯神经网络对其他(非贝叶斯)神经网络的超参数贝叶斯优化在实际任务中有效。

    (了解更多,参看:http://ml.informatik.uni-freiburg.de/people/springj/info)

    18. 说到贝叶斯优化:对于短期收益(30 步以上),训练做黑盒优化的神经网络比标准贝叶斯高斯过程方法更好,而且更快。(了解更多,参看 DeepMind 研究员、牛津大学教授 Nando de Freitas 主页:https://www.cs.ox.ac.uk/people/nando.defreitas/)

    19. 应该怎样处理对抗性例子?一般人可能希望在参数上加上先验,然后贝叶斯可以做接下来的事。但对抗性例子不行。相仿,这些例子的存在似乎与我们的模型过于自信的线性外插有关。所以,特定的先验可能有帮助,但找到能阻止这样的例子而且对泛化的影响不大的先验不容易。(了解更多,参看 Ian Goodfellow 和 Zoubin Ghahramani 主页)

    计划&强化学习

    20. “X并不意味着Y”的理论,对于人工智能来说也是如此:为规划器建模时,不(仅)要基于其行动能在世界中立即实现某些目标,而要基于这些规划器对代理(比代理的目标)的预示

    21. 层级规划有多种实现方法,包括 Hierarchical Abstract Machines、MaxQ、Skills、Dynamic Motion Primitives 和 Options。要学会并且从单个任务的相关抽象中获益一直以来都是个难题。在个别 Atari 游戏中,一个新的 Option-Critic 架构似乎比 Deep Q-Learning 表现更好,但优势并不显著。了解更可以访问 http://cs.mcgill.ca/~dprecup/

    22. 你可以这样用深度强化学习做分层规划(hierarchical planning):用带有参数的函数 Policy(State, Task)→Action 替代常规的 Plolcy(State)→Action。

    23. 虽然不怎么好,但 Experience relay 是种方法。最终,我们还是需要其他更好的方法。

    24. 价值迭代与卷积序列和最大池化层类似,可以使用深度网络模拟(展开)规划计算,也即价值迭代网络。这样神经网络就能进行规划了,比如在网格中从起点移动到目标位置,或者在网站上导航查找问题。

    西班牙巴塞罗那天主教堂圣家堂(Sagrada Família)内部。来源:Andreas Stuhlmüller

    更深一步讨论强化学习

    25. 哪种深度强化学习方法最好? 这篇综述介绍了大量的数据集表,比较了多个最先进的连续控制任务方法,但都在有层次的结构的任务上失败了:https://arxiv.org/abs/1604.06778v3

    26. 当你迭代改进政策时,重要的是要限制新旧政策之间的 KL 散度小于常数 δ。这个δ (以 nat 为单位)优于固定步长,因为步长的含义根据奖励和问题结构在训练中的不同点的意义不同。这被称为 Trust Region Policy Optimization(或者 Proximal Policy Optimization),做的经验重放越多,这一点越重要。

    27. 如果你的参数较少(比如 20个),即使在数字很大的情况下(比如 2000),使用 Cross-Dnropy 方法比其他炫酷模型效果会更好。

    28. 对于RL和变分推理,存在两种广泛已知的基于动作和结果的采样序列来优化策略(或变分分布)的方法:存在(a)似然比估计器,其更新策略,使得动作序列 导致更高的分数发生得更频繁,并且不需要梯度,以及(b)路径估计器,其调整单独的动作,使得策略得分更高并且不需要梯度。 我以前假设,如果你可以使用路径估计,它是严格更好——但对于RL,虽然路径方法可能更有效率,但往往由于偏差很大难以向高维扩展(果真如此?)

    29. 假设你想训练一个可以解决多种问题的神经网络策略。一种方法是:选取10个问题样本,并使用问题特定的方法解决每个实例。另一种方法是:训练神经网络与每个实力的预解决方案匹配。但是,如果你要这样做,你可以限制特定的解决方案,这样神经网络策略从一开始就相互接近,同时适应两者。

    对抗生成网络

    30.  如果你有一个有限的数据集{x¹,x²,...},比如说图像,你想生成更多x 的实例;或者如果你有成对的数据集{(x¹,y¹),(x²,y²),...},给定一个新的x,你想要预测相应的y,那么你可以选择使用对抗生成网络。至少在图像领域,使用 GAN 得到了最好的结果。

    31. GAN 如何工作?有两个可微分参数化函数,生成器 G(“伪造者”)和鉴别器 D(“警察”)。对于从数据集中选择的 x,我们将优化D(x)接近1。对于使用输入噪声z从发生器采样的x,即x = G(z),我们将优化D(x)逼近 0,同时将优化G,使得D(G(z))接近1。我们将逐步优化鉴别器,直到它能够在区分从真实数据生成样本的同时,优化生成器,使生成器生成与真实世界采样不可区分的数据。

    32. GAN 真的很难训练。这里列出了一些技巧或许能帮到你:https://github.com/soumith/ganhacks

    33. 为什么GAN 图像样本很清晰,而变分自编码器的样本就没有那么清晰呢?一个可能是与 VAE的成本函数有关。但 GAN最大似然的情况下,样本仍然是清晰的,所以这这个假说似乎不太可能。更有可能的原因是:VAE通常使用高斯似然,或者可能具有模型架构的一些其他组成,比如使用的特定近似策略(如 VAE 优化下限)。

    34. GAN的三大问题:(1)如何解决生成器和鉴别器之间无法达到平衡?换句话说,如何使用 GAN 构建会收敛到一个好的解决方案的系统?(2)即使收敛了,当前系统仍然具有全局结构的问题:不能计数(例如狗的眼睛的数量),并且往往在长距离连接出错(显示多个视角作为图片的同一个部分)。(3)如何在离散环境中使用GAN,比如生成文本?

    Uber 的晚宴。来源:Andreas Stuhlmüller

    聊天机器人

    35. 什么方法最适用于对话自动化?这取决于任务是什么,但总的来说,诸如 LSTM、层次递归编码器-解码器等有额外存储器的 RNN 似乎做得最好,尤其是比 n-gram 和信息检索方法(例如最邻近和TF-IDF)更好。此外,Multiresolution RNN 和 End-to-End Memory Network 也不错。但我感觉目前没有什么效果特别好的。

     

    36. 另一方面,Kaggle 的 Allen AI Science Challenge(需要算法从一份标准的8年级科学考卷中回答多项选择题)是使用信息检索方法而不是RNN赢得的。

     

    37. 自动对话最大的一个挑战是建立一个精确的状态,总结从开始当当前的对话。

    38. Facebook 有多种实现对话自动化的方法,但主要的一个是直接从对话历史到下一个响应,没有可用于训练/评估的透明中间状态。

    39. Facebook 的 bAbI 任务包括各种对话任务,包括交易(预定餐馆)、问答、推荐和聊天。Ubuntu数据集有近100万个技术故障排除对话,是个很有用的资源。

     

    40. 目前,一些研究人员构建用户模拟器来训练他们的对话系统,但是这些很难创建——模拟器实际上是另一个对话系统,但它需要模仿用户行为,而且很难评估它是如何做的(与正在训练的对话系统不同,模拟器没有“任务完成”的概念)。

    41. 如果没有从真实用户收集大量的对话数据怎么办?一种方法是首先基于其他数据集来学习语义表征,“创建一个可以推理的空间”,然后开始使用该预训练的系统用于对话。

    清晨从宾馆房间看到的风景。来源:Andreas Stuhlmüller

    一些有趣的想法

    42. 所有的事情能够看成是算法:将社会科学中的网络实验视为算法可能更好理解。此外,这样还能从现有的算法上得到更好的实验设计,比如 MCMC with People

    43. 把一些计算的中间状态记录下来,如规划计算(如价值迭代,你只保留你对成本函数最近的估值)或随机梯度下降(你只记下目前最好预测参数)。现在把这些中间状态记录下来会在很多地方有用: Value Iteration Networks, Learning to learn by gradient descent by gradient descent。

    44. 如果我们能解决对抗样本的问题,就可以通过给它一些原型的分数训练神经网络,例如汽车的设计图和人类设计师给这些设计图的评分,然后在输入上使用梯度下降来合成更好的样本。

    45. 我们如何使用生物神经网络实现高级的符号体系结构? Josh Tenenbaum 将其称之为“现代身心问题”。

    46. 神经网络仍然包含许多离散结构,例如有多少神经元,有多少层,我们使用什么激活函数,什么与什么相连。有没有办法让神经网络都是连续的,没有离散的部分,这样我们可以对参数和结构都做梯度下降?

    会场趣闻

    47. 20年前,Jürgen Schmidhuber 关于 LSTM 的论文第一次提交时被 NIPS 拒绝了。

    48. 百度的一些产品主要是从用户获取数据,实际上并不盈利。

     

    49. 波士顿动力(迄今)在他们的机器人上没有使用任何学习算法,包括在 NIPS 2016 演示的 Spot Mini——全都是手动编程的。

     

    50. 对于语音识别,机器学习算法的基准是一群人的数据,而不是单个人的。

    51. Zoubin Ghahramani 问在场的人有谁知道 PDP量,没有什么人举起手来,让他非常伤心。

    文章转自新智元公众号,原文链接


    最新回复(0)