要入行机器学习是不是非学数学不可?要学到什么程度,如何才能提高数学水平?
作者:半数o阿白
https://www.zhihu.com/question/597884858/answer/3002449171
机器学习涉及的数学并不难,应该说相当基本。会求导,会矩阵向量,会计算误差也就完事了。
对应的方面分别是神经网络,反向传播,误差计算。好像有一本小书就介绍了如何编写一个简单的识别手写数字的神经网络。
只不过,如果想要更进一步,追上最新的研究,这点数学自然就不够了,不过基本上还是工具式的数学,比如矩阵,向量求导,卷积公式,激活函数,搭建起来复杂的神经网络结构,搭建起来后,后面就容易了,反正结构会自动更新,更多就关注于工程问题,比如数据集,训练集的质量,某些参数的微调,其实相当的碰运气。就像炼金一般,调一调这个按钮,变一变那个参数,结果就出现了神奇的效果。
根本用不上数学思维,寻求各种奇奇怪怪的自然解释说不定都比数学靠谱,比如群体智能,退火算法。数据集够大,结果就足够精确。虽然曾经看过机器学习的公理化理论,但说穿了,问题依然在于如何分类,实现输入与预想输出的匹配。但是我们都知道神经网络就是一个黑箱,不具有可理解性,说不定藏进去一个人也无法发现(笑)。还要什么数学呢?
所以,学一些基本的函数,向量,矩阵的求导,还有各种距离的计算,掌握一些激活函数,函数复合,当然还有简单的线性代数,会计算矩阵乘法就行了。对于概率形式的机器学习,就需要了解一些概率论的知识,分布,期望,条件期望,方差,以及贝叶斯公式以及贝叶斯网络。对于有限状态概率图,就是马尔科夫链,并不复杂,简单的概率矩阵还有概率向量。对于每一个计算过程都可以引入更加复杂的应用数学手段实现更好的效果,但是那样大概就属于研究的范围了。
这些数学多练习练习就会了,毕竟只是工具,也不需要理解的很深。因为困难之处在于网络,而不在于节点。复杂的问题在于许多节点构成的复杂神经网络的特性,而不是每个节点的形式。
曾经我也有一个想法,将物理系统也视为这样的基本动力学节点与复杂相互作用网络构成的复杂物理系统,这样的手段其实在场论中早已出现,但是问题和机器学习一样,他只具备可计算性,不具备可理解性。对于一个无法完全理解的事物,用起来总会感觉不踏实。只是,对于复杂网络而言,当前的计算能力远远不够,因为理解,就意味着完全描述与分类,而多节点有向带权无环图的所有可能构型是绝对的天文数字。或许比可观测宇宙中的所有粒子数都要多,所以,这个任务可能是永远都无法完成的。即使他孕育出了智能,也不太可能,就像询问一个人你的大脑是怎么工作的,想必只会得到一个疑惑的眼神。
作者:张雨辰
https://www.zhihu.com/question/597884858/answer/3005911730
把大一的微积分、线性代数、概率论这三门课学扎实了,足矣。但遗憾的是,根据我的经验,能达到这个标准的人不多。不信的话,看你能不能在面试的时候答出这两个简单的问题:
1. 对可逆的方阵,证明它的左逆矩阵等于右逆矩阵。
2. 假设有一个二分类问题,真实标签属于{True, False},且可能性各占一半。现有3个标注员独立进行了标注,标签分别是L1,L2,L3。已知这3人的标注正确率分别是p1,p2,p3。怎样计算真实标签为True的概率?
作者:Hunto
https://www.zhihu.com/question/597884858/answer/3006904202
作为发(水)过挺多篇CV/ML顶会的数学菜鸡来回答一下~
从研究/发论文上看,很多AI方向其实并不需要太多数学基础,大多数人做的工作都是改改模型之类的。我在研究中一般就是求求导,本科微积分的知识就够用了。
当然也有很多方向是需要推公式的。
在研究这块可以各取所长,推不出复杂的公式也一样可以发论文。
但并不代表你可以不重视数学。数学在AI里是一个工具,当你发现你的论文中需要依靠数学证明的时候,花时间好好推一下还是必要的。
所以我的建议是,你可以先入门机器学习,在需要数学的时候再补足对应的能力。
作者:未雨绸缪
https://www.zhihu.com/question/597884858/answer/3005975503
大量事实表明,很多人都对数学有着天生的恐惧,这其中也包括着广大程序员。
可随着机器学习的兴起,人工智能时代的到来,数学显得尤其重要……
如果想成为一名人工智能人才,那便不得不要拿出很大一部分时间投入到数学的学习中。但是入门机器学习需要哪种程度的数学水平?
首先,我可以很负责任地说,机器学习需要学习数学。那些告诉你机器学习可以不需要学数学而且点击就送的教程,不好说都是骗人的,至少可以肯定无法让你真正读懂机器学习的灵魂。
同时,我可以很负责任地说,学机器学习不需要需很多数学。学机器学习,目的很重要,机器学习如果是一座金字塔,它的塔基就是数学,如果你要为金字塔添砖加瓦,譬如提出新的算法,或者改进现有算法,那你肯定得对数学十分了解。
不过,如果更想要的是了解金字塔结构,以及怎么解决你手头上让你睡得不香的问题,那你只需要了解数学这门“语言”。是的,平时我们描述一件事,会用汉语,或者用英语,而在机器学习这里,描述一件事用的是“数学语”,你要做的只是听懂它,或者找一个人来把它翻译成你能听懂的话。
那机器学习的数学基础怎么学呢?经常有人问的一个问题是,要不要先学完数学再来学机器学习。这种想法的出发点我很赞赏,夯实基础才好筑高塔,不过,数学毕竟家大业大,子领域非常多,就算是职业数学家也只能了解自己领域的数学知识,而且,像机器学习这种大家一起开脑洞构建起来的学科,自然会横跨多个数学领域,如果真的要都学完然后才开始,恐怕就没有然后了。
好在数学知识如果是大海汪洋,那机器学习用到的数学知识那只是弱水一瓢,我推荐按需学习法,大概了解机器学习都要用到哪些数学知识,有个整体印象,然后再根据需要深入学习。
知道了机器学习该怎么学,那又该学什么呢?大概分为三大块,概率统计、线性代数和优化方法。概率统计是机器学习的灵魂,机器学习的很多模型方法,追根溯源都是从统计学中发展而来,可谓是思想的源泉,其中频繁用到贝叶斯公式的相关概念,可以重点学习。
线性代数是机器学习的骨架,具体涉及到运算的,都离不开线性代数的知识。不过,线性代数是数学中很重要的一条学科分支,内容还是非常多,怎么办呢?那就重点学习矩阵运算相关的内容,线性代数在机器学习方面发挥作用的,主要就是矩阵运算。
以上两块都是数学大类下的具体子类,机器学习还有一块需要数学基础的内容,通常称为优化方法,这个领域属于机器学习私人定制的数学子领域,重点是研究一类数学问题,凸优化问题。
凸优化名字听起挺吓人,让人觉得是好像是什么高深的研究放弃,其实要做的事非常简单,就是花样求极值,最终目的是实现max函数和min函数类似的效果。既然是花样求极值,花样自然挺不少,内容足够写一本满是公式很厚的书,不过,重点是梯度下降,搞懂什么是梯度,为什么下降就能达到求极值的效果,大的方向也就了然于胸了。
声明:部分内容来源于网络,仅供读者学习、交流之目的。文章版权归原作者所有。如有不妥,请联系删除。