十余年谷歌大佬的见解:成为算法工程师到底需要学些什么?
Posted t198520
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了十余年谷歌大佬的见解:成为算法工程师到底需要学些什么?相关的知识,希望对你有一定的参考价值。
人工智能?
感觉这个词很广泛,我之前想把人工智能当成某一项技术来学,但是并没有找到我满意的答案,还是说人工智能本就不是某一项技术?
首先回答一下人工智能到底学什么
1、学习并掌握一些数学知识
高等数学是基础中的基础,一切理工科都需要这个打底,数据挖掘、人工智能、模式识别此类跟数据打交道的又尤其需要多元微积分运算基础
线性代数很重要,一般来说线性模型是你最先要考虑的模型,加上很可能要处理多维数据,你需要用线性代数来简洁清晰的描述问题,为分析求解奠定基础
概率论、数理统计、随机过程更是少不了,涉及数据的问题,不确定性几乎是不可避免的,引入随机变量顺理成章,相关理论、方法、模型非常丰富。很多机器学习的算法都是建立在概率论和统计学的基础上的,比如贝叶斯分类器、高斯隐马尔可夫链。
再就是优化理论与算法,除非你的问题是像二元一次方程求根那样有现成的公式,否则你将不得不面对各种看起来无解但是要解的问题,优化将是你的GPS为你指路
有以上这些知识打底,就可以开拔了,针对具体应用再补充相关的知识与理论,比如说一些我觉得有帮助的是数值计算、图论、拓扑,更理论一点的还有实/复分析、测度论,偏工程类一点的还有信号处理、数据结构。
2、掌握经典机器学习理论和算法
如果有时间可以为自己建立一个机器学习的知识图谱,并争取掌握每一个经典的机器学习理论和算法,我简单地总结如下:
1) 回归算法: 常见的回归算法包括最小二乘法(OrdinaryLeast
Square),逻辑回归(Logistic Regression),逐步式回归(Stepwise
Regression),多元自适应回归样条(MultivariateAdaptive Regression
Splines)以及本地散点平滑估计(Locally Estimated Scatterplot Smoothing);
2) 基于实例的算法: 常见的算法包括 k-Nearest Neighbor(KNN), 学习矢量量化(Learning Vector Quantization, LVQ),以及自组织映射算法(Self-Organizing Map , SOM);
3) 基于正则化方法: 常见的算法包括:Ridge Regression, Least Absolute Shrinkage and Selection Operator(LASSO),以及弹性网络(Elastic Net);
4) 决策树学习: 常见的算法包括:分类及回归树(ClassificationAnd
Regression Tree, CART), ID3 (Iterative Dichotomiser 3), C4.5,
Chi-squared Automatic Interaction Detection(CHAID), Decision Stump,
随机森林(Random Forest), 多元自适应回归样条(MARS)以及梯度推进机(Gradient Boosting Machine,
GBM);
5) 基于贝叶斯方法: 常见算法包括:朴素贝叶斯算法,平均单依赖估计(AveragedOne-Dependence Estimators, AODE),以及Bayesian Belief Network(BBN);
6) 基于核的算法: 常见的算法包括支持向量机(SupportVector Machine, SVM), 径向基函数(Radial Basis Function ,RBF), 以及线性判别分析(Linear Discriminate Analysis ,LDA)等;
7) 聚类算法: 常见的聚类算法包括 k-Means算法以及期望最大化算法(Expectation Maximization, EM);
8) 基于关联规则学习: 常见算法包括 Apriori算法和Eclat算法等;
9) 人工神经网络: 重要的人工神经网络算法包括:感知器神经网络(PerceptronNeural
Network), 反向传递(Back Propagation), Hopfield网络,自组织映射(Self-OrganizingMap,
SOM)。学习矢量量化(Learning Vector Quantization, LVQ);
10) 深度学习: 常见的深度学习算法包括:受限波尔兹曼机(RestrictedBoltzmann
Machine, RBN), Deep Belief Networks(DBN),卷积网络(Convolutional Network),
堆栈式自动编码器(Stacked Auto-encoders);
11) 降低维度的算法: 常见的算法包括主成份分析(PrincipleComponent
Analysis, PCA),偏最小二乘回归(Partial Least Square Regression,PLS),
Sammon映射,多维尺度(Multi-Dimensional Scaling, MDS), 投影追踪(ProjectionPursuit)等;
12) 集成算法: 常见的算法包括:Boosting,
Bootstrapped Aggregation(Bagging),AdaBoost,堆叠泛化(Stacked
Generalization, Blending),梯度推进机(GradientBoosting Machine,
GBM),随机森林(Random Forest)。
3、掌握一种编程工具,比如Python
一方面Python是脚本语言,简便,拿个记事本就能写,写完拿控制台就能跑;另外,Python非常高效,效率比java、r、matlab高。matlab虽然包也多,但是效率是这四个里面最低的。
4、了解行业最新动态和研究成果, 比如各大牛的经典论文、博客、读书笔记、微博微信等媒体资讯。
5、买一个GPU,找一个开源框架,自己多动手训练深度神经网络,多动手写写代码,多做一些与人工智能相关的项目。
6、选择自己感兴趣或者工作相关的一个领域深入下去
人工智能有很多方向,比如NLP、语音识别、计算机视觉等等,生命有限,必须得选一个方向深入的专研下去,这样才能成为人工智能领域的大牛,有所成就。
再回答第二个问题,人工智能到底是不是一项技术?
根据百度百科给的定义,人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的还能的理论、方法、技术及应用系统的一门新的技术科学。
人工智能是一项技术。希望能帮到你,还整理了针对于想学习人工智能这一板块的学习资料。
人工智能?
感觉这个词很广泛,我之前想把人工智能当成某一项技术来学,但是并没有找到我满意的答案,还是说人工智能本就不是某一项技术?
首先回答一下人工智能到底学什么
1、学习并掌握一些数学知识
高等数学是基础中的基础,一切理工科都需要这个打底,数据挖掘、人工智能、模式识别此类跟数据打交道的又尤其需要多元微积分运算基础
线性代数很重要,一般来说线性模型是你最先要考虑的模型,加上很可能要处理多维数据,你需要用线性代数来简洁清晰的描述问题,为分析求解奠定基础
概率论、数理统计、随机过程更是少不了,涉及数据的问题,不确定性几乎是不可避免的,引入随机变量顺理成章,相关理论、方法、模型非常丰富。很多机器学习的算法都是建立在概率论和统计学的基础上的,比如贝叶斯分类器、高斯隐马尔可夫链。
再就是优化理论与算法,除非你的问题是像二元一次方程求根那样有现成的公式,否则你将不得不面对各种看起来无解但是要解的问题,优化将是你的GPS为你指路
有以上这些知识打底,就可以开拔了,针对具体应用再补充相关的知识与理论,比如说一些我觉得有帮助的是数值计算、图论、拓扑,更理论一点的还有实/复分析、测度论,偏工程类一点的还有信号处理、数据结构。
2、掌握经典机器学习理论和算法
如果有时间可以为自己建立一个机器学习的知识图谱,并争取掌握每一个经典的机器学习理论和算法,我简单地总结如下:
1) 回归算法: 常见的回归算法包括最小二乘法(OrdinaryLeast
Square),逻辑回归(Logistic Regression),逐步式回归(Stepwise
Regression),多元自适应回归样条(MultivariateAdaptive Regression
Splines)以及本地散点平滑估计(Locally Estimated Scatterplot Smoothing);
2) 基于实例的算法: 常见的算法包括 k-Nearest Neighbor(KNN), 学习矢量量化(Learning Vector Quantization, LVQ),以及自组织映射算法(Self-Organizing Map , SOM);
3) 基于正则化方法: 常见的算法包括:Ridge Regression, Least Absolute Shrinkage and Selection Operator(LASSO),以及弹性网络(Elastic Net);
4) 决策树学习: 常见的算法包括:分类及回归树(ClassificationAnd
Regression Tree, CART), ID3 (Iterative Dichotomiser 3), C4.5,
Chi-squared Automatic Interaction Detection(CHAID), Decision Stump,
随机森林(Random Forest), 多元自适应回归样条(MARS)以及梯度推进机(Gradient Boosting Machine,
GBM);
5) 基于贝叶斯方法: 常见算法包括:朴素贝叶斯算法,平均单依赖估计(AveragedOne-Dependence Estimators, AODE),以及Bayesian Belief Network(BBN);
6) 基于核的算法: 常见的算法包括支持向量机(SupportVector Machine, SVM), 径向基函数(Radial Basis Function ,RBF), 以及线性判别分析(Linear Discriminate Analysis ,LDA)等;
7) 聚类算法: 常见的聚类算法包括 k-Means算法以及期望最大化算法(Expectation Maximization, EM);
8) 基于关联规则学习: 常见算法包括 Apriori算法和Eclat算法等;
9) 人工神经网络: 重要的人工神经网络算法包括:感知器神经网络(PerceptronNeural
Network), 反向传递(Back Propagation), Hopfield网络,自组织映射(Self-OrganizingMap,
SOM)。学习矢量量化(Learning Vector Quantization, LVQ);
10) 深度学习: 常见的深度学习算法包括:受限波尔兹曼机(RestrictedBoltzmann
Machine, RBN), Deep Belief Networks(DBN),卷积网络(Convolutional Network),
堆栈式自动编码器(Stacked Auto-encoders);
11) 降低维度的算法: 常见的算法包括主成份分析(PrincipleComponent
Analysis, PCA),偏最小二乘回归(Partial Least Square Regression,PLS),
Sammon映射,多维尺度(Multi-Dimensional Scaling, MDS), 投影追踪(ProjectionPursuit)等;
12) 集成算法: 常见的算法包括:Boosting,
Bootstrapped Aggregation(Bagging),AdaBoost,堆叠泛化(Stacked
Generalization, Blending),梯度推进机(GradientBoosting Machine,
GBM),随机森林(Random Forest)。
3、掌握一种编程工具,比如Python
一方面Python是脚本语言,简便,拿个记事本就能写,写完拿控制台就能跑;另外,Python非常高效,效率比java、r、matlab高。matlab虽然包也多,但是效率是这四个里面最低的。
4、了解行业最新动态和研究成果, 比如各大牛的经典论文、博客、读书笔记、微博微信等媒体资讯。
5、买一个GPU,找一个开源框架,自己多动手训练深度神经网络,多动手写写代码,多做一些与人工智能相关的项目。
6、选择自己感兴趣或者工作相关的一个领域深入下去
人工智能有很多方向,比如NLP、语音识别、计算机视觉等等,生命有限,必须得选一个方向深入的专研下去,这样才能成为人工智能领域的大牛,有所成就。
再回答第二个问题,人工智能到底是不是一项技术?
根据百度百科给的定义,人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的还能的理论、方法、技术及应用系统的一门新的技术科学。
人工智能是一项技术。希望能帮到你,还整理了针对于想学习人工智能这一板块的学习资料。
以上是关于十余年谷歌大佬的见解:成为算法工程师到底需要学些什么?的主要内容,如果未能解决你的问题,请参考以下文章