“低复杂度美学”理论(Low-Complexity Art):艺术,科学,创造力和美学启示 #David的人工智能启示录

艺术不仅是“压缩”的艺术。如果艺术是“做菜”,重要的不仅仅是厨艺,还有食材的选择,所以,艺术也是“选择”的艺术。 — David 9

Jürgen Schmidhuber教授的名字大家可能不熟悉,但如果说LSTM之父大家可能有点印象,事实上他也算人工智能的开创鼻祖之一。他与学术界和深度学习三巨头(Hinton、LeCun、Bengio)的恩怨纠葛David这里不多八卦,只给出【链接】。今天,David想深挖一下Schmidhuber曾经在90年代总结的“低复杂度美学”(艺术)理论,现在看来也很有意思并且启发我们。

“低复杂度美学”的原理和目标很简单:

1. 作品最终看上去是想要表达的内容,即,内容没有太大偏差

2. 创造作品的柯氏复杂性应该做到最低。通俗地说就是,如果要用一段最短的程序完成整个艺术创作过程(在计算机中叫停机过程),这样就会体现出一定美感

事实上,上述两者是矛盾的,如果太追求简洁,有可能会失去一部分你想表达的信息,反之,如果你想完整地表达所有信息,你可能会牺牲一些简洁性。

而对于第1点,艺术家想要传达什么,是非常主观的问题,所以Schmidhuber在讨论时把重点放在第2点,如果内容已经固定,艺术设计采用低复杂度美学是有效的。让我们看一个例子:

如果你要画一个花瓶和蝴蝶,大致构图已经想好,那么如果让一个程序完成创作,让它不断地画圆弧是个好主意(代码简短容易实现),另外如果加一些简单规则也很容易(比如圆弧和圆弧的交点可以衍生出圆心再画一个圆弧,可以有同时切两个圆的圆等等……),根据这些简单规则,我们就可以用一个足够简洁的程序生成如下作品:

来自:http://people.idsia.ch/~juergen/locoart/node12.html

这和我们熟悉的分形几何美感原理类似:

不断地重复一样的程序,但是每一次重复都有规则地稍作改动

这种“低复杂度美学”理论可以衍生出许多其他相关见解, 继续阅读“低复杂度美学”理论(Low-Complexity Art):艺术,科学,创造力和美学启示 #David的人工智能启示录

给普通科研人员跑TensorFlow Models项目的一点建议,编译tf,谷歌Bazel,TensorFlow Slim和其他

TensorFlow Models项目是谷歌TensorFlow项目下存放大量官方SOTA模型论文模型实现的子项目,大量的科研学习可以从这里开始(每个论题模型都是科研机构各自维护的):

但要快速上手任意模型,对于普通科研人员并不容易(除非你同时是CS系或同时熟悉C和python编程等)。这里David就带大家绕过一些不必要的坑。

models/research下的迁移学习domain_adaptation项目为例NIPS 2016论文),缺少编程经验的朋友(或者只会python的朋友)如果按照introduction走,很快就傻眼了:

普通科研人员不会知道bazel是google的一个编译工具,也不知道slim是什么东西(TF-slim其实是TensorFlow Models项目中独立出来的通用库)。事实上,对于只需研究模型本身的研究人员,这些都可以绕过!对于上述红框中的命令你完全可以用下面命令替代:

# python download_and_convert_data.py -- --dataset_dir $DSN_DATA_DIR --dataset_name=mnist

Models子项目虽然用bazel管理,但本质上都是TF的python项目,你总能找到python主入口跑这个项目,而不是用bazel这种专业工具(谷歌内部喜欢用的工具)。同样,slim本质上也是一个python库,用python脚本跑程序就可以:

$ python download_and_convert_data.py \
    --dataset_name=flowers \
    --dataset_dir="${DATA_DIR}"

另外,路径出错也是常见错误,

Traceback (most recent call last):
  File "dsn_eval.py", line 28, in <module>
    from domain_adaptation.datasets import dataset_factory
ImportError: No module named domain_adaptation.datasets

如上错误很可能是domain_adaption这个文件夹路径没有找到而已,这时对于一些不熟悉linux命令行的朋友,建软链或加环境变量不是最佳选择,最直接的方法是修改代码,比如在代码中插入下面两行,就可以把目录上两级库也添加进来,解决问题: 继续阅读给普通科研人员跑TensorFlow Models项目的一点建议,编译tf,谷歌Bazel,TensorFlow Slim和其他

谈谈谷歌的免训练网络(早熟模型)及其前景,David9的神经网络观察,WANN(Weight Agnostic Neural Networks)

如在某方面过于早熟,是否可能阻碍更高级的智能发展? — David 9

对于早熟(precocial)动物我们并不陌生,一匹小马在出生几小时以内就可以自我站立走路:

自然选择使得这种物种特别偏爱这样一个技能:“跑”,甚至在出生后不需要怎么训练就能快速学会。那么神经网络是否也可以实现免训练(早熟模型)呢?谷歌这篇论文给出的答案是肯定的。

更有意思的是,这篇权重不可知网络WANN(Weight Agnostic Neural Networks)类似的也适用于小马走路这种简单的行为任务,包括模拟直立前进赛车小游戏

来自:https://arxiv.org/abs/1906.04358

与现有神经网络迥然不同,整个WANN网络从最简单的几条连接开始构造,仅通过拓扑搜索而不通过权重训练(权重通过设定超参数,由此,从一个分布中随机拿到),为了最小化权重的影响力,  挑选了那些对多数权重都表现较好的拓扑作为候选拓扑(有些遗传算法的思想在里面):

来自:https://arxiv.org/abs/1906.04358

谷歌开了个好头因为常人太在乎权重训练了,把注意力移到拓扑搜索上来,也许有新的发展。

但是,神经网络拓扑的搜索空间较大, 继续阅读谈谈谷歌的免训练网络(早熟模型)及其前景,David9的神经网络观察,WANN(Weight Agnostic Neural Networks)