Keras 2发布:实现与TensorFlow的直接整合

2017年03月15日

Keras 在 2015 年 3 月首次推出,现在用户数量已经突破了 10 万。其中有数百人为 Keras 代码库做出了贡献,更有数千人为 Keras 社区做出了贡献。Keras 已经催生了新的创业公司、提高了研究者的成果率、简化了大公司的工程流程图、并为数以千计没有机器学习经验的人打开一扇通向深度学习的大门。而我们相信这仅仅是个开始。

现在我们推出 Keras 2,它带有一个更易使用的新 API,实现了与 TensorFlow 的直接整合。这是在 TensorFlow 核心整合 Keras API 所准备的重要一步。

Keras 2 有很多新变化,下面是简明概览:

与 TensorFlow 整合

尽管 Keras 自 2015 年 12 月已经作为运行时间后端(runtime backend)开始支持 TensorFlow,Keras API 却一直与 TensorFlow 代码库相分离,这种情况正在改变:从 TensorFlow 1.2 版本开始,Keras API 可作为 TensorFlow 的一部分直接使用,这是 TensorFlow 在向数百万新用户开源的道路上迈出的一大步。

Keras 最好被理解为一个 API 技术规范,而不是一个特殊的代码库。事实上,继续发展将会出现 Keras 技术规范的两个不同实现:(a)TensorFlow 的内部实现(如 tf.keras),纯由 TensorFlow 写成,与 TensorFlow 的所有功能深度兼容;(b)外部的多后台实现,同时支持 Theano 和 TensorFlow(并可能在未来有更多的后台)。

类似的,Skymind 正在用 Scala 实现 Keras 份额部分规范,如 ScalNet。为了在浏览器中运行,Keras.js 正在用 JavaScript 运行 Keras 的部分 API。正因如此,Keras API 注定成为深度学习从业者的通用语言,在不同的工作流程中共享并独立于底层平台。像 Keras 这样的统一 API 规范将促进代码共享,提高研究的再生产率,并允许更大支持社区的存在。

自动写诗 PK 古代诗人:百度「为你写诗」技术深度揭秘

2017年03月13日

引子

「两个黄鹂鸣翠柳,一行白鹭上青天。」像这样优美的古诗,几乎每个人都在语文课堂上学习甚至背诵过。好的诗歌千古流传,深受广大人民的喜爱,然而诗歌创作却有很高的门槛。对于普通人来说,最多写几首打油诗,想写出意境优美而且朗朗上口的诗歌,几乎是不可能完成的任务。

创作诗歌对于人来说都很难,对于机器来说就更是难上加难了。虽然机器与人相比,在一些方面有着先天的优势,例如,机器有无穷无尽的词汇库可供选择,机器可以很容易的解决对仗、平仄和押韵等问题。但是,真正的诗歌是有灵魂的,诗歌本质上是在传达诗人的思想。机器自动创作在主题控制方面很弱,很难让整首诗都围绕一个统一的主题来生成。

百度在自动作诗领域的探索

百度在自动作诗方向做了很多探索。13 年手机百度 APP 推出了「为你写诗」功能,用户拍摄或上传一张图片,系统可以根据图片内容自动生成一首四句的古诗。这个功能受到了广大网民的好评,网友纷纷利用各种渠道晒出配诗的照片。2013 版「为你写诗」的核心算法是统计机器翻译技术(Statistical Machine Translation,简称 SMT),是为写诗 1.0 版本。写诗 1.0 版本可以生成通顺、押韵的古诗,在对仗方面做的也比较好,但是在主题相关性方面较差,其技术层面的原因稍后会进行详细分析。

2016 年,百度在手机百度 APP 和度秘 APP 上先后推出了新版「为你写诗」功能,可以让用户任意输入题目生成古诗,这个版本可以称为写诗 2.0 版本。该版本使用了一种基于主题规划的序列生成框架,很好地解决了上一版中主题相关性差的问题。

从基本概念到实现,全卷积网络实现更简洁的图像识别

2017年03月13日

众所周知,图像就是像素值的集合,而这个观点可以帮助计算机科学家和研究者们构建一个和人类大脑相似并能实现特殊功能的神经网络。有时候,这种神经网络甚至能超过人类的准准度。

卷积神经网络与一般的神经网络有非常高的相似性,它们都是由可学习的权重和偏置项还有神经元组成。每个神经元接受一些输入,然后执行点积(标量),随后可选择性地执行非线性分类。整个网络仍然表示单可微分(single differentiable)的评估函数(score function),整个网络从一端输入原始图像像素,另一端输出类别的概率。该网络仍然具有损失函数,因为损失函数可以在最后(全连接)层计算相对概率(如支持向量机/Softmax),并且学习常规神经网络的各种开发技巧都能应用到损失函数上。

最近,随着数据量和计算力的大大提升,ConvNets 在人脸识别、物体识别、交通标志、机器人和自动驾驶等方向表现得十分出色。

全卷积网络(All Convolution Network)

大多数用于目标识别的现代卷积神经网络(CNN)都是运用同一原理构建:交替卷积和最大池化层,并伴随着少量全连接层。以前就有一篇论文提出,最大池化(max-pooling)可被一个带有增加步长的卷积层轻易替换,而没有在图像识别基准上出现精确度的损失。论文中提到的另一个趣事也是用一个全局平均池化(Global Average pooling)替换全连接层。

去掉全连接层也许不是一件让人很惊讶的事,因为长久以来人们本来就不怎么使用它。不久前 Yann LeCun 甚至在 Facebook 上说,我从一开始就没用过全连接层。