Exploit & Explore(探索与利用)

Exploit & Explore(探索与利用)

Exploit & Explore(探索与利用)_第1张图片

举个栗子

选餐厅:

  • Exploitation : 去最喜欢的餐厅。
  • Exploration: 尝试新餐厅。

挖石油:

  • Exploitation : 继续挖已有的。
  • Exploration: 去新地方挖。

在线广告:

  • Exploitation : 展示最好的广告。
  • Exploration: 展示些不同的广告。

为什么

如果模型没有见过某些特征组合的样本,很难对其合理的预估。

在广告的点击率预测中,我们是使用统计上的最优的策略来投放广告,那些非最优的特征组合出现机会很少,因而对这部分的估计也就不准确。

从根本上说,是因为我们无法对特征空间均匀的采样构造训练集。
这是互联网问题区别于其他机器学习问题的重要特点。

对未知特征空间的采样称为探索(exploration),利用探索的结果更有效的预测称为利用(exploitation)。

从信息熵的角度来看,在一个封闭的系统达到平衡状态后,没有外力干预是很难达到另一个状态的。需要加入一些扰动干扰达到一个新的更好的状态。

多臂赌博机问题(Multi-armed bandit problem, MAB)

1.Thompson sampling

假设每个臂是否产生收益,其背后有一个概率分布,产生收益的概率为 p p p。我们不断地试验,去估计出一个置信度较高的概率 p p p的概率分布就能近似解决这个问题了。
怎么能估计概率 p p p 的概率分布呢? 答案是假设概率 p p p 的概率分布符合 b e t a ( w i n s , l o s e ) beta(wins, lose) beta(wins,lose) 分布,它有两个参数: wins, lose。
每个臂都维护一个beta分布的参数。每次试验后,选中一个臂,摇一下,有收益则该臂的wins增加1,否则该臂的lose增加1。
每次选择臂的方式是:用每个臂现有的beta分布产生一个随机数b,选择随机数中最大的那个臂去摇。

Thompson sampling 的python实现:

choice = numpy.argmax(pymc.rbeta(1 + self.wins, 1 + self.trials - self.wins))

优势:
1.实现简单。
2.对延迟反馈的鲁棒:奖励的反馈经常无法立即获取到。 比如在电商场景下,商品被购买的信息可能不会立即被 Bandit 系统获取到。 在这种情况下,Thompson Sampling 将继续探索(因为是随机的),而不会被卡死。
劣势:
1.如果算法收敛的很快,探索可能就终止了。 还是电商的例子,获得少量销售的商品可能会继续获得更多销售(仅仅因为展示的更多些),并且可能会在展示上压倒新的商品。 因此使用 Thompson sampling 时需要进行仔细是调整和实验。

2.UCB(Upper Confidence Bound)

Reference:

https://slideplayer.com/slide/7335086/
http://www.primarydigit.com/blog/multi-arm-bandits-explorationexploitation-trade-off

你可能感兴趣的:(Exploit & Explore(探索与利用))