机器学习算法主要可以分为监督式,非监督式,强化学习三类。
在监督式学习中,我们有数据 x 和标签 y。我们想要找到一个函数来连接 x 和 y。可以选择决策树,线性回归等模型,然后训练这些模型使损失函数达到最小。
例如我们有一个横幅广告预测点击率的问题:
横幅的特征可以是,主题,想要推广的内容,挂在哪个页面,会浏览这个页面的用户的特征。 想要预测的变量只有一个,就是用户是否会点击这个横幅广告。
这时我们可能想要用一些监督式学习的模型,但是有个问题是我们并没有那么多数据,没办法知道每个横幅每个页面每个用户的行为。
虽然在没有数据的情况下,也可以想办法用监督式学习。
例如,可以随机发一些广告,随机的给一些人,随机的选择位置,来生成一些数据, 然后记录用户是否点击进去,不过大多数情况下用户是不点击的。 这样有了这些数据后,就可以应用一些算法,进行预测。
但是有个问题,就算你用这些数据进行预测了,训练了模型了,但是并不敢直接用这个模型得出的决策, 就算用户第一次点击了你发送的广告,但是如果太频繁地发送同样的广告,就会失去用户的信任, 所以我们可能想要尝试一些对用户有益的内容,想要让用户更开心,这样用户可以停留更久,你也可以收获更多的信任, 这种情况下会有很多变化,需要不断的调整。如果继续用监督式方法,可能会产生非常糟糕的结果。
例如,圣诞节前一周开始训练我们的点击预测模型,由于是圣诞节,每个人都会看关于圣诞节礼物的内容,我们的模型也会展示很多相关的广告,那么很可能在这段时间里,有一些相关物品获得了非常多的点击,获得了很多利润,但圣诞节结束后,模型并没有办法重新调整,于是继续展示圣诞节的横幅广告,就没有机会展示其他的广告内容。 所以不要百分百相信你的模型,可以留一部分数据是随机地展示 top100 的横幅或一些其他的广告。
但这种解决方案,就像是在用胶带去填补,虽然有足够的胶带的话肯定能解决问题, 但是会有更多的隐藏问题出现,
这时就可以用强化学习, 一句话概括就是通过反复试验来学习。
就像你学习自行车,不会去通过看一本书来学习,不会去看 1000 个样本,看每种场景是如何骑车的,然后就会了。
而是只需要有个自行车,想要学习如何骑就去骑,虽然可能会失败几次,可能会受伤,但是通过受伤,最终就学会了,并且骑得越来越好。
学习资料: Practical Reinforcement Learning