作为一个普通的程序员,到底应不应该转型AI工程师?

动不动就是50万的毕业生年薪,动不动就是100万起步价的海归AI高级人才,普通员到底应不应该转型AI工程师,普通程序员到底应该如何转型AI工程师?

下面就分享几个特别典型的普通程序员成功转型AI的案例

第一个案例

是只懂 ACM 竞赛相关算法的普通程序员,误打误撞接触到了数据挖掘,之后开始系统地了解机器学习相关的知识,如今已经基本走上了数据科学家之路的经验分享。

第二个案例

是其他行业的普通程序员,具有计算机专业的人所没有的专业知识和行业大数据,他只是想把深度学习和神经网络当作工具,知道它们能做什么,如何去做。这类程序员经过4个月的转型学习,他们的经验和体会。


案例一

我曾经也只是一个只懂 ACM 竞赛相关算法的普通程序员,误打误撞接触到了数据挖掘,之后才开始系统地了解机器学习相关的知识,如今已经基本走上了正轨,开始了走向 Data Scientist 的征途。

首先作为一个普通程序员,C++ / Java / Python 这样的语言技能栈应该是必不可少的,其中 Python 需要重点关注爬虫、数值计算、数据可视化方面的应用,主要是:

如果日常只编写增删改查的代码的话,那可能数学已经忘得差不多了,需要重温线性代数和微积分的基础知识,这会为之后的学习立下汗马功劳。

再然后就是统计学相关基础

相关性分析(相关系数r、皮尔逊相关系数、余弦相似度、互信息)

  • 回归分析(线性回归、L1/L2正则、PCA/LDA降维)

  • 聚类分析(K-Means)

  • 分布(正态分布、t分布、密度函数)

  • 指标(协方差、ROC曲线、AUC、变异系数、F1-Score)

  • 显著性检验(t检验、z检验、卡方检验)

  • A/B测试

如果以上知识都具备了,再往后的路就可以开得很快了,可以一直冲刺到 Deep Learning。但在这之前我们还是需要了解不少机器学习的基础:

  • 关联规则(Apriori、FP-Growth)

  • 回归(Linear Regression、Logistics Regression)

  • 决策树(ID3、C4.5、CART、GBDT、RandomForest)

  • SVM(各种核函数)

  • 推荐(User-CF、Item-CF)

此时的你或许已经有一块可以用的敲门砖了,但离工业界实际应用还有比较大的距离,主要差距就在于 Feature Engineering,这也是我在面试考察有经验的人面前比较注重的点。

这一块中有一些比较基础的知识点,简单罗列如下:

  • 可用性评估:获取难度、覆盖率、准确率

  • 特征清洗:清洗异常样本

  • 采样:数据不均衡、样本权重

  • 单个特征:无量纲化(标准化、归一化)、二值化、离散化、缺失值(均值)、哑编码(一个定性特征扩展为N个定量特征)

  • 数据变换:log、指数、Box-Cox

  • 降维:主成分分析PCA、线性判别分析LDA、SVD分解

  • 特征选择:Filter(相关系数、卡方检验)、Wrapper(AUC、设计评价函数A*、Embedded(L1-Lasso、L2-Ridge、决策树、DL)

  • 衍生变量:组合特征

  • 特征监控:监控重要特征,fa特征质量下降

我放一张公司内部算法培训关于特征工程的 PPT,仅供学习参考:

再往后你就可以在技能树上点几个酷炫的了:

  • 提升

  • Adaboost

  • 加法模型

  • xgboost

  • SVM

  • 软间隔

  • 损失函数

  • 核函数

  • SMO算法

  • libSVM

  • 聚类

  • K-Means

  • 并查集

  • K-Medoids

  • 聚谱类SC

  • EM算法

  • Jensen不等式

  • 混合高斯分布

  • pLSA

  • 主题模型

  • 共轭先验分布

  • 贝叶斯

  • 停止词和高频词

  • TF-IDF

  • 词向量

  • word2vec

  • n-gram

  • HMM

  • 前向/后向算法

  • Baum-Welch

  • Viterbi

  • 中文分词

  • 数据计算平台

  • Spark

  • Caffe

  • Tensorflow

可以看到,不管你是用 TensorFlow 还是用 Caffe 还是用 MXNET 等等一系列平台来做高大上的 Deep Learning,在我看来都是次要的。想要在这个行业长久地活下去,内功的修炼要比外功重要得多,不然会活得很累,也很难获得一个优秀的晋升空间。

最后,关注你所在行业的最新 paper,对最近的算法理论体系发展有一个大致印象,譬如计算广告领域的几大经典问题:

相关 paper 的 gitlist 仅供参考:wnzhang/rtb-papers - https://github.com/wnzhang/rtb-papers

最最后,也要时刻关注能帮你偷懒的工具,它将让你拥有更多的时间去调参: Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱 - Python

温馨提示:想转型的可以加入群:671017482,等着你


案例二

说说我学习深度学习的经历吧

先说编程:自认会用C++, 熟悉Python

英语水平:中等,能很快读懂英文科学文献

最开始对人工智能/深度学习感兴趣是因为想用它试一试自然语言生成,后来想到一个物理方面的题目,预计可以用深度学习技术解决,开始接触深度神经网络。记录一下学习历程,

安装 Tensorflow(google 开源的深度学习程序), 尝试里面最简单的例子MNIST 获得激励。

尝试通过读书(看视频)理解最简单的全连接神经网络

先搜索找到答案:为什么要Go Deep?

  • 神经网络中输入层,隐藏层,输出层之间矩阵乘积的维度变化。

  • Weight, Bias 这些是什么,改变它们有什么结果。

  • 激励函数是什么,有什么作用,有哪些常用的激励函数

  • 误差如何向后传递,网络如何通过最小化误差函数更新,有哪些常用的优化方法

选择一种比较比较底层的神经网络开源库,tensorflow 或 theano

  • 读官方文档 https://www.tensorflow.org/versions/r0.11/tutorials/index.html

  • https://www.tensorflow.org/tutorials/

  • 看周莫凡的网络教程 https://www.youtube.com/user/MorvanZhou

  • https://www.youtube.com/user/MorvanZhou

  • 重复敲代码,重复实现例子程序

开始理解各种不同神经网络架构所能处理的问题

  • CNN 图像识别,图像处理,语音处理

  • RNN,LSTM 自然语言理解与生成

  • 增强学习,玩游戏

尝试各种开源的有意思的神经网络项目,新手可以从下面这个列表开始

  1. Andrej Karpathy blog char-rnn, Deep Reinforcement Learning: Pong from Pixels- http://karpathy.github.io

  2. Neural Style In tensorflow - https://github.com/anishathalye/neural-style

如果能翻墙,注册 twitter, facebook 账号,follow 那些文章中经常出现的大牛的名字。

他们每天提供很多新动向及最新技术,很多时候有很 Fancy的应用。

当你对这些都很熟悉的时候,开始阅读艰深的文献:

  • CNN 的原始文献

  • RNN 和 LSTM 的原始文献

  • Reinforcement Learning 的原始文献

  • Google DeepMind 发表在 Nature 上的几篇经典

最后强调一个最最重要的事情:要有自己的想法,有将这种新技术用到自己项目中的强烈愿望,从开始就要Coding,不断尝试才能不断进步。


你是属于哪类程序员呢?他们的经验你又是否能用上呢?

你是否想要转型?如果你想的话,可以加入我的qq群:671017482,希望可以给你一些帮助和建议。记得点个关注哦

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值