“C/C++”在机器学习开发中的流行程度如何?

数据挖掘 机器学习 深度学习 美国有线电视新闻网 nlp 编程
2021-10-01 08:44:01

我目前是一名数据科学家,主要从事 NLP,我的大部分工作都是在Python. 由于我没有获得本科的计算机科学学位,我一直被限制在非常高级的语言上;Java, Python, 和R. 我什至以某种方式避免使用数据结构和算法CC++.

我打算去研究生院学习更多的自然语言处理,我想知道C/C++我需要知道多少。深度学习框架如PyTorchTensorflow用 编写C++,而 CUDA 仅在C. 我不会编写Cython库,但我想做研究并建立新模型(例如“发明”CNN、seq2seq 模型、转换器)。

我不知道C/C++使用了多少,我不确定是否值得学习可能被引导到学习其他东西的特定语言的复杂性;希望有人可以让我知道使用的普遍程度如何C/C++

2个回答

正如您已经了解的那样,绝大多数数据科学工作都是使用 Python 和 R 等相当高级的语言完成的。所以这不是流行的问题,而是您想要在数据科学的大世界中的哪一部分/可以用你的技能和工具来做。

恕我直言,发明新模型需要:

  • 强大的数学和统计学理论背景,对现有估计/推理方法的深入了解
  • 对计算复杂性和(最好)算法优化方法有很好的理解。

如果另外你自己实现你的模型(不一定是这种情况),那你可能需要了解低级语言,如 C/C++,因为当人们要使用需要大量数据集的模型时,计算效率至关重要大量的计算。

机器学习本质上是数据密集型的,典型的机器学习算法是大规模数据并行的。因此,即使在开发新算法时,如果您愿意根据矩阵和向量的标准运算来描述您的算法,高级数学语言(如 Python、R、Octave )也可以相当快。

另一方面,为了更深入地探索基本概念,将单个组件视为您想要对其内部状态和交互进行概念化和可视化的对象可能会更有趣。这是 C++ 可能大放异彩的一个案例。当然,使用 C++ 意味着编译器会尝试优化您的执行速度。此外,它还为使用OpenMP(或其他可用的线程方法)直接执行多核打开了大门

C++ 是一种高级语言——在算法开发方面并不比 Python 更冗长或乏味。使用 C++ 的最大挑战是:

  • 更加无政府主义的图书馆生态系统意味着在选择和集成现有组件方面付出更大的努力。
  • 不太稳定的语言规则(或其解释)意味着您今天创建的东西可能在几年后无法编译(由于编译器升级)。

此外,请考虑 TensorFlow 文档确定了在某些低级案例中使用 C++ 而非 Python 的一些好处。请参阅TensorFlow:创建操作


GPU 加速的低级编码是一种完全不同的蠕虫,语言选项非常有限。您拥有想要超级优化的定义明确的自定义算法之前,这不是值得关注的事情。更有可能的是,您最好使用框架(如 TensorFlow)来为您处理 GPU 交互。


出于探索性可视化的目的,不要低估 JavaScript 的交互能力,它也比较快: