前言
据传,2016年双11做1.7亿个banner,点击率提升100%。
据传,2017年双11做4亿个banner,拥有演变出上亿级的海报设计能力。
并且,没有一张会完全一样的。
而与人类对比,假设每张图,人类设计师需要耗时 20 分钟,满打满算也需要 100 个设计师连续做 300 年。
据传,鲁班半个月就学会双11设计风格,目前已经开始产出一部分人类没教过它的设计了。
设计师和文案又要失业了。
咦,为什么说又失业。
那么问题来了,
鲁班?WHO
“让天下没有难撸的banner ”
谐音就是“鲁班”,后来发现简直太合适了,鲁班不仅本身是个伟大的工匠,也是很多工具的发明人,所以他的理念跟我们做的事情是不谋而合的,我们也希望发明工具,让设计师更好地工作。
--- “鲁班”的产品设计负责人乐(yue)乘
[图片上传失败...(image-b1a5c4-1510120911496)]
引用阿里 CEO 的话——“鲁班是数据业务化的代表”。
2016年,以阿里为代表的许多企业已经做到的个性化推荐,但都是基于白底图商品推荐,能不能往前迈一步,让强营销导向的广告资源位的设计也“千人千面”呢?
从纯商品个性化跨到广告资源位个性化,中间几个关键的技术点打通之后,阿里智能团队就着手做了。
企业都有很多数据,但都是闲置的或者利用效率不高的,比如海量的商品图,而“鲁班”把数据变成了业务,通过大规模设计加精准投放,提高每个广告位的资源效率,带动了流量的效率和业务价值,点击率是翻倍的,收益也接近翻倍。
人员倒没有出现缩减,只是做的事情有调整了,要学习这套系统,学习如何训练机器,同时在美学方面做把控。
[图片上传失败...(image-b14c42-1510120911497)]
“Talk is cheap, show me the code”
那么,如何让设计师和文案失去工作的呢
即,机器人如何做设计写文案?
技术上可能认为,文案的实现是基于文章的特征分析。比如,一篇文章的实词抽取,词频统计,文本分类,情感分析,依存文法,甚至标点符号,语气拟声等,做一个数据存取,然后基于大数据。。。
(这种感觉就像是机器人在抄作文吧)
示例:
一、文章特征分析
1.1高频词分析
TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。(百度百科)
我们以《中国的蜜蜂养殖》为例,假定该文长度为1000个词,"中国"、"蜜蜂"、"养殖"各出现20次,则这三个词的"词频"(TF)都为0.02。然后,搜索Google发现,包含"的"字的网页共有250亿张,假定这就是中文网页总数。包含"中国"的网页共有62.3亿张,包含"蜜蜂"的网页为0.484亿张,包含"养殖"的网页为0.973亿张。则它们的逆文档频率(IDF)和TF-IDF如下:
[图片上传失败...(image-204b24-1510120911497)]
从上表可见,"蜜蜂"的TF-IDF值最高,"养殖"其次,"中国"最低。
(如果还计算"的"字的TF-IDF,那将是一个极其接近0的值。)
所以,如果只选择一个词,"蜜蜂"就是这篇文章的关键词。
用TF-IDF结合余弦相似性,衡量文档之间的相似程度。
1.2 文章相似度
为了找出相似的文章,需要用到"余弦相似性"(cosine similiarity)。
什么是"余弦相似性"。
为了简单起见,我们先从句子着手。
- 句子A:我喜欢看电视,不喜欢看电影。
- 句子B:我不喜欢看电视,也不喜欢看电影。
请问怎样才能计算上面两句话的相似程度?
基本思路是:如果这两句话的用词越相似,它们的内容就应该越相似。
因此,可以从词频入手,计算它们的相似程度。
第一步,分词。
- 句子A:我/喜欢/看/电视,不/喜欢/看/电影。
- 句子B:我/不/喜欢/看/电视,也/不/喜欢/看/电影。
第二步,列出所有的词。
- 我,喜欢,看,电视,电影,不,也。
第三步,计算词频。
- 句子A:我 1,喜欢 2,看 2,电视 1,电影 1,不 1,也 0。
- 句子B:我 1,喜欢 2,看 2,电视 1,电影 1,不 2,也 1。
第四步,写出词频向量。
- 句子A:[1, 2, 2, 1, 1, 1, 0]
- 句子B:[1, 2, 2, 1, 1, 2, 1]
到这里,问题就变成了如何计算这两个向量的相似程度。
[图片上传失败...(image-d4bddf-1510120911497)]
数学家说,余弦的这种计算方法对n维向量也成立。假定A和B是两个n维向量,A是 [A1, A2, ..., An] ,B是 [B1, B2, ..., Bn] ,则A与B的夹角θ的余弦等于:
[图片上传失败...(image-35c246-1510120911497)]
使用这个公式,我们就可以得到,句子A与句子B的夹角的余弦。
[图片上传失败...(image-4dedf5-1510120911497)]
余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性"。所以,上面的句子A和句子B是很相似的,事实上它们的夹角大约为20.3度。
由此,我们就得到了"找出相似文章"的一种算法:
- (1)使用TF-IDF算法,找出两篇文章的关键词;
- (2)每篇文章各取出若干个关键词(比如20个),合并成一个集合,计算每篇文章对于这个集合中的词的词频(为了避免文章长度的差异,可以使用相对词频);
- (3)生成两篇文章各自的词频向量;
- (4)计算两个向量的余弦相似度,值越大就表示越相似。
"余弦相似度"是一种非常有用的算法,只要是计算两个向量的相似程度,都可以采用它。
想一想,在词频统计的基础上,自动生成一篇文章的摘要的距离有多远。
当自动生成一篇文章摘要的目标已实现,那我们距离自动生成一篇文章的距离又有多远。
(悄悄告诉你,这篇文章是机器人写的)
二、实例:抓取 2012-2017 年人人都是产品经理文章
2.1人人都是产品经理 词频统计
[图片上传失败...(image-84c529-1510120911497)]
[图片上传失败...(image-861a11-1510120911497)]
除了看话题热度,还可以总结演变趋势。
2.2 文本聚类分析
比如基于谱联合聚类算法(Spectral Co-clusteringalgorithm)的文档聚类。
先将待分析的文本经TF-IDF向量化构成了词频矩阵,然后使用Dhillon的谱联合聚类算法(Spectral Co-clusteringalgorithm)进行双聚类(Biclusters)。
[图片上传失败...(image-3c6eb0-1510120911497)]
2.3 基于特定语境下的关联词分析
比如基于Word Embedding的Word2vec词向量分析,将正文分词文本直接进行词向量模型训练,将文本进行词向量处理,将这些词汇映射到向量空间,变成一个个词向量(WordVector),以使这些词汇在便于被计算机识别和分析的同时,还具有语义上的关联性,而不仅仅是基于词汇之间的共现关系。
[图片上传失败...(image-e400fd-1510120911497)]
根据“关系亲疏(共现关系)”聚集为5个社群(Community),3个主要社群。。。
2.4 词汇分散图
比如栏目中的某些词的数量分布情况,以及它们出现的位置信息(the location of a word in the text),这时可以利用Lexicaldispersion plot(词汇分散图)进行分析,它可以揭示某个词汇在一段文本中的分布情况(Producea plot showing the distribution of the words through the text)。
图中纵轴表示词汇,横轴是文本字数,是累加的;黑色竖线表示该词汇在文本中被提及一次,对应横轴能看到它所处的位置信息,空白则表示无提及。
[图片上传失败...(image-e2a71e-1510120911497)]
冷热话题,想吃就吃。
2.5 延伸
比如热点变迁。
利用DTM模型(Dynamic Topic Models )分析主题下的热点变迁。核心部分是吉布斯采样技术,针对某个词汇的时间进行无监督式动态分析,它是“概率主题模型”家族的一员,用于对语料库中主题演变进行建模。
它基于这样的假设: 蕴含时间因素的主题,尽管它包含的关键词会随着时间的变化而产生相应的变化,但它如构成要素不断更新换代的“忒修斯之船(The Ship of Theseus)”一般,即使同一主题下的开端和末尾中的主题词没有一个是相同的,但还是原先的主题,保留有相同的语境。
比如相似标题索引
通过文章标题之间的语义相似关系来找到相同主题的文章,而这种语义相关性不仅仅是字面上的(不包含相同的词汇,但其中的词含义相近)。利过LSI(Latent Semantic Index,潜在语义索引)就可以做到这一点。
三、机器如何学习设计
下面和大家详细解释一下这个机器背后的学习设计逻辑。
我们要让机器学习设计,首先必须要让机器理解感知设计是什么。
以一张广告为例,在机器的眼里是有一堆像素点组成的。如果以像素为单位让机器去理解设计,对设计的可控性非常弱,所以在前期技术方案选择中没有走像素级生产,而是走向了元素级生产。
[图片上传失败...(image-709aae-1510120911497)]
四个组成部分:设计框架、元素中心、行动器、评估网络
组成一,设计框架。
首先通过人工标注的方式,让机器理解这张设计有哪些元素组成,比如它的商品主体,花的背景,蒙版。
往上一层,我们通过设计的经验知识,定义一些设计的手法和风格。手法指的是这些元素为什么可以这么构成,这个知识在设计脑子里机器是不知道的,所以会有手法这一层做输入。
最上面这一层是风格,当这些元素构成之后,它从美学或者视觉角度看是一个什么感受。让机器知道它是用什么组成的,为什么可以这么组成,以及它组成后的效果。这个过程将一个设计问题转化成数据问题,这就是设计数据化。
下一步是准备设计的原始文件,比如一系列花朵和设计方法,输入到深度学习系列网络。这个网络有一个很大特点:具备一定记忆功能。因为设计是个步骤很复杂的过程,经常有好几十步才能完成一个设计。
经过这层神经网络学习之后,我们会得到一个设计框架。从技术上理解,它是一堆空间特征和视觉特征构成的模型。设计师的视角来理解的话,它相当于设计师脑子里面在做一组设计之前大概的框架印象,比如今天你接到一个任务要做一个花朵风格,思考这个设计大概会怎么做,然后从一堆文件里提取出了特征模型出来。
[图片上传失败...(image-31b0f2-1510120911497)]
组成二,元素中心。
因为做的是元素级生成,所以必须准备一个元素的库。我们会通过收集一些版权图库,以及自己造设计元素的方式,输入到一个元素的分类器。这个分类器会把这些元素分布到各个类型里,比如背景、主体、修饰,也会完成图片库的提取。
[图片上传失败...(image-4cc571-1510120911497)]
组成三,行动器。
接下来,就是设计的具体过程。比如今天我们接到一个设计任务,要为这样一件衣服设计一个花朵风格的广告。这时候会有一个行动器,负责把前面准备好的底料放到设计框架里。这个过程和下围棋很像,左边是棋盘,右边是下围棋的棋子。行动器就是把元素放到棋盘里,这是整个行动器的生成原理。
它很像设计师实际在做设计的过程,如设计师要做一个花朵的时候,也在软件里面会不断去调每个位置、每个像素、每个角度。同时,整个过程也是一个强化学习的过程,行动器会在不断试错中更智能。
[图片上传失败...(image-64f0c5-1510120911497)]
组成四,评估网络。
设计成品出来之后,我们要告诉机器人,从设计的角度是好还是不好。我们有一个设计评估网络,最终实现的效果就是给它输入任何一个设计成品,它能打个分。技术原理是,我们通过人工输入大量历史上投放过的一些设计图评分,它从这里训练出一个打分的模型出来。同时,专家也会人工干预打分,完成双向反馈。
[图片上传失败...(image-dc2666-1510120911497)]
这套框架并不是只能做Banner广告,Banner广告是我们找到的第一个最适合落地的业务场景。我们把它定义为是一个通用的设计智能,理论上,它可以设计一切的数字内容。只要是通过元素或者像素组成的图像,理论上都是可以完成的。
前两张图是机器完成的服饰搭配,根据用户输入的服饰商品进行组合搭配,生成类似杂志的搭配效果图。另外,我们也正在训练机器完成页面模块的设计,比如大量的营销活动页面,我们现在正在训练它完成复杂的排版设计。
[图片上传失败...(image-fd9606-1510120911497)]
正在攻克的三个难题
目前,技术层面已经完成了框架搭建,以及数据的自我学习成长。接下来决心攻克的三个难题,也是让机器变得更加强大的关键突破点。
第一,让机器能够自主生成元素。
我们希望能做到,要求机器造一个花朵时,它自己能生成出来,这也是目前计算机视觉生成的一个非常火的话题。
第二,提高认知理解。
当用户输入了“清凉一夏”的文案时,机器人能理解“清凉”这个词代表了什么意思,并且理解这张照片代表了“清凉一夏”的理念,图文之间有一定的关系。
最后一个,设计的迁移。
通过大量专家数据训练了几百种常规数据手法之后,它能够完成主流的设计要求,不再根据需求完成使命,而是通过自我学习和演化之后有新的东西出来。
所以 ,这背后,阿里的设计师和算法工程师做了三大功课。
第一,领域研究。
构建一套机器可以学习的数据模型。视觉设计专家把设计问题抽象成 " 风格 - 手法 - 模板 - 元素 " 这样一套数据模型,即把多年视觉设计经验变成机器可学习的 " 数据 "。
第二,数据链路。
如果处理数据给算法训练的更新频次,用什么数据去验证模型,如何评估模型效果,离线模型与在线数据在产品端如何打通?这一系列的数据问题就需要一套清晰的数据链路设计。
第三,算法框架。
产品设计师需要与算法讨论,把业务场景和数据问题输入给算法。
鲁班的背后,有一群“败家”的攻城狮。
结语:
我们相信,随着人工智能时代的到来,设计与人工智能的纠葛,艺术与科技的博弈,将越来越频繁地现身热门话题榜。
参考:
阮一峰网络日志
苏格兰折耳猫
阿里官方等