OpenAI 研究线性网络的非线性行为,数值计算的玄机带来全新的网络表现

不管是一般的编程还是机器学习,凡是计算机中的数据都是以一定的数据格式表示的。但有些情况下数据格式会带来明显的限制,造成计算结果的异常。

不过在 OpenAI 的研究人员们看来,这种“计算结果的异常”可以成为给神经网络带来新的可能性的落脚点。在这篇博文中,他们就介绍了一种异常的来源以及如何运用,还取得了不错的效果。雷锋网 AI 科技评论把文章编译如下。

之前已经有证据表明,深度线性网络如果用浮点数值运算实现的话,结果是不完全线性的,会展现出一些非线性的计算特点。在这项研究中,OpenAI的研究人员们使用了进化计算的策略,在线性网络中找到带来非线性特点的参数,希望能够帮助一些疑难问题。

神经网络是由许多线性层和其后的非线性层堆叠起来形成的,常见的非线性函数有 tanh 或者 ReLU。如果没有这些非线性的部分,连续的几个线性层在数学理论上应当等效于单独一个线性层。所以浮点数的计算具有足够的非线性程度,以至于这样也能形成一个可训练的深度神经网络,这就有点出乎意料。

背景

计算机中使用的数字并不是理想的数学化的对象,而是用有限位的0和1近似地表示的。计算机中常用的一类数学对象表示方法就是浮点数。每个浮点格式的数据都可以分为小数和指数两个部分。在 IEEE 的32位浮点数标准中,其中的23位用来表示小数部分,8位用来表示指数部分,还有一位用来表示符号。

根据浮点数的定义和其中使用的2进制位的表示范围限制,它所能表示的最小非零数字就是(二进制)1.000...0 x 2^-126,这里把这个值称为 min。然而,可表示的数字里面第二小的是 1.000...01 x 2^-126,这个数字可以用 min + 0.000...01 x 2^-126 表示。可以明显看到, min 和第二小的数之间的差距,只有 min 和0之间差距的 2^-20 那么大,还不到一百万分之一倍。在32位浮点数中,如果要需要表示的数字比 min 还要接近0,那么这个数就会直接被表示为0。由于这种“下溢”(underflow)的影响,所有在0附近进行的浮点数运算都会变成非线性的。

“非规格化数”(denormal numbers)就不受这些限制的影响,不过某些计算硬件上是不支持这种数据格式的。虽然 GPU 和 cuBLAS 默认都是可以使用非规格化数的,TensorFlow 在构建模型的时候却是默认把非规格化数选项关闭的(对于 ftz=true 标志集)。这就意味着,在TensorFlow中编写的所有非矩阵乘法操作都带有隐含的非线性(假设参与计算的数量级在 e^-38 附近)。

所以,虽然总体来说任何一个数字的真实值和用浮点格式表示以后的值之间的区别都很小,但是当这个数字非常接近0的时候,这一部分近似误差就会变得非常显著。

这件事的后果就是我们熟悉的数学规律不再适用,接下来就会有很多奇怪的事情发生。比如 (a + b) x c 就不再和 a x c + b x c 相等。

举例说明,令 a = 0.4 x  min ,b = 0.5 x  min ,c = 1/ min

那么, (a+b) x c = (0.4 x min + 0.5 x min ) x 1 / min = (0 + 0) x 1 / min = 0

然而 (a x c) + (b x c) = 0.4 x min / min + 0.5 x min x 1 / min = 0.9

再举一个例子,这次令 a = 2.5 x min, b = -1.6 x min , c = 1 x min

那么 (a+b) + c = (0) + 1 x min = min

然而 (b+c) + a = (0 x min) + 2.5 x min = 2.5 x min

在这样的数量级上,连最基本的结合律都变得非线性了!

借助进化策略利用非线性

OpenAI 的研究人员们很想知道这种固有的非线性可否作为计算中的非线性得到利用,如果可行的话就可以让深度线性网络实现非线性的计算操作。其中的挑战是,用到的现代微分库通常都对如此小尺度下的非线性视而不见。这样以来,就非常困难、甚至没有可能通过反向传播的方法训练一个神经网络来利用这些非线性。

OpenAI 的研究人员们决定使用进化策略(evolution strategies)来估计梯度,不再依靠微分一类的方法。通过进化策略,他们确实能够把32位浮点数在零值附近的非线性行为加以利用,发展为计算性的非线性。以 MNIST 数据集的训练为例,用反向传播算法训练的深度线性网络可以达到94%的训练准确率和92%的测试准确率;相比之下,同一个线性神经网络可以达到超过99%的训练准确率和96.7%的测试准确只,就是用进化策略训练得到的,同时保证激活权重都足够小,在32位浮点数的非线性行为能够产生影响的范围内即可。这种训练表现的提升就是因为进化策略发现并充分利用了32位浮点数表示中的非线性。这些强有力的非线性行为可以让任意一个层根据低层特征的非线性组合产生全新的特征。这个网络的结构如下:

x = tf.placeholder(dtype=tf.float32, shape=[batch_size,784])
y = tf.placeholder(dtype=tf.float32, shape=[batch_size,10])

w1 = tf.Variable(np.random.normal(scale=np.sqrt(2./784),size=[784,512]).astype(np.float32))
b1 = tf.Variable(np.zeros(512,dtype=np.float32))
w2 = tf.Variable(np.random.normal(scale=np.sqrt(2./512),size=[512,512]).astype(np.float32))
b2 = tf.Variable(np.zeros(512,dtype=np.float32))
w3 = tf.Variable(np.random.normal(scale=np.sqrt(2./512),size=[512,10]).astype(np.float32))
b3 = tf.Variable(np.zeros(10,dtype=np.float32))

params = [w1,b1,w2,b2,w3,b3]
nr_params = sum([np.prod(p.get_shape().as_list()) for p in params])
scaling = 2**125

def get_logits(par):
   h1 = tf.nn.bias_add(tf.matmul(x , par[0]), par[1]) / scaling
   h2 = tf.nn.bias_add(tf.matmul(h1, par[2]) , par[3] / scaling)   
   o =   tf.nn.bias_add(tf.matmul(h2, par[4]), par[5]/ scaling)*scaling
   return o

除了 MNIST 之外,OpenAI 的研究人员们相信未来还会有更多有意思的实验把这种思想拓展到循环神经网络,或者把非线性计算运用在提升复杂语言建模和翻译之类的机器学习任务表现中。他们非常期待可以和广大研究人员们一起探索其中的可能性。

本文作者:杨晓凡

本文转自雷锋网禁止二次转载,原文链接

时间: 2024-10-30 09:50:52

OpenAI 研究线性网络的非线性行为,数值计算的玄机带来全新的网络表现的相关文章

网页导航设计:关于导航设计的研究和探索

文章描述:设计是在不断进步的,随着用户体验的提高.用户认知度的拓展.产品需求的多样性.设计师理念的不断探索和更新,我们相信,导航设计将存在更多的可能性!也许下一个新的设计形式就诞生在你我之间!越来越多关于导航设计的研究和探索,将会给用户带来全新的视觉和使用体验 导航是网页设计中不可缺少的部分,它是网站访问者获取所需内容的快速通道和途径.导航让网站的层次结构以一种有条理的方式清晰展示,并引导用户毫不费力地找到并管理信息,达到有效传递.同时,导航一般位于网页的中上部分,也是视觉中心的区域内.在保持其

网页导航设计技巧:尽情拓展设计创意和思维的导航设计

文章描述:导航一般位于网页的中上部分,也是视觉中心的区域内.在保持其合理的功能作用的同时,一个好的导航设计,往往 能够成为整个网页设计的点睛之笔! 导航是网页设计中不可缺少的部分,它是网站访问者获取所需内容的快速通道和途径.导航让网站的层次结构以一种有条理的方式清晰展示,并引导用户毫不 费力地找到并管理信息,达到有效传递.同时,导航一般位于网页的中上部分,也是视觉中心的区域内.在保持其合理的功能作用的同时,一个好的导航设计,往往 能够成为整个网页设计的点睛之笔! 一个设计师在布局和整体规划网页设

“有点儿意思”的导航设计

本文转载自百度UEO,作者为@豆豆酱-.导航是网页设计中不可缺少的部分,它是网站访问者获取所需内容的快速通道和途径. 导航让网站的层次结构以一种有条理的方式清晰展示,并引导用户毫不费力地找到并管理信息.同时,导航位于网页的中上部分,视觉中心的区域.在保持其合理的功能作用的同时,一个好的http://www.aliyun.com/zixun/aggregation/7865.html">导航设计,是整个网页设计的点睛之笔! 一个设计师在布局和整体规划网页设计时,导航总是一个重要的元素.我们会

网站用户体验设计:“有点儿意思”的导航设计

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 本文转载自百度UEO,作者为@豆豆酱-.导航是网页设计中不可缺少的部分,它是网站访问者获取所需内容的快速通道和途径. 导航让网站的层次结构以一种有条理的方式清晰展示,并引导用户毫不费力地找到并管理信息.同时,导航位于网页的中上部分,视觉中心的区域.在保持其合理的功能作用的同时,一个好的导航设计,是整个网页设计的点睛之笔! 一个设计师在布局和整

如何缓解安防PPP模式的忧愁

新疆八师石河子市政府与大华股份签订了总规模约5.89元的"平安石城"PPP项目,引起了行业内的热议.对这一模式的见解仁者见仁,但更值得探讨的应该是项目实施的能力如何培养,这才是值得企业注意的重点. PPP的忧愁与欢喜 对于PPP模式,人们已经不再陌生.这种公私合作的模式作为公关基础设施中新的项目融资方式,具有适应当前社会发展的必要性:一方面有助于公共服务融资创新,减轻当期财政压力,与各个供应商共同承担风险;另一方面,可以促进民间投资发展,完善城市基础设施和信息化建设.同时在政府职能转变

如何管教AI的行为举止?OpenAI早已开始研究,而这只是整个AI安全领域的前哨

雷锋网 AI 科技评论按:在比赛中刷成绩和在游戏中击败人类职业选手仅仅是 AI 研究的一部分,OpenAI 的研究人员们同样重视对 AI 安全性的研究.这篇文章是纽约时报来到 OpenAI 实验室的报道,介绍了 OpenAI 近期在 AI 安全领域的想法和一些成果,也让我们看到了 OpenAI 研究人员的风采.雷锋网 AI 科技评论编译. 自学的人工智能可能学到奇怪的行为 在旧金山的 OpenAI 人工智能实验室中,计算机们可以自我学习.学会人类的举止.不过有时候也会出问题. Geoffrey

OpenAI 教你如何构建深度学习研究的基础设施

编者按:OpenAI研究工程师Vicki Cheung, Jonas Schneider , Ilya Sutskever, and Greg Brockman在本文中分享了从事Deep Learning研究工作所需要的基础设施(软件.硬件.配置和编制),举例说明如何运用开源Kubernetes-ec2-autoscaler自动扩展深度学习研究中的网络模型,将有助于广大深度学习研究爱好者构建自己的深度学习基础设施. 深度学习是一门实证科学,一个研究团队的基础设施建设将对未来的研究工作产生重大影响

独家 | 一文读懂复杂网络(应用、模型和研究历史)

随着近几年关于复杂网络(Complex network)理论及其应用研究的不断深入,已有大量关于复杂网络的文章发表在Science,ature,RL,NAS等国际一流的刊物上,侧面反映了复杂网络已经成为物理界的一个新兴的研究热点.人们开始尝试应用这种新的理论工具来研究现实世界中的各种大型复杂系统,其中复杂系统的结构以及系统结构与系统功能之间的关系是人们关注的热点问题.[1] 在自然界中存在的大量复杂系统都可以通过形形色色的网络加以描述.一个典型的网络是由许多节点与节点之间的连边组成,其中节点用来

【OpenAI对标DeepMind】马斯克要用开源对抗巨头,现在却饱受质疑

今年的 DOTA2 经典赛事 TI7 国际邀请赛让 Open AI 大火了一把: 他们研发的Self-Play 机器人在Dota2 1v1 比赛中战胜了人类顶级职业玩家 Dendi,在这场顶尖的电竞比赛中大放异彩. 提到Open AI,一般都会称"马斯克的Open AI" .作为Open AI 的最大投资人之一,马斯克也在 Twitter 上盛赞团队在这次与人类玩家对决的DOTA 2 比赛中的英勇表现. Elon Musk 发表推文称赞 OpenAI 的战绩,并其为"在电子竞