javascript机器编程进行中!

这是对机器学习领域的广泛介绍。如果你对那些与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开发的自由职业和咨询工作,并在在这两方面建立自己的项目,但我希望能在机器学习中获得专业的地位。我渴望学习,并且会去寻找那些热心于教授机器学习领域新知识的导师。所以,请花点时间考虑一下,如果有什么可以帮助我的,请联系我。

我的web前端学习交流群:57530,

8719,不定期分享干货,还会有2018最新的精品学习资料分享的哦!

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


分享到:


相關文章: