基于机器学习的TDD开发模式

来源:互联网 发布:earthexplorer知乎 编辑:程序博客网 时间:2024/05/16 01:31

编程是为了用人类建模问题,然后转化成各种逻辑,用程序语言去控制机器。机器学习是自动建立模型,然后使用这个模型去控制机器。人类编程就是为了更好地控制机器服务于我们。如果机器能智能化这个过程,更好地理解我们的需求,那就不需要写太多程序了。

有些东西直接写程序太复杂了,逻辑繁多,结构繁杂。 不过可以用机器学习的方法训练一个模型去自行实现这个过程,让这个模型自主挖掘那些复杂的逻辑。

举个很简单的例子,就是 控制机器人走路。 虽然你可以设置一大堆逻辑去控制,什么条件下怎么控制某个马达。但是太复杂了,情况太多了。 换个做法就是,让它自己去学习控制,我们给它一个目标,自行去挖掘里面复杂的逻辑。这个是 强化学习,也是 alphago的玩法。游戏开发也可以的,角色的走路、打斗、寻路等,可以不用硬编码了。不用强行用一堆逻辑去控制角色,你可以设置一些约束,然后机器自动完善那些逻辑。最近也有通过学习游戏来生成游戏逻辑的AI。这个是 机器学习减少编码的一种方法和思路。

做自动化AI编程的,还是比较遥远。用机器学习训练出来的模型代替人类编码的一些超复杂逻辑的函数,还是比较可行的。给一堆输入和输出,然后让机器学里面的关联,就完成了一个模块或者一个函数。

不管是人编写的函数,还是机器学习学出的函数,我们都可以把它当做黑盒子。黑盒测试的时候,无论是 人建模后用逻辑语言写的程序 和 机器学习发掘出来的逻辑构建的程序,都有可能出现bug。 怎么发现bug,靠黑盒的测试样例了。不过只要你给的测试样例足够多,机器就学得更好,人编码出来的模块也更少bug。

ML Based TDD,即基于机器学习的测试驱动开发——人类解读需求,完善大量测试用例,然后机器根据测试用例学习和发掘里面逻辑,最后的模型就是 我们所需要的一个模块。

全新的软件开发思维,用机器学习代替完成某些复杂的逻辑模块。

原创粉丝点击