从PyTorch官方的一篇教程说开去(3.3 - 贪心法)

您的进步和反馈是我最大的动力,小伙伴来个三连呗!共勉。

贪心法,可能是大家在处理陌生问题时候,最容易想到的办法了吧?

还记得小时候,国足请了位洋教练发表了一句到现在还被当成段子的话:"如果球员不知道把球往哪里踢,那就往球门里踢!"呃,施拉普纳老爷子如果干程序员,应该也能混的不错!

当我们在陌生的城市迷路,一般会顺着大路找更大的路,沿着繁华的街区找更繁华的街区,直到找到地标性的建筑物来重新帮助自己找回方向感。

男生购物的时候,如果心里已经锁定了品牌,那么几个单品大差不差的情况下,折扣最大的那件怎么看都觉得美滋滋的。

至于吃饭,那肯定是打开手机app,不出意外的话,推荐的前几个基本跑不了了。

还有直播间里,为啥主播娇滴滴的呼唤榜一大哥,咳咳,打住。

类似这样的例子还可以举出很多,不过既然我们是撸代码的,那么多举几个相关的例子好了!

首先想到的肯定是最短路径上的dijkstra(包括升级的双向dijkstra算法),为了计算从起点到图上任意点的最短距离,老爷子就每走到一个点(广度优先,总n个),就重新计算和更新一下到起点的最短距离,从而得到了这个非常优秀的,空间O(n)和时间O(n^2)的算法(时间复杂度还有优化空间)。

然后就是0-1背包问题,比如你的道士打僵尸爆出了一地的法宝材料装备,然后你的宠物狗挠小怪也是一地,都铺满了,这时候负重有限背包有限,物品呢占地方不同价值也不同,你也不想来回来去主城主职业改成做二道贩子,那么怎么捡最划算呢?

还有压缩,还有搜索,感兴趣的小伙伴可以去brilliant看看,好消息是,不但有图示讲解,还有题可以刷,呃那个,比较友好的那种。强烈安利。

Greedy Algorithms | Brilliant Math & Science Wiki

实际应用中,贪心法就一点不好 - 这是把"神经刀",顺的时候神挡杀神佛挡杀佛,不顺的时候呢无法收敛,主打一个起伏不定,"女孩的心思男孩你别猜"。

这就跟深度学习在工程中的发挥比较类似了,也难怪我们在上一个章节看见,他俩一起秀恩爱。

具体点呢, 𝑄(𝑠,𝑎)=𝑟+𝛾max⁡𝑎′𝑄(𝑠′,𝑎′),这里更新状态时采用的参数,max/最大预期回报,就是在应用贪婪法。具体的做法就是 -

复制代码
//其他代码
# Exploration parameters
epsilon = 1.0                 # Exploration rate
max_epsilon = 1.0             # Exploration probability at start
min_epsilon = 0.01            # Minimum exploration probability 
decay_rate = 0.005            # Exponential decay rate for exploration prob

//其他代码

for step in range(max_steps):
    # 3. Choose an action a in the current world state (s)
    ## First we randomize a number
    exp_exp_tradeoff = random.uniform(0, 1)
        

## If this number > greater than epsilon --> exploitation (taking the biggest Q value for this state)
    if exp_exp_tradeoff > epsilon:
        action = np.argmax(qtable[state,:])
# Else doing a random choice --> exploration
    else:
        action = env.action_space.sample()

//其他代码
# Reduce epsilon (because we need less and less exploration)
epsilon = min_epsilon + (max_epsilon - min_epsilon)*np.exp(-decay_rate*episode) 
//其他代码

简单概括一下,就是在训练的初期,选择较大的探索值(epsilon),随着训练的进行,慢慢减小探索值,直到得到稳定收敛的良好控制效果。

为了更好的说明如何把贪婪法应用于深度学习,稍后会再更新一篇教程以及源码,以便小伙伴食用。

相关推荐
刘胡子大叔7 分钟前
评测驱动优化:失败样本回流 Prompt 的闭环
人工智能·prompt
这个DBA有点耶10 分钟前
内核级AI与多模融合:AI数据库在海外场景的落地要点
数据库·人工智能·架构
zh路西法11 分钟前
【PACE】面向永磁同步电机PMSM 执行器的参数辨识与能耗感知强化学习 Sim-to-Real
python·cma-es·pmsm·sim-to-real·issac·pace
涛思数据(TDengine)14 分钟前
从工业本体到 AI 原生:TDengine 出席 2026 QCon 分享工业数据基础设施路径
大数据·数据库·人工智能·tdengine·工业
yz_aiks23 分钟前
WorkBuddy 怎么做网页小游戏:深海钓鱼游戏 43 次对话、301 积分从一句话做到发布(附手机横屏踩坑)
人工智能·html5·ai编程·小游戏·workbuddy
byte轻骑兵39 分钟前
【LMP】规范精讲[12]: 链路层的花名册——一张表数完88条指令的门道
人工智能·蓝牙协议·lmp·蓝牙链路管理·通信学习
萤箜41 分钟前
Chroma、Pinecone、Milvus 选型对比:不同发展阶段该选哪款向量数据库
人工智能
后台模板学习44 分钟前
大模型 Prompt 工程在电商订单系统中的踩坑记录
java·python·prompt
jimmyleeee1 小时前
Agent安全之九:OWASP ASI09 人机信任利用------当人类成为攻击链上最后一道被攻破的关口
人工智能·安全
Gu_WenYun1 小时前
从主题定价到订单定价:机器人基金的产业链观察
大数据·人工智能·金融