关于文化馆网站建设的材料,北京开发小程序,免费舆情监测平台,wordpress 虚机摘要#xff1a; 机器学习到底需要怎么样的数学基础#xff1f;高段位机器学习如何练成#xff1f;来瞧瞧。
到目前为止#xff0c;我们都还不完全清楚开始机器学习需要什么样的数学水平#xff0c;特别是那些没有在学校学习数学或统计学的人。
在这篇文章中#xff0c…摘要 机器学习到底需要怎么样的数学基础高段位机器学习如何练成来瞧瞧。
到目前为止我们都还不完全清楚开始机器学习需要什么样的数学水平特别是那些没有在学校学习数学或统计学的人。
在这篇文章中我的目标是提出建立产品或进行机器学习学术研究所需的数学背景。这些建议源于与机器学习工程师、研究人员和教育工作者的对话以及我在机器学习研究和行业角色方面的经验。
首先我会提出不同的思维模式和策略以便在传统课堂之外接近真正的数学教育。然后我将概述不同类型的机器学习工作所需的具体背景这些学科的范围涉及到高中统计和微积分到概率图形模型PGM。
关于数学焦虑的一个解释
事实证明很多人包括工程师都害怕数学。首先我想谈谈“善于数学”的神话。
事实是擅长数学的人有很多练习数学的习惯。并不是他们先天就是擅长数学你可能在看他们做数学时发现他们得心应手。要清楚要达到这种舒适状态需要时间和精力但这肯定不是你生就有的。本文的其余部分将帮助你确定所需的数学基础水平并概述构建它的策略。
入门
作为先决条件我们假设你有线性代数/矩阵运算以及概率计算的基本知识点。我还希望你有一些基本的编程能力这将支持作为在上下文中学习数学的工具。之后你可以根据你感兴趣的工作类型调整你的主要方向。
如何在校外学习数学这个问题几乎困扰我们很多人。我相信专心学习数学的最佳方式是在学生的时代。在这种环境之外你可能不会拥有学术课堂中的氛围、同伴和可用资源。
在校外学习数学我建议组成学习小组并学会及时分享各自的资源。相互激励在这里发挥着重要作用这种“额外”的研究应该受到鼓励和激励这样在学习上就会很有动力。
数学和代码
数学和代码在机器学习工作流程中是高度交织在一起的。代码通常是由数学模型构建它甚至共享了数学符号。实际上现代数据科学框架例如NumPy使得将数学运算例如矩阵/矢量积转换为可读代码变得直观和有效。
我鼓励你将写代码作为巩固学习的一种方式数学和代码都是基于理性思考写代码的过程其实就是理解数学公式的过程。例如损失函数或优化算法的手动实现可以是真正理解基础概念的好方法。
通过代码学习数学的一个例子在神经网络中实现ReLU激活的反向传播。作为简要的入门读物反向传播是一种依赖于微积分链规则来有效计算梯度的技术。
首先我们可视化ReLU激活定义如下 要计算梯度直观地说斜率你可以想象一个分段函数由指标函数表示如下 NumPy为我们提供了有用、直观的语法我们的激活函数蓝色曲线可以在代码中解释其中x是我们的输入relu是我们的输出
relu np.maximum(x, 0)
接下来是渐变红色曲线其中grad描述了upstream渐变
grad[x 0] 0
在没有首先自己推导出梯度的情况下这行代码你可能看的不是很明白。在我们的代码行中(grad)对于满足条件的所有元素将upstream梯度中的所有值设置为0 [h0]。在数学上这实际上相当于ReLU梯度的分段表示当乘以upstream梯度时它会将小于0的所有值压缩为0
正如我们在这里看到的那样通过我们对微积分的基本理解我们可以清楚地思考代码。可以在此处找到此神经网络实现的完整示例。
为构建机器学习产品的数学
为了写这部分我与机器学习工程师进行了交谈以确定数学在调试系统时最有帮助的地方。以下是工程师自己回答的数学在机器学习中的问题。希望你能从中发现一些有价值的问题。
问我应该使用什么样的聚类方法来可视化高维客户数据 方法PCA与tSNE
问我应该如何校准“阻止”欺诈性用户交易的阈值 方法概率校准
通常统计和线性代数可以以某种方式用于这些问题中的每一个。但是要获得满意的答案通常需要针对特定领域的方法。如果是这样的话你如何缩小你需要学习的数学类型
定义你的系统
市场上有很多资源例如数据分析的scikit-learn深度学习的keras它们将帮助你跳转编写代码来为你的系统建模。在你打算这样做的时候尝试回答以下有关你需要构建管道的问题
1.你系统的输入/输出是什么
2.你应该如何准备数据以适合你的系统
3.如何构建特征或策划数据以帮助你的模型进行概括
4.你如何为你的问题定义合理的目标
你可能会感到惊讶定义一个系统竟然需要处理那么多问题之后管道建设所需的工程也是非常重要的。换句话说构建机器学习产品需要大量繁重的工作不需要深入的数学背景。
资源
• Google的研究科学家Martin Zinkevich 为ML工程提供的最佳实践
需要什么数学知识就需要什么
当你的头脑中完全进入到机器学习工作流程时你可能会发现有一些步骤会被卡住特别是在调试时。当你被困住时你知道要查找什么吗你的权重是否合理为什么你的模型不能与特定的损失定义融合衡量成功的正确方法是什么此时对数据进行假设以不同方式约束优化或尝试不同的算法可能会有所帮助。
通常你会发现建模/调试过程中存在数学直觉例如选择损失函数或评估指标这些直觉可能有助于做出明智的工程决策。这些都是你学习的机会来自Fast.ai的 Rachel Thomas 是这种“按需”学习方法的支持者。
资源
•课程计算线性代数 by fast.ai
•YouTube3blue1brown线性代数和微积分的本质
•教科书线性代数Axler
•教科书Tibshirani等人的统计学习元素
•课程斯坦福大学的CS229机器学习课程笔记。
数学用于机器学习研究
我现在想要描述对于机器学习中以研究为导向的工作有用的数学思维方式。机器学习研究的观点指向即插即用系统在这些系统中模型会投入更多计算以训练出更高的性能。在某些圈子里研究人员仍然怀疑缺乏数学严谨性的方法可以将我们带入人类智慧的圣杯。
值得关注的是研究人员需要提供原始资源例如新的基础构建模块可用于获取全新的洞察力和实地目标的方法。这可能意味着重新思考用于图像分类的卷积神经网络等基础模块正如Geoff Hinton在他最近的Capsule Networks 论文中所做的那样。
为了实现机器学习的下一步我们需要提出基本问题。这需要深度数学成熟因为整个过程涉及数千小时的“卡住”提出问题并在追求新问题时翻转问题观点。“有趣的探索”使科学家们能够提出深刻富有洞察力的问题而不仅仅是简单的想法/架构的结合。
ML研究是一个非常丰富的研究领域在公平性、可解释性和可访问性方面都存在紧迫问题。越来越多的研究者希望从数学的角度来解决这些问题而非辩证性的去看待问题。
原文链接
本文为云栖社区原创内容未经允许不得转载。