神经网络和傅里叶级数的理解
深度学习理解
通俗地讲,机器学习是实现人工智能的途径,而神经网络隶属于机器学习中一种具体的算法方向,其中深度学习即深层神经网络为神经网络中的一种,因此我们可以简单理解为:深度学习==多层神经网络、深度学习属于机器学习, 如下图所示:
既然属于机器学习,就应该探讨下机器学习中的两种算法分界:分类和聚类。
神经网络属于分类算法的一种,分类算法的本质是决策分界线的拟合,有些数据较为好分界(如下图)
这些数据只需要我们拟合一个简单的线性函数并且调整参数就可以进行分类
但对于有些数据(以二维数据为例)分界就显得格外困难(如下图)
这时简单的线性函数已经不能满足数据分类的想法,我们就需要去拟合一种更加复杂的函数来应对这种情况
我还记得在傅里叶级数里面所说,所有的曲线都可以分解为
y = a+bx+cx2+dx3+…
所以我们可以通过设定a,b,c…的值来完成分界函数的拟合(过拟合问题可以用加入正则项来解决),无论这个分界函数是多离奇的样子,我们总能通过权重的调整,来达到符合自己预期的目的分类。
但我们的数据往往是多维数据,所以这个函数实际上是:
Y = a1+a2+a3+b1x+b2x+b3x+c1x2+c2x2+……
但对于计算机和多维数据来说,x的高次幂的计算无疑是浪费资源的方式,我们可以把这个函数拆分成线性和非线性的部分,也就是:
Y = a1+a2+a3+b1x+b2x+b3x+Z(x)
Z(x)为一个非线性函数,无疑这是一个无比困难表示的非线性函数,但这不妨碍它成为我们的一个想法
我们再去回过头看神经网络,这是一个多层结构,每一层之间设置线性部分,对于人和机器来说都较为简单,前一层的输出等于后一层的输入,但如果只有线性部分,对于多分类来说无疑不可取,但又因为他是多层模型,所以我们可以在每一层每一个的输出后面加上极为简单的带参的非线性函数,再多层叠加之后,他就成为了之前我们所说的无比复杂的Z(x),而这个非线性函数,就是神经网络中的激励函数,如此一来,我们就完成了多维曲线的拟合问题,只需要通过参数的调整,就可以找到复杂的拟合曲线,进行多分类问题的解决。
相较于其他分类算法,神经网络(尽管说它是黑箱)的拟合、分类效果,因为激励函数、多层叠加的相互作用,多分类的任意复杂的分界面都易于得到
所以现在深度学习(神经网络)被大量的用于文字、图片、面部、声音识别的工作中