首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用神经网络对页面登录进行多参数优化的小妙招

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

作者头像
AI研习社
发布2018-08-06 14:35:04
4000
发布2018-08-06 14:35:04
举报
文章被收录于专栏:AI研习社AI研习社

本文为 AI 研习社的技术博客,原标题 Neural networks for landing page optimization,作者为 Oleksandr Savsunenko 。 翻译 | 赵萌 整理 | MY

为什么,是什么,怎么做?

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

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

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

让我们从概要开始。

遗传算法

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

  • 生成一个数字 (假设是 100),不同的后代具有随机的特征集 (100 个登录网页具有各种各样的特征)。
  • 让流量流入它们并测量转化率(进化生存)。
  • 计算适应值大小——每一个网页的表现。
  • 选取 20 个表现最好的页面,提取它们的特性,以重新将它们混合。然后在混合页面中添加 20 个性能较差的页面特性并添加一些。这可能有一些罕见的“突变”隐藏在其他性状中,但是有利于多样性。基于这些特性生成新 100 个新的网页。
  • 重复 n 次。

当这个系统看起来不错的时候,我发现了一些确切存在我不想要的东西。

  • 它仍然需要大量的流量
  • 当用户配置文件/属性在测试期间发生变化时变化很慢 (例如出现新的获取通道)
  • 它没有考虑用户配置文件 (一天中的时间、浏览器、设备等)
  • 它没有用到神经网络

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

研究阶段

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

  • 第一阶段 :一个拥有几个拉杆的老虎机。一个多臂老虎机,每个拉杆(网站的不同功能)有稍微不同的收益概率 (CTR 率)。你需要构建一个系统,在最少的尝试中找到性能最好的拉杆,然后始终坚持使用这个拉杆 (显示网站的这个版本)。请记住,由于这个问题的随机性,总会存在解决办法错误的情况。
  • 第二阶段 : 用户。赌场里有许多多臂老虎机,不同的用户会玩不同的老虎机,系统必须找到什么用户应该玩什么样的老虎机。这意味着不同的用户对你的登陆页面有不同的反应,所以你必须根据用户的特点为每位用户显示不同的页面。
  • 第三阶段 : 定时。这里有很多带有多臂老虎机的房间,你必须经过每个房间里的老虎机,你的收益概率取决于你在每个房间的表现。当你有多步销售过程——例如预登录,登录,电子邮件营销,这是问题的完整版本。

我将分享我对实现阶段 0 中问题的见解。

为什么只是第一阶段呢?

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

最新运行结果

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

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

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

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

  • 100% 的随机化;
  • 提出对特征性能进行简单比较的静态版本 (为每个特性获得最佳性能并将它们合并到登录页);
  • 由神经网络得到的静态版本。

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

  • 基于神经网络的系统与简单的基于概率统计学的版本表现相同。
  • 统计学和神经网络系统两个版本的表现差异为 80%。这可能意味着我没有收集足够的数据对两者进行独立操作。
  • 有一种可能性是,性能最好的登录页不仅仅是表现最好的特性总和,而且存在二阶相关性。
  • 我们需要更多的数据。

系统建立

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

神经网络

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

这是我使用的网络。规模变量表示经测试的特性数量和每个特性的一些变体。

产品运行

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

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

一些技巧

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

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

在这里创建正确的“隐藏”环境是一个关键的系统微调,需要一些额外的步骤。

部分代码

我正在分享我一般用来寻找超参数和测试神经网络部分的脚本。

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

Github 链接:

https://gist.github.com/crazyleg/e6da94871c3acb1a35b9d3f7d9c61c39#file-simplerl-py

参考文章

  • Simple Reinforcement Learning with Tensorflow Part 0: Q-Learning with Tables and Neural Networks https://medium.com/emergent-future/simple-reinforcement-learning-with-tensorflow-part-0-q-learning-with-tables-and-neural-networks-d195264329d0
  • Solving the Multi-Armed Bandit Problem https://towardsdatascience.com/solving-the-multi-armed-bandit-problem-b72de40db97c
  • Multi-Armed Bandits and Reinforcement Learning 1 - DataHubbs https://www.datahubbs.com/multi_armed_bandits_reinforcement_learning_1/

原文链接:

https://hackernoon.com/neural-networks-for-landing-page-optimization-564153b4d120

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI研习社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么,是什么,怎么做?
  • 遗传算法
  • 研究阶段
  • 最新运行结果
  • 系统建立
  • 一些技巧
  • 部分代码
相关产品与服务
邮件推送
邮件推送(Simple Email Service,SES)是一款基于腾讯云端的平台化服务, 为企业提供安全稳定、简单快速、精准高效的营销、通知和事务邮件的推送服务。产品提供灵活的 IP 部署、电子邮件身份验证以及企业专属定制的启动计划,以保护发件人声誉,同时提供精准智能的数据分析。产品的服务范围覆盖200+国家/地区,可即时触达全球各地的邮箱地址。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档