当前位置:主页 > 学新知识 > 算法工程师需要哪些基本知识

算法工程师需要哪些基本知识

时间:2024-06-28 04:05:52 作者:
摘要:专注学子高考志愿填报,分享你所不知道信息。1、数学知识a.微积分很多人觉得这部分知识在大学毕业后,甚至刚考完试后就应该还..._新浪网

专注学子高考志愿填报,分享你所不知道信息。

1、数学知识

算法工程师需要哪些基本知识

a.微积分

很多人觉得这部分知识在大学毕业后,甚至刚考完试后就应该还给老师了,因为在多年的工作中,这部分知识确实涉及的很少。但随着机器学习领域知识的快速发展,梯度计算,反向传播等方面都涉及了大量的微积分的知识,如果不了解,可能就很难了解这些算法或者方程背后的含义。

但是微积分的知识众多,哪些知识才是算法工程师所需要的,或者说学到什么样程度才是可以的呢?一般情况下,积分、偏微分、泰勒公式、链式法则等基础知识,在一般情况下可以帮助你理解大部分问题,即使遇见更复杂的问题时,有了这些知识作为基础,更深入的学习也会变得更加容易。

b.概率和数理统计

概率和数理统计的使用在实际工作中使用频度非常高。这方面的知识也需要算法工程师重点学习,一些基本的方程,均值,高斯分布,二项分布的知识是必须的。同时对条件概率(贝叶斯的前提),联合分布,独立分布等知识也需要有一个全面的了解。相对微积分来说,概率的学习成本低一些,可以在短时间内对这些知识加以了解,但是深入理解这些概率在实际中的应用需要开发人员在实践中摸索并总结经验。

c.线性代数

线性代数在实际的使用中多是以向量和矩阵为代表。这部分在实际的使用时,需要掌握每一次运算的行列数量,保证每一行的计算符合矩阵运算的基本性质,如行列式的对其等。同时,矩阵的基本性质,转置,逆,秩等基本性质要能理解。还有对矩阵的特征值分解,奇异值分解等知识的理解对理解PCA等降维信息提供了数学基础。

以上内容表明了算法的内在根基是建立在数学基础之上,诚然,现在的框架发展速度很快,利用高级API在不了解数学基础的情况下,一样可以完成一些机器学习的工作。但是这样的方式对深入理解算法的实现原理和一些超参数的调优等工作的理解是没有帮助的。同时,建立对问题和数据的更深入理解也都需要一定的数学基础。建议如果有时间的话,回顾和温习一下这些数学基础对算法工作是大有益处的。

2、机器学习

机器学习作为算法工作的基础,是需要算法工作人员深入理解的基本知识。诚然,机器学习涉及到的算法很多,但是整理对任务的理解需要如下几方面的知识。

a.数据预处理

数据是机器学习算法的源泉,但现实工作中的数据多是杂乱和不规整的。因此对数据的预处理变得非常重要,通常包含:数据处理,数值转化,数据规范化等工作。

b.特征选择

特征选择很大程度上依靠算法人员的经验和对行业的了解,确定数据中表现良好的特征,还有与预测结果具有高相关性的特征。还有这部分中涉及到的相关性分析,方差筛选等相关知识也需要掌握。

c.算法选择

首先,可以根据任务的类别将机器学习算法分为,分类,回归,推荐,聚类,降维等不同的具体任务范围,在每个范围内有时候很难确定具体使用那个算法效果最优,这和数据的特性有很大的关系。在每个范围内尽量多掌握每个算法的特点,在选择算法时的决策就更加清晰。

d.参数调优

超参数的调优很大程度上需要对选定的算法有着深入的理解。理解不同参数对在算法工作时产生了影响是什么;掌握不同算法,超参数的调优集合一般是多少(例如某一个超参数,一般设置值都是多少,或者范围是多少)。同时,还需要构建算法参数快速调试的平台,针对返回结果,能快速针对不同的超参数进行测试。在这方面,网格搜索的方法可以起到不错的效果。

3、深度学习

深度学习作为机器学习的分支,最近几年呈现井喷式的发展。这其中既包含了传统机器学习的相关知识,也包含深度学习特有的一些新视角,如下简单聊聊深度学习的基本知识都有那些。

a.神经网络

神经网络是构建深度学习的基础,需要软件开发人员首先了解神经网络的基本概念,输入层,隐藏层,激活函数等相关概念。Sigmod,tahn等函数的意义。能推演出简单的(隐藏层数不多)神经网络结构。

b.CNN和 RNN

掌握CNN和RNN(包括LSTM)这两种主流的深度学习框架,以及适用的场景。掌握卷积尺寸的对其(图像处理方向),激活函数,池化层,全连接层,dropout等相关技术。掌握LSTM的基本思想,能构建出多层的LSTM网络。

c.反向传播和优化

掌握反向传播的基本思想和实现原理,理解梯度衰减和梯度爆炸产生的原因。对设计出的神经网络的每一层和每一个操作有着清晰的认识。能对深度学习网络进行优化,掌握常见的Adam和正则化的基本操作。

本篇文章我们主要针对算法工程师应当具备的数学、机器学习和和深度学习方面的基础知识进行了简单的汇总。这些知识和工作都是算法工程师每天工作中会频繁接触到的。下篇将从编程能力、技术框架、行业理解以及沟通能力上更加全面的探讨算法工程师的成长之路。

相关阅读

发表评论

登录后才能评论

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件举报,一经查实,本站将立刻删除。