摘要: 机器学习到底需要怎么样的数学基础?高段位机器学习如何练成?来瞧瞧。
到目前为止,我们都还不完全清楚开始机器学习需要什么样的数学水平,特别是那些没有在学校学习数学或统计学的人。
在这篇文章中,我的目标是提出建立产品或进行机器学习学术研究所需的数学背景。这些建议源于与机器学习工程师、研究人员和教育工作者的对话以及我在机器学习研究和行业角色方面的经验。
首先,我会提出不同的思维模式和策略,以便在传统课堂之外接近真正的数学教育。然后,我将概述不同类型的机器学习工作所需的具体背景,这些学科的范围涉及到高中统计和微积分到概率图形模型(PGM)。
关于数学焦虑的一个解释
事实证明,很多人包括工程师都害怕数学。首先,我想谈谈“善于数学”的神话。
事实是,擅长数学的人有很多练习数学的习惯。并不是他们先天就是擅长数学,你可能在看他们做数学时发现他们得心应手。要清楚,要达到这种舒适状态需要时间和精力,但这肯定不是你生就有的。本文的其余部分将帮助你确定所需的数学基础水平,并概述构建它的策略。
入门
作为先决条件,我们假设你有线性代数/矩阵运算以及概率计算的基本知识点。我还希望你有一些基本的编程能力,这将支持作为在上下文中学习数学的工具。之后,你可以根据你感兴趣的工作类型调整你的主要方向。
如何在校外学习数学?这个问题几乎困扰我们很多人。我相信专心学习数学的最佳方式是在学生的时代。在这种环境之外,你可能不会拥有学术课堂中的氛围、同伴和可用资源。
在校外学习数学,我建议组成学习小组,并学会及时分享各自的资源。相互激励在这里发挥着重要作用,这种“额外”的研究应该受到鼓励和激励,这样在学习上就会很有动力。
数学和代码
数学和代码在机器学习工作流程中是高度交织在一起的。代码通常是由数学模型构建,它甚至共享了数学符号。实际上,现代数据科学框架(例如NumPy)使得将数学运算(例如矩阵/矢量积)转换为可读代码变得直观和有效。
我鼓励你将写代码作为巩固学习的一种方式,数学和代码都是基于理性思考,写代码的过程其实就是理解数学公式的过程。例如,损失函数或优化算法的手动实现可以是真正理解基础概念的好方法。
通过代码学习数学的一个例子:在神经网络中实现ReLU激活的反向传播。作为简要的入门读物,反向传播是一种依赖于微积分链规则来有效计算梯度的技术。
首先,我们可视化ReLU激活,定义如下:
要计算梯度(直观地说,斜率),你可以想象一个分段函数,由指标函数表示如下:
NumPy为我们提供了有用、直观的语法,我们的激活函数(蓝色曲线)可以在代码中解释,其中x是我们的输入,relu是我们的输出:
relu = np.maximum(x, 0)
接下来是渐变(红色曲线),其中grad描述了upstream渐变:
grad[x < 0] = 0
在没有首先自己推导出梯度的情况下,这行代码你可能看的不是很明白。在我们的代码行中,(grad)对于满足条件的所有元素,将upstream梯度中的所有值设置为0 [h
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?