基于机器学习的TDD开发模式
2017-10-29 22:42
816 查看
编程是为了用人类建模问题,然后转化成各种逻辑,用程序语言去控制机器。机器学习是自动建立模型,然后使用这个模型去控制机器。人类编程就是为了更好地控制机器服务于我们。如果机器能智能化这个过程,更好地理解我们的需求,那就不需要写太多程序了。
有些东西直接写程序太复杂了,逻辑繁多,结构繁杂。 不过可以用机器学习的方法训练一个模型去自行实现这个过程,让这个模型自主挖掘那些复杂的逻辑。
举个很简单的例子,就是 控制机器人走路。 虽然你可以设置一大堆逻辑去控制,什么条件下怎么控制某个马达。但是太复杂了,情况太多了。 换个做法就是,让它自己去学习控制,我们给它一个目标,自行去挖掘里面复杂的逻辑。这个是 强化学习,也是 alphago的玩法。游戏开发也可以的,角色的走路、打斗、寻路等,可以不用硬编码了。不用强行用一堆逻辑去控制角色,你可以设置一些约束,然后机器自动完善那些逻辑。最近也有通过学习游戏来生成游戏逻辑的AI。这个是 机器学习减少编码的一种方法和思路。
做自动化AI编程的,还是比较遥远。用机器学习训练出来的模型代替人类编码的一些超复杂逻辑的函数,还是比较可行的。给一堆输入和输出,然后让机器学里面的关联,就完成了一个模块或者一个函数。
不管是人编写的函数,还是机器学习学出的函数,我们都可以把它当做黑盒子。黑盒测试的时候,无论是 人建模后用逻辑语言写的程序 和 机器学习发掘出来的逻辑构建的程序,都有可能出现bug。 怎么发现bug,靠黑盒的测试样例了。不过只要你给的测试样例足够多,机器就学得更好,人编码出来的模块也更少bug。
ML Based TDD,即基于机器学习的测试驱动开发——人类解读需求,完善大量测试用例,然后机器根据测试用例学习和发掘里面逻辑,最后的模型就是 我们所需要的一个模块。
全新的软件开发思维,用机器学习代替完成某些复杂的逻辑模块。
有些东西直接写程序太复杂了,逻辑繁多,结构繁杂。 不过可以用机器学习的方法训练一个模型去自行实现这个过程,让这个模型自主挖掘那些复杂的逻辑。
举个很简单的例子,就是 控制机器人走路。 虽然你可以设置一大堆逻辑去控制,什么条件下怎么控制某个马达。但是太复杂了,情况太多了。 换个做法就是,让它自己去学习控制,我们给它一个目标,自行去挖掘里面复杂的逻辑。这个是 强化学习,也是 alphago的玩法。游戏开发也可以的,角色的走路、打斗、寻路等,可以不用硬编码了。不用强行用一堆逻辑去控制角色,你可以设置一些约束,然后机器自动完善那些逻辑。最近也有通过学习游戏来生成游戏逻辑的AI。这个是 机器学习减少编码的一种方法和思路。
做自动化AI编程的,还是比较遥远。用机器学习训练出来的模型代替人类编码的一些超复杂逻辑的函数,还是比较可行的。给一堆输入和输出,然后让机器学里面的关联,就完成了一个模块或者一个函数。
不管是人编写的函数,还是机器学习学出的函数,我们都可以把它当做黑盒子。黑盒测试的时候,无论是 人建模后用逻辑语言写的程序 和 机器学习发掘出来的逻辑构建的程序,都有可能出现bug。 怎么发现bug,靠黑盒的测试样例了。不过只要你给的测试样例足够多,机器就学得更好,人编码出来的模块也更少bug。
ML Based TDD,即基于机器学习的测试驱动开发——人类解读需求,完善大量测试用例,然后机器根据测试用例学习和发掘里面逻辑,最后的模型就是 我们所需要的一个模块。
全新的软件开发思维,用机器学习代替完成某些复杂的逻辑模块。
相关文章推荐
- 基于SOA架构的TDD测试驱动开发模式
- [ZZ]基于Visual Studio 2010 进行敏捷/Scrum模式开发
- 项目开发中的一些注意事项以及技巧总结 基于Repository模式设计项目架构—你可以参考的项目架构设计 Asp.Net Core中使用RSA加密 EF Core中的多对多映射如何实现? asp.net core下的如何给网站做安全设置 获取服务端https证书 Js异常捕获
- 谈基于.Net平台开发中的模式窗体
- 基于MVC开发模式的天气预报小Demo
- TDD、BDD与ATDD软件开发模式
- 基于spring下的TDD开发
- 构建基于MVC+Observer模式的、艺术性的移动开发框架(KJAVA版)(一)
- 应用开发的结构浅析----一个基于Proxy-Stub模式的例子
- tdd,设计模式,重构在软件开发中的概念和角色辨析
- 构建基于MVC+Observer模式的、艺术性的移动开发框架(KJAVA版)(二)
- 构建基于MVC+Observer模式的、艺术性的移动开发框架(KJAVA版)(一)
- 谈谈基于ssh的j2EE开发模式
- 基于 UML开发[TDD开发的全过程] 一、设计阶段
- 基于Servlet+JSP+JavaBean开发模式的用户登录注册
- TLint for 虎扑体育 基于Dagger2+RxJava+Retrofit开发,采用MVP模式
- [精通WindowsSocket网络开发-基于VC++实现]第四章——阻塞模式开发
- 基于Servlet+JSP+JavaBean开发模式的用户登录注册
- 谈基于.net平台windows开发中的模式窗体及其确定、取消、应用按钮
- “多团队大规模”开发模式 - 基于SAP HANA平台的多团队产品研发