自主软件
有没有人编写过应用程序中的任何代码 终生学习和自我改进(使用观察到的数据 存储在 KB 中),有这方面的框架吗?
Has anyone written any code where the application in its
lifetime learn and improve itself (using observed data
stored in a KB),are there any frameworks for this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我曾经编写过一个学习
Tic Tac Toe
(或Noughts and Crosses
)游戏。 这算吗?它基本上维护了一个 39 元素数组,用于每个游戏状态。 在每场比赛结束时,如果它赢了,它将为该场比赛期间的所有状态加一。 或者如果丢失了则减去一(包括旋转和镜像以加快学习速度)。
在决定采取何种行动时,它只需要参考几种可能性并选择得分最高的一种即可。
最终变得相当不错,但不是通过扮演一个人,这花了太长时间。 它必须自由地玩自己的另一个副本,一个随机机器人和一个硬编码的规则机器人,用于成千上万的游戏。
当我释放它时,它有10个起始智力水平,这只是它学习过程中的不同阶段。
我儿子目前正在与最愚蠢的级别比赛 - 他只有四岁,所以我不想对他太粗暴,所以他们会一起学习(尽管他偶尔会在
四子棋
中击败我,所以也许我应该给他更多的压力)。I wrote a learning
Tic Tac Toe
(orNoughts and Crosses
) game once. Does that count?It basically maintained a 39 element array which was for each game state. At the end of each game, it would add one to all the states during that game if it had won. Or subtract one if it had lost (including rotations and mirror images for faster learning).
When deciding on a move, it only had to consult a few possibilities and choose the one with the highest score.
It ended up getting quite good but not by playing a person, that was taking too long. It had to be set loose playing another copy of itself, a random bot and a hard-coded rule bot for many, many thousands of games.
When I unleashed it, it had 10 starting levels of intelligence which were just different stages during its learning process.
My son is currently playing against the dumbest level - he's only four years old so I don't want to be too rough on him, so they'll learn together (although he occasionally beats me at
Connect Four
, so maybe I should put some more pressure on him).我建议开始在网络上查看许多高级人工智能主题:这些主题包括神经网络、遗传编程等(维基百科)。
值得关注的地方还包括大学对更高水平人工智能的研究。 (即,我知道有一个团队编写了一个程序,该程序通过让计算机用相机观察钟摆摆动来推断运动定律;非常酷的东西)http://blog.wired.com/wiredscience/2009/04/newtonai.html
这是一个非常大的领域,有很多代码需要由您编写; 您真正应该关注的是学习算法背后的概念,这样您就可以根据自己的需要对找到的算法进行编程或调整。 我认为这将是创建学习算法的最佳选择。
我希望这有帮助。
I would suggest starting to look at alot of advanced AI topics on the web: such topics include neural networks, genetic programming ect (wikipedia them).
Good places to look also include University research into higher levels of AI. (ie. I know of a team of people that wrote a program which extrapolated the laws of motion from making a computer watch a pendulum swing with a camera; very cool stuff) http://blog.wired.com/wiredscience/2009/04/newtonai.html
It is a really big field and alot of code will need to be written by you; what you should really focus on is the concepts behind the learning algorithms, that way you can program or adapt the ones you find to your needs. I think that will be your best bet for creating a learning algorithm.
I hope that helps.
恕我直言,你的问题非常广泛。 大多数垃圾邮件过滤器都符合您的描述。
但一般来说,您的方法将取决于应用程序必须学习什么以及应该如何学习。 例如,垃圾邮件过滤器通常进行监督学习。 但是,如果您不希望用户帮助您的应用程序学习,则必须采用无监督学习方法。 当然还有更多的选择。 mloss.org 有很多包含 ML 算法的库可供您使用。 但对于大多数库来说,如果您至少大致了解它们的算法如何工作,将会很有帮助。
最好是阅读一些有关机器学习(例如 Mitchell 的 机器学习)和人工智能的书籍。
Your question is IMHO very broad. Most Spam filters will fit your description.
But in general your approach will depend on what the application has to learn and how it should learn. Spam filters for example usually do supervised learning. But if you don't want the user to help your application learning you would have to go with unsupervised learning methods. Of course there are more choices to make. mloss.org has a lot of libraries with ML algorithms that you could use. But for most of the libraries it is helpful if you know at least roughly how their algorithms work.
The best is you read an some books on Machine Learning (like Mitchell's Machine Learning) and AI.
这篇文章列出了一些标准教科书,我强烈推荐人工智能现代方法(AIMA) 作者:Russel/Norvig。
许多可用的工具包我建议看看Orange,SciPy(均为 Python)或 Weka (Java)。
This previous post lists some standard text books, of which I highly recommend Artificial Intelligence a Modern Approach (AIMA) by Russel/Norvig.
Of the many available toolkits I suggest to take a look at Orange, SciPy (both Python) or Weka (Java).