我对编写使用机器学习并根据外部数据执行特定操作的软件很感兴趣。
然而,我遇到了一个一直让我感兴趣的问题——如何编写能够发布命令或命令序列的机器学习软件?
据我所知,神经网络接收一组输入,并根据之前的训练结果“回忆”输出。几乎是即时的(嗯,或多或少)。所以我不确定“发布命令”如何融入这个系统中,尤其是当系统执行的动作会以一定的延迟影响系统时。我也有点不确定如何训练这个系统。
这种系统的例子包括:
1. 第一人称射击游戏的敌人控制器。据我所知,可以实现一个神经网络控制器来控制机器人,根据一些输入(可能是健康值、弹药等)切换机器人的行为策略(或者说为它们分配优先级)。但我看不到如何制作一个更高层次的控制器,能够发布一系列命令,如“去那里,然后向左转”。此外,机器人的动作会影响控制其行为的变量。例如,射击会减少弹药,从高处摔下会减少健康值等。
2. 自动市场交易者。当然可以制作一个系统来尝试预测某物的下一个市场价格。然而,我不明白如何制作一个系统,能够发布购买某物的命令,观察趋势,然后卖回以获取利润/弥补损失。
3. 汽车驾驶员。同样,据我所知,可以制作一个系统,根据位置/速度/扭矩数据和之前的训练结果来维持所需的移动向量。然而,我看不到如何使这样的系统(学会)执行一系列动作。
也就是说,据我所知,神经网络在技术上是一个矩阵——你给它输入,它产生输出。但关于生成一系列可能改变程序运行环境的动作呢?
如果这样的任务不完全适合神经网络,还有什么其他可以使用的?
P.S. 我明白这个问题并不完全清楚,我怀疑我缺少一些知识。所以我会很感激一些指导(例如,书籍/资源推荐等)。
回答:
你可以尝试将输出神经元直接连接到控制器,例如在第一人称射击游戏中向前移动、转向或射击,或者为交易者发布购买订单。然而,我认为现在的最佳结果是让神经网络解决一个相当具体的子问题,然后让一个“普通”程序解释其答案。例如,你可以让神经网络构建一个“我想去哪里”的地图覆盖层,然后机器人将其转换为移动。交易者的神经网络可以生成一个“我想要多少哪种证券”的结果,然后机器人将其转换为买入或卖出订单。
决定由神经网络解决哪个子问题是其设计的核心。重要的是,可以向神经网络教授好的解决方案。
编辑:在例子中扩展这一点:当第一人称射击游戏的机器人被击中时,它不应该想在那里;当它击中其他人时,它应该更想在那里。当交易者从一种证券中亏钱时,它之前应该想要它少一些;如果它赚钱了,它应该想要它更多。这些事情是可以教授的。