JavaScript 机器学习编程指南

网友投稿 2018-03-26 21:02

最近,我想知道怎样才能在一段时间里摆脱web开发泡沫。2017 年 JavaScripy 全是关于 React, Redux 和 MobX 的内容,我也在我的博客上积极讨论,也开发过小型应用(1, 2, 3, …)和大规模应用程序,出版过两本书,并在在线课程平台教导别人。过去的一年都是关于这些的主题,所以我需要一个次要的项目来逃避它一段时间,然后进入禅宗学习模式。

我是如何开始机器学习的?几个月前,我我偶然发现了机器学习指导播客并开始听它,并且也极力推荐它给你介绍机器学习。Tyler Renelle做了一件很棒的工作让你对这个话题感到兴奋。我几乎觉得我在跟随他的脚步去学习机器学习。虽然我并没有积极地计划学习ML(),但是听到所有这些陌生的概念是很有趣的。我感觉就像打开了新世界的大门。就像我刚涉足web开发时的感觉。

在我读过几篇机器学习文章后,我觉得Andrew Ng 的机器学习课程是迄今为止最值得推荐的机器学习入门。尽管我自己也积极地做在线授课,但我以前从来没有从头到尾听在线课程,不过这一次我决定尝试一下。幸运的是,课程在一周前开始了。我参加了它,现在完成了。这是一个爆炸性的学习,我建议每个想要了解 ML 的人都要学习它。尽管接受12周的课程是个艰巨的任务,但更更重要的还在后头。

大学毕业后,我立即找了一份工作,在JavaScript上开发大规模的应用。因此,我从未有机会将我在大学学到的大部分技术和数学知识运用到实践中。在过去的几年里,web开发和JavaScript的发展是非常棒的,我不想错过这段时间。但是当我开始学习机器学习的时候,我很高兴能把学过的数学知识都用上。突然间,我有了一个用例,它对一个函数求导是有意义的:梯度下降。为什么学校和大学不把这些真实世界的案例用一个简化的版本来激发学生的实践问题呢?学习所有的理论知识是很好的,但是当你最终对一个优化问题应用导数时,它会变得很令人兴奋。我总是很难拿起一本关于普通数学的书。但是当我重新开始重新学习机器学习的数学时,我有了一个适用的领域。所以我开始重新学习大学里的所有东西这些东西显然不仅仅是求导。

那么,为什么这篇机器学习的文章是关于JavaScript的呢?如果您像我一样从事web开发,您可能会知道,从一个领域跨越式到另一个领域(如机器学习)是多么困难。它有自己的约束条件。不仅整个领域的算法是不同的,而且它的编程语言也适用于机器学习,与线性代数、微积分和统计的数学概念结合在一起。就我个人而言,我发现将机器学习中不同的学习部分归结为一种有趣的策略:算法、编程语言(例如Python)和数学概念。当我看到这些,我知道我一定要学习机器学习算法本身和基础的数学概念。但我可以不使用”最适合的机器学习编程语言”,而是用一种我觉得最有效的语言(JavaScript)来取代它。

下面这篇文章应该对从web开发人员的角度看机器学习做一个温和的介绍。它会向您展示机器学习领域的机会,以及为什么web开发人员使用JavaScript作为来学习这些东西是一种优势。此外,它还应该指导你如何在不学习任何东西的情况下接近主题。您可以在JavaScript中实现细节,并专注于理论部分:算法和数学。如果你对这个话题很熟悉,并且想改进这篇文章,请不要犹豫,联系我。我自己还在学习这个话题,我很感激能有任何正确的指导。毕竟,我的指导只描述了我的学习路径,但我希望其他人能利用它。

使用 JavaScript 做机器学习?你有什么猫饼?

现在我可以听到人群的叫喊:JavaScript不适合机器学习。你也许是对的。但是有一些原因可以解释,为什么可以使用 JavaScript 去学习机器学习,不仅仅是因为你是一个 Web 开发者。我个人认为它有巨大的潜力。这就是为什么我试图让web开发人员更容易访问这个主题。

如前所述,您可能已经精通了JavaScript。你不必从头开始学习另一种编程语言。您可以将机器学习的理论部分应用于任何语言,所以为什么不JavaScript呢?然后,您只需在早期阶段中应用JavaScript的实现细节来了解ML的理论部分。之后,你可以切换到另一种语言来进行机器学习。没人能剥夺你的权利。但您可以决定如何分解学习途径,以便运用自己的学习曲线和经验。你把大量的东西都都学到入门的状态而不是一口气钻太深,这样你就可以保持一种流畅的状态,保持学习的热情。

https://cdn.china-scratch.com/timg/180328/210202M35-0.jpg

JavaScript的发展速度很快。它已经被应用到几个领域,几年前还没有人看到它。您可以在移动设备、桌面应用程序、嵌入式系统和后端应用程序中看到它。它不仅仅是用于 web 开发。那么为什么机器学习不能呢?也许在JavaScript中编写机器学习算法是一种计算和实现的有效方法。最近出现了一些库,它们给我们提供了一个围绕算法和神经网络的框架。这些库通过在浏览器中使用WebGL使机器学习计算效率更高。也许在浏览器中训练机器学习模型不是最好的主意,但是在浏览器中使用预先训练的模型可能是未来的一个很有前途的领域。最后但并非最不重要的一点是,它可能只是作为web开发人员进入机器学习领域的桥梁,但之后使用更适合的编程语言。没人知道,但我希望你们考虑一下这些可能性。

https://cdn.china-scratch.com/timg/180328/210203L54-1.jpg

但是性能如何呢?机器学习算法高度依赖于性能。他们经常使用所谓的矢量化实现来保持计算效率。类似地使用GPU执行的图形计算(参见图像;来自http://webgltutorials.org)。这就是让c++作为机器学习的一种编程语言很有趣。因此,人们会认为JavaScript本身并不是最适合的编程语言。然而,随着WebGL的流行,GPU在浏览器中加速了执行,它也被用于最近的计算机学习库。

https://cdn.china-scratch.com/timg/180328/210203AC-2.jpg

一个关于训练阶段的问题。即使它是由GPU支持的,为什么要在浏览器中训练呢?在高效的机器学习体系结构中计算是分配到分布式系统的。但是,最近, JavaScript的机器学习库使用的是预先训练的模型(推理阶段),而不是浏览器中的训练阶段。这个模型来自服务器,只用于在浏览器中进行进一步的预测和可视化。所以为什么不可能在训练阶段后端和推理阶段的博弈中提供一个框架呢?如前所述,在浏览器中使用预先训练的模型在将来可能是一种常见的做法。人们急切地想让这些模型变得更小。因此,它不再像过去那样困难了,通过一个远程API来传输它们。

反对在JavaScript中进行机器学习的一个重要原因是缺少库。但事实并非如此。有一堆库在帮你。例如,在机器学习中考虑几种编程语言,以及它们主要使用的领域:

  • 数学/数据分析: Matlab, Octave, Julia, R

  • 数据挖掘: Scala, Java (例如. Hadoop, Spark, Deeplearning4j)

  • 性能: C/C++ (例如. GPU 加速)

接下来,您将了解为什么Python在机器学习中有如此多的意义。它有一组合适的库,用于从上面分配给编程语言的不同任务,甚至更合适的解决方案:

  • 数学: numpy

  • 数据分析: Pandas

  • 数据挖掘: PySpark

  • 服务器: Flask, Django

  • 性能:

    • TensorFlow (因为它是使用 C/C++ 引擎实现的 Python API )

    • Keras (对 TensorFlow 的封装)

所以,使用Python进行机器学习似乎是有道理的。但是JavaScript生态系统也提供了一套适合大多数任务的丰富的库。只是它们中的大多数不仅用于机器学习,JavaScript生态系统在此之前开发了一些复杂的解决方案:

  • 数学: math.js

  • 数据分析: d3.js

  • 服务器: node.js (express, koa, hapi)

  • 性能:

    • deeplearn.js (例如:在浏览器中使用 WebGL API 实现. GPU 加速)

    • Keras.js

即使是像 math.js 这样的库,也没有在 GPU 上执行计算,我想有人可以开发一个 gpu.js 提升性能。此外,最近的高级机器学习库,如deeplearn。js有他们自己的一套数学函数,这些函数确实是由GPU加速的。在将来,您可能会使用其中一个专门的 JavaScript 机器学习库,并且拥有 GPU 加速的数学计算库。js 也会有自己的 GPU 加速方法。

在前面的列表中除了最后的库(deeplearn.js 和 keras.js),其他的库都和机器学习没什么关系。它们是独立开发的,因此拥有强大的社区。因此,JavaScript 在工具集上并没有落后于其他编程语言。但毫无疑问,没有最好只有更好。有无数的改进可以做,也有需要的库。这是开源开发者围绕其实现必要工具的另一个机会。我认为在未来,将会有一些复杂的库用于JavaScript的机器学习。就在最近,有几个有趣的 JavaScript 的机器学习库发布了。

  • deeplearn.js: 谷歌发布的库 通过 WebGL API 使用 GPU 加速,用于在浏览器中使用预训练的模型,也可以用于训练模式。它反映了流行的TensorFlow库的API。

  • TensorFire and Keras.js: 还有两个带GPU加速的库,用于预训练模型的推理模式。它们允许您在Keras或TensorFlow中使用Python编写模型。之后,您可以使用TensorFire或Keras.js将它们部署到web。

在2017年才出现了那些令人兴奋和充满希望的库。所以我很好奇2018年将会给我们什么。

正如您所看到的,到目前为止,本文指出了一些使用JavaScript作为编程语言来启动机器学习的问题。然而,这些理由大多不再像几年前那样有效了。随着 JavaScript 不断发展,它有能力应用机器学习。尽管这可能只是你首先学习机器学习的桥梁。之后,学习一种更适合它的编程语言。但是,你只需要学习编程语言,而不用重新学习机器学习的理论部分。即使学习机器学习是一个持续的过程,你也会在这个快节奏的领域中学习新的东西。但这很令人兴奋,因为它有很多方面。

机器学习是Web开发人员的一个机会。

在这篇文章的开头,我明确了自己的动机。然而,这并不是故事的全部。作为web开发人员,有大量的理由和机会去钻研机器学习。

首先,它总是一个开阔眼界的机会。它不仅适用于机器学习。但是,当你感到自己变得太安逸时,就把它当作学习新事物的机会。你不需要用JavaScript的实际方法来实现机器学习算法,也许只需要学习数学和理论层面上的算法就够了。毕竟,你需要通过学习保持思维敏捷。

其次,在机器学习领域有大量的工作机会。当然,这是近年来过度炒作的话题,但并非毫无理由。该领域的学生和研究员都是直接从大学毕业的。人工智能、数据分析和机器学习等领域的需求似乎很大。培训机构正在兴起,或者将他们的注意力转移到数据科学上。JavaScript可以成为web开发人员机器学习的切入点。把它看作是一个超越web开发的机会,或者是一个更广泛的工作机会。也许在未来几年,随着机器学习的发展,web开发市场将会增长。但即使没有,你也可以学习一种适合机器学习的编程语言,把你所有的理论知识应用到它上面。毕竟,web开发人员必须做出一个重要的决定,才能进入与web开发不同的领域。也许他们自己的工作因为机器学习而变得多余。那么为什么不学习ML呢?

https://cdn.china-scratch.com/timg/180328/2102034M4-3.jpg

第三,尽管JavaScript为机器学习提供了许多实用程序库,但在领域中仍有很大的改进空间。简单地想一下,我能想到几件事。例如,说到计算效率,大多数库都不是GPU加速的。在浏览器中机器学习的计算效率将大大提高。在可视化方面,有一些图表库,比如d3.js作为底层的可视化库,对于那些适用于机器学习相关问题的可视化,并没有合适的抽象。应当更简单地绘制支持向量机的结果,或者根据所使用的域问题来明确而非隐式地可视化执行的神经网络。这里有足够的空间让机器学习和JavaScript结合。你可以为进入机器学习领域的web开发人员做贡献。

https://cdn.china-scratch.com/timg/180328/2102031192-4.jpg

最后,但同样重要的是,ML开源社区的人为在浏览器中使用机器学习做了很大贡献(例如 deeplearn.js, TensorFire, Keras.js)。然而,大多数情况下,文档更适合于机器学习开发者使用浏览器,而不是我在本文中描述的其他方式(Web 开发者使用机器学习)。因此,这些解决方案需要掌握许多基本的机器学习知识,而这些知识并没有在教学过程中出现。所以,web开发人员很难进入机器学习领域。因此,可以通过传授这些基本知识和库的使用,为web开发人员进入机器学习的领域铺平道路。这就是我在教学中所要学习的知识。在未来,如果您想以 Web 开发人员的身份进入机器学习领域,我将给您提供指导。在本文的最后几段中,请阅读更多相关内容。

机器学习介绍

如果您熟悉机器学习,请随意跳过这一部分。作为一个新手进入机器学习领域可能是一个热门词汇。从哪里开始?一开始有很多术语要澄清。是人工智能还是机器学习?所有关于深度学习的炒作是什么?这方面的数据科学有多适合呢?

https://cdn.china-scratch.com/timg/180328/2102043B2-5.jpg

让我们以人工智能开始我们的旅程。“这是一台机器的智能,它能成功地完成人类所能完成的任何智力任务。”在机器学习指南的播客中,有一个很好的类比来传达人工智能的信息:工业革命的目标是通过机器模拟物理身体,而人工智能的目标是通过算法模拟大脑工作。那么机器学习与人工智能有什么关系呢?让我们来看看AI的几个子领域:

  • 搜索和计划(例如,用可能的动作来玩游戏)

  • 推理和知识表达(构造知识得出结论)

  • 感觉(视觉、触觉、听觉)

  • 移动和操作对象的能力(进入机器人领域)

  • 自然语言处理(NLP)

  • 学习

最后一个代表机器学习。正如您所看到的,它只是人工智能的一个子领域。然而,它可能是人工智能的唯一核心部分,因为它也延伸到人工智能的其他子领域。在最近的时间里甚至更多地触及到他们。例如,视觉是应用机器学习的一部分。其他的技术,例如领域特定的算法,在过去的领域占据主导地位,机器学习现在进入了这个领域。现在,深度神经网络经常被用于这个领域。那么,人工智能的适用领域是什么呢?因此,机器学习是最常见的吗?一系列的领域和例子:

  • 图像识别(见上文参考链接)

  • 网络(例如搜索引擎、垃圾邮件过滤器)

  • 艺术(例如绘画)

  • 自动驾驶汽车(例如特斯拉自动驾驶仪,在战争中机器人的意识出现)

  • 医学诊断

  • 玩游戏(例如,围棋,星际争霸)

机器学习是人工智能的一个分支。让我们深入探讨这个主题。对于机器学习有几个很好的定义,但当我开始研究这个课题的时候,我发现了亚瑟·塞缪尔(1959年)最令人难忘的一项研究:“研究的领域让计算机能够在不被明确编程的情况下学习。“它是怎么工作的?”机器学习基本上可以分为三个类别:监督学习、非监督学习和强化学习。这是从前者到后者的进化过程。前者更具体,后者则更抽象(但令人兴奋和未被探索)。前者,受监督的学习,为机器学习提供了最好的切入点,因此在几个教育机器学习课程中被使用,让你进入这个领域。在监督学习中,训练算法识别给定数据集中的模式,将数据集分割为输入(x)和输出(y),训练算法通过学习给定的数据集(训练阶段)的基础模式来将输入映射到输出。之后,在训练算法时,它可以用来预测未来的输入数据点,从而得出输出数据点(推理阶段)。在训练阶段,成本函数估计当前算法的性能,并根据这些结果调整算法的参数(惩罚)。该算法本身可以简化为一个简单的函数,将输入x映射到输出y,它被称为假设或模型。

预测波特兰的房价是受监督学习的一个普遍的机器学习问题。考虑到一套房子的数据,而每栋房子的面积都是平方米(x),房子的价格(y)应该被预测。因此,数据集包含房屋的大小和价格列表。它被称为训练集。训练集中的每一行代表一所房子。输入x,在这种情况下,房子的大小,被称为房子的特征。由于只有一个功能的房子在训练集,它被称为一元训练集,如果有更多的功能,如卧室的数量和大小,它变成了一个多元训练集。增加培训的规模大小(m)和功能(n)的大小会导致一种改进的预测而y称为标签,目标或简单地输出。简而言之:一个模型接受了一个惩罚成本函数来预测来自数据点和它们的特征的标签。

Tom Mitchell(1998):“据说一个计算机程序可以从经验E中学习到一些任务T和性能测量P,如果它在T的任务中的表现,用P来衡量,就会随着经验的增加而提高。”

之前预测波特兰房价的用例被称为回归问题。如前所述,线性回归可以用来训练假设,以输出连续值(如房价)。在监督学习领域中另一个被解决的问题叫做分类问题,在这里,逻辑回归被用来输出分类值。例如,假设你有一套训练t恤。这些特征,比如宽度和高度,可以用来预测X、M和L的分类大小。

https://cdn.china-scratch.com/timg/180328/21020462D-6.jpg

前面几段是对机器学习的监督学习的概述。非监督学习是如何工作的?基本上,有一个给定的训练集,有特征,但没有标签。在训练集中没有任何给定的输出数据训练算法。在分类问题中,算法必须自行找出将数据点分类成簇的方法。

最后但同样重要的是,强化学习呢?在强化学习中,该算法在没有给定数据的情况下进行训练。它通过重复学习过程来学习经验。举个例子,这只flappy bird通过在强化学习中使用神经网络来学习赢得游戏。该算法是通过反复试验来学习的。潜在的机制是奖励和惩罚的结合训练鸟飞。就像一只真正的鸟会学飞一样。

https://cdn.china-scratch.com/timg/180328/210204E64-7.jpg

最后,可能还有另一个问题出现在你的脑海中:数据科学与机器学习的关系是什么?数据科学经常与机器学习联系在一起。因此,有人可能会认为,机器学习在这两个领域都存在:数据科学和人工智能。然而,数据科学有它自己的子领域,如数据挖掘和数据分析。它通常可以与机器学习相结合,因为数据挖掘使算法从挖掘的数据和数据分析中学习,使研究人员能够研究算法的结果。

https://cdn.china-scratch.com/timg/180328/2102043416-8.jpg

这是对机器学习领域的广泛介绍。如果你对那些与JavaScript相关的话题感兴趣,请在接下来的几个月里关注我的网站。我希望能介绍一些主题,让web开发人员进入这个领域。就像我说的,我自己正在学习这个话题,并试图通过把这些知识写下来,将这些知识内化。

Web 开发者如何学习机器学习

有很多资源我想推荐给那些进入机器学习领域的web开发人员。至于我自己,我想至少在12周内刺激我的感官。这就是完成Andrew Ng的机器学习课程的时间。请记住,这是我个人的路线图,它可能不适合所有人。但这对我的学习有很大帮助,因为我有足够的学习材料。所以它也可能帮助其他的web开发人员。

如果你只是想对这个话题感兴趣,那就开始听第11集的机器学习指南吧。Tyler Renelle做了一份很棒的工作,介绍了这个话题。因为这是一个播客,你在健身房锻炼的时候听一会,这就是我进入ML的方式。

如果你开始感到兴奋,下一步将是学习Andrew Ng的机器学习课程,这需要12周的时间完成。从浅层机器学习算法到神经网络,从回归问题到聚类问题,从领域的理论知识到应用于Octave或Matlab的应用实现,都是一个漫长的过程。这是一种强烈的挑战,但你可以通过每周花几个小时的时间和练习来完成。

机器学习课程在5周内从线性回归到神经网络。在第5周的最后,我感到了一种势不可挡的感觉。“第六周会变得更加复杂吗?”“哇,这门课让我学会了从头开始实施神经网络。”Andrew给出了一个完美的演练来了解所有这些建立在彼此之上的概念。毕竟,机器学习与函数式编程的功能组合有很多共同之处。但你要自己去了解。我只能说,看到自己第一次在浏览器中执行一个神经网络的实现是一种压倒一切的感觉。

在这个过程中,我做了所有的每周作业,并使用 Octave 解决了它们。此外,我在 JavaScript 中实现了大部分算法,同时也是为我自己做练习,并得到结论,用一种不适合机器学习但适合web开发人员的语言来实现这些算法是可行的。它起作用了,我在一个开放的GitHub 组织中发布了它们。它对每个人都有贡献。但这并不是故事的全部。我还写了一些主题,让我内化自己的学习,获得别人的指导,同时也帮助web开发人员进入这个领域。因此,如果您正在进行这门课程,请查看这些JavaScript实现和相关的这些。这些练习是用于 Nodejs 和浏览器的专用机器学习教程。

  • Linear Regression with Gradient Descent in JavaScript

  • Improving Gradient Descent in JavaScript

  • Gradient Descent with Vectorization in JavaScript

  • Multivariate Linear Regression, Gradient Descent in JavaScript

  • Linear Regression with Normal Equation in JavaScript

  • Logistic Regression with Gradient Descent in JavaScript

  • Neural Networks in JavaScript with deeplearn.js

它还不全面,例如缺少常规JavaScript神经网络实现,但是我希望在某个时候能够完成JavaScript的所有基本算法。神经网络实现是通过谷歌最近发布的 deeplearn.js 完成的。我第一次使用它的时候非常兴奋,对于我来说这是我的个人奖励,在学了5个星期的课程之后,我使用了一个库,而不是从头开始用JavaScript 实现神经网络。让我们来看看神经网络的作用,以提高网站的可访问性。另一个是学习diget使用MNIST数据库并可视化其结果。也许你把它看作是给GitHub组织贡献的机会。下一个议程是K-Means,支持向量机(SVM)和主成分分析(PCA),从JavaScript开始!

在你完成了机器学习课程的第5周之后,你应该对机器学习和如何用它解决问题有一个很好的感觉。之后,该课程继续用浅层算法进行监督学习和无监督学习。它给出了如何改进您实现的机器学习算法以及如何为大型数据集进行扩展的指导。当你完成了第5周,你应该继续使用机器学习指导播客来学习更多关于浅层算法和神经网络的知识。我听了它直到第17集,因为后来它大量进入自然语言处理。

此外,在这几周的课程中,我阅读了华文音频的主算法,以获得关于主题、不同视角和利益相关者的概述,以及它的历史。在那之后,我开始阅读开源电子书《深度学习》(Ian Goodfellow, yojoshua Bengio和Aaron Courville)。它发生在课程的第五周之后,完全符合我迄今为止所学到的所有基础知识。虽然到目前为止我觉得这本书很有挑战性,但我可以推荐两本书给你更多的指导。当我读完第二本书后,我想读的是迈克尔·尼尔森(Michael Nielsen)的免费电子书《神经网络》和亚当·吉布森(Adam Gibson),乔什·帕特森(Josh Patterson)的《深度学习》。

还有什么可以学习机器学习的?在我完成了Andrew Ng的课程之后,我将会休息一下,把所有的学习都消化掉。我可能会在我的博客写更多关于他们的文章。如果你感兴趣的话,你可以订阅我的博客。但是,还有很多其他的课程我想去看看。

  • Machine Learning Engineer Nanodegree on Udacity

  • Deep Learning Specialization on Coursera

  • Practical Deep Learning for Coders on Fast.ai

这些课程都是由Andrew Fast.ai 也有一个关于计算线性代数的课程,它的基础数学也在ML。一般来说,机器学习需要大量的数学知识。如果你需要复习某些话题,我可以强烈推荐可汗学院。

  • Linear Algebra

  • Statistics

  • Calculus

回到主题:用JavaScript进行机器学习。有什么类型的库支持您使用JavaScript进行机器学习?如果你想从头开始实施数学运算,那么是无法绕开 math.js (如矩阵运算)。但是,如果您使用的是高级库,比如Keras.js或deeplearn.js,你将会使用NDArrays的数学方法,张量和数学运算。除此之外,还有一些其他的库之前没有提到,我还没试过。请记住,不是所有的库都支持 GPU 加速,但是我想,当涉及到计算效率时,他们中的几个将在未来提供它。

  • Pavlov.js (Markov Decision Processes)

  • SVM.js (Support Vector Machines)

  • Brain.js (Neural Networks)

  • Synaptic (Neural Networks)

  • Neataptic (Neural Networks, Neuroevolution)

  • WebDNN (Neural Networks, Inference Mode)

在JavaScript中,还有更多的机器学习相关的库,用于人工智能的其他子领域。

  • Natural (Natural Language Processing)

  • Sentiment (Sentiment Analysis)

  • OpenCV.js (Computer Vision with OpenCV for the Browser)

  • opencv4nodejs (Computer Vision with OpenCV for Node.js)

  • face-recognition.js (Face Recognition)

另一个库没有出现在列表中,因为它没有被积极维护:ConvNetJS。此外,还有两个库在JavaScript中实现了浅层机器学习算法:machine_learning和ml。在这些库中,您可以找到逻辑回归、k-means集群、决策树、k近邻、主组件分析和JavaScript的naive bayes。

这些库中有许多只用于Node.js中的机器学习。因此,他们没有在浏览器中使用计算效率的WebGL。

如果你有其他建议,请在下面留言。如果您知道某些库是否处于活动状态,或者已经不再维护,请联系我们。我想让这篇文章为将来而更新。

更多机器学习的编程语言

在学习并将所有的理论概念应用到您所选择的编程语言(例如JavaScript)之后,您总是可以重新学习一种最适合机器学习的编程语言。它可以是一个很好的学习经验,来体验用不同的语言来实现更高效的东西。在用JavaScript解决数学方程时,我也有同样的感觉。

前一段展示了一些机器学习语言(Python、C/ c++、R、Scala、Java、Matlab、Octave、Julia)和他们的专业领域。用它的库来提供所有东西的人似乎是Python。我在这里不能给出任何深刻的建议,因为我没有使用任何与机器学习相关的语言,但是我个人会选择Python,如果我在使用JavaScript后继续学习这个主题。关于学习Python的一个最推荐的资源是通过艰苦的方式学习Python。Andrew Ng在他的机器学习课程中提到,通常机器学习算法是在Octave或Matlab中开发出来的,但后来在Python中实现了。因此,我仍然在寻找一种实用的学习路线图,将视频、文本和音频材料结合起来,就像我为机器学习所做的那样。如果你有任何建议,请在下面留言。


最后,我很好奇您对web开发人员在JavaScript上的机器学习的反馈。正如我所说的,我现在每天都在学习这个话题。我很可能会在2018年投入更多的时间在这个领域,但我也想听听你的想法。你要和我一起去旅行吗?

此外,我很好奇你是否有机会让我以专业的方式更深入地了解机器学习。目前,我积极从事JavaScript和web开发的自由职业和咨询工作,并在在这两方面建立自己的项目,但我希望能在机器学习中获得专业的地位。我渴望学习,并且会去寻找那些热心于教授机器学习领域新知识的导师。所以,请花点时间考虑一下,如果有什么可以帮助我的,请联系我。

最后,我想宣传一下,BRIIM是一个致力于在 JavaScript 中运行机器学习的社区。虽然我不希望用 JavaScript 来解决实际的机器学习问题,但我期待着看到JavaScript在未来几年变得更容易被机器学习所使用。这就是为什么我发起了 BRIIM,让每个人都聚在一起。这是一个作为一个社区而不是个人来行动的机会。它应该给机器学习提供一个入口点,使其能够在一个集体活动下工作。与其在web上找到关于机器学习的文章,不如有一个维护良好的资源。不要把所有的东西拼凑在一起来学习关于机器学习的JavaScript,应该有一个高质量的资源为新手铺平道路。这是一个为JavaScript爱好者跨入机器学习领域的桥梁。因此,我希望在这一旅程中看到您与我同行。

非常感谢你的阅读!

近期热文

程序员,如果一小时后永久断网,你会干嘛?

阿里架构师:程序员必须掌握的几项核心能力


原文:A Web Developer’s Guide to Machine Learning in JavaScript
作者:robinwieruch译者:fengguang

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com