机器学习的基本知识
作为一个终生的微软开发人员,我经常看到开发人员努力寻找解决日常问题所需的资源。让我们面对现实吧,我们没有人有时间按照自己喜欢的方式做事,我们中很少有人有幸在真正的研发部门工作。虽然这些年来我们已经走过了相当长的一段旅程,还记得曾经我们通过桌上的C程序员参考资料和其他50本书中翻找资料,到现在能够在谷歌中快速搜索并得到我们想要的东西。但现在人工智能时代已经到来,情况有些不同了。
作为c#开发人员,当涉及到机器学习时,谷歌搜索并不总是我们最好的朋友,因为几乎所有正在使用的东西都是Python, R, MATLAB和Octave。我们还必须记住,机器学习已经存在很多年了; 只是在最近,美国的企业已经接受了它,我们看到越来越多的人参与其中。
但是,我的朋友们,毫无疑问,这个世界是一个可怕的地方!c# .NET开发人员该何去何从? 让我们在下一节开始用一个小故事来回答这个问题,不幸的是,这个故事是千真万确的。
在本章中,我们将学习以下主题:
数据挖掘技术(即指从资料中发掘资讯或知识)
是购买、构建还是开源
强化学习
无监督学习
监督式学习
概率和统计
深度学习
人工智能(AI)和生物人工智能
机器学习概论
我曾经有一个老板,我告诉他我正在使用机器学习来发现更多关于我们数据的信息。他的回答是:“你认为你能学到什么,我不知道!”。 如果你在职业生涯中还没有遇到这样的情况,那么恭喜你。如果你有任何职位空缺请告诉我!但你很可能会遇到或者已经遇到了。如果是你你会如何处理呢?而我并没有因此放弃这件事。
我:“我们的目标是了解更多关于我们所拥有的基金的信息和细节,以及它们如何与用户的实际情况进行关联的。”
Boss:“但这些我都知道。机器学习只是一个时髦的词,它最终都是数据,我们都只是数据管理员。其余的都是流行语。我们为什么要这样做,它最终将如何帮助我。”
我:“我来问你。当你在谷歌中输入搜索时,你认为会发生什么?”
Boss看起来有些愤怒。
Boss:“你想表达什么?Google当然是拿着我的输入的内容在网络中寻找与之相似的东西。”
我:“好,那这是怎么做的呢?”
Boss看起来更愤怒以及有些沮丧。
Boss:“很显然它会先在网络中进行搜索,然后将我的输入和它的搜索结果进行比对。”
我:“但是你有没有想过这个搜索是如何在其他数十亿个搜索中匹配的,以及搜索背后的所有数据是如何不断更新的?很明显,人们不能参与其中,否则就无法扩大规模。”
Boss:“当然,算法经过了很好的调整,给出了我们正在寻找的结果,或者至少给出了建议。”
我:“没错,正是机器学习做到了这一点。” (不一定,但足够接近!)
Boss:“好吧,我不知道我还能从这些数据中学到什么所以让我们看看它是怎样的。”
所以,让我们做诚实的人。有时候,再多的逻辑也无法覆盖盲目或抗拒改变的心理,但这个故事的背后,有着与一个无视我们在生物学中所学到的一切的老板截然不同、更为重要的意义。在机器学习的世界里,要想向那些不像你一样每天都在开发战壕里的人证明/展示正在发生的事情、事情是否在工作、它们如何工作、它们为什么(或为什么不)工作,等等要难得多。即使那样,你也很难理解这个算法在做什么。
以下是你在决定机器学习是否适合你时应该问自己的一些问题:
你只是想顺应流行(这可能是真正需要的),还是真的需要这种类型的解决方案?
你有你需要的资料吗?
数据是否足够清晰以供使用(稍后将详细介绍)?
您知道在哪里以及是否可以获得可能丢失的数据吗?更重要的是,您如何知道数据实际上是丢失的?
你有很多数据还是只有少量数据?
有没有另一种已知且经过验证的解决方案,我们可以用它来代替?
你知道你想要完成什么吗?
你知道你将如何完成它吗?
你将如何向别人解释?
当被问到这个问题的时候,你如何能够证明在幕后发生了什么?
这些只是我们在开始机器学习之旅时将共同解决的许多问题中的一部分。
现在,如果有人能够执行一个返回多行数据的SQL查询,他们似乎将称自己为数据科学家。对于简历来说这足够公平;每个人偶尔都需要鼓励一下,即使是自己提供的。但他们真的是数据科学家吗?数据科学家到底是什么意思?我们真的在做机器学习吗?这到底意味着什么?好吧,到这本书的结尾,我们希望能找到所有这些问题的答案,或者至少,创造一个你可以自己找到答案的环境。
并不是所有人都能在奢华的研究或学术领域工作。我们许多