算法的“算法”:所有的机器学习算法都可以表示为神经网络然后一个又一个新的算法出现了,从逻辑回归到支持向量机。但从字面上看,神经网络是算法的算法,是机器学习的巅峰之作。可以说,神经网络是机器学习的泛化,而不仅仅是一次尝试。这样一来,很明显神经网络与其说是一个简单的算法,不如说是一个框架和概念,因为构建神经网络有很大的自由度——比如隐藏层&节点的数量,激活函数,优化器、损失函数、网络类型(卷积神经网络、递归神经网络等)和特殊层(批量归一化、dropout等)。如果把神经网络看成一个概念而不是一个严格的算法,一个有趣的推论应运而生:任何机器学习算法,无论是决策树还是k近邻,都可以用神经网络来表示。直观上,我们可以通过几个例子来理解,更严格地说,这个说法也可以从数学上得到证明。我们先来定义什么是神经网络:它是一种架构,包括输入层、隐藏层和输出层,每一层中的节点都是相互连接的。信息通过线性变换(权重和偏差)和非线性变换(激活函数)从输入层传输到输出层,并且有办法更新模型的可训练参数。逻辑回归简单定义为标准回归,其中每个输入的乘法系数和附加截距通过一个sigmoid函数,可以用不包含隐藏层的神经网络建模,结果是一个带有sigmoid的多元回归输出神经元;线性回归也可以通过用线性激活函数替换输出神经元激活函数来建模(线性激活函数只是映射输出f(x)=x,换句话说它什么都不做)。支持向量机(SVM)算法试图通过所谓的“内核技巧”将数据投影到新空间来优化数据的线性可分性。数据转换完成后,算法会沿着组边界绘制最能分离数据的超平面。超平面被简单地定义为现有维度的线性组合,很像二维线和三维平面。这样,SVM算法可以被认为是将数据投影到一个新的空间,然后进行多元回归。神经网络的输出可以通过某种有界输出函数来实现概率结果。可能需要一些限制,例如限制节点之间的连接,以及固定某些参数。当然,这些变化不会影响“神经网络”标签的完整性,或许还需要增加更多的层来保证支持向量机的性能与实际情况一致。基于树的算法更复杂,例如决策树算法。至于如何构建这样一个神经网络,就看它如何划分自己的特征空间了。当一个训练点经过一系列分裂节点时,特征空间被分裂成若干个超立方体;在2D示例中,垂直线和水平线形成正方形。图片来源:DataCampCommunity因此,沿着这些线分割特征空间的类似方式可以用更严格的激活函数建模,例如阶跃函数,其中输入值本质上是分割线。可能需要限制weight和bias的值,以便它们仅用于通过拉伸、收缩和定位来定位分界线。要获得概率结果,可以将其结果传递给激活函数。虽然从技术上讲,神经网络对算法的表示与实际算法存在很多差异,但关键在于神经网络表达的是相同的思想,可以使用相同的策略来处理问题,其性能与实际的算法。但是,有些人可能不满足于粗略地将算法转化为神经网络的形式,或者希望看到更复杂的算法的普遍应用,比如k近邻和朴素贝叶斯,而不是具体情况具体分析.万能逼近定理(UniversalApproximationTheorem)可以解决这个问题。它是神经网络取得巨大成功背后的数学解释,本质上表明足够大的神经网络可以以任意精度模拟任何函数。假设有一个函数f(x)表示数据。对于每个数据点(x,y),f(x)始终返回等于或非常接近y的值。建模的目标是找到这个具有代表性或标记良好的函数f(x)并根据p(x)表示预测。所有机器学习算法都以不同方式处理此任务,考虑不同的假设是否有效,并给出最佳结果p(x)。如果您编写创建p(x)的算法,您可能会得到从条件列表到纯数学的任何东西。描述函数如何将目标映射到输入的函数实际上可以采用任何形式。这些函数有时有用有时没用——它们有固定数量的参数,是否使用它们是一个思考问题。然而,不同的神经网络发现f(x)略有不同。任何函数都可以用许多类似阶梯的部分进行合理逼近,阶梯越多,逼近就越准确。阶梯的每一步都由一个神经网络表示,它们是隐藏层中的节点,具有sigmoid激活函数,本质上是一个概率阶跃函数。本质上,每个节点都被“分配”给f(x)的一部分。然后通过权重和偏置系统,网络可以判断节点的存在,使得sigmoid函数的输入值达到正无穷大(输出值为1),如果神经元需要针对特定??的输入值被激活,输出值为负无穷大。这种使用节点来查找数据函数的特定部分的模式不仅可以在数值数据中观察到,也可以在图像中观察到。虽然通用逼近定理已扩展到适用于其他激活函数,例如ReLU和神经网络类型,但原理仍然正确:神经网络是完美的。神经网络不依赖于复杂的数学方程和关系系统,而是将自己的一部分委托给数据函数的一部分,并机械地记住其指定区域内的归纳法。当这些节点聚合成一个巨大的神经网络时,看似智能模型的结果实际上是经过巧妙设计的逼近器。如果一个神经网络能够构建——至少在理论上——一个具有你期望的精度的函数(节点越多,逼近越准确,当然不考虑过度拟合的技术细节),一个结构合理的神经网络可以模拟任何其他的算法的预测函数p(x)。这是任何其他机器学习算法都不可能做到的。神经网络使用的方法不是优化现有模型中的一些参数,例如多项式曲线和节点系统,而是一种特定的数据建模视角,不寻求充分利用任何独立系统,而是直接近似数据功能;我们所熟悉的神经网络架构只是思想的建模表示。借助神经网络的力量和对深度学习这个无底洞领域的持续研究,数据——无论是视频、声音、流行病学数据,还是介于两者之间的任何数据——都将能够建模,神经网络确实是算法的算法。本文转载自微信公众号“读芯”,可通过以下二维码关注。转载本文请联系核心阅读公众号。
