前言:
目前大家对“遗传算法c语言实现”大概比较注重,朋友们都需要剖析一些“遗传算法c语言实现”的相关资讯。那么小编也在网络上收集了一些对于“遗传算法c语言实现””的相关知识,希望咱们能喜欢,同学们快快来了解一下吧!编辑按
此文转载自 低多边形厌氧菌 网站 psyxel.com 的“计算创意学系列”。仅做了适合网站的样式修改,未做内容修改。
原文地址:
前言
欢迎来到计算创意学系列第三章,在前两章的讨论中,我们介绍了三种类型的创造力。
探索性创造力(Exploratory Creativity)是比较常见的创造力:其中某个创作者通过探索某个给定概念空间中无人涉足的区域,得到了一个之前从未被发现过的极具价值的新点子。
而转型性创造力(Transformational Creativity)则是更加具有革命性的较为罕见的创造力:创作者在由所有可能的问题的定义规则所组成的高阶概念空间中进行探索,其结果不仅仅是极具价值的新点子,还有新的概念空间定义,引导世人以全新的视角看待问题所在的领域。转型性创造力的本质是高阶概念空间中的探索性创造力。
第三种组合性创造力(Combinatorial Creativity),则是指创作者通过在多个看起来无关的知识领域之间建立联系,发现了融合这些知识领域的新概念,继而得到有价值的新点子。
这三种类型的创造力,最初是在玛格丽特·博登(Margaret Ann Boden)的著作《创造力心智(The Creative Mind: Myths and mechanisms)》中被提出。
上一章我们讨论了概念整合理论(Conceptual Blending),用以解释组合性创造力(Combinatorial Creativity),将新点子的产生描述为思考主体将多个原本无关的概念网络中的概念映射到整合概念网络中的新概念的过程。
回顾概念整合理论:病毒 | 程序的例子
概念整合理论所提出的这套实实在在的过程模型,迄今为止已经有许多算法化的尝试,这一章我们就来简单考察一下这些尝试。
DIVAGO: 最初的尝试
1990 年首次被提出的 DIVAGO 系统,是将概念整合理论进行算法化的最早的尝试之一。DIVAGO 这个名字源于葡萄牙语中的词组“Eu divago”,意为"我漫游(I wander)"或者“我偏离主题(I digress)”,刻画出创造力源于发散性胡思乱想的意境。
DIVAGO 系统的主要输入是两个知识领域的描述编码,输出则是一个整合知识领域的描述编码。每个知识领域的编码描述包括一个用图数据结构(Graph)来表示的概念网络——其中节点代表概念,节点之间的连线代表概念之间的关联——还包括一些用逻辑公式表示的知识领域内的规则,用以推导出概念网络上没有标明的知识,也定义了这个知识领域内哪些命题是不可能为真的(知识域特有的矛盾式)。比如,下面是一个非常简化的例子,描述了围绕“鸟”这个概念展开的知识领域。
除了两个要进行整合的知识领域,用户还需要提供跟两个知识领域独立的一般信息,用以辅助新信息的推导,以及对“怎样一个整合概念网络才是一个好的整合概念网络”作出评估。在这部分输入中,用户可以用一个逻辑命题的形式定义什么是一个“有用的新概念”——比如,用户可以定义,最后得到的新概念应该是一种既会飞又会游泳的虚构生物,再结合“有翅膀的生物才会飞”和“有鱼鳍的生物才会游泳”的一般知识,就能推动 DIVAGO 去构造一个既有翅膀又长有鱼鳍的生物。
DIVAGO 系统架构
DIVAGO 系统中有一个映射器(Mapper)模块负责找出在两个输入知识域的概念网络节点间建立映射关系的所有方式,一个整合器(Blender)模块再在每个映射方式的基础上建立对应的整合知识域的概念网络,所有这些整合概念网络再进入到一个概念工厂(Factory)模块进行检查和评估,筛选出其中最优的整合概念网络。检查和评估的标准包括最基本的逻辑一致性,也包括 Fauconnier 和 Turner 在最初提出概念整合理论时列举的那些“最优原则(Optimality Principle)”,包括拓扑学原则、集成原则、最大化核心关系原则、网络原则、解包原则等等(每条原则的解释请见上一章)。进行检查和评估的概念工厂模块也配置有一个进行自动化逻辑推理的推理器模块,让它能够不是只局限于整合概念网络中明确出现的信息,也能够从中得到一些推论,将这些推论也作为检查和评估的依据。
可以理解为,映射器和整合器只是在纯语法(Syntactical)的层面上穷举出所有形式上合法的新概念,而概念工厂模块则真正从语义(Semantical)的层面审视这些新概念的含义,判断它们是不是真正有意义的概念。
比如说,下图的来自两个输入知识领域的概念网络:
映射器模块会将“长着鸟鬃毛的马”,“长着马翅膀的鸟”,“长着 4 条鸟腿的马”,“长着两个马翅膀的鸟”,“既有 4 条腿又有 2 个翅膀还长着鸟喙的生物”,“既有 4 条腿又有 2 个翅膀还长着鬃毛的生物”,“既有 4 条腿又有 2 个翅膀既长着鸟喙又长着鬃毛的生物”,“没有腿但有鬃毛的生物”等等等等所有可能性无脑地组合出来,也不管组合出来的概念究竟意味着什么、是不是合理、对用户有没有用。
而概念工厂模块则会进一步去考虑这些概念的含义,比如“如果马的鬃毛同时又是一只鸟,那这些鬃毛就该又具有翅膀和鸟喙”,“因为马是一种生物,如果翅膀变成了马,翅膀就也应该具有生或死的状态”, “如果一个生物既有腿又有翅膀,就既能在陆地移动也能在天上飞行,但这个生物还是不符合用户给出的‘会游泳’的要求”,“‘一匹会飞的马’比起‘一只长了鸟鬃毛的马’来,前者是一个更有内聚性的概念”, 等等等。
在两个概念网络之间寻找节点对应方式的映射器模块,也不是完全“无脑”地进行组合。即使不考虑概念的实际含义,单纯从形式上看也能发现,两个概念相似程度越高,就越适合进行整合。映射器至少会在这个形式层面上筛选出合适的组合。当概念网络表示成为图数据结构时,这个问题被转换为在两个图中各选择一个节点,从而以这两个节点为中心延伸出的子图结构最相近(结构对齐问题;Structurally Alignment)。
映射器会考察所有可能进行整合的概念组合,返回其中相似性较高的部分。即使一些结构相似性低的概念组合已经被排除了,当输入知识领域规模非常庞大时,映射器所返回的概念组合的数量还是能够达到天文数字。当两个输入概念网络分别含有 x 和 y 个概念节点时,所有组合的数量在最坏的情况下可以达到 4^(2k) x 2^(l-2k)个,其中 k=x+y, l=min(x, y)——也就是说,分别含有 5 个和 7 个概念节点的两个输入概念网络(已经算比较小的输入规模),已经足以产生 67108864 个组合的可能性。
因此概念工厂模块就不可能一个一个地检查所有这些组合所对应的整合概念网络,来找到其中最优的一个。
概念工厂模块采取的应对策略是一种叫做遗传算法(Genetic Algorithm)的搜索策略。遗传算法模仿达尔文进化论所描述的生物进化过程,将搜索空间中的每一个可能的解都看作是一个生物个体,各自有独一无二的基因型(Genotype),在其作用下演化出各种各样的表现型(Phenotype);遗传算法进而引入适应函数(Fitness Function)来模拟生物界的优胜劣汰——适应函数是以个体的表现型为自变量的函数,遗传算法会选择出那些表现型代入适应函数之后取值较高的解,对这些解进行某种形式的“融合”得到下一代的解(模拟生物交配),再用适应函数去评估这些下一代的解,如此重复一定迭代次数之后,将最新一代的解看作是目前计算资源下能找到的近似最优解。
在 DIVAGO 的概念工厂模块中,每一个整合概念网络都是一个可能的解,其基因型被定义为这个整合概念网络所整合的那两个概念、以及这两个概念映射到一起的方式(是映射到了整合网络的同一个概念、还是各自映射到了整合网络的一个概念);表现型则被定义为最后得到整合概念网络以及在它的基础上能够推论出的所有信息。适应函数则是将整合概念网络在 Fauconnier 和 Turner 的“最优原则(Optimality Principle)”的每一项上进行打分,再总和到一起得到的综合分。打分时占比重最大的一项最优原则是“相关原则(Relevance)”,即新概念在多大程度上符合用户一开始输入的对有用概念的定义。
DIVAGO 输入输出的例子
DIVAGO 系统向人们展示了设计开发出一个能够自动发明出新概念的机器的可能性,这样一个概念发明机器在许多创意领域都有可能的应用场景。比如,DIVAGO 就曾被应用在游戏设计中,帮助设计者想象游戏中的虚拟物品。
但作为将概念整合理论算法化的最初尝试之一,DIVAGO 系统也很自然地存在很多缺陷。
首先,DIVAGO 的运作所需要的知识库,需要用户在提供输入时去手工构建,而任何实际问题所涉及的知识库,规模都相当庞大、结构也非常复杂,这种手工构建显然是不现实的。
此外,DIVAGO 系统在天文数字级别的整合网络中搜索最优解的做法,不可避免地面对性能瓶颈。比起能够在几秒钟内灵光一现的人脑,DIVAGO 产生一个新概念需要一段不短的时间。
DIVAGO 的后继者们,想到了各种各样的方式来解决这些问题。减小搜索空间的大小是最主要的思路。比如,Li, Zook 和 Riedl 在 2012 年提出的概念整合算法[10],通过在选择输入知识领域的概念组合阶段就将用户给出的整合目的和整合的上下文纳入考虑,将明显不可能符合用户目的的概念组合在最初就排除掉,显著地减小了搜索空间的大小,提高了算法运行的效率。
这类设定了语义限制条件来控制整合概念候选的质量,从一开始就将不符合这些语义限制条件的概念组合排除出搜索空间的概念整合算法,被称作是“新拉马克主义(Neo-Larmarckian)算法”;而像 DIVAGO 这样,先一股脑生成所有的组合,再在形成的巨大搜索空间中寻找合适的整合概念的概念整合算法,被称作是“新达尔文主义(Neo-Darwinian)算法 ”。因为这两种算法分别更适合比作是拉马克和达尔文的进化模型。
“概念混搭(Conceptual Mash-up)”: 自动化知识库构建的早期尝试
2012 年由 Tony Vaele 首次发表的 Metaphor Eyes()[3],是解决类似 DIVAGO 这些早期概念整合系统的知识库构建问题的一个尝试。Metaphor Eyes 通过自动在互联网中搜集构建知识库所需信息,避免了需要用户手工构建知识库。
Metaphor Eyes 网络服务
用户在 Metaphor Eyes 网页的文本框中输入关联两个名词的一个简单隐喻句子(比如“Google is a cult(谷歌是邪教)”),Metaphor Eyes 就会返回一系列两个名词的共同特征,作为对用户输入的隐喻成立的支持(比如“Google worships celebrities like cult(谷歌就像邪教那样搞个人崇拜)”)。如果将用户输入的两个名词看作来自两个知识领域的概念,将这两个名词整合成为一个新概念,Metaphor Eyes 返回的列表可以大致看作是以这个新概念为中心的整合概念网络中的特征。
Metaphor Eyes 最大的特点是能够自动从互联网上获取概念整合所需要的知识库。它实际上是利用了谷歌搜索引擎的关键词自动补全功能。当用户在谷歌搜索中输入一个不完整的句子"why do X(X 为什么…)"的时候(X 是一个名词),谷歌会弹出下拉框列举出一系列补全这个句子的可能方式——
而每个这种补全方式,都可以看作是述说了关于 X 的一个特征。将所有这些特征收集起来,就得到关于 X 的一个简陋的知识库。更进一步,每一种补全方式实际进行搜索之后,得到的搜索结果的条目数量可以简单粗暴地看作是对这个补全方式所对应的特征的确定性程度的一个估计。比如说,“Why do philosophers lie(为什么哲学家撒谎)”这个句子有 586 个搜索结果,“Why do philosophers equivocate(为什么哲学家说话模棱两可)”就只有 11 个搜索结果,Metaphor Eyes 因此认为“哲学家撒谎”这个特征远比“哲学家说话模棱两可”有可信度(当然事实可能不是这样)。
有了这样简单粗暴地构建起来的知识库,当 Metaphor Eyes 的用户在文本框中输入"A is B"的暗喻句子时,Metaphor Eyes 就会在在这个知识库中找到可信度排名靠前的 A 的特征,将这些特征代入搜索关键词“Why do B X”中的 X,去查询 B 也符合这些特征的可信度。可信度较高的那些特征,就作为 A 和 B 共有的特征之一返回给用户。
通过进行大量这样的搜索,Metaphor Eyes 慢慢建立起关于许多概念的大规模知识库。有了这样的知识库之后,Metaphor Eyes 就能只接受一个名词作为输入(比如“哲学家”),而返回可能适用于这个名词的一系列比喻(比如“哲学家像政治家一样撒谎”,“哲学家像诗人一样擅长打比方”等等)。
但是,以这种方式从互联网上获取的信息,是缺乏结构性和语义一致性的。每条搜索结果都来自不同的网站、不同的作者。信息的可信度不能保证,文本的内容也是断章取义的;由于缺乏文本的上下文信息,也无法去解读文本内容的准确含义。这注定了 Metaphor Eyes 不可能像 DIVAGO 那样对整合概念网络的候选做任何语义上的处理。Metaphor Eyes 构建的知识库也不可能被 DIVAGO 这样的系统利用。
跟 DIVAGO 不同,Metaphor Eyes 不考虑返回的特征列表的前后一致性,不会对特征列表做任何推论,也不会考虑整合网络对 Fauconnier 和 Turner 的最优原则的符合程度,更不会去考虑整合概念网络的价值或者效用。这些简化可以看作是为了自动化构建知识库以及计算效率而进行的妥协。这种妥协之下的简化版概念整合,被 Tony Vaele 称作是“概念混搭(Conceptual Mash-ups)”。“概念混搭(Mash-up)”和“概念整合(Blending)”的最重要区别,就在于“概念整合(Blending)”是考虑到概念之间含义上的兼容性,将多个概念逻辑前后一致地组合在一起,而“概念混搭(Mash-up)”则完全不去考虑概念的含义和逻辑一致性,“无脑”地将多个概念扔在一起形成的。
可以看出,Metaphor Eyes 所提出的这个“概念混搭(Conceptual Mash-up)”的概念,同时解决了以 DIVAGO 为代表的早期概念整合系统的知识库构建问题和运行效率问题,但为此完全牺牲了对概念语义层面上的计算。DIVAGO 系统能够告诉用户自己产生的新概念有什么合理逻辑推论,能够告诉用户新概念在每条最优原则上的得分是多少,在这种意义上可以说能够对自己产生的新概念的价值给出一定程度的辩护。而 Metaphor Eyes 是不具备任何这种解释能力的,它更像是个启发系统,能够抛出一些大概的内容给用户提示可能的思考方向,但真正的“概念整合”还是要在用户自己的头脑中进行。
但以此为代价,Metaphor Eyes 的使用非常简单直接,并且一秒钟就能得到运行结果。
Metaphor Eyes 只是自动化构建概念整合所需的知识库的一种方法,它依赖于谷歌搜索返回的文本搜索结果。也由于谷歌搜索结果是缺乏结构性和语义的非常杂乱的文本信息,Metaphor Eyes 难以对知识库进行任何语义上的处理。实际上,也有其他方法能够从互联网上自动获取到有一定结构性和语义的文本,包括 ConceptNet(),dbpedia()和谷歌的 Knowledge Graph()等等,都是在互联网上建立结构化的知识库的例子。
Deep Dream 和 Neural Style Transfer:深度神经网络“脑海”中的“概念整合”?
概念整合的理论,严格来说只定义了在已有的概念网络上进行操作的过程,而没有对这些被操作的概念网络提出任何要求,它本质上说只是将几组特征按一定规则整合到一起成为一组新的特征的过程。当概念整合的主体是人时,我们很容易想象这些特征和它们被整合的典型过程是什么样子的(比如“长着角的独角兽”和“长着翅膀的鸟”整合成为某种“长着角和翅膀”的虚构生物),因为这些被组合的特征都是人脑从一开始就理解的。
近几年深度学习的爆火,将一个不一样的“特征”概念摆在了世人面前。
深度学习是机器学习的一个分支,像大多数机器学习方法那样,用一个数学统计模型去拟合给定的训练数据中的输入-输出关系。深度学习的特点在于使用一种叫作深度神经网络(Deep Neural Network)的特殊统计模型,是由多层的“神经元”计算模块组成的复杂数学计算函数,包含了数量庞大的参数用于拟合数据。与传统的机器学习不同,深度学习不仅要用统计模型去“学习”输入中的特征和输出中的特征之间的关系,还要“学习”这些特征本身。也就是说,深度学习的输入往往是原始对象的数据表示(比如一张图片,一段文字),一个深度神经网络要首先从原始对象中提取出对计算任务有用的特征,才能去完成计算任务。而能够自动发现特征,避免了手工去设计特征的编码表示,也正是深度学习优于传统的机器学习很重要的一点。
深度神经网络是一种统计模型,本质上是一个数学函数,对高维空间中的向量和矩阵进行运算。因此深度神经网络能够“学习”到的特征,也自然是表示为高维空间中的向量或矩阵。
于是人们发现,一个“特征”可能不是任何能用现有的语言简单优雅地描述出来的属性(比如“长着角”或者“会飞”),而可能是某个向量空间(Embedding Space)中一个很难找出意义的坐标,通常代表了我们能够理解的那种“特征”的意味不明的线性或非线性的组合。尽管人类很难理解这些特征,但至少从深度神经网络的种种成功应用来看,基于这些特征所进行的思考是有可能导出现实世界中合理的(人类能够理解的)结论的。
于是一个自然的问题就是,如果人脑中的那些“特征”能够进行概念整合,使用这些向量空间进行思考的深度神经网络是不是也能整合它们脑子里的那些“特征”?
答案是肯定的,从这种视角来看,谷歌著名的 Deep Dream,以及 2015 年由 LA Gatys 等人发表的 Neural Style Transfer(神经风格迁移器),都能看做是向量空间上进行概念整合的例子。
Deep Dream 是 2015 年由谷歌的工程师发表的基于深度神经网络的图像生成程序[6]。其中所使用的神经网络,最初是以图像识别(比如人脸识别)为目的训练的——输入一个图像,能够以一定的准确率输出这个图像的内容所属的类别。
深度神经网络进行图像识别,通常会采用一种叫做卷积神经网络的结构(Convolutional Neural Network)。
图像处理一种常用的方法是采用一系列不同的过滤器去分析一个图像各种各样不同方面的特征。这些过滤器的本质是一些小的数学矩阵。精心设计的数学矩阵,与输入图像的各个局部的像素窗口的 RGB 值组成的矩阵相乘之后,得到的结果就反映了这个图像某个方面的特征。比如说,下面的这两个过滤器矩阵:
分别能够用于检测出输入图像的垂直和水平的边缘线。用同样的方法,通过精心设计这些矩阵每个位置上的数值,还能够对图像进行色彩分析、形状分析、对比度分析等等等。将这些分析得到的结果收集起来,进一步进行稍微宏观一些的分析,得到图像更具总体性的结论,比如图像中刻画了一些什么物体之类。
而卷积神经网络,实际上就是用一个深度神经网络来模拟上述过程。在传统的图像处理中,这些过滤器都是手工精心设计的矩阵,由过滤器得到的信息如何收集和整合来得到更宏观的信息,也是在手工设计的计算公式下进行。根据图像分析最后的目的不同,往往需要设计不同的过滤器和计算公式。而在卷积神经网络这里,开发者不再需要去手工设计这些过滤器和计算公式。过滤器和计算公式反映在卷积神经网络的参数中,通过拟合训练数据,卷积神经网络能够自动地找到可以达到图像分析目的的过滤器和过滤器信息整合计算公式。
卷积神经网络架构图
用于图像识别的深度神经网络,就是以这样的卷积神经网络架构,通过层层过滤器和过滤器结果的收集整合,最后得出关于图像内容所属类别的结论。
但谷歌工程师们后来发现,这个用于图像识别的神经网络也可以反过来运行——要求神经网络对输入的图象进行修改,从而最大化某个输出图像类别的置信程度(比如要求对一张深海的图片进行修改,使得修改后的图片被神经网络判定为是狗的图片)。以这种“非主流”的方式运行这个神经网络,产生了许多令人惊艳的超现实图像作品。
图一:作为输入的深海图片;图二:经过 DeepDream 的 10 个迭代的修改后的图片;图三:经过 DeepDream 的 50 个迭代的修改后的图片
正常的神经网络训练是通过修改神经网络中神经元的参数,来使得神经网络的输出逼近训练样本指定的结果。而 Deep Dream 中对神经网络的使用方式则反其道而为之——去修改图片上各个像素的 RGB 数值,来使得神经网络读取这个图片之后的输出逼近给定的结果。
如果我们将原本给定的图片所具有的所有特征看作是一个输入概念网络,需要最大化置信程度的那个图像类别看作是另一个输入概念网络,那么 Deep Dream 的训练过程可以看作是在将这两个概念网络进行概念整合。这个概念整合不是简单的将两组特征放到一起——因为给定图片的一些特征可能与需要最大化置信程度的那个图像类别是矛盾的,这些特征需要减弱,而另一些能够加强那个图像类别的特征又需要加强。而之所以两个输入概念网络需要进行整合,是因为原本给定的图片所具有的所有特征和需要最大化置信程度的那个图像类别的特征表示,是来自两个不同含义的向量空间的特征(就像是来自两个不同的知识领域),虽然它们都能够被表示成一堆向量,但是因为向量空间含义的不同,不能进行简单的算术组合,要通过神经网络训练所使用的优化算法(通常是梯度下降法)来进行含义上的相互逼近。
2015 年由 LA Gatys 等人发表的 Neural Style Transfer(神经风格迁移器)[7],可能是这种向量空间“概念整合”的一个更加一般(General)的例子。Neural Style Transfer 在给定两张图片的情况下,能够生成一个在内容上模仿第一张图片,而在风格上模仿第二张图片的全新的图片。
图 A:用户输入的第一张图片;图 B、C、D、E、F:用户输入的五张不同的图片作为第二张图片和对应的结果图片
Neural Style Transfer 同样基于一个以卷积神经网络为主要架构的神经网络,有一个输入图片,算法要去修改这个图片上各个像素的 RGB 数值,来使得神经网络读取这个图片之后的输出满足某个预先规定的要求。与 Deep Dream 不同的是,用户不需要提供神经网络的输入图片,算法会随机生成一个像素点阵作为输入图片——这个输入图片的随机性,也为整个算法最后的到的结果图片引入了不确定性和多样性。整个算法的输入只有分别要在内容上和风格上去模仿的两张图片。为了区分这个随机化的神经网络的输入图片和用户提供的两张图片,我们下面把前者称作是初始图片。
而 Neural Style Transfer 与 Deep Dream 的另一个更加重要的区别,在于这个神经网络读取修改后的初始图片后产生的输出要去满足的那个预先规定的要求。在 Deep Dream 那里,这个要求非常简单:Deep Dream 中的神经网络是一个简单的图片分类器,对初始图片修改后的要求是使得这个分类器神经网络的输出是指定的图片类别。
而在 Neural Style Transfer 这里,这个要求有着复杂得多的表达形式。直观上来讲,对修改后的初始图片的要求是:内容上与用户输入的第一张图片尽可能相似,风格上与用户输入的第二张图片尽可能相似。而 Neural Style Transfer 这项成果最主要的贡献就是,通过提取出卷积神经网络的各种中间运算结果并进行一些数学运算,能够得到表示内容的向量特征和表示风格的向量特征。因此,将修改后的初始图片和用户输入的第一张图片分别输入神经网络,提取卷积神经网络运算中间结果并计算出内容向量,通过修改初始图片来最小化这两个内容向量的差,就能够让修改后的图片在内容上尽可能接近用户输入的第一张图片。类似的方式,最小化初始图片和用户输入的第二张图片的风格向量之间的差,就能够让修改后的图片在风格上尽可能接近用户输入的第二张图片。
从概念整合的角度来看,这里我们是在整合第一张图片的内容相关的特征和第二张图片的风格相关的特征。这些特征全部都表示为向量空间中的向量。但同样由于两组特征来自于意义不同的向量空间,不能进行简单的算数组合,要通过神经网络训练所使用的优化算法(通常是梯度下降法)来进行含义上的相互逼近。
Deep Dream 和 Neural Style Transfer,看起来跟 DIVAGO 是完全不同的算法。但如果同时从概念整合的角度去看待它们,还是能够进行一些有趣的比较。
DIVAGO 中的知识领域,是由一系列离散的信息所描述的,一个概念实体要么具有一个特征、要么不具有——只有两种情况。而 Deep Dream 和 Neural Style Transfer 作为深度神经网络所考虑的那些特征,都是连续的高维向量空间中的取值——因此一个概念实体在多大程度上具有一个特征,就是一个能够在一定范围内连续变化的数值。从这个角度来看,深度神经网络意义上的“特征”,可以看作是对 DIVAGO 概念下的“特征”的一个泛化(Generalization)。
DIVAGO 所处理的是人脑所理解的那些概念和特征,因此对整合概念的优劣评价,也是以人脑的“直观审美”为标准,由此衍生出了 Fauconnier 和 Turner 的最优原则中的许多条目。而 Deep Dream 和 Neural Style Transfer 作为深度神经网络所考虑的那些“特征”和“概念”,从一开始就不能被人脑理解,因此自然也不需要去优化它们在 Fauconnier 和 Turner 的最优原则上的打分。(Fauconnier 和 Turner 所提出的“相关原则(Relevance)”是一个例外,即使是神经网络产生的输出,当然也要进行效用上的评估。)
在 DIVAGO 中,知识库来自于用户输入的知识领域的描述。是这些知识领域的描述最终形成了整合概念的搜索空间。因此对于概念整合算法来说,在一定程度上构建知识库的过程也就是构建搜索空间的过程。Deep Dream 和 Neural Style Transfer 经过训练之后,神经网络的中间层输出可以看作是在对输入数据所描述的原始实体进行特征提取。通过这种特征提取的自动化,Deep Dream 和 Neural Style Transfer 在某种程度上可以看作是自动化了知识库构建的过程——虽然所构建的知识库人类并不能解读出意义来。
尽管 Deep Dream 和 Neural Style Transfer 只能作用于图像数据,但这种固定统计模型自身的参数,让模型去生成一个在当前参数下符合一定条件的数据的概念整合模式,可以看作是一个统计模型向人类沟通它对问题域的“理解”的一种方法。这种方法在一定程度上挑战了人们对于统计模型“都是完全不可解释的黑盒子”的认知,对深度学习的许多新应用都带来了启发。
总结
这一章我们考察了三种组合性创造力的算法实现,从最开始严格按照概念整合理论设计的 DIVAGO 系统,到完全摒弃语义、只跟符号打交道的 Metaphor Eyes,到最后彻底放弃人类所能理解的特征概念、用高维向量空间表征一切的 Deep Dream 和 Neural Style Transfer。在这条发展路线中,我们看到了对“知识库(Knowledge Base)”这个概念的理解被逐渐泛化(Generalize)。
DIVAGO 中的最为传统的知识库概念,本质上将知识库看作是
一定范围内,将任意逻辑命题映射到真或假的函数。
它用逻辑命题这种极具结构性的语法语义构造为知识建模。到了 Metaphor Eyes 这里,知识库的条目不需要是严格的逻辑命题,而能够是任意文本数据;一条文本信息是否属于知识库,也不再是非黑即白的事情,而取决于对应谷歌搜索有多少搜索结果,有了一个程度的概念。因此 Metaphor Eyes 中的知识库的定义变得更加宽松,成为了
一定范围内,将任意文本映射到真假程度的函数。
而到了基于深度神经网络的 Deep Dream 和 Neural Style Transfer 这里,知识库的条目甚至不需要是文本,可以是表示任何数据的高维向量空间中的矩阵和向量。这个数据输入神经网络经过计算,最后得到另一个矩阵或者向量。也就是说,知识库的定义在这里又变得更加宽泛,成为了
一定范围内,将任意数据映射到数据的函数。
没错,一切函数都将数据映射到数据,因此在这个定义下一切函数都可以看作是一定范围内的知识库。
这个知识的概念不断被泛化的过程,是一系列将人类的思考和创造行为迁移到机器的努力所带来的副产物。这是不是意味着,人类对智能的认知不断跳脱出自身、而走向独立于人脑的一般智能的过程呢?
参考文献
[1] Francisco C. Pereira, Amílcar Cardoso, 2006. Experiments with Free Concept Generation in Divago
[2] Martins, Pedro & Pereira, Francisco & Cardoso, Amílcar, 2019. The Nuts and Bolts of Conceptual Blending: Multidomain Concept Creation with Divago
[3] Tony Veale, 2012. From Conceptual Mash-ups to Badass Blends: A Robust Computational Model of Conceptual Blending
[4] Graeme McCaig, Steve DiPaola, Liane Gabora, 2019. Deep Convolutional Networks as Models of Generalization and Blending Within Visual Creativity
[5] Manfred Eppe, Ewen Maclean, Roberto Confalonieri, Oliver Kutz, Marco Schorlemmer, Enric Plaza, Kai-Uwe Kühnberger, 2018. A computational framework for conceptual blending
[6] Deep Dream Blog:
[7] L. A. Gatys, A. S. Ecker and M. Bethge, 2016. Image Style Transfer Using Convolutional Neural Networks
[8] Aerts Diederik, Broekaert Jan, Gabora Liane, Sozzo Sandro, 2016. Generalizing Prototype Theory: A Formal Quantum Framework
[9] Paul Thagard Terrence C. Stewart, 2010. The AHA! Experience: Creativity Through Emergent Binding in Neural Networks
[10] Li, Boyang & Zook, Alexander & Davis, Nicholas & Riedl, Mark, 2012. Goal-Driven Conceptual Blending: A Computational Approach for Creativity
标签: #遗传算法c语言实现