梯度下降本身可以解决 ANN 中的非线性问题吗?
Can gradient descent itself solve non-linear problem in ANN?
最近在研究神经网络的理论。而且我对梯度下降和激活函数在 ANN 中的作用有点困惑。
据我了解,激活函数用于将模型转换为非线性模型。这样就可以解决线性不可分的问题。而梯度下降是帮助模型学习的利器。
所以我的问题是:
如果我对模型使用 sigmoid 等激活函数,而不是使用梯度下降来改进模型,我使用经典的感知器学习规则:Wj = Wj + a*(y-h( x)),其中 h(x) 是具有净输入的 sigmoid 函数。模型可以学习非线性可分离问题吗?
如果我不在模型中包含非线性激活函数。只是简单的净输入:h(x) = w0 + w1*x1 + ... + wj*xj。并使用梯度下降来改进模型。模型能否学习非线性可分问题?
我真的很困惑这个问题,哪个是模型可以学习非线性可分离问题的主要原因。
是的,梯度下降非常有能力解决非线性问题。只要各种变换在 "delta" 的调整范围内大致呈线性,该方法就有效。这就是我们调整学习率的原因:保持在线性假设相对准确的范围内。
非线性变换让我们更好地分离实现想法 "this is boring" 和 "this is exactly what I'm looking for!" 如果这些函数是平滑的,或者有非常少量的跳跃,我们可以应用我们习惯的近似和迭代来解决整个系统。
确定有用的操作范围无论如何都不是封闭形式的计算;与许多 AI 研究一样,它需要实验和改进。对您问题的直接回答是您问错了实体 - 尝试您列出的选项,看看哪个最适合您的应用程序。
监督学习 101
这是一个很深的问题,所以我将首先回顾一下基础知识,以确保我们相互理解。在其最简单的形式中,监督学习,尤其是 class 化,试图从一组观察值 {(x_i,y_i)}
中学习函数 f
使得 y=f(x)
。实践中出现以下问题:
- 你对
f
一无所知。它可能是多项式、指数或一些奇特的高度非线性的东西,甚至在数学中都没有合适的名称。
- 您用于学习的数据集只是您尝试学习的真实数据分布的一个有限且可能有噪声的子集。
因此,您找到的任何解都必须是近似的。您将使用的架构类型将决定一个函数族 h_w(x)
,w
的每个值将代表该族中的一个函数。请注意,因为通常有无限多个可能 w
,函数族 h_w(x)
通常是无限大的。
学习的目标将是确定哪个 w
是最合适的。这就是梯度下降介入的地方:它只是一个优化工具,可以帮助您选择相当好的 w
,因此 select 一个特定的模型 h(x)
.
问题是,您尝试近似的实际 f
函数可能不属于您决定选择的家族 h_w
,因此您是。
回答实际问题
既然已经介绍了基础知识,让我们来回答您的问题:
在单层模型 ANN 的输出端放置一个像 sigmoid 这样的非线性激活函数不会帮助它学习非线性函数。确实单层ANN相当于线性回归,加上sigmoid就变成了Logistic回归。为什么它不起作用?让我尝试一个直观的解释:单层输出的 sigmoid 是为了将它压缩到 [0,1]
,这样它就可以解释为 class 的隶属概率。简而言之,sigmoid 对硬阶跃函数起到可微分的近似作用。我们的学习过程依赖于这种平滑性(一个表现良好的梯度随处可见),并且使用阶跃函数会破坏例如。梯度下降。这不会改变模型的 决策边界是线性 的事实,因为最终的 class 决策取自 sum(w_i*x_i)
的值。这可能不太令人信服,所以让我们用 Tensorflow Playground 来说明。请注意,学习规则 在这里无关紧要 ,因为您正在优化的函数族仅包含其输入的线性函数,因此您永远不会学习非线性函数!
如果你放弃 sigmoid 激活,你会得到一个简单的线性回归。您甚至没有将结果投影回 [0,1]
,因此输出不会简单地解释为 class 概率,但最终结果将是相同的。参见 Playground for a visual proof.
那需要什么?
要学习非线性可分问题,您有几种解决方案:
将输入x预处理为x',这样将x'作为输入就使得问题线性可分。这只有在您知道决策边界应该采用的形状时才有可能,因此通常只适用于非常简单的问题。在 playground 问题中,由于我们正在处理一个圆,我们可以将 x1
和 x2
的正方形添加到输入中。尽管我们的模型在其输入中是线性的,但已仔细 selected、so we get an excellent fit.
对输入进行了适当的非线性变换
我们可以尝试通过添加一个或多个隐藏层来自动学习数据的正确表示,这将有助于提取良好的非线性变换。可以证明,只要使隐藏神经元的数量足够多,使用单个隐藏层就足以逼近任何东西。对于我们的示例,we get a good fit using only a few hidden neurons with ReLU activations。直观地说,你添加的神经元越多,决策边界就可以变得越 "flexible" 。深度学习领域的人们一直在增加深度而不是宽度,因为可以证明,使网络更深会使它整体上需要更少的神经元,尽管这会使训练更复杂。
最近在研究神经网络的理论。而且我对梯度下降和激活函数在 ANN 中的作用有点困惑。
据我了解,激活函数用于将模型转换为非线性模型。这样就可以解决线性不可分的问题。而梯度下降是帮助模型学习的利器。
所以我的问题是:
如果我对模型使用 sigmoid 等激活函数,而不是使用梯度下降来改进模型,我使用经典的感知器学习规则:Wj = Wj + a*(y-h( x)),其中 h(x) 是具有净输入的 sigmoid 函数。模型可以学习非线性可分离问题吗?
如果我不在模型中包含非线性激活函数。只是简单的净输入:h(x) = w0 + w1*x1 + ... + wj*xj。并使用梯度下降来改进模型。模型能否学习非线性可分问题?
我真的很困惑这个问题,哪个是模型可以学习非线性可分离问题的主要原因。
是的,梯度下降非常有能力解决非线性问题。只要各种变换在 "delta" 的调整范围内大致呈线性,该方法就有效。这就是我们调整学习率的原因:保持在线性假设相对准确的范围内。
非线性变换让我们更好地分离实现想法 "this is boring" 和 "this is exactly what I'm looking for!" 如果这些函数是平滑的,或者有非常少量的跳跃,我们可以应用我们习惯的近似和迭代来解决整个系统。
确定有用的操作范围无论如何都不是封闭形式的计算;与许多 AI 研究一样,它需要实验和改进。对您问题的直接回答是您问错了实体 - 尝试您列出的选项,看看哪个最适合您的应用程序。
监督学习 101
这是一个很深的问题,所以我将首先回顾一下基础知识,以确保我们相互理解。在其最简单的形式中,监督学习,尤其是 class 化,试图从一组观察值 {(x_i,y_i)}
中学习函数 f
使得 y=f(x)
。实践中出现以下问题:
- 你对
f
一无所知。它可能是多项式、指数或一些奇特的高度非线性的东西,甚至在数学中都没有合适的名称。 - 您用于学习的数据集只是您尝试学习的真实数据分布的一个有限且可能有噪声的子集。
因此,您找到的任何解都必须是近似的。您将使用的架构类型将决定一个函数族 h_w(x)
,w
的每个值将代表该族中的一个函数。请注意,因为通常有无限多个可能 w
,函数族 h_w(x)
通常是无限大的。
学习的目标将是确定哪个 w
是最合适的。这就是梯度下降介入的地方:它只是一个优化工具,可以帮助您选择相当好的 w
,因此 select 一个特定的模型 h(x)
.
问题是,您尝试近似的实际 f
函数可能不属于您决定选择的家族 h_w
,因此您是。
回答实际问题
既然已经介绍了基础知识,让我们来回答您的问题:
在单层模型 ANN 的输出端放置一个像 sigmoid 这样的非线性激活函数不会帮助它学习非线性函数。确实单层ANN相当于线性回归,加上sigmoid就变成了Logistic回归。为什么它不起作用?让我尝试一个直观的解释:单层输出的 sigmoid 是为了将它压缩到
[0,1]
,这样它就可以解释为 class 的隶属概率。简而言之,sigmoid 对硬阶跃函数起到可微分的近似作用。我们的学习过程依赖于这种平滑性(一个表现良好的梯度随处可见),并且使用阶跃函数会破坏例如。梯度下降。这不会改变模型的 决策边界是线性 的事实,因为最终的 class 决策取自sum(w_i*x_i)
的值。这可能不太令人信服,所以让我们用 Tensorflow Playground 来说明。请注意,学习规则 在这里无关紧要 ,因为您正在优化的函数族仅包含其输入的线性函数,因此您永远不会学习非线性函数!如果你放弃 sigmoid 激活,你会得到一个简单的线性回归。您甚至没有将结果投影回
[0,1]
,因此输出不会简单地解释为 class 概率,但最终结果将是相同的。参见 Playground for a visual proof.
那需要什么?
要学习非线性可分问题,您有几种解决方案:
将输入x预处理为x',这样将x'作为输入就使得问题线性可分。这只有在您知道决策边界应该采用的形状时才有可能,因此通常只适用于非常简单的问题。在 playground 问题中,由于我们正在处理一个圆,我们可以将
x1
和x2
的正方形添加到输入中。尽管我们的模型在其输入中是线性的,但已仔细 selected、so we get an excellent fit. 对输入进行了适当的非线性变换
我们可以尝试通过添加一个或多个隐藏层来自动学习数据的正确表示,这将有助于提取良好的非线性变换。可以证明,只要使隐藏神经元的数量足够多,使用单个隐藏层就足以逼近任何东西。对于我们的示例,we get a good fit using only a few hidden neurons with ReLU activations。直观地说,你添加的神经元越多,决策边界就可以变得越 "flexible" 。深度学习领域的人们一直在增加深度而不是宽度,因为可以证明,使网络更深会使它整体上需要更少的神经元,尽管这会使训练更复杂。