没有数学教育就研究神经网络合理吗?

机器算法验证 机器学习 神经网络 深度学习
2022-04-06 14:34:40

鉴于机器学习技术和工具(例如 TensorFlow、Theano 等)的现代状态,似乎进入门槛最近有所降低,并且能够在 Python 上进行编程以构建有趣的东西就足够了。支持这一点的另一个来源是Coursera 上的机器学习专业化,它在其常见问题解答中陈述了以下内容:

需要哪些背景知识?

你应该有一些计算机编程的经验;本专业中的大多数作业将使用 Python 编程语言。本专业专为希望将技能扩展到数据科学和机器学习领域的科学家和软件开发人员而设计,但适用于具有基本数学和编程技能并有兴趣从数据中获取智能的任何人。

另一方面,还有许多其他在线课程(例如 Coursera 上的斯坦福机器学习或 Udacity 上的谷歌深度学习),以及经典书籍,如 S. Haykin,神经网络:综合基础,包含数学. 尽管我在大学里学了几年数学,包括统计学、矩阵、积分等,但它已经很久没有使用了,以至于我只看那些方程就感到绝望。甚至Knuth 的《具体数学》也以如此缓慢的速度被识别出来,以至于似乎根本不可能完成它。

因此,出现以下问题:

  1. 对数学知识浅薄但有编程技能的人潜入神经网络/机器学习研究是否合理?
  2. 是否可以仅使用高级工具在该领域构建有趣的项目,例如玩 atari的项目?

还是要花这么多时间,最好不要让自己挣扎,去做别的事情?

4个回答

这取决于您的工作类型:

如果您从事应用科学的工作,则需要数学,即您尝试使用 Hand 中的已知事物进行实验,即尝试词嵌入,可能使用 CNN,并查看结果是否好。

另一方面,如果你想最终成为一名研究科学家,则需要大量的数学知识,例如寻找表示词嵌入的新方法,或者在文本挖掘的情况下改进现有的词嵌入本身。

另一方面,如果您是机器学习领域的软件工程师或机器学习工程师,那么您只需要使用现有的做事知识来训练模型并对其进行调整以获得更好的性能。

研究和工程之间存在权衡。更多的研究是更多的数学,但更多的工程是更少的数学和更多的生产系统的性能。

另一个需要解释的例子是聊天机器人。具有数学背景的研究科学家需要为新模型写一篇论文,例如 LSTM 如何工作和可以使用。应用科学家将首先尝试使用 LSTM 构建聊天机器人等业务问题,并在实验室中发表论文如何为他们工作。机器学习工程师将复制应用科学家为他们的工程工作发表的概念(即需要理解论文的数学并将其复制到代码中,仅此而已。)

希望这对机器学习中数学知识的要求有所帮助

谷歌正在开设深度学习课程来培训员工。鉴于他们中的大多数人都处于您描述的情况(数学经验不多,但软件技能良好),我想说这证明您可以从深度学习中受益,而无需擅长数学。

现在网上有很多很酷的深度学习项目的工具和示例代码,因此很容易上手和使用它们。例如,张量流已经不需要太多关于反向传播算法如何工作的知识,但是在它之上构建了更简单的层,需要更少的深度学习/理论知识,例如 Keras

如果您想构建自己的项目,您必须记住,有时您需要大量数据和大量计算能力用于这些项目的子集。(例如,在麻省理工学院的机器学习课上,很多学生想要复制你提到的 atari 项目,但由于缺乏谷歌级别的计算能力,助教建议不要这样做)。

通过 1-2 天的努力,您可能能够完成的事情包括:

  • 构建您自己的相对简单的架构。
  • 在您感兴趣的数据集上训练复杂的架构(使用在线代码)。

最后,如果您想要创建超越现有技术的新酷架构,我会说如果不很好地理解其背后的数学,这将很难做到。

我是计算神经科学的博士生,我每天都在使用这种软件和东西。我们也有很多学生进来并在这个领域做他们的项目。所以我有一点经验。

对数学知识浅薄但有编程技能的人潜入神经网络/机器学习研究是否合理?

是的。您可以使用 Keras 等高级抽象并立即开始使用。在我看来,你不需要知道 ANN 的确切动态来使用它。

与所有事情一样,这在很大程度上取决于您以及您想要投入多少时间和精力。我会说你需要一些数学来理解它的基础知识。一个例子是神经网络中的激活函数它们起着至关重要的作用,但很容易理解。

如果您想深入了解它并真正了解它的工作原理和原因,您将需要相当广泛的数学技能。没有办法解决这个问题。我的意思是高级概率论、高级微积分和高级代数。例如,看看反向传播算法。. 有关机器学习中的数学的更多信息,您可以阅读这篇文。

是否可以仅使用高级工具在该领域构建有趣的项目,例如玩 atari 的项目?

是的。有很多很棒的工具可以让你做到这一点。当然,一旦你尝试编写的东西,你很快就会达到你的极限,例如,如果你想修改神经网络或算法以使其改进或变得更快。

至于 Atari,我建议您阅读这篇不错的博客文章。它以如此详细的方式解释了所有内容,以至于您可以实现它,但仍然足够浅以理解它。

因此,补充其他答案:我看到学生的数学技能低/基本但编程技能良好,他们都能够实施、测试和运行可靠的机器学习管道。在这里,管道意味着收集数据、预处理、训练和评估整个系统。

所以,是的,你可以做到。

我将把我的答案限制在神经网络上。

对数学知识浅薄但有编程技能的人潜入神经网络/机器学习研究是否合理?

这是合理和可能的。以下是支持这一结论的几个理由:

  1. 神经网络受到我们大脑功能的启发。因此,许多概念都是熟悉且易于理解的:神经元、连接、激活等。这使得神经网络的介绍变得流畅而令人兴奋,并且不需要任何数学。

  2. 神经网络的基本操作,无论其大小如何,都很容易理解:前向传递、信号从一个级别流向另一个级别、神经元激活等。这里不需要太多的数学:加权和和非线性函数,例如乙状结肠。

  3. 一些用于训练神经网络的最基本算法(例如反向传播)的数学并不复杂:求和、对数、乘法和除法。你计算具有具体含义的值:误差成本、梯度等。其他一些 ML 技术需要计算中间值(通常是矩阵),其含义不是那么清晰或直观。

  4. 通常不是更复杂的数学,而是对基础知识的理解和经验,让您深入研究更高级的主题,例如正则化、预训练、辍学等。

为了清楚起见,有更复杂的网络架构和数学要求更高的算法来训练神经网络。此外,尽管反向传播中涉及的计算很简单,但对于没有学习微积分的人来说,其推导很复杂。尽管如此,推导困难或存在更复杂的算法并不意味着研究神经网络是不合理的。这些问题不会妨碍您建立良好的理解并实际使用神经网络。

是否可以仅使用高级工具在该领域构建有趣的项目,例如玩 atari 的项目?

近年来,人们对神经网络(尤其是深度学习)的兴趣正在飙升。正如您所观察到的,这导致创建了许多优秀的工具和库,其中一些来自 Google、Microsoft 或 NVidia 等工厂。毫无疑问,这些质量足以创建有趣的项目。可能更具挑战性的是获得适量的质量数据来训练您的网络(鉴于此类数据目前不可用)。