深度学习能不能学会乘法( 二 )
这种形式内容的学习需要符号化或基于Operations的,不能用简单逼近方式训练
且仅仅普通的feed forward无法学会乘法或加法等算法,对,其实这些都是算法,算法里面有一个很特别的东西是递归(recursion)或循环(loop),无限位乘法等必须要网络隐式包含这个递归,其实可以简单说就是:需要网络是turing complete的
【深度学习能不能学会乘法】 参考:
Neural Programmer-Interpreters还有其他文献这里不写了,可以看这篇文章相关的引用或被其他引用的文章
如果不喜欢看英文,可以看这篇博客:
CSDN-专业IT技术社区-登录
■网友
深度学习来学乘法很简单啦,但人要想到如何构造神经网络可不简单~~让我们分三步来解决这个问题:第一步 - 把a和b转化成二进制表示形式;第二步 - 对于a和b的二进制的每一位两两做乘法;第三步 - 把第二步的结果都加起来。Example: 第一步:这一步是用神经网络来转化十进制到二进制,如果输入就是二进制这一步就可以省略啦。比如a = 3 = 11 = a2a1,即a2=1,a1=1b = 5 = 101 = b3b2b1,即b3=1,b2=0,b1=1具体做法就是用神经网络做一堆“与门”,a AND 010 就得到 a2, a AND 001就得到 a1。b一样处理。第二步:分步计算1 1 * 1 0 1这一步是把原问题简化成用神经网络训练二进制每位的乘法,这个神经网络很容易可以办到。1(b1) * 1(a1) = 1 (c1)1(b1) * 1(a2) = 1 (c2)0(b2) * 1(a1) = 0 (c3)0(b2) * 1(a2) = 0 (c4)1(b3) * 1(a1) = 1 (c5)1(b3) * 1(a2) = 1 (c6)第三步:加起来,这个神经网络肯定能办到啦。1 (c1) * 1 = 11 (c2) * 10 = 100 (c3) * 10 = 00 (c4) * 100 = 01 (c5) * 100 = 1001 (c6) * 1000 = 1000求和就是结果 1111 = 15 = 3*5对于其他的函数我就不写了,直接给结论:只要给出足够的层数,足够的neurons,多层神经网络可以用来近似任何函数。最多两个hidden layers的神经网络就可以近似任何函数。一层hidden layer的神经网络就可以近似任何连续函数。PS: 看过给赞吧,最近开始玩,尼玛答了那么多连感谢数都赶不上回答数。
■网友
我觉得使用常用激活函数的有限大神经网络几乎一定不能学会对任意大或任意精度的a和b做乘法(我仿佛在说废话……)
但是对有界的a和b做精度有限的乘法是可以的,毕竟神经网络可以看作门电路的超集……
■网友
就「学习乘法」来说,我之前等训练的时候试过lstm算加法,大概几百个例子能学会个位数的加法,但是对于两位数的加法,即使用几千上万的例子也会在 89+9 这种要进位的计算上出错
myx,找时间试试lstm搞乘法计算看看
■网友
不从二进制的角度来,直接说说我个人的理解。这些函数,比如sin,log在人类看来有意义主要就是它们具备一些性质,比如周期性,导数的性质这些。要让神经网络学会这些函数,就需要学习这些性质。
线性变换+激活函数这种神经网络的模式,我个人是这么理解的。线性变换的参数越多,即宽度越大,更容易学习到目标空间,但单一的线性变换“迈的步子”并不会那么大,当目标空间扭曲程度很大的时候(这个我理解即梯度变化很大)就不容易学习到,所以还需要非线性的激活函数来约束学习的空间,所以针对周期性的未知函数,采用six或者cos进行约束,便能比较容易学习到这个未知函数,本质上将学习的空间约束到了循环区间里面。
同理,针对高阶多项式、指数型的函数,要让神经网络理解,最好还是在激活函数上赋予同阶的约束。当这个量级不知道的时候,可以从训练集里猜测一下,或者套多个非线性变换。
回到这个题目的二元乘法的目标空间(即z=x*y),可以想象一下这个图像,各个象限对角线都是平方级,各个平行轴的面都是线性,整体是平滑的。而Wx+Wy这种形式明显是不符合的,这俩其实是等价的不是平行的,所以构造的时候需要构造一个x和y平行,且在线性和平方之间的一个形式的东西,这时候其他答案的二进制等操作就可以派上用场了,其他的话,也许套一个二阶多项式的激活函数能起到很好的效果,比如Wx^2+Wx+Wy^2+Wy。
推荐阅读
- 四川乐山市犍为县发生4.2级地震震源深度13千米
- 四川自贡市荣县发生3.2级地震震源深度10千米
- 四川德阳市绵竹市发生3.4级地震震源深度8千米
- 王者荣耀李白能不能出肉
- 现在在线学习视频有很多了,为啥大部分人还是喜欢下载下来观看
- 换个角度看车市|深度:长城炮越野皮卡1.5万公里长测之技术状态汇总
- 婴儿|美国儿科学会: 1岁以下婴儿不推荐学习游泳
- 新疆克孜勒苏州阿克陶县发生3.3级地震 震源深度140千米
- 在美国大学学习computer science 是啥样的体验
- 作为软件工程大二的学生,学习一般,编程一般,毕业后能干些啥