神经网络能否识别屏幕并复制有限动作集?
我了解到,神经网络可以模拟任何功能。
通常,神经网络会接收一组描述信息,这些信息会传递给它的输入神经元,然后在输出神经元上给出一个分数。我希望我的神经网络能够识别屏幕上的某些行为。屏幕上的物体已经经过处理,清晰可见,所以识别应该没问题。
那么,神经网络能否用来识别屏幕上像素化的图片,并基于此做出决策呢?当然,训练数据的量会非常庞大。有没有办法通过在线监督学习来教会这个人工神经网络呢?
编辑:因为有评论者说这个编程问题太笼统了:我想先在Python中实现这个,看看是否有效。如果有人能指引我找到一个可以用Python进行在线学习的资源,我将非常感激。
2 个回答
这并不是完全正确的说法。
一个三层的前馈多层感知器(MLP)理论上可以模拟任何连续的函数。
如果有不连续的地方,那么你就需要增加一层,也就是第四层。
因为你在处理像素化的屏幕等问题,所以你可能需要考虑增加第四层。
最后,如果你要处理圆形等形状,那么径向基函数(RBF)网络可能会更合适。
我建议你看看这些链接:
http://www.neuroforge.co.uk/index.php/getting-started-with-python-a-opencv http://docs.opencv.org/doc/tutorials/ml/table_of_content_ml/table_of_content_ml.html http://blog.damiles.com/2008/11/the-basic-patter-recognition-and-classification-with-opencv/ https://github.com/bytefish/machinelearning-opencv
OpenCV基本上是一个处理图像的库,但它还有一些很棒的辅助类,可以用来完成几乎任何任务。它的机器学习模块使用起来相对简单,你可以查看源代码,了解每个函数的解释和背景理论。
你也可以使用纯Python的机器学习库,比如: http://scikit-learn.org/stable/
不过,在你把屏幕上的数据(我假设是像素?)输入到你的人工神经网络(ANN)、支持向量机(SVM)或你选择的其他机器学习算法之前,你需要对数据进行“特征提取”。(这些数据就是屏幕上的对象)
特征提取可以理解为用更少的数字来表示屏幕上的相同数据,这样我就能减少给ANN输入的数字。你需要尝试不同的特征,直到找到适合你特定场景的组合。一个示例可能看起来像这样:
[x1,y1,x2,y2...,col]
这基本上是一个边缘点的列表,表示你的对象所在的区域。可以看作是一个感兴趣区域(ROI),并进行边缘检测、颜色检测,还可以提取其他相关特征。重要的是,现在所有的对象及其形状/颜色信息都用这些列表中的数字表示,每个被检测到的对象都有一个列表。
这些数据可以作为输入提供给神经网络。不过,在你训练/测试系统之前,你需要根据具体问题定义一些有意义的输出参数。
希望这些信息对你有帮助。