【发布时间】:2015-03-31 20:08:08
【问题描述】:
我正在尝试创建一个代理,该代理根据返回最大奖励的状态选择动作。
为了简单起见,我会将其保留为两个动作和 24 种不同的状态。
状态是模拟一天中的几个小时,两个动作是显示给用户的某些网页。
我仍在试图弄清楚奖励将如何发放以及政策将如何取决于奖励。最合理的是:
介于 0 和 1 之间将确定 100% 的概率。最有可能采取的行动是最有可能获得奖励的行动。
同一个状态 x 的非常简单的例子:
如果用户显示在第 1 页(操作)并停留在其上(操作),则应在第一页获得奖励。
x = 页面 1 = 1 的此状态给予的奖励数量 y = 在第 2 页上为此状态给予的奖励量 = 0
第 1 页 + 第 2 页 = 1.0 机会 x = ((x+y)/x) = 1/1 = 1.0 机会 y = ((x+y)/y) = 1/0 = 0.0 第 1 页是该状态的正确操作的 1.0 机会 0.0 的机会页面 2 是该状态的正确操作
如果在此状态下显示第 1 页,则奖励风险更高,因此会向用户显示第 1 页(操作)。但是,如果用户导航到第 2 页,则第 2 页将获得奖励。
x = 页面 1 = 1 的此状态给予的奖励数量 y = 在第 2 页 = 1 中为此状态给予的奖励数量
第 1 页 + 第 2 页 = 1.0 机会 x = ((x+y)/x) = 2/1 = 0.5 机会 y = ((x+y)/y) = 2/1 = 0.5 第 1 页是该状态的正确操作的几率为 0.5 0.5 的机会页面 2 是该状态的正确操作
如果向用户显示第 1 页(操作)并停留在第 1 页,则第 1 页将获得另一个奖励。
x = 页面 1 = 2 的此状态给予的奖励量 y = 在第 2 页 = 1 中为此状态给予的奖励数量
第 1 页 + 第 2 页 = 1.0 机会 x = 1.0 / ((x+y)*x) = 1.0 / 3*2 = 2/3 机会 y = 1.0 / ((x+y)*x) = 1.0 / 3*1 = 1/3 2/3 的机会页面 1 是该状态的正确操作 1/3 的机会页面 2 是该状态的正确操作
如您所见,它会不断更新和学习。
聚类
但是,这只有在所有日子都相同的情况下才有效,而且我们知道事实并非如此。用户可能会使用第一周的第 1 页和下周的第 2 页以及该第 1 页之后的一周,依此类推。因此,也需要以某种方式找到一种模式。
我想要达到的目标
我有以下输入数据(状态):
{
location: 'Möllevångstorget, 21424, Malmö',
weekday: 'monday',
time: '07:31'
}
或者:
{
lat: 55.591538,
lon: 13.007153,
timestamp: '2015-03-03 07:31'
}
或者:
{
lat: 55.591538,
lon: 13.007153,
timestamp: 1427864271 // unix epoch time
}
如您所见,您可以操纵输入。重要的是要包括位置和发生的时间。
如前所述,寻找模式是我最担心的事情。我希望预测用户何时使用应用程序(显示页面),当用户使用应用程序时创建状态。
我可以看到的另一个问题是,假设用户在一周的 07:30 使用该应用程序,然后在下一周的 07:35 使用它,第三周在 07:32 使用它,全部来自左右 相同的位置,算法应该能够确定用户(环境)将选择特定页面(操作)。
基本上是预测用户会选择什么动作。
【问题讨论】:
标签: machine-learning reinforcement-learning