算法工程师学习之路



之前是通信行业工程师,作为流水线上的一颗螺丝钉N年,只是耕耘在自己熟悉的领域,视野比较窄。 兴趣是最好的老师,兴趣引我转向了这个行业。
最开始 我对数据分析比较感兴趣, 后来是数据挖掘,再是机器学习,深度学习..  自然走在这条路上。本人资质也只是勉强够用,学习过程中也有觉得很难想放弃过,还好克服了走过了。分享学习道路如下吧 :)
前些年读了一些关于大数据的文章,有初步的了解。后来在平时相关的运营支撑工作中接触了一个大数据的产品,学习了大数据分析挖掘的流程及初步了解一些算法知识。后来车品觉老师来(前)我司分享,参加后很是受用。
如果没有类似条件也没关系,开始时为了培养对大数据这个行业的兴趣,推荐阅读车品觉老师的"决战大数据",书中数据运营运维的思想让我转到一个新世界。 "大数据时代"中译者周涛老师的序言比原文作者带给我的共鸣冲击更大。 从数据分析到数据挖掘,谭磊老师"大数据挖掘" 也让我冲出了那一步,知道数据挖掘也没我想象中那么难 :)
一路上的第一个目标 转行成为数据分析师要做的:
https://www.zhihu.com/question/29265587/answer/44010658
我曾经去捯饬那些excel函数,VBA, 补看数据库教程,看powerBI、数据可视化等教程。那些日子虽然也只是今年上半年的事但觉得已远去但觉得没白过。。 


正传了:
一:最最基础要预备的:
1) python      
最开始本人看的菜鸟教程, 推荐 廖雪峰老师的python教程。
2) 数学知识     高数/线代/概率和统计     
    虽然数据挖掘/机器学习是统计学的范畴 现在感觉前两门相对更重要..
   
关于高数:
    其实我也是看到公式就怕的人,直到现在。。palmface 对推导过程不太明白,但现在原理还是能理解一些。以前读书时数学也很一般,现在几乎是从头学起,嗯,对,从三角函数以及排列组合看起。。
    推荐"遇见数学"公众号, 里面有高数的专集。 里面的图解数学相当不错。底下很多人留言要是当年学习时有这样的指导就好了.. 本人看了台湾单维彰老师的视频专辑:大学微积分入门合集。看完后过了两周再又再看了一遍。 而当我花大概四五天看完一本纸质高数书时(图书馆任借一本高数教材即可,无推荐的好书),虽然当时也记了几十条看不懂的问题,但还是会回想,为啥大学要花一学期或是一学年来学高数呢...好像看一周应该能考 50/60分, 两周能考70分,一月能考8,90分吧,猜的..:)  链式求导,求偏导很重要,搞不懂的不能轻易放过。
关于线代:
    我是从 知乎live课程: 线性代数入门:从方程到映射 开始的。我没加群拿到最新的胶片,live里的胶片有几处小错误让我很费解,不过整体还是不错的。 有很多是在知乎上找到答案的。除了"遇见数学"公众号,matongxue314 马同学看图学数学 应该也很不错   
关于概率和统计:
    SSE, MSE, RMSE SSR SST 这些,卡方分布,T分布,F分布,各种检验等。置信区间含义等。
可以听听知乎大神SimonS的课程 机器学习入门需要哪些数学基础  https://www.zhihu.com/lives/818124675715600384


这里我还想分享一些锁碎的名词或概念,可以去单独去搜一搜。能搜到不同的文章,这样一篇没看明白时,可能再看看另一种讲解的风格就懂了,或者明白了后再多看另一种观点,又有不同的收获。  而且这些名词懂了以后,其他文章也好看一些,不明白的话有可能卡住。 我经常得在读文章时,跳出来去搜这些概念。

全概率公式和贝叶斯公式 正态分布 高斯分布 二项分布 beta分布 共轭分布  Dirichlet分布  可以顺便了解Gamma分布,泊松分布  共轭分布 Dirichlet分布等在NLP中有使用,beta分布看到知乎这条解释(答主小杰)就比较容易理解了:https://www.zhihu.com/question/30269898
频率派与贝叶斯派各自不同的思考方式:
什么是无偏估计 有偏估计
ROC曲线,lift曲线 分别适合于什么场景等,搞清TPR,TFR,召回率和准确率等指标的含义。F1分数。
什么是凸函数(单峰), 什么是对偶问题?  拉格朗日对偶问题  kkt条件
机器学习常见的损失函数有哪几种。 对于0-1损失  平方损失  绝对值损失来度量损失是好理解的,而对数为什么能度量这个损失,要绕个弯从其他角度想想,我也绕了好一圈才习惯。
什么是熵,什么是信息熵,基尼指数,基尼不纯度。(注意基尼指数常用来收入平衡状态,理想情况是要比较大即比较均匀。而数据挖掘机器学习里的基尼不纯度是要越小越好,两者是从不同的角度看问题!我刚开始搜索基尼时是糊涂的..)
什么是归一化(normalization),标准化(standardization)?
白化,这个在看完刘建平老师的PCA后,可继续了解。因为PCA后的目的可能就是要做白化,为数据进一步处理做准备。
什么是范数  有助于处理。。情况?  什么是condition number
搞清楚矩阵乘法是怎么乘的。
矩阵的行列式,意义 (顺便了解下迹:行列式是特征值的乘积,迹是特征值的加和)
特征值和特征向量  先从公式和计算上入手 A* V = λ * V   (A矩阵* V向量 =  λ常数 * V向量)  再了解在数据挖掘 机器学习中特征值和特征向量的意义,这个一搜就一大把了。
关注数据挖掘的话还需要多去了解特征工程。
矩阵对角化的意义。相似矩阵的意义。 矩阵左乘,变换基。逆矩阵。 这几个话题知乎上有很多很好的解答,令人茅塞顿开。
什么是协方差,相关系数。协方差矩阵 格拉姆矩阵 的意义?
雅可比矩阵 海森矩阵  牛顿法迭代求解
各种距离 余弦相似度
张量的含义和性质?
什么是超参数
了解什么是P问题:NP问题:NP-Hard:NP-Complete
了解广义线性模型(GLM)。这种模型是把自变量的线性预测函数当作因变量的估计值,
什么hadoop, map reduce方法,spark,hive,hbase,这些,以及大数据分析挖掘流程 也需要了解

二:数据挖掘基本的常用算法  
   强烈推荐刘建平pinad老师的blog。http://www.cnblogs.com/pinard/   我从第一篇文章看起的。从感知机开始一直讲到DNN,CNN。(当然到最后的CNN,还有很多很好的文章需要看,仅看刘老师这一篇是不够的。) 隐马模型看完后,我心里觉得对算法工程师这个职位要做的事和方法 有个大概的谱了。 感谢刘老师的无私分享!
   在学习正则化,范数,EM算法时,包括后面的图像卷积时卷积核的含义和效果时 zouxy老师的blog也让我受益匪浅:http://blog.csdn.net/zouxy09/article/details/24971995
   在学习各种组合方法时,要了解bagging/boosting各适用于什么场景,谁的基模型为强模型及目标是降什么,谁的基模型为弱模型及目标是降什么。
   看刘老师的KNN算法时,仍是不能很好的理解。 关于KNN,这个很不错: https://zhuanlan.zhihu.com/p/22345658?refer=hgjjsms
   这些算法在学习时就边看边动手,后面可以去参加一下天池的新人离线赛,实际操作感受一下数据清洗/处理过程,寻找特征工程等数据挖掘的过程,熟悉dataframe的各种操作,熟悉sklearn等这些库的使用。

三: 真正到机器学习、深度学习,图像领域了
    有很多tensorflow的介绍入门文章。动手尝试。
    另外 opencv也可以了解 https://docs.opencv.org/3.3.0/index.html
    我看过几集莫烦的深度学习视频。其实还有很多视频推荐,还有很多英文的,我觉得看视频比较费时间,打算后面再多看一点。
    对于图像:先了解什么是通道数。
    了解batch_size epoch_size等
    理解BN
    理解triplet loss,centor loss
    理解embedding (知乎上word embedding和解答更多) 
    了解DeepID DeepID2  人脸识别/人脸比对的区别
    再去多搜搜CNN的卷积,多一点卷积意义上理解,而不是只了解到 卷积计算过程的GIF动图。
    多通道的多个卷积核过程。卷积核有通道的概念吗? 还是只是二维的? 使用1*1的卷积核为什么能达到降维的效果?
    卷积与全连接相比,是如何减小参数个数的?
    需要理解 卷积神经网络各层的参数和连接个数是多少?   http://blog.csdn.net/dcxhun3/article/details/46878999
    Feature Map/输出通道/神经元/感受野/padding等概念
    全连接层的意义?
    http://blog.csdn.net/zouxy09/article/details/49080029
    这篇文章里提到了 时域上的卷积等于频域上的乘积,这样就需要了解傅里叶变换了。知乎上有很受欢迎的"掐死我"文章,我也是它的受益者。
    另外我看有一些文章里提到了人脸识别的haar特征,haar小波变换我也顺便看了一下,但暂时好像还没用上
    高斯卷积 高斯模糊。 模糊是怎么来的? 把清楚的照片(像素之间大差距) 缩小差距,使得数字从整体看更平均,照片就模糊了。
    了解一下卷积网络架构的发展历史
    Inception v1 v2  v3  v4 模型
    NIN  (Network in Network)
    resnet网络
    有很多很好的文章,这里推荐几个:  比如上面的inception模型和残差网络,下面这篇文章就比较容易理解。
    https://zhuanlan.zhihu.com/p/27642620
    https://zhuanlan.zhihu.com/p/27857399
    我之前只知道调参时可以增加CNN层数和每层的神经元个数来,也看过很多的文章关于cnn的结构。但增加层数和神经元数意味着什么? 这篇文章让我通了很多。
    http://www.eepw.com.cn/article/201706/360625.htm
    这里有图像的知乎live,后面这个串讲了神经网络
    计算机视觉从入门到放肆  https://www.zhihu.com/lives/848170558016356352
    深度学习中的常见名词术语(图像方向) https://www.zhihu.com/lives/904295186979508224
  
    可以学习下SIFT算法,虽然现在不如CNN
    mtcnn:
    人脸识别的论文: 
      FaceNet: A Unified Embedding for Face Recognition and Clustering
    Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks
    Deep Residual Learning for Image Recognition
    Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning
    Densely Connected Convolutional Networks

上面总结的东西难免有错误和遗漏,也有不太重要的,欢迎各位告知我修改补充,权当各位学习路上的小小的参考。
上面列的东西,我也没有全部掌握,后面的论文也没看多少。书单还有一大串。。(最基本的有统计学习方法  西瓜书等等...)
路还挺长。曾有个朋友说:学习使我快乐。 我觉得他说出了我心里的话。 如果没有这种快乐满足的感觉,挺难坚持的; 有的话,好像都不用用坚持这样的字眼。
看到知乎上说 阿里后来面试都不太在乎在天池赛中取得的好名次了,想想熟悉了那些套路,解这些赛题应该也比较简单。我刚转行,很想在新领域中再成为这样的骨干,但这需要时间精力还要点机遇。  一年来潜水看了好多大侠的精彩分享,我也来分享点浅薄的东西吧。

猜你喜欢

转载自blog.csdn.net/anthea_luo/article/details/78767894