我是机器学习的新手,我遇到了一个问题,我想用一些人工智能解决这个问题。如果您向我推荐一些具体的算法,神经网络架构或一些相关的阅读,我将不胜感激。
我正在研究如何根据鼠标移动预测用户意图。目前我处于没有具体数据集的分析阶段。目标是通过预测鼠标轨迹来预测用户意图的目标(例如按钮,用户将点击)。
让我介绍一下这个问题
我有很多序列。每个序列的长度可以变化。作为输入,我将传递一些较小的序列,我想要预测下一个 x 值。所以我想知道下一个可能的序列(或更多可能的序列)。输出序列的长度( x )也可以是变量。也许序列在这里结束?预测应该“实时”完成。
那些序列是什么?
序列表示在一些预处理之后在二维空间中的移动方向。每个值是区间< 0,8>的整数。算法应该能够增加间隔的上限(16,32,...)。实际上,该值是插值角度。
三个示例序列。真正的序列会更大。
我如何设想解决方案?
序列将基于一些相似性进行聚类。当制作序列的数据集时,将训练一些神经网络以尽可能快地检索包含输入序列作为子序列的序列。
聚类
匹配子序列应该有一些容忍度。序列[3,3,3,3,2]类似于[3,3,4,3,2] =偏差容差*。或序列[4,3,3,2]也类似于[4,3,3,3,3,2] =连续重复的值的容差。
*我可以将两个值之间的差异视为相对数字 - 0%相同的方向=> 100%反方向。
如果输入为[1,2,2,2] - 红色 - 则输出应为[4,3,2,2]。
如果输入为[3,3,3,2] - 蓝色 - 则输出应为[2]。
神经网络
经过一番研究后,我发现了 Hopfield网络,它应该提供最相似的序列。但后来我意识到我的序列长度是可变的,Hopfield网络架构需要二进制值。
我可以以某种方式创建序列的二进制表示,但我不知道如何管理可能变化的长度。
让我们进入另一个级别
如果序列中的每个值都不是标量而是速度矢量(d,s),其中 d 是方向而 s 是速度ω
相关问题
感谢大家。
随意纠正我的英语。
答案 0 :(得分:2)
神经网络可以“在线”训练吗?所以不需要知道以前 训练数据集,只需给出新的数据集。
通常,您不会持续训练ANN。您训练它直到您的误差在容差范围内,然后使用该模型进行预测。如果你想定期调整模型,你可以每晚关闭和重新训练网络信息,但是可能性不会带来太大的改善,并且存在长时间错误数据扭曲模型的风险。
可以在服务器端(例如python)训练神经网络但是使用它 在客户端进行预测(javascript)?
这取决于。您是否打算使用经过训练的模型进行客户预测,或者您是否打算让用户操作对直接用于预测的模型进行实时培训? 如果模型已经过训练,您可以使用它来预测用户事件。 如果模型未经过培训,则存在不良数据损坏模型的风险。 像这样的实时培训还需要使用服务器生成的新模型不断更新客户端的模型设置。
神经网络能否具有某种“短期记忆” - 预测 会受到之前2-3次预测的影响吗?
不建议使用先前的预测作为输入。它将熵引入系统,如果它连续做出一些不好的预测,它可以使模型大大偏离可靠的预测。您可以尝试一下,在这种情况下,您需要在输入层上添加n * k个额外节点,其中n是您要使用的先前预测的数量,k是预测中的输出值的数量。
最重要的 - 我应该使用神经网络还是其他方法?
人工神经网络对于预测事物非常有用。最大的问题是定义范围以及进行预测所需的相关可靠数据。我已经制作了人工神经网络来预测视频游戏中的市场波动,有数千个输入值,但预测鼠标移动将是一个挑战。没有什么能阻止用户将鼠标移动几个小时,或将光标留在一个位置。每次您对此类操作进行采样时,它都会使您的模型更有可能预测该类型的行为。良好的培训数据和受控环境至关重要。视频游戏会为预测鼠标移动创造一个糟糕的环境,因为用户行为依赖于以前的鼠标移动。网站将是一个有利的环境,因为在会话期间,用户可以通过有限的空间以可预测的方式进行导航。