【问题标题】:Neural Networks without Calculus没有微积分的神经网络
【发布时间】:2019-01-12 04:47:50
【问题描述】:

我今年 14 岁,对神经网络非常感兴趣。我从 9 岁就开始编程,最近发现了人工智能和神经网络的世界。 14岁对我的数学理解造成了一些限制,我对微积分一无所知。言归正传,有没有不需要高等数学的神经网络?我了解神经网络,但后退支撑是我卡住的地方。我可以在没有所有这些数学运算的情况下有效地支持道具,并且仍然可以创建一个可以解决不仅仅是简单线性问题的神经网络吗?提前致谢!

【问题讨论】:

  • 您将非常需要数学,尽管预打包的 NN 库隐藏了大部分复杂性。微积分卡通指南是一个非常温和的介绍,如果不出意外,它将充分解开 calc 的神秘面纱,让您站起来并指出正确的方向。这并不像你想象的那么难(直到大约第三学期,然后事情很快就变得有趣了)。
  • 所以关于反向传播的一般想法是,您从结果中向后工作以查找存在错误的位置并相应地进行更新。微积分为您提供了一种查看有多少错误的方法,它是一种量化错误的方法。
  • 这取决于你想用神经网络做什么。您只是想训练和使用它,还是需要了解最里面的工作原理?在大多数情况下,如果您对线性方程感到满意(即y = mx + b),那么对于基本概念来说,这已经足够数学了。如果您需要手动实现反向传播,有几个概念略高于这一点,但应该在您的范围内。你能澄清一下你想做什么吗?

标签: neural-network artificial-intelligence


【解决方案1】:

很高兴看到你在你这个年纪已经达到了如此先进的水平,所以我真的建议你继续编程。至于您的具体问题:
在数学上,神经网络和其他任何东西一样是计算机科学中的一个主题:要构建一个迭代计算斐波那契数的函数,它当然有助于理解底层算法及其属性,但不需要实现这样的算法,因为有有很多材料可以涵盖类似的内容,而您无需了解太多。

工具添加抽象

至于神经网络,有很多不同的工具,你们中的一些人可能以前听说过。不完整的列表包括,例如,TensorFlowPyTorch(我个人最喜欢的)、Keras(如果需要,它在后端使用 TensorFlow)等等。

所有这些都允许您按照这些思路“实施反向传播”(PyTorch 中的示例):

optimizer.zero_grad()
loss.backward()
optimizer.step()

初始化optimizerloss 也可以很容易地完成,您有很多不同的选择。

但是,想出一个好的网络很难

当然,有了所有这些选择,您必须(至少在某种程度上)知道要使用哪种架构(或优化器,或损失等)。如果您了解底层操作的执行情况,它非常会有所帮助!即使只是一些高层次的理解,知道what a Convolution doesMean Squared Error differs from Cross Entropy Loss(这里随便说几句)会让生活变得更轻松。

您的网络根本无法工作的原因可能只是代码中的一个非常微小的细节,而且与经典编码不同,计算机不会真正告诉您失败的原因是什么。这使得调试变得更加困难,尤其是如果您缺乏对底层概念的理解。

如何开始

当然,您可以从创建一个简单的神经网络开始,甚至不需要太多的了解。许多列出的工具包都提供了自己的教程部分,以帮助您开始该领域。

尤其是目前围绕神经网络的所有炒作,有大量(或多或少有经验)的人创建 Jupyter Notebook、GitHub 页面、博客条目等,其中充满了有价值的示例。
与计算机科学中的一切一样,熟能生巧,您将慢慢开始理解越来越多的基本概念。

正如戴夫已经指出的那样,也有一些非常简单的解释,更多地关注理论。许多人目前正试图从完全不同的领域转向 AI/ML,因此对这个话题的理解程度和你一样多。遗憾的是,我是在了解了它背后的“基础数学”之后才开始讨论这个话题的,所以我不能推荐任何具体的书籍/教程/作者来阅读。

【讨论】:

    【解决方案2】:

    这可能不是那么令人兴奋,但我强烈建议您尝试使用感知器。它们是对神经网络的一个很好的介绍。如果你真的一心想使用 MLP,那么你可以只专注于学习梯度下降的概念和函数的变化率

    【讨论】:

      猜你喜欢
      • 2017-01-01
      • 1970-01-01
      • 2018-04-10
      • 1970-01-01
      • 2017-04-04
      • 2021-12-08
      • 1970-01-01
      • 2020-11-01
      相关资源
      最近更新 更多