神经网络模型中的参数
Parameters in a Neural Network Model
是否可以使用神经网络建立由参数解释的分类模型,如logit或线性概率模型?
根据您的评论,在 Logit 模型中,您有 logit = b_0 + b_1*x_1 + ... b_k*x_k + e = b_0 + w^T.x + e
,然后是 P(y=1|x) = \sigma(logit)
。
分类神经网络的作用是用复杂的非线性函数 NN(x)
代替线性(仿射)函数 b_0 + w^T.x
。因此,虽然您可以轻松检索其参数 w
,但实际 logit = f_w(x)
将与 152 层深的 ResNet 指示的一样丑陋。
另一种解释是,NN 的所有层只是提取数据的一些更好的特征,最后一层是普通的 logit 模型(或多类逻辑回归或其他)。不幸的是,虽然您现在已经熟悉分类器,但它在一些奇怪的特征上运行。
神经网络是一种由其参数解释的分类模型。
让我们回到基础。考虑具有 N 个输入和一个输出的单个神经元。它应用以下形式的函数:
x = g(所有输入的加权和)
,其中 g 是一些非线性函数,例如 sigmoid 或 tanh 或 ReLU - 确切的函数确实会影响性能,但与我们的讨论无关。
问题是 类 之间的 分离面 是线性的(假设基于类似 x>0.5 的分类)。
问题在于许多现实世界的问题都不是线性的。它们实际上是极其复杂的问题,因此我们需要一个模型来估计这种高度非线性的函数。
现在,让我们想象一个小型神经网络,第一层有 2 个神经元,输出层有 1 个神经元。
输入层的 2 个神经元将有它们的输出:
x_1 = g(所有输入的加权和)
x_2 = g(所有输入的加权和)
(对于一层上的所有神经元,g 通常是相同的。它 不一定 是,但除此之外没有多大意义。对于其余部分讨论,让我们假设 g 到处都是一样的)。
现在,x_1和x_2是另一层神经元的输入,因此它的输出(以及整个网络的输出)是:
X = w_1*x_1 + w_2*x_2 = w_1*g(所有输入的加权和)+ w_2*g(所有输入的加权和)
也就是函数估计的神经网络有N个输入,输入层2个神经元,输出层1个神经元。当然,它由 2n+2 个权重参数化:每个输入神经元有 n 个权重,输出神经元有 2 个权重。
正如您所注意到的,这个表达式很难写在纸上(在 Whosebug 上更难写),而且对于深度神经网络来说它会变得 极其 复杂。然而,本质上,所有的神经网络都是一个简单的图形模型,这个长而相对简单的表达式,我们对每个节点的输入进行加权求和,并应用非线性函数。
由于这种模型能够估计高度非线性函数,因此向深度神经网络发展的趋势正在上升。从技术上讲,根据 universal approximation theorem,我们只需要一个隐藏层(想想之前的网络在输入层有 2 个神经元,在该层有超过 2 个神经元)。但事实证明,设计火车是非常不切实际的(部分原因是该层需要大量神经元)。所以人们开始在另一层之上堆叠越来越多的层,我们得到了现在的复杂架构:大量的加法、乘法和 g 链。
是否可以使用神经网络建立由参数解释的分类模型,如logit或线性概率模型?
根据您的评论,在 Logit 模型中,您有 logit = b_0 + b_1*x_1 + ... b_k*x_k + e = b_0 + w^T.x + e
,然后是 P(y=1|x) = \sigma(logit)
。
分类神经网络的作用是用复杂的非线性函数 NN(x)
代替线性(仿射)函数 b_0 + w^T.x
。因此,虽然您可以轻松检索其参数 w
,但实际 logit = f_w(x)
将与 152 层深的 ResNet 指示的一样丑陋。
另一种解释是,NN 的所有层只是提取数据的一些更好的特征,最后一层是普通的 logit 模型(或多类逻辑回归或其他)。不幸的是,虽然您现在已经熟悉分类器,但它在一些奇怪的特征上运行。
神经网络是一种由其参数解释的分类模型。
让我们回到基础。考虑具有 N 个输入和一个输出的单个神经元。它应用以下形式的函数:
x = g(所有输入的加权和)
,其中 g 是一些非线性函数,例如 sigmoid 或 tanh 或 ReLU - 确切的函数确实会影响性能,但与我们的讨论无关。
问题是 类 之间的 分离面 是线性的(假设基于类似 x>0.5 的分类)。
问题在于许多现实世界的问题都不是线性的。它们实际上是极其复杂的问题,因此我们需要一个模型来估计这种高度非线性的函数。
现在,让我们想象一个小型神经网络,第一层有 2 个神经元,输出层有 1 个神经元。
输入层的 2 个神经元将有它们的输出:
x_1 = g(所有输入的加权和) x_2 = g(所有输入的加权和)
(对于一层上的所有神经元,g 通常是相同的。它 不一定 是,但除此之外没有多大意义。对于其余部分讨论,让我们假设 g 到处都是一样的)。
现在,x_1和x_2是另一层神经元的输入,因此它的输出(以及整个网络的输出)是:
X = w_1*x_1 + w_2*x_2 = w_1*g(所有输入的加权和)+ w_2*g(所有输入的加权和)
也就是函数估计的神经网络有N个输入,输入层2个神经元,输出层1个神经元。当然,它由 2n+2 个权重参数化:每个输入神经元有 n 个权重,输出神经元有 2 个权重。
正如您所注意到的,这个表达式很难写在纸上(在 Whosebug 上更难写),而且对于深度神经网络来说它会变得 极其 复杂。然而,本质上,所有的神经网络都是一个简单的图形模型,这个长而相对简单的表达式,我们对每个节点的输入进行加权求和,并应用非线性函数。
由于这种模型能够估计高度非线性函数,因此向深度神经网络发展的趋势正在上升。从技术上讲,根据 universal approximation theorem,我们只需要一个隐藏层(想想之前的网络在输入层有 2 个神经元,在该层有超过 2 个神经元)。但事实证明,设计火车是非常不切实际的(部分原因是该层需要大量神经元)。所以人们开始在另一层之上堆叠越来越多的层,我们得到了现在的复杂架构:大量的加法、乘法和 g 链。