我们展示了深度线性收集(应用浮点运算实现)实际上并不是线性的,它可以履行非线性计算。我们应用这一点应用进化策略在线性收集中寻找参数,使我们可以或许解决重要问题。
神经收集平日由一个线性层和非线性函数(比如 tanh 和修改线性单位 ReLU)客栈而成。如不雅没有非线性,理论上连续串的线性层和单一的线性层在数学上是等价的。是以浮点运算长短线性的,并足以练习深度收集。这很令人惊奇。
背景

我们可以应用进化策略(ES),无需依附符号微分(symbolic differentiation)法就可以评估梯度。应用进化策略,我们可以将 float32 的零点邻域(near-zero)行动作为计算非线性的办法。深度线性收集经由过程反向传播在 MNIST 数据集上练习时,可获取 94% 的练习精确率和 92% 的测试精确率(机械之心应用三层全连接收集可获得 98.51% 的测试精确率)。相对而言,雷同的线性收集应用进化策略练习可获取大年夜于 99% 的练习精确率、96.7% 的测试精确率,确保激活值足够小而分布在 float32 的非线性区间内。练习机能的晋升原因在于在 float32 表征中应用非线性的进化策略。这些强大年夜的非线性许可随便率性层生成新的特点,这些特点是初级别特点的非线性组合。以下是收集构造:
按照这种惯例和二进制格局,以二进制表示的最小非零正常数是 1.0..0 x 2^-126,以下用 min 来指代。而下一?可表示的数是 1.0..01 x 2^-126,可以写作 min+0.0..01 x 2^-126。很显然,第一和第二个数之间的 gap 比 0 和 min 之间的 gap 小了 2^20 倍。在 float32 标准中,当一个数比最小的可表示数还小的时刻,则该数字将被映射为零。是以,近邻零的所有包含浮点数的计算都将长短线性的。(而反常数是例外,它们在一些计算硬件上可能弗采取。在我们的案例中经由过程设置归零(flush to zero,FTZ)解决这个问题,即将所有的反常数当成零。)
是以,固然平日情况下,所有的数字和其浮点数表示之间的差别很小,然则在零邻近会出现很大年夜的 gap,而这个近似误差可能带来很大年夜影响。

这会导致一些奇怪的影响,一些常用的数学规矩无法发患咀用。比如,(a + b) x c 不等于 a x c + b x c。
计算机应用的数字并不是完美的数学对象,而是应用有限个比特的近似表示。浮点数平日被计算机用于表示数学对象。每一个浮点数由小数和指数的组合构成。在 IEEE 的 float32 标准中,小数分派了 23 个比特,指数分派了 8 个比特,还有一个比特是表示正负的符号位 sign。
比如,如不雅你设置 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。

在这种小标准的情况下,基本的加法运算变成非线性的了!
应用进化策略应用非线性
我们想知道这种内涵非线性是否可以作为计算非线性的办法,如不雅可以,则深度线性收集可以或许履行非线性运算。挑衅在于现代微分库在非线性标准较小时会忽视它们。是以,应用反向传播应用非线性练习神经收集很艰苦或弗成能。
- 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 ))
推荐阅读
然而,限制移动用户这招,也让飞信和互联网开放的精力格格不入,飞信持续不断被微信攻占了大年夜量市场份额。 不知不觉,安卓体系已经迈入到第十个岁首了。在很多老网友的印象中,iOS和安卓>>>详细阅读
本文标题:神经网络求解新思路:OpenAI用线性网络计算非线性问题
地址:http://www.17bianji.com/lsqh/37728.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示