您当前的位置:首页 > 工程案例

用神经网络对页面登录进行多参数优化的小妙招

  我很乐意分享我用神经网络对页面登录进行多参数优化的一些实验。我想到这个点子已经有半年了,而且我发现从自动操作这个角度来看它十分有趣。A/B 测试需要从市场专家那里消耗大量的时间,同时它们需要有大量的流量才能表现良好。当一个小团队来管理大量页面时,这就很成问题了。对于一些项目来说,这也与登录页面的“老化”有关——它们会随着促销或优惠的结束而过时。

  有许多方法可以解决这个问题。在谷歌优化方案中比较旧的方案 MVTs(多变量测试)将分割所有可能的登录页面版本间的流量。并且适用于 3 个变量的测试。但是想象一下,你要测试 3 个标题,3 个子标题,2 个按钮颜色和 2 个标题图片,再加上总体布局的几个版本。这很容易达到 10k+不同的组合。由于你估计了 50k 的流量,目标是尽快找到最优或接近最优的版本。你牺牲了纯粹的统计精度,并试图尽快达到尽可能多的转换。

  我知道少量的潜在方法。首先,考虑不同的特性。因为它们是独立的实体,想象一下你正在做一个独立的数字A /B 测试,这样你将很快得到一些结果,但是如果存在有交叉特征的相关性,你将会错过它们,你的解决方案并不是最佳的。二是使用遗传算法。有一些公司就这样做了——比如Sentient Ascend。从他们的宣传材料来看,他们似乎使用了某种遗传算法。三是运用多臂老虎机理论。解决多臂老虎机问题的方法之一是利用强化学习和神经网络。

  遗传算法是模拟自然选择的过程。把不同的网页变化看作是一种生物的不同特征——有些特征利于生存,有些不产生影响,有些则有负面影响。遗传算法的基本工作流程如下:

  所以,我决定构造神经网络驱动的一些东西。我和一些市场营销的人做了交易:我将建立一个系统,他们会给我流量来测试它。这是个双赢的过程,CPA是这种系统的一个完美的应用案例。

  我需要做的是使用神经网络来解决所谓的“多臂老虎机”问题。在强化学习方面,我还学过一些其他的好方法,你可以在下面找到一些联系。我把这个项目简化为几个阶段,就像多臂老虎机问题的演变一样。

  我内心深处对解决每个步骤所需要的流量数量持非常乐观的态度。我的 CPA 的小伙伴们赞成用 10k-20k 的流量去测试我的观点。并且我觉得测试阶段 0 和阶段 1 已经足够,但数学对我来说不利。阶段 1 将需要更大数量级的流量,当系统调试并学习完毕后所需要的流量会减少。

  在这里,我将描述系统在运行中的最新运行结果以及我收获的一些见解。下面你会发现为精通技术的读者准备的一些代码和实现细节。

  所以,我们进行了 50/50 的分割测试。50% 是静态登录页面,另外 50% 是神经引擎驱动的动态登录页面。在最初的 3-4 天之后,我注意到我的神经系统解决方案已经达到了它确定的变化 (局部最小值),并且不会改变 (基于损失和权重)。这大约出现在 3-4k 的流量之后。

  我开始好奇,想看看我是否能基于单纯统计数据得出同样的变化。我计算了每一种变化的平均 CTR 值,选择了其中表现最好的,并与 ML 得到的变化进行了比较。让我十分惊讶的是,它们中 80% 都不相同。神经网络表现出完全不同的结果。真有趣…

  那么,我想神经网络应该比简单的线性代数和我都更聪明。为了进一步验证我的发现,我停止了学习神经网络,对 3 个版本进行了正面比较:

  正如你看到的那样,我一直等到随机和非随机选择之间的差异变得具有统计学意义。所以以下是主要的结论:

  经过一些挖掘,我认为我的问题符合典型的「人工智能」强化学习。这里有一个很好的我经常用到的速成课程,我将在文末提到它。我希望我的代码在生产环境中运行,而 Tensorflow 是一个可以选择的框架。在我的日常工作中,我更喜欢 MXNet,它已步入量产阶段。

  我使用了一个简单的两层全连通网络,有一个静态变量作为输入,并将每个页面的每个特性生成概率作为输出。如果输入不是静态的,而是随着用户特性 (时间、地理位置、语言等) 的不同,那么对于第一阶段的系统来说,修改它是非常容易的。

  为了在产品中运行系统,我使用了Sanic后端、Postgres作为SQL存储,而Tensorflow作为推理引擎。在服务器上执行了系统的学习。

  对于每个网站访问,我们要求后台系统把推理结果和页面的变量显示给这个用户,它大约有 30 毫秒的延迟。在转换之后,它与用户的页面访问之间有 15 分钟延迟(其中五分钟是经典窗口转换)来决定访问是否成功,然后使用这次访问来进行神经网络训练。在测试期间,随机页面生成与神经网络动态页面比例在逐步减少。最初的登陆页面是 100% 随机生成的,随机页面生成与神经网络动态页面比例在 10 天内衰减到 0。

  为了构建系统,我需要某种虚拟测试环境,所以我构建了一个简单的脚本来模拟访问网站和转换。这个过程的基础是为每个登录页面的变化生成一个「隐藏」的转化率概率。最初,我假设每个特性的独特组合都有自己的CTR,并且所有的特性都完全依赖于彼此。这是一种失败的方法,网络常常无法找到具有大量流量的最佳解决方案。正如我所理解的,这并不是一个真实的情况,标题文本和下面3个卷轴的颜色之间并没有太大的相关性。

  然后我决定简化环境,假设特性都是线性无关的。这是一个过于简化的过程,但是对超参数进行优化并确保系统找到正确的解决方案就足够了。

  感谢你的 关注,欢迎提出问题并与我沟通交流,我的邮箱是: savsunenko.

来顶一下
近回首页
返回首页
一周人气文章排行榜
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
一周推荐文章排行榜
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

网站简介版权所有