书接上文,设计师是对目前已有知识进行归纳总结,并依据需求提出者的意见,同时也加入自己的一部分看法,从而创造出属于自己的东西。那么我们可以一步一步来分析这个从需求到设计成果的过程。

先说我自己的一个整体设计,假设我们需要让电脑学会如何设计家居装修图,列出了下图所示的机器设计师的图:

人工智能之设计师构想二

我们假设的应用场景是需求者先拿到了一张装修图,认为这张装修图风格太偏冷色调了,希望变为暖色调,并且希望调整格局,重新布放家居等等要求。这样就抽象化为模型的输入为一张待整改的图片,输出为一张修改过的图片,需要对设计师提供装修要求。

好了,明确了应用场景,就说一下我们需要什么样的数据,我们需要的每一个样本有2张图片,以及它们之间的差异,比如图1比图2色调更暖,格局更大气等等。这和图片风格迁移比较类似,图片风格迁移就是需要一张原图和一张风格图片生成最终的风格迁移图片。但是本题与风格迁移又有极大的不同,因为本题的输入除了图片还包含图片中对应特征的一些修改值的需求。

再说模型搭建与模型训练。采用上图所描述的结构,首先说第一部分,模型中的单向网络,这部分与我们目前的监督学习基本相同,是一个特征学习的过程。利用数据所提供的图片与其对应的特征,比如说我们的装修风格采用的是粉色,将其量化为1,绿色量化为2,等等,这就和监督学习相似,经过这层网络,我们可以得到图片的一些特征,相当于设计师对原有图片进行认知的过程,学习过机器学习的读者都应该明白这部分。在这里就不对这部分进行多余的赘述,主要是后边的网络结构与目前的主流有所区别。

先说一下双向网络层吧,在这里只是训练的时间这个网络是双向的,实际输出时这个网络还是单向的,有两种设计方案:

1)用2个网络来独立实现,一个网络(W1)以图片B为输入,得到其特征,比如说风格特征的颜色,是一个有监督的学习;另一个网络(W2)以需求者对特征的需求与图A为输入,从而得到输出的图片,这个过程相当于图像重构。另外,在这里应该注意,W2的损失函数的定义,可以以数据中的图A+需求对应图B这一组作为样本,其损失函数就是这2个图像的某种差别,其详细的损失函数我们之后再详解。另外,这是一个生成的图像,我们无法预料其输出是个什么东西,这个图像可能根本就不是一张装修图,这时我设想是通过强化学习,自定义一个环境,让其不断的自身去学习如何去生成一副装修图,这个详细的也是后文再讲。

2)打破常规,我们通常认为神经元的传递是从输入到输出的,这是人为依照类人结构定义的,那么我们设想,这个神经元为什么不能是双向传递的,既可以从左到右输出,也可以从右到左输出,我们在这里将这种神经元构成的层称之为映射层,他有2个方向,就要定义2个方向的损失函数,其损失函数的定义与方案1)的两个损失函数定义类似吧,具体的神经元结构这里挖一个坑,以后能不能填看水平了。

再说握手层,这个设想一下结构吧:

人工智能之设计师构想二

握手层是单向网络与双向网络对接的地方,也是计算单向网络的损失函数的地方,同时也可以为双向网络提供需求。可以将其每一个特征看做一个单独的网络,方便我们数据中标签不全的网络的训练。

今天先说一下各个网络的作用以及基本结构,以后会将其详细化。

相关文章: