在程序员的世界里流行着很多传说,诸如张小龙带领团队一个月开发出微信,苹果成为全球市值最高的公司。在程序员的世界里也风传着各种笑话,诸如要嫁就嫁程序员,钱多话少死得早。殊不知,其实每个程序员的内心,都装着整个世界的。他们一般自诩为设计师,他们不甘沦为写代码的工具,他们希望能够通过程序实现自己的想法,他们希望改变世界。
程序员一直奉终端为圭臬的。如果只是介绍“sl”可以跑小火车,“fortune”可以输出“fortune cookie”“cmatrix”可以模拟黑客帝国,也未免太无趣了一些。但是,你线、贪吃蛇、俄罗斯方块、pacman等各种游戏哦!你还可以在终端用tpp制作ppt,用w3m浏览网页,更过分的,你甚至可以在终端玩可能是世界上第一款角色扮演游戏——nethack。当然,最好不要问他们为什么要这么做,也许他们只是喜欢这样做。
下面进入正题,作为一家机器人公司,而且作为一家高大上的机器人公司,如果不介绍一点神经网络的知识,都不知道介绍点啥。
搞过机器学习的都知道,机器学习最重要的一个步骤是建模,编程要做的工作就是把现实世界中的事物描述成计算机可理解的数据格式,然后让它去类认为麻烦的事情(比如无休止的矩阵计算……)。在neural style中,作者使用了一个feed forward的多层卷积神经网络,每一层的网络,作为内容图片的特征表示,然后经过多层的image filter就可以得到图片内容的特征信息了。
随着层级的加深,每一层的filtered image就会变得越来越多,这时候,使用常见的down sampling算法,比如最常见的max pooling function, 就会减少每一层的神经元数目。神经网络的每一层输出,可以看做是由filtered image构成的一系列的feature map。如此一来,随着迭代的进行,图像会变成越来越高层的抽象表示,而且越高层次的抽象,就会越能够表示图片的内容。
其实,图像建模在机器学习领域已经有了比较成熟的解决方案,相比对图像进行建模,对画风进行建模就会困难得多。Neural style 的作者,利用前面神经网络每一层的多个feature map,通过计算他们的correlation,在卷积神经网络的每一层输出一组新的feature map用来描述图片的画风。究其原因的合理之处:其实风格不就是图片给人的整体印象吗!既然我们每一层的图像的特征都提取到了,那么把他们关联起来,因为考虑了每一部分的独有风格,那么他们的reconstruction,应该就是图像画风的计算机表示了。
当内容遇到画风的时候,把内容特征表示和风格特征表示结合在一起,通过计算最小化损失函数,大约迭代1000-2000次,就可以生成一张新的具有相同内容但是不同风格的图片了。
其实程序员大都以有趣自居,然而在他人看来,他们大都无趣,其实,他们只是在自己的世界里有趣罢了。他们会尝试去爬取整个网页以获取对自己有用的信息,他们会去研究微信网页端接口只为了能够实现定时发送消息,当然,他们也热衷于寻找各种各样的idea,然后用代码实现它。
现在,你是不是也开始觉得程序员有一点有趣了呢?现在,你是不是也有点相信程序员心中都装着一个创造世界的梦想了呢?
依照惯例,图灵机器人将在留言区里,随机挑选一位留言用户,赠送正版阿狸抱枕一个~幸运小伙伴的名单将在2016年9月26日公布~
推荐: