Muj*_*eeb 7 classification machine-learning reinforcement-learning
我是机器学习的新手,但在过去的两天里我读了很多关于强化学习的内容。我有一个获取项目列表的应用程序(例如从 Upwork)。有一个主持人可以手动接受或拒绝项目(基于下面解释的一些参数)。如果项目被接受,我想发送项目提案,如果被拒绝,我将忽略它。我希望用人工智能取代该主持人(以及其他原因),所以我想知道我应该使用哪种强化算法。
参数:下面列出了一些决定代理是否接受或拒绝项目的参数。假设我只想接受与 Web 开发相关的项目(特别是后端/服务器端),这里是参数应如何影响代理。
我认为 Q-Learning 或 SARSA 能够帮助我,但我看到的大多数例子都与悬崖行走问题有关,其中各州相互依赖,这不适用于我的情况,因为每个项目都不同于前一个。
注意:我希望代理能够自学,这样如果将来我也开始奖励它前端项目,它应该学习这种行为。因此,提出“纯粹的”监督学习算法是行不通的。
编辑 1:我想补充一点,我有 3000 个项目的数据(部门、类别、标题、雇主评级等)以及该项目是否被我的主持人接受或拒绝。
使用 Q-learning 应该可以轻松解决您的问题。这仅取决于您如何设计问题。强化学习本身是一种非常强大的算法,它允许代理从环境中接收状态,然后根据这些状态执行操作。根据这些行动,它将获得相应的奖励。对于您的问题,结构将如下所示:
状态
状态:3 x 1 矩阵。[行业、类别、雇主评级]
扇区状态都是整数,其中每个整数代表不同的扇区。例如,1 = IT 行业、2 = 能源、3 = 制药、4 = 汽车等。
类别状态也可以是全整数,其中每个整数代表不同的类别。例如:1 = Web 开发,2 = 硬件,3 = 等等。
雇主评级同样是 1 - 5 之间的所有整数。其中州代表评级。
行动
操作:输出是一个整数。
动作空间将是二元的。1 或 0。1 = 接受该项目,0 = 不接受该项目。
报酬
奖励向您的系统提供反馈。就您而言,只有当操作 = 1(即您接受了该项目)时,您才会评估奖励。这将使你的 RL 了解到它在该项目中的表现有多好。
奖励将是一个看起来像这样的函数:
def reward(states):
sector, category, emp_rating = states
rewards = 0
if sector == 1: # The IT sector
rewards += 1
if category == 1: # The web development category
rewards += 1
if emp_rating = 5: # Highest rating
rewards += 2
elif emp_rating = 4: # 2nd highest rating
rewards += 1
return rewards
Run Code Online (Sandbox Code Playgroud)
为了增强这个奖励功能,你实际上可以给一些部门负奖励,所以如果 RL 接受了这些项目,实际上会收到负奖励。我在这里避免了这一点,以避免进一步的复杂性。
您将来还可以编辑奖励函数,让您的 RL 学习新事物。比如让某些部门比其他部门更好等等。
编辑:是的,关于 lejlot 的评论,它基本上是一个多臂强盗问题,没有顺序决策。bandit 问题的设置与 Q-learning 基本相同,只是减去了顺序部分。您所关心的是您有一个项目提案(状态),做出决定(行动),然后是您的奖励。对于您的情况,接下来发生什么并不重要。
| 归档时间: |
|
| 查看次数: |
2467 次 |
| 最近记录: |