基于深度强化学习的人岗匹配算法研究

news2024/11/25 0:48:23

一.需求分析

        面向HR的人岗匹配功能,帮助HR高效挑选简历。模型能够根据给出的不同岗位需求,在简历库中挑选出与岗位需求最匹配的几个简历推荐给HR。岗位的常见需求包括:年龄、学历、工作年限三方面。简历也具有以下几个特征:应聘人的年龄、学历、毕业院校、工作年限、目标职位。模型要根据岗位的需求和简历的特征做出匹配和推荐。

二.算法选择

        问题本质上属于推荐问题,常见的推荐系统包括以下三类:协同过滤推荐、基于内容的推荐以及混合推荐。传统的推荐算法虽然可以解决大部分信息过滤的问题,但是无法解决数据稀疏、冷启动、重复推荐等问题。[1] 本项目作者观察到深度强化学习可以达到更好的简历推荐效果。

三.深度强化学习

1.强化学习

        强化学习的依据来自马尔可夫决策模型。它的基本思想就是驱动一个智能体代理在环境中采取行动以最大限度地提高其累积回报。智能体代理会受到对不良行为的惩罚和对良好行为的奖励的激励。

图1 马尔可夫决策模型

我们让智能体代理从一个初始环境开始。它还没有任何相关的奖励,但它有一个状态(S_t)。

然后,对于每次迭代,代理获取当前状态(S_t),选择最佳(基于模型预测)动作(A_t),并在环境中执行。随后,环境返回给定动作的奖励(R_t+1)、新状态(S_t+1)以及如果新状态是终端的信息。该过程重复进行,直到终止。

更多关于强化学习的细节可参看:

文献[2]:

https://gsurma.medium.com/cartpole-introduction-to-reinforcement-learning-ed0eb5b58288https://gsurma.medium.com/cartpole-introduction-to-reinforcement-learning-ed0eb5b58288

文献[3]

https://medium.com/towards-data-science/reinforcement-learning-explained-visually-part-3-model-free-solutions-step-by-step-c4bbb2b72dcfhttps://medium.com/towards-data-science/reinforcement-learning-explained-visually-part-3-model-free-solutions-step-by-step-c4bbb2b72dcf

文献[4] 

基于强化学习的智能机器人路径规划算法研究(附代码)_强化学习路径规划__坐看云起时_的博客-CSDN博客https://blog.csdn.net/qq_53162179/article/details/128356575

强化学习中最常用的是Q-learning算法。

Q-learning算法使用状态-动作值的Q表(Qtable)。这个Q表为每一行代表一个状态,每一列代表一种动作。每个单元包含对应状态-动作对的估计Q值。

我们首先将所有Q值初始化为零。当代理与环境交互并获得反馈时,算法迭代地改进这些Q值,直到它们收敛到最优Q值。

关于Q-learning算法的细节理论可参看:

文献[5]

https://medium.com/towards-data-science/reinforcement-learning-explained-visually-part-4-q-learning-step-by-step-b65efb731d3ehttps://medium.com/towards-data-science/reinforcement-learning-explained-visually-part-4-q-learning-step-by-step-b65efb731d3e

以及文献[4]。

2.深度强化学习

该部分是本文的重点,深度强化学习共有三大类:(1)基于价值的深度Q网络:DQN等算法 (2)Policy Gradient算法 (3)Actor-Critic算法

        本文项目的算法采用的是深度强化学习中的Deep Q Network(DQN),为什么会有DQN这种理论,还要从Q-learning算法说起,Q-learning中,采用了一种数据结构-Qtable来记录由状态和动作决定的Q值,但是现实场景中往往状态空间很大,动作空间也可能很大,组织一张庞大的Q表需要很大的系统开销。

图 2 Qtable

如果能用一个函数(Q-function),输入状态-动作对,就能输出对应的Q值,将一个状态映射到可以从该状态执行的所有操作的Q值,那么将会大大提高性能,如图:

图 3 Q-function

神经网络充当这个函数再适合不过了,DQN算法就是用深度学习中的神经网络来优化强化学习算法。

图4 深度Q网络(DQN)

        该算法有两大精彩之处,一个叫经验回放(experience replay),另一个就是双神经网络:Q Network和Target Network

2.1 经验回放

        我们知道,训练一个AI决策模型需要不断采集该模型在环境中做出动作后的反馈数据,但是如何采集数据,采集哪些数据都会直接影响到该模型的训练效果。如果采集的数据是单一样本,每个样本以及对应的梯度都会有太大的方差,神经网络的权重不会收敛。那顺序地采集一批样本呢?也有缺陷,会导致“灾难性遗忘”,举个例子,如果一个大工厂地一个角落有一个机器人,这个机器人每次行走都是在这个小角落学习经验,采集的数据、学习的经验都是局限于这个小角落,这就类似于我们所说的顺序批量样本。这时如果把这个机器人拿到工厂另一个截然不同的角落,机器人会在新的角落开始学习经验,之前在原来角落学习到的经验很快就会彻底遗忘,这就是训练样本之间依赖性太强的原因。

如果我们采用一个池,每次装入采集的批量样本,当池中积累了一定量的样本之后,每次从池中随机采集一批样本,送入神经网络学习,这样每次学习的样本多样丰富,就会大大降低样本的依赖度,提高学习的效果。

就好像家长每次把孩子做过的错题收集在一起,让孩子重做,收集的错题类型越丰富,越利于孩子吸取不同题型的经验,从而更好的做新的习题。

2.2 双神经网络——Q-Network  and Target Network

        最原本的DQN算法只有单一的Q Network,Q Network负责每次在一个状态下预测每一个动作的Q值,然后智能体代理会根据不同行为的Q值大小做出决策,但是我们训练神经网络,每次要计算损失值来反向传播更新各神经元的权重,如果采用单一神经网络,会发生一个叫作“自举”的现象,每次迭代Q Network都会去逼近它自身,把它自己作为一个目标,去不断地追逐,因为权重发生变化,Q Network每次都被训练,拿训练之前的自己去追赶训练后的自己,永远都追不上,就好像自己举起自己,自己追逐自己的影子一样,给模型训练带来了很大的不稳定性。

如果我们再创造一个与它一模一样的神经网络,只是不像Q Network每次都更新权重,该网络间隔一定步数才更新权重(把Q Network的权重赋给它)被训练,这样的话用Q Network去追赶,就可以逐渐逼近,我们把这个神经网络称为“Target Network”。

举一个例子:一个人很穷,此时他的财富为M1,此时他对拥有100万的满足程度为A1,现在他突然有了80万,那么他对拥有100万的满足程度就会大大降低,他就会不满足于100万,想有1000万,那么每次他都会追逐更高的目标,永远不会满足。假如他有80万的时候,他达到满足的量还是一无所有时候对100万的满足程度,那么他只要再获得20万就会达到满足。Target Network就好比他一无所有时候对100万的满足程度,让他每次收入都能逼近满足。

2.3 DQN算法流程

        初始时,状态被送入Q Network,神经网络预测出该状态下各个动作的Q值,根据ε-Greedy方法,有一定概率随机选择动作执行,否则选择Q值最大的动作执行。执行后,环境会给该动作一个反馈值reward,此时将该次行动的数据(本次状态(current state)、本次动作(action(i))、反馈值(reward)、下次状态(next state))送入经验回放池。重复上述过程,直到智能体代理到达终止状态时,更新Q网络权重,更新过程为:从经验回放池采一批样本,送入Q Network和Target Network,Q Network分别用这批样本各自的current state和action(i)计算该样本的Q值——QValue。Target Network分别用这批样本各自的next state和reward,计算出该样本的target value,target value的计算方法为:

图5 Target Value的计算

Is_endj用来判断智能体是否到达最终状态,也就是终点,如果到达,target value值就是该状态下选择动作action(i)的反馈值,如果没到终点,则target value等于反馈值加上下一状态时各动作的target value中最大的值乘折扣因子,每个样本按以上方法计算。

    得到Q Network的预测值和Target Network预测得到的target value之后,利用均方误差公式(MSE):

图6 均方误差公式

计算Q Network的损失值,然后利用梯度计算优化器,反向传播更新Q Network的权重。以下是整个模型的流程:

图7 DQN算法流程

文献[6]中详细描述了DQN算法,进行分步剖析,还有精彩插图:

文献[6]

https://medium.com/towards-data-science/reinforcement-learning-explained-visually-part-5-deep-q-networks-step-by-step-5a5317197f4bhttps://medium.com/towards-data-science/reinforcement-learning-explained-visually-part-5-deep-q-networks-step-by-step-5a5317197f4b

四.人岗匹配模型建模

        因为该功能是面向HR开发,那么我们可以把人岗匹配过程视为用一个岗位去匹配简历集中的简历,每匹配一份简历就视为一个动作,动作空间中动作的数量就是简历的数量,也就是说每一份简历对应着一种动作,按照简历特征与岗位特征的匹配度,给出反馈,匹配度越高的简历反馈值越好。在这个模型中,岗位可以视为智能体,每去匹配一份简历就是一个动作。

需要说的是状态:

初始状态是从简历集中随机抽取一份简历作为初始状态,模型训练过程中,该次决策做出的动作作为下一状态,也就是说,每一个状态实际上是一份简历。

  • 状态空间S:简历集合
  • 动作空间A:简历集合
  • 招聘方反馈R:根据简历与岗位特征的匹配程度,给出反馈
  • 折扣因子γ:表示不同时间回报的折扣

 图8 算法示意图

五.编码以及调试过程中遇到的问题

1.如果一份简历中的求职者有两个目标岗位,如何解决?

数据集是一份excel文件,目标岗位都存在一个单元格中,比如:

图9 目标岗位栏出现的问题

        可以利用spite函数,遇到“、”就分开,再将原来的一个目标岗位列分为两列(aim_job1、aim_job2)。如果该简历没写出目标岗位,这两列相应的位置置为none,如果给出一个目标岗位,放到aim_job1处,aim_job2处置为none,如果给出两个目标岗位,依次放入aim_job1、aim_job2。

2.如何设计奖惩函数?

要根据岗位特征值和简历特征值的匹配程度决定奖惩:

首先要对简历的特征值和岗位特征值进行编码,以数字代替字符串:

学历的对应编码:'中专': 1, '大专': 2, '本科': 3, '硕士': 4, '博士': 5

目标岗位的对应编码:'产品运营': 0, '平面设计师': 1, '财务': 2, '市场营销': 3, '项目主管': 4, '开发工程师': 5, '文员': 6, '电商运营': 7, '人力资源管理': 8, '风控专员': 9, 'None': 10

(1)如果该简历的目标岗位不是该岗位,reward为-30

(2)如果该简历的目标岗位是该岗位,但是学历、工作年限、年龄任一样不满足岗位需求,reward根据权重扣分,这里对于学历(education)的权重为2,工作年限(experience)的权重为1,reward的计算方式为:

self.reward = -5 + self.W[0] * (resume_experience - experience_min) + self.W[1] * (
resume_education - education_required)

(3)如果如果该简历的目标岗位是该岗位,且学历、工作年限、年龄都满足岗位要求,则学历越高、工作年限越长的简历reward值越大,这点可以通过用简历的学历、工作年限数值与岗位所需的学历、工作年限对应的数值做差,差值越大代表学历越高、工作年限越长,且计算reward时同样融入权重。

5 + 1 * (resume_experience – job_experience_min) + 2 * (resume_education – job_education_required)

3.如何取样本计算loss反向更新权重?

从经验回放池中取一批样本,分别取出一批样本中的同一个量,比如current state,打包为数组,这样可以得到四个数组,将存有next state的数组送入target network,将存有current state的数组送入Q Network,利用独热掩码提取出对应动作的QValue,与target network计算出的target value以及reward一起计算损失值。

4.报错:ValueError: You called set_weights(weights) on layer "match_model_1" with a weight list of length 4, but the layer was expecting 0 weights. Provided weights: [array([[-1.56753018e-01, 5.38734198e-02, 2.8747...

经过多次调试,作者发现是Q Network把权重赋值给Target Network的步数间隔与每次从经验回放池中采集的样本数量值之间不协调导致的,如果每次从经验回放池中采集的样本数量值过大,而Q Network把权重赋值给Target Network的步数间隔过小,就会报这个错误,但是理论原因作者暂时还解释不清,如果有大佬能解释,希望在评论区指出,这个报错在后面间接被解决。

5.算法陷入局部最优且收敛过慢问题

我们设置训练次数为5000次迭代:

设置训练参数为:

learning_rate=0.10, discount_factor=0.85, exploration_rate=0.5

图10 算法收敛性不好

我们可以看到平均奖励值一直在发生大幅度振荡,而且各简历的Q值排名发生下面情况:

Q值排序结果:

1 Num: 38,Name: 洪紫芬, Age: 38,Experience: 12,Education: 3,School: 北京师范大学, aim_job_1: 3, aim_job_2: 4 Q值为: 0.91416574

2 Num: 22,Name: 雷进宝, Age: 38,Experience: 9,Education: 4,School: 中国地质大学, aim_job_1: 4, aim_job_2: 10 Q值为: 0.826052

3 Num: 16,Name: 刘姿婷, Age: 36,Experience: 10,Education: 3,School: 武汉大学, aim_job_1: 3, aim_job_2: 4 Q值为: 0.77591

4 Num: 23,Name: 吴美隆, Age: 37,Experience: 6,Education: 4,School: 湖南大学, aim_job_1: 4, aim_job_2: 10 Q值为: 0.7495003

5 Num: 18,Name: 吕致盈, Age: 38,Experience: 12,Education: 3,School: 武汉理工大学, aim_job_1: 3, aim_job_2: 4 Q值为: 0.73388803

6 Num: 48,Name: 林盈威, Age: 34,Experience: 7,Education: 3,School: 南开大学, aim_job_1: 4, aim_job_2: 10 Q值为: 0.61048335

7 Num: 21,Name: 郑伊雯, Age: 39,Experience: 8,Education: 4,School: 华中农业大学, aim_job_1: 4, aim_job_2: 10 Q值为: 0.604043

8 Num: 55,Name: 姚扬云, Age: 35,Experience: 6,Education: 4,School: 中国传媒大学, aim_job_1: 10, aim_job_2: 10 Q值为: 0.0

9 Num: 58,Name: 唐欣仪, Age: 34,Experience: 11,Education: 1,School: 河北工业职业技术学院, aim_job_1: 10, aim_job_2: 10 Q值为: 0.0

10 Num: 53,Name: 郑星钰, Age: 26,Experience: 3,Education: 1,School: 新疆农业职业技术学院, aim_job_1: 10, aim_job_2: 10 Q值为: 0.0

11 Num: 35,Name: 林家纶, Age: 28,Experience: 5,Education: 2,School: 上海交通大学, aim_job_1: 10, aim_job_2: 10 Q值为: 0.0

12 Num: 45,Name: 胡泰, Age: 33,Experience: 10,Education: 2,School: 中山大学, aim_job_1: 0, aim_job_2: 4 Q值为: 0.0

13 Num: 59,Name: 陈政圣, Age: 32,Experience: 10,Education: 1,School: 北京医学高等专科学校, aim_job_1: 10, aim_job_2: 10 Q值为: 0.0

14 Num: 60,Name: 李淑淑, Age: 28,Experience: 5,Education: 1,School: 福建船政交通职业学院, aim_job_1: 10, aim_job_2: 10 Q值为: 0.0

15 Num: 44,Name: 郑雅茜, Age: 36,Experience: 7,Education: 4,School: 哈尔滨工业大学, aim_job_1: 4, aim_job_2: 10 Q值为: 0.0

16 Num: 41,Name: 任郁文, Age: 29,Experience: 3,Education: 3,School: 上海交通大学, aim_job_1: 10, aim_job_2: 10 Q值为: 0.0

17 Num: 100,Name: 林钰婷, Age: 31,Experience: 7,Education: 2,School: 北京师范大学, aim_job_1: 0, aim_job_2: 10 Q值为: 0.0

18 Num: 25,Name: 王美珠, Age: 35,Experience: 4,Education: 4,School: 湖南师范大学, aim_job_1: 4, aim_job_2: 10 Q值为: 0.0

19 Num: 32,Name: 吴美玉, Age: 34,Experience: 8,Education: 2,School: 电子科技大学成都学院, aim_job_1: 4, aim_job_2: 10 Q值为: 0.0

20 Num: 29,Name: 曹敏佑, Age: 29,Experience: 6,Education: 2,School: 山东大学, aim_job_1: 10, aim_job_2: 10 Q值为: 0.0

21 Num: 69,Name: 刘亭宝, Age: 26,Experience: 6,Education: 0,School: 济南传媒学校, aim_job_1: 10, aim_job_2: 10 Q值为: 0.0

22 Num: 24,Name: 吴心真, Age: 36,Experience: 7,Education: 4,School: 中南大学, aim_job_1: 4, aim_job_2: 10 Q值为: 0.0

23 Num: 20,Name: 黎芸贵, Age: 40,Experience: 14,Education: 3,School: 华中师范大学, aim_job_1: 3, aim_job_2: 4 Q值为: 0.0

24 Num: 19,Name: 方一强, Age: 39,Experience: 13,Education: 3,School: 中南财经政法大学, aim_job_1: 3, aim_job_2: 4 Q值为: 0.0

25 Num: 17,Name: 荣姿康, Age: 37,Experience: 11,Education: 3,School: 华中科技大学, aim_job_1: 3, aim_job_2: 4 Q值为: 0.0

26 Num: 11,Name: 李中冰, Age: 24,Experience: 5,Education: 0,School: 顺德中专学校, aim_job_1: 10, aim_job_2: 10 Q值为: 0.0

27 Num: 5,Name: 江奕云, Age: 28,Experience: 5,Education: 2,School: 华南理工大学, aim_job_1: 4, aim_job_2: 10 Q值为: 0.0

28 Num: 3,Name: 林玟书, Age: 28,Experience: 4,Education: 2,School: 南方科技大学, aim_job_1: 10, aim_job_2: 10 Q值为: 0.0

29 Num: 2,Name: 林国瑞, Age: 34,Experience: 11,Education: 2,School: 中国传媒大学, aim_job_1: 3, aim_job_2: 10 Q值为: 0.0

30 Num: 68,Name: 林承辰, Age: 25,Experience: 7,Education: 0,School: 济南新技术应用学校, aim_job_1: 10, aim_job_2: 10 Q值为: 0.0

31 Num: 50,Name: 李秀玲, Age: 32,Experience: 7,Education: 2,School: 中国传媒大学, aim_job_1: 0, aim_job_2: 4 Q值为: 0.0

32 Num: 84,Name: 刘小紫, Age: 30,Experience: 6,Education: 2,School: 东南大学, aim_job_1: 4, aim_job_2: 10 Q值为: 0.0

33 Num: 96,Name: 杜怡, Age: 30,Experience: 8,Education: 2,School: 北京城市学院, aim_job_1: 2, aim_job_2: 10 Q值为: 0.0

34 Num: 92,Name: 沈慧美, Age: 30,Experience: 6,Education: 2,School: 上海海洋大学, aim_job_1: 10, aim_job_2: 10 Q值为: 0.0

35 Num: 75,Name: 连书忠, Age: 32,Experience: 8,Education: 3,School: 中山大学, aim_job_1: 10, aim_job_2: 10 Q值为: 0.0

36 Num: 90,Name: 黄康刚, Age: 29,Experience: 8,Education: 2,School: 北京科技大学, aim_job_1: 10, aim_job_2: 10 Q值为: 0.0

37 Num: 88,Name: 吴婷婷, Age: 29,Experience: 3,Education: 3,School: 中央财经大学, aim_job_1: 10, aim_job_2: 10 Q值为: 0.0

38 Num: 87,Name: 林怡紫, Age: 26,Experience: 0,Education: 3,School: 中国人民大学, aim_job_1: 10, aim_job_2: 10 Q值为: 0.0

39 Num: 89,Name: 杨怡君, Age: 27,Experience: 4,Education: 2,School: 北京清华大学, aim_job_1: 10, aim_job_2: 10 Q值为: 0.0

40 Num: 97,Name: 潘孝东, Age: 23,Experience: 0,Education: 2,School: 中央戏曲学院, aim_job_1: 10, aim_job_2: 10 Q值为: 0.0

41 Num: 98,Name: 周志合, Age: 27,Experience: 4,Education: 2,School: 深圳大学, aim_job_1: 0, aim_job_2: 4 Q值为: 0.0

42 Num: 43,Name: 林石美, Age: 34,Experience: 11,Education: 2,School: 重庆大学, aim_job_1: 3, aim_job_2: 4 Q值为: -0.17997088

43 Num: 4,Name: 林雅南, Age: 28,Experience: 5,Education: 2,School: 华南师范大学, aim_job_1: 4, aim_job_2: 10 Q值为: -0.35405895

44 Num: 42,Name: 李治, Age: 32,Experience: 9,Education: 2,School: 同济大学, aim_job_1: 4, aim_job_2: 10 Q值为: -0.36112082

……

        我们发现有部分简历,目标岗位与该岗位匹配,但是Q值却是0,而且黎芸贵的experience和education都要优于排名第一的洪紫芬,但是他的Q值却是0,这说明这些Q值为0的简历根本没有被训练到,算法在某一时刻陷入局部最优,要防止局部最优问题,我们常做的就是调整超参数值,尤其是exploration_rate,因为该值决定算法有多大概率随机选取一个动作,把这个值调大一些,可能防止陷入局部最优,因为我们的exploration_rate也会随迭代次数衰减。

现在把参数调整为:

learning_rate=0.10, discount_factor=0.85, exploration_rate=1

                                                                图11 算法收敛结果

我们发现算法收敛的很快,但是收敛的并不是很完美,而且Q值排名又出现了陷入局部最优的现象:

Q值排序结果:

1 Num: 48,Name: 林盈威, Age: 34,Experience: 7,Education: 3,School: 南开大学, aim_job_1: 4, aim_job_2: 10 Q值为: 2.521024

2 Num: 20,Name: 黎芸贵, Age: 40,Experience: 14,Education: 3,School: 华中师范大学, aim_job_1: 3, aim_job_2: 4 Q值为: 2.4513242

3 Num: 19,Name: 方一强, Age: 39,Experience: 13,Education: 3,School: 中南财经政法大学, aim_job_1: 3, aim_job_2: 4 Q值为: 2.3784618

4 Num: 17,Name: 荣姿康, Age: 37,Experience: 11,Education: 3,School: 华中科技大学, aim_job_1: 3, aim_job_2: 4 Q值为: 2.372804

5 Num: 24,Name: 吴心真, Age: 36,Experience: 7,Education: 4,School: 中南大学, aim_job_1: 4, aim_job_2: 10 Q值为: 2.3390896

6 Num: 22,Name: 雷进宝, Age: 38,Experience: 9,Education: 4,School: 中国地质大学, aim_job_1: 4, aim_job_2: 10 Q值为: 2.235163

7 Num: 18,Name: 吕致盈, Age: 38,Experience: 12,Education: 3,School: 武汉理工大学, aim_job_1: 3, aim_job_2: 4 Q值为: 2.152625

8 Num: 38,Name: 洪紫芬, Age: 38,Experience: 12,Education: 3,School: 北京师范大学, aim_job_1: 3, aim_job_2: 4 Q值为: 2.1127188

9 Num: 16,Name: 刘姿婷, Age: 36,Experience: 10,Education: 3,School: 武汉大学, aim_job_1: 3, aim_job_2: 4 Q值为: 2.1125493

10 Num: 21,Name: 郑伊雯, Age: 39,Experience: 8,Education: 4,School: 华中农业大学, aim_job_1: 4, aim_job_2: 10 Q值为: 2.1001434

11 Num: 44,Name: 郑雅茜, Age: 36,Experience: 7,Education: 4,School: 哈尔滨工业大学, aim_job_1: 4, aim_job_2: 10 Q值为: 2.089555

12 Num: 25,Name: 王美珠, Age: 35,Experience: 4,Education: 4,School: 湖南师范大学, aim_job_1: 4, aim_job_2: 10 Q值为: 1.840682

13 Num: 23,Name: 吴美隆, Age: 37,Experience: 6,Education: 4,School: 湖南大学, aim_job_1: 4, aim_job_2: 10 Q值为: 1.2011623

14 Num: 83,Name: 彭正仁, Age: 25,Experience: 2,Education: 2,School: 华中科技大学, aim_job_1: 0, aim_job_2: 10 Q值为: 0.0

15 Num: 35,Name: 林家纶, Age: 28,Experience: 5,Education: 2,School: 上海交通大学, aim_job_1: 10, aim_job_2: 10 Q值为: 0.0

16 Num: 43,Name: 林石美, Age: 34,Experience: 11,Education: 2,School: 重庆大学, aim_job_1: 3, aim_job_2: 4 Q值为: 0.0

17 Num: 52,Name: 叶惟芷, Age: 34,Experience: 3,Education: 4,School: 中国传媒大学, aim_job_1: 10, aim_job_2: 10 Q值为: 0.0

18 Num: 62,Name: 林雅慧, Age: 24,Experience: 5,Education: 0,School: 广州市轻工职业学校, aim_job_1: 0, aim_job_2: 10 Q值为: 0.0

19 Num: 66,Name: 赖淑珍, Age: 27,Experience: 1,Education: 0,School: 长沙职业技术学院, aim_job_1: 10, aim_job_2: 10 Q值为: 0.0

20 Num: 15,Name: 洪振霞, Age: 23,Experience: 4,Education: 0,School: 深圳中专学校, aim_job_1: 10, aim_job_2: 10 Q值为: 0.0

21 Num: 8,Name: 林子帆, Age: 28,Experience: 6,Education: 1,School: 阳江职业学院, aim_job_1: 10, aim_job_2: 10 Q值为: 0.0

22 Num: 6,Name: 刘柏宏, Age: 31,Experience: 9,Education: 1,School: 广东师范专科学院, aim_job_1: 10, aim_job_2: 10 Q值为: 0.0

23 Num: 4,Name: 林雅南, Age: 28,Experience: 5,Education: 2,School: 华南师范大学, aim_job_1: 4, aim_job_2: 10 Q值为: 0.0

24 Num: 45,Name: 胡泰, Age: 33,Experience: 10,Education: 2,School: 中山大学, aim_job_1: 0, aim_job_2: 4 Q值为: -0.3499998

25 Num: 42,Name: 李治, Age: 32,Experience: 9,Education: 2,School: 同济大学, aim_job_1: 4, aim_job_2: 10 Q值为: -0.36110973

说明即便把探索率拉到1,也难以解决到达最后一轮迭代的终止状态时,部分动作的Q值并没有被成功预测,也就是该动作就没有被执行过,这里面就可能包含最优解。

解决办法是在第一轮迭代的时候,把达到终止状态的条件设置为执行到所有动作:

if episode == 0:
    if set(range(12, 112)).issubset(set(action_union)):
        done = True
    else:
        done = False

这样让每一个动作充分执行,避免了奖励值过于稀疏。

图12 算法很快收敛 

图13 三维状态-动作对应Q值图

6.准确度过低的问题

最后再测试的时候,发现准确率在迭代的很长一段时间之内都很低,与标准结果不完全吻合,作者考虑原因是每次从经验回放中取出的样本数量有限,迭代后期经验回放池中样本总量远大于每次取出的样本数量,所以作者设置了,每次命中标准结果,都让每次取样本的数量增加100,让神经网络学习到的样本更充分,预测更准确。

图14 算法准确度随迭代次数增加而递增

六.总结与展望

对于特征匹配的人岗匹配问题,个人认为DQN并不是优秀方案,应该采用自然语言处理方面的技术,由于项目时间有限,所以没有时间再更换方案从头开发模型,可以选用Actor-Critic算法开发人岗匹配模型,应该会有更好的效果。

七.参考文献

[1]吕亚珉.基于FM与DQN结合的视频推荐算法[J].计算机与数字工程,2021,49(09):1771-1776.

[2] https://gsurma.medium.com/cartpole-introduction-to-reinforcement-learning-ed0eb5b58288

[3] 

https://medium.com/towards-data-science/reinforcement-learning-explained-visually-part-3-model-free-solutions-step-by-step-c4bbb2b72dcf

[4] 基于强化学习的智能机器人路径规划算法研究(附代码)_强化学习路径规划__坐看云起时_的博客-CSDN博客

[5] https://medium.com/towards-data-science/reinforcement-learning-explained-visually-part-4-q-learning-step-by-step-b65efb731d3e

[6] 

https://medium.com/towards-data-science/reinforcement-learning-explained-visually-part-5-deep-q-networks-step-by-step-5a5317197f4b

[7] 强化学习(九)Deep Q-Learning进阶之Nature DQN - 刘建平Pinard - 博客园 (cnblogs.com)

[8]强化学习在e成科技人岗匹配系统中的应用 | 机器之心 (jiqizhixin.com)

[9] 强化学习在人才推荐中的应用 - 小析智能 (xiaoxizn.com) 

[10]强化学习 DQN 经验回放 是什么_dqn经验回放_软件工程小施同学的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/719232.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第一章 SSD综述

SSD(Solid State Drive),即固态硬盘,以半导体存储数据,用纯电子电路实现,没有任何机械设备。 HDD(Hard DiskDrive),即传统机械硬盘。 一、SSD与HDD 1.1 两者的异同 1…

50从零开始学Java之万类之王Object是怎么回事?

作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 在前面的文章中,壹哥跟大家说过,Java是面向对象的编程语言,而在面…

Ymodem协议应知应会

1.优势 在嵌入式环境中,一旦需要和设备之间通过某种协议传输文件,Ymodem协议因为具备如下特征: 基本的流控基本的握手支持多文件传输支持校验协议精简,代码量少用众多既有客户端软件可以供测试,免写上位机程序。 因…

C++11:右值引用

文章目录 1. C左值和右值2. C右值引用 右值引用是一种新的 C 语法,基于右值引用引申出了 2 种 C 编程技巧,分别为移动语义和完美转发。本文主要介绍什么是右值引用以及它的基本用法。 1. C左值和右值 右值引用可以从字面意思上理解,指的是以…

【springboot+云计算】B/S医院信息管理系统源码(云HIS)

一、基于云计算技术的B/S架构的医院管理系统(简称云HIS) 采用前后端分离架构,前端由Angular框架、JavaScript语言开发;后端使用Java语言开发。系统遵循服务化、模块化原则开发,具有强大的可扩展性,二次开发方便快捷。为医疗机构提…

2023最新ChatGPT商业运营网站源码+支持ChatGPT4.0+新增GPT联网功能+支持ai绘画+实时语音识别输入+用户会员套餐+免费更新版本

2023最新ChatGPT商业运营网站源码支持ChatGPT4.0新增GPT联网功能支持ai绘画实时语音识别输入用户会员套餐免费更新版本 一、AI创作系统二、系统程序下载三、系统介绍四、安装教程五、主要功能展示六、更新日志 一、AI创作系统 提问:程序已经支持GPT3.5、GPT4.0接口…

Python之全-新-深-细详解

文章目录 第一章 Python环境搭建1.1. 计算机基础1.1.1. 什么是编程1.1.2. 什么是进制1.1.2.1. 进制的简介1.1.2.2. 进制的分类1.1.2.3. 进制的表示1.1.2.4. 进制的转换1.1.2.5. 原反补(了解)数据的转换负数的表示补码的引入 1.2. Python的介绍1.3. Python的安装与使用1.3.1. Py…

SSM简单项目遇到的几个问题

这几个问题,干扰了我很长时间。 主要因为书本的例子,是通过controller层返回到jsp层。但是,最后一个SSM项目,它用的是controller返回信息给Service层,再由Service层返回Jsp层。 实训:编写一个模糊查询姓名…

前端(三)——MVC与MVVM模式的battle

😄博主:小猫娃来啦 😄文章核心:mvc模式mvvm模式的battle 文章目录 mvc模式是什么mvc模式的优缺点优化mvc模式致命的缺点mvvm是什么,和mvc有什么关系?细看mvvm和mvc的不同 mvvm的缺点简化视图层开发 mvc模式…

E类逆变器Ltspice仿真

1 参数计算(待续) (1)确定振荡频率: (2)计算各器件参数; 2 电路仿真 (1)电路图 (2)电路分析 3 结果 (1)…

vue项目业务实现,视频监控-文件流,大屏适配方案(v-scale-screen),websocket前端

最近把以前的业务场景及解决方案整理了一下,具体实现的工具如下: 监控-视频文件流>video.js videojs-contrib-hls 大屏适配方案> v-scale-screen websocket>sockjs-client webstomp-client 视频监控-文件流 使用方法 下载video插件&#xf…

数字IC基础:状态化简与等价状态

相关阅读 数字IC基础知识:著名EDA公司与工具介绍 如果时序机的两个状态对于所有可能的输入序列都具有相同的输出序列(和相同的下一状态),则称这两个状态是等价的。时序机的等价状态无法通过观察输出序列的异同对其加以区分&#…

【Web3】认识以太坊钱包

目录 区块链钱包概念 密码 私钥 Private Key 公钥Public Key Keystore 助记词 Mnemonic 如何解锁账户 区块链钱包概念 钱包用来存钱的,在区块链中,我们的数字资产都会对应到一个账户地址上, 只有拥 有账户的钥匙(私钥&…

【网络进阶】Posix API与网络协议栈(五)

文章目录 1. ARP协议1.1 ARP协议的定义1.2 ARP协议的工作过程1.3 ARP协议的数据结构1.4 ARP欺骗1.5 ARP协议的局限性1.6 ARP协议与Posix API的关系 2. ARP协议例子3. ICMP协议3.1 ICMP协议的定义3.2 ICMP协议的类型3.3 ICMP协议的工作原理3.4 ICMP协议的应用3.5 ICMP协议的局限…

软考:中级软件设计师:操作系统,进程管理,前趋图,进程同步互斥,PV操作,

软考:中级软件设计师:操作系统 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都是需要细心准备的 &…

Openlayers实战:地图上显示经纬度坐标

Openlayers地图中,鼠标移动,其位置的经纬度坐会经常显示在页面中。 在我们的实战课程里,详细讲一下其做法,成为一个主力的应用。 效果图 源代码 /* * @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN) * @此源代码版权归大剑师兰特所有,可供学习或商业项目…

vue中如何引入插件并使用

Vue中的插件类型 vue中有大致有三种类型的插件,第三方插件、基于vue开发的插件及基于vue开发的组件 第三方插件 如:jquery、moment.js、aixos、Highcharts等 注意:Highcharts也有基于vue开发的插件版本,具体使用方法参见下文 …

C++中的类

1、类和对象 C中通过class定义类 class A {int a; }; // 定义一个A类型的类通过类来定义对象 A a; // 定义一个A类型的对象类是一张蓝图,是抽象的。而对象是根据蓝图真正建造出来的建筑,是具象的。 对象是类的实体化 2、类的限制修饰符 类有三种修…

xmrig病毒删除

删除病毒 [rootnode101 .mint-xmr]# top | headPID USER PR NI VIRT RES SHR S %CPU %MEM TIME COMMAND 15870 root 20 0 4597844 2.0g 4 S 1017 3.3 52:05.95 xmrig[rootnode101 .mint-xmr]# ll /proc/15870/exe lrwxrwxrwx. 1 root ro…

【C#】SqlBulkCopy批量添加注意DataTable必须与表列顺序一致,否则报错,以及关闭自增列

前篇文章在测试一个批量添加的操作,发现一致添加不成功,最后分析是字段列顺序不一致的问题 目录 1、列名不一致1.1、错误信息1.2、解决方法 2、关闭自增列2.1、不包含列2.2、特性关闭 1、列名不一致 1.1、错误信息 在调试时,一致提示如下错…