通过进化算法教生物力学模型学会走路

本文为 AI 研习社编译的技术博客,原标题 : Learning to walk with evolutionary algorithms applied to a bio-mechanical model 作者 | Norman Di Palo 翻译 | 胡瑛皓 校对 | 酱番梨 整理 | 菠萝妹 原文链接: https://towardsdatascience.com/learning-to-walk-with-evolutionary-algorithms-applied-to-a-bio-mechanical-model-1ccc094537ce

让人形模型采用真实肌肉方式行走

本文中的源代码可在 这个GitHub 库 中找到

(https://github.com/normandipalo/learn-to-walk-with-genetic-algs)

2017 NIPS 中有一项挑战是 《学习跑步》:如题所示, 该任务需设计并开发一个可以控制人体生物力学模型行走的学习算法。算法中的执行器(与大多数机器人问题不同)是一组腿部肌肉,每条腿由9块肌肉组成。发布挑战的作者修改了OpenSIM环境,使其适应增强学习的设定,从而增加一个奖励信号。

有些事情变得非常糟糕(或非常正确).

许多参赛者设计了端到端的深度强化学习算法,这些算法在近年来在连续控制任务中表现相当优异。但这些模型也通常需要大量算力和计算时间以学习成功的策略,一般在多台机器上并行效果更好。

我决定用我的方法尝试一下这个挑战。我实现并扩展一个相当轻量级的方法,该方法是我最近为机器人操控开发的,具体来说是进化算法结合神经网络控制器。采用这些算法的好处是不需要求导、可高度并行同时可获得与深度RL算法相似的结果,参见OpenAI上相关的文章。 问题在于,运动是完全随机,因而较难估计学习的内容及方式,但我仍希望尝试一下这种方法。

开始几步,像婴儿学步。

…重要的是不要仅保留表现最佳的模型,因为模型会卡在一些局部最小的地方(很难离开这些点)。

进化算法被用于数值优化问题,算法通过相关的目标函数优化其参数。那在本题中,这些参数和目标函数又应该是什么?从经验出发:腿部以周期方式运动。肌肉运动服从周期性、正弦时间规律,但很难手工实现这个规律。如何构造一个周期性函数?这里引入傅里叶级数。我们知道傅里叶级数(采用正弦余弦的累加)可估算出任意周期函数。不过理论上,他们可以有无限项。我设计了一个(截取)部分项的傅里叶级数,用以构造肌肉运动。这里只用了前4项余弦序列,于是就产生了8个参数:4个权重值乘以4个不同频率相位的余弦值。这样就位每块肌肉构造了周期性函数。每条腿有9块肌肉,我采用了9组周期性函数,这里假定另一条腿也采用同样的运动方式,可用同样的函数构造,不过相位差了180º。遗传算法,通过修改调整这些参数(相较神经网络参数,数量已经非常少了),从而优化目标函数的结果,显而易见这就是最终激烈函数,比如机器人行走多少距离后摔倒。

经过一天训练后的行走模式

参数从白噪音中采样得到,进行随机修改。但如果某个采样方向手有了性能提升,参数会沿这个方向进一步移动,知道不再有性能上的提升。 我并行跑了3个模型,因为对于一台笔记本来说计算量已经很大了。性能最好的权重被保存到一个参数文件中。当执行了几个批次后,训练又从性能最好的前3个参数组重新开始演算。这样就允许算法去更好的探索不同的行为:重要的是不要仅探索当前最优的模型,因为这个模型可能被卡在一个局部最优很难逃离,而性能较差的模型经过一段时间的训练却可以通过微调其他行为超过当前最优的模型。确实,经过一系列模拟行走后,从最优的3个模型中重新启动是成功学到行走模式的关键。在没有先验知识的情况下,模型可以学到像人一样的运动行为,已经相当不简单。

在相对短的训练时间和较差的硬件条件下(Intel Core 2 Duo CPU),模型可以成功的走出若干步。其他深度增强学习模型显然获得了更好的效果,但需要很长的训练时间和强大的硬件。我的目标不是真正与这些模型竞争,而是表明如何用遗传算法及少于100个参数的模型,快速在低配笔记本上获得行走模式。

原文发布于微信公众号 - AI研习社(okweiwu)

原文发表时间:2018-11-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据文摘

资源 | Kaggle数据科学项目索引表,10大类93项,更新中

为了使Kaggle上的资源获得最大化的利用,一位来自印度的数据科学家sban设计了一个数据科学模型、技术和工具的项目索引表。

11100
来自专栏人工智能

机器学习,Hello World from Javascript!

导语 JavaScript 适合做机器学习吗?这是一个问号。但每一位开发者都应该了解机器学习解决问题的思维和方法,并思考:它将会给我们的工作带来什么?同样,算法...

22250
来自专栏计算机视觉战队

资源 | 深度学习入门和学习书籍

最近很多新入门的同学问我到底怎么入门,今天先给大家推荐一些有用的书籍和简单的入门。希望可以给有需要的朋友一些帮助,谢谢! 最近新出一本学习书籍,是我们学校焦李成...

46390
来自专栏AI科技评论

开发丨图像处理一定要用卷积神经网络?这里有一个另辟蹊径的方法

近年来,卷积神经网络(CNN)以其局部权值共享的特殊结构在语音识别和图像处理等方面得到了快速发展,特别是大型图像处理方面,更是表现出色,逐渐成为了行业内一个重要...

32990
来自专栏机器人网

机器人运动学之连杆笑你不会看平面三维图

前面我们已经对变换已经有一定了解了,是时候该放到机器人上去实践一下了。当然,我们的实践目标还是臂式机器人。

18030
来自专栏人工智能

小白入门最简单的机器学习算法

阅读本文大概需要3分钟 菜鸟独白 上一篇(菜鸟学机器学习启航篇)对机器学习做了初步的介绍,机器学习的算法有很多,小白开始学习的时候,往往会被弄晕。有没有比较简单...

29890
来自专栏大数据文摘

李飞飞CS231n项目:这两位工程师想用神经网络帮你还原买家秀

每当某个明星或者时尚博主在微博或者朋友圈po出一张图,这就是一次低成本的营销机会。随着网购与照片分享变得越来越流行,利用用户原创内容(UGC, User Gen...

8400
来自专栏Python小屋

Python概率编程库PyMC应用案例二则

这是受国防科大刘万伟老师委托发的概率编程方面的内容,这方面我不懂,为了避免解释错了,我就直接把刘老师的PPT资料截图发了。 ? ? 代码执行结果为: 0.236...

42960
来自专栏机器之心

学界 | 让黑白影像重获新生:UC Berkeley 提出实时神经网络着色模型

选自arXiv 作者:Richard Zhang等 机器之心编译 参与:李泽南 UC Berkeley 的研究人员近日推出了一种利用深度学习对黑白图像进行实时上...

339110
来自专栏量子位

Tensorflow官方语音识别入门教程 | 附Google新语音指令数据集

李林 编译整理 量子位 报道 | 公众号 QbitAI Google今天推出了一个语音指令数据集,其中包含30个词的65000条语音,wav格式,每条长度为一秒...

97980

扫码关注云+社区

领取腾讯云代金券