[IT技术] 如何系统学习机器学习?

[复制链接]
gibbet/猫 发表于 2023-10-4 20:03:20|来自:中国 | 显示全部楼层 |阅读模式
楼主研一,想要系统学习机器学习,无奈身边的人都不是很懂这个,跑到知乎求问,如何系统学习呢?西瓜书,机器学习实战和python机器学习算法在看,感觉还是有一定的难度的,吴恩达的视频也准备开始刷了
全部回复5 显示全部楼层
robyluo 发表于 2023-10-4 20:04:16|来自:中国 | 显示全部楼层

这个话题下,大佬们亲自回答,我这个小镇做题家也来凑个热闹。自荐一套“鸢尾花书”,从加减乘除到机器学习。
大佬们的作品对零基础的同学们起点太高,而这套鸢尾花图册致力于将陡峭的学习曲线拉直!
鸢尾花图册,全彩图解 + Python编程 + 数学基础 + 微课视频 + Streamlit App。PDF草稿、Python代码全部开源,下载地址:
https://github.com/Visualize-ML入门机器学习,需要如下几个板块的技能:编程,可视化,数学,数据,机器学习算法。鸢尾花书7本就试图提升这些技能。
Book 1《编程不难》,零基础学Python
Book 2《可视之美》,提供各种可视化方案,静态、交互
Book 3《数学要素》,从加减乘除讲数学
Book 4《矩阵力量》,线性代数在机器学习应用
Book 5《统计至简》,强调多元统计、贝叶斯推断
Book 6《数据有道》,数据处理、回归、降维
Book 7《机器学习》,分类、聚类








《数学要素》粉丝五折入口:
生姜DrGinger:鸢尾花书《数学要素》粉丝五折入口终于来啦看个人情况,开源资源,永久有效哈。







































































































































































































































































































































































































































winpe 发表于 2023-10-4 20:04:33|来自:中国 | 显示全部楼层
来分享下鹅厂微信同学boxianlai总结的机器学习知识体系内容。
高中的时候,班主任让我们每学完一个章节,整理出这个章节的关键词和一份问题列表。现在会想起来,其实是很有用的,这让我们可以从另外一个视角来审视所学习的内容,而不是单纯的填鸭式的记忆;最近在复习机器学习相关内容,也从问题的视角来回顾机器学习知识体系,对于机器学习方向同学可以作为考察,看看里面的内容是否都能回答上来;而对于想学习机器学习的同学来说,应该可以作为一个方向,把这些内容一个个解决了,在各大厂算法岗面试中应该可以横着走了。
一、机器学习相关

1、 基本概念


  • 简述解决一个机器学习问题时,你的流程是怎样的?
  • 损失函数是什么,如何定义合理的损失函数?
回归模型和分类模型常用损失函数有哪些?各有什么优缺点

  • 什么是结构误差和经验误差?训练模型的时候如何判断已经达到最优?
  • 模型的“泛化”能力是指?如何提升模型泛化能力?
  • 如何选择合适的模型评估指标?AUC、精准度、召回率、F1值都是什么?如何计算?有什么优缺点?
  • 什么是混淆矩阵?
  • ROC曲线如何绘制?相比P-R曲线有什么特点?
  • 如何评判模型是过拟合还是欠拟合?遇到过拟合或欠拟合时,你是如何解决?
  • 你是如何针对应用场景选择合适的模型?
  • 如何选择模型中的超参数?有什么方法,并说说其优劣点
  • 误差分析是什么?你是如何进行误差分析?
  • 你是如何理解模型的偏差和方差?什么样的情况是高偏差,什么情况是高方差?
  • 出现高偏差或者高方差的时候你有什么优化策略?
  • 奥卡姆剃刀定律是什么?对机器学习模型优化有何启发?举例说明
2、 经典机器学习

Ø 特征工程

  • 你是怎样理解“特征”?
  • 给定场景和问题,你如何设计特征?(特征工程方法论)
  • 开发特征时候做如何做数据探索,怎样选择有用的特征?
  • 你是如何做数据清洗的?举例说明
  • 如何发现数据中的异常值,你是如何处理?
  • 缺失值如何处理?
  • 对于数值类型数据,你会怎样处理?为什么要做归一化?归一化有哪些方法?离散化有哪些方法,离散化和归一化有哪些优缺点?
  • 标准化和归一化异同?
  • 你是如何处理CTR类特征?
  • 讲解贝叶斯平滑原理?以及如何训练得到平滑参数
  • 类别型数据你是如何处理的?比如游戏品类,地域,设备
  • 序号编码、one-hot编码、二进制编码都是什么?适合怎样的类别型数据?
  • 时间类型数据你的处理方法是什么?原因?
  • 你怎样理解组合特征?举个例子,并说明它和单特征有啥区别
  • 如何处理高维组合特征?比如用户ID和内容ID?
  • 如何理解笛卡尔积、外积、内积?
  • 文本数据你会如何处理?
  • 文本特征表示有哪些模型?他们的优缺点都是什么?
  • 讲解TF-IDF原理,它有什么优点和缺点?针对它的缺点,你有什么优化思路?
  • N-gram算法是什么?有什么优缺点?
  • 讲解一下word2vec工作原理?损失函数是什么?
  • 讲解一下LDA模型原理和训练过程?
  • Word2vec和LDA两个模型有什么区别和联系?
  • Skin-gram和cbow有何异同?
  • 图像数据如何处理?有哪些常用的图像特征提取方法
  • 你是怎样做特征选择的?卡方检验、信息值(IV)、VOE都是如何计算?
  • 计算特征之间的相关性方法有哪些?有什么优缺点
Ø 基础算法原理和推倒
Knn

  • Knn建模流程是怎样的?
  • Knn优缺点是什么?
  • Knn适合什么样的场景和数据类型?
  • 常用的距离衡量公式都有哪些?具体说明它们的计算流程,以及使用场景?
  • 超参数K值过大或者过小对结果有什么影响,你是如何选择K值?
  • 介绍一下Kd树?如何建树,以及如何搜索最近节点?
支持向量机

  • 简单讲解SVM模型原理?
  • SVM为什么会对缺失值敏感?实际应用时候你是如何处理?
  • SVM为什么可以分类非线性问题?
  • 常用的核函数有哪些?你是如何选择不同的核函数的?
  • RBF核函数一定线性可分么?为什么
  • SVM属于线性模型还是非线性模型?为什么?
  • 训练误差为0的SVM分类器一定存在吗?说明原因?
朴素贝叶斯模型

  • 讲解贝叶斯定理?
  • 什么是条件概率、边缘概率、联合概率?
  • 后验概率最大化的含义是什么?
  • 朴素贝叶斯模型如何学习的?训练过程是怎样?
  • 你如何理解生成模型和判别模型?
  • 朴素贝叶斯模型“朴素”体现在哪里?存在什么问题?有哪些优化方向?
  • 什么是贝叶斯网络?它能解决什么问题?
  • 为什么说朴素贝叶斯也是线性模型而不是非线性模型呢?
线性回归

  • 线性回归的基本思想是?
  • 什么是“广义线性模型”?
  • 线性回归常用的损失函数有哪些?优化算法有哪些?
  • 线性回归适用什么类型的问题?有哪些优缺点?
  • 请用最小二乘法推倒参数更新公式?
逻辑回归

  • 逻辑回归相比于线性回归有什么异同?
  • 逻辑回归和广义线性模型有何关系?
  • 逻辑回归如何处理多标签分类?
  • 为什么逻辑回归需要进行归一化或者取对数?
  • 为什么逻辑回归把特征离散化之后效果会提升?
  • 类别不平衡问题你是如何处理的?什么是过采样,什么是欠采样?举例
  • 讲解L1和L2正则,它们都有什么作用,解释为什么L1比L2更容易产生稀疏解;对于存在线性相关的一组特征,L1正则如何选择特征?
  • 使用交叉熵作为损失函数,梯度下降作为优化方法,推倒参数更新公式
  • 代码写出训练函数
FM模型

  • FM模型与逻辑回归相比有什么优缺点?
  • 为什么FM模型计算复杂度时O(kn)?
  • 介绍FFM场感知分解机器(Field-aware Factorization Machine),说说与FM异同?
  • 使用FM进行模型训练时候,有哪些核心参数对模型效果影响大?
  • 如何从神经网络的视角看待FM模型?
决策树

  • 讲解完成的决策树的建树过程
  • 你是如何理解熵?从数学原理上解释熵公式可以作为信息不确定性的度量?
  • 联合熵、条件熵、KL散度、信息增益、信息增益比、gini系数都是什么?如何计算?
  • 常用的决策树有哪些?ID3、C4.5、CART有啥异同?
  • 决策树如何防止过拟合?前剪枝和后剪枝过程是怎样的?剪枝条件都是什么
随机森林(RF)

  • 介绍RF原理和思想
  • RF是如何处理缺失值?
  • RF如何衡量特征重要度?
  • RF“随机”主要体现在哪里?
  • RF有哪些优点和局限性?
  • 为什么多个弱分类器组合效果会比单个要好?如何组合弱分类器可以获得更好的结果?原因是什么?
  • Bagging的思想是什么?它是降低偏差还是方差,为什么?
  • 可否将RF的基分类模型由决策树改成线性模型或者knn?为什么?
GBDT

  • 梯度提升和梯度下降有什么区别和联系?
  • 你是如何理解Boosting和Bagging?他们有什么异同?
  • 讲解GBDT的训练过程?
  • 你觉得GBDT训练过程中哪些环节可以平行提升训练效率?
  • GBDT的优点和局限性有哪些?
  • GBDT是否对异常值敏感,为什么?
  • 如何防止GBDT过拟合?
  • 在训练过程中哪些参数对模型效果影响比较大?这些参数造成影响是什么?
k-means

  • 简述kmeans建模过程?
  • Kmeans损失函数是如何定义?
  • 你是如何选择初始类族的中心点?
  • 如何提升kmeans效率?
  • 常用的距离衡量方法有哪些?他们都适用什么类型问题?
  • Kmeans对异常值是否敏感?为什么?
  • 如何评估聚类效果?
  • 超参数类的个数k如何选取?
  • Kmeans有哪些优缺点?是否有了解过改进的模型,举例说明?
  • 试试证明kmeans算法的收敛性
  • 除了kmeans聚类算法之外,你还了解哪些聚类算法?简要说明原理
PCA降维

  • 为什么要对数据进行降维?它能解决什么问题?
  • 你是如何理解维度灾难?
  • PCA主成分分析思想是什么?
  • 如何定义主成分?
  • 如何设计目标函数使得降维达到提取主成分的目的?
  • PCA有哪些局限性?如何优化
  • 线性判别分析和主成分分析在原理上有何异同?在目标函数上有何区别和联系?
3、 深度学习

Ø DNN

  • 描述一下神经网络?推倒反向传播公式?
  • 讲解一下dropout原理?
  • 梯度消失和梯度膨胀的原因是什么?有什么方法可以缓解?
  • 什么时候该用浅层神经网络,什么时候该选择深层网络
  • Sigmoid、Relu、Tanh激活函数都有哪些优缺点?
  • 写出常用激活函数的导数
  • 训练模型的时候,是否可以把网络参数全部初始化为0?为什么
  • Batchsize大小会如何影响收敛速度?
Ø CNN

  • 简述CNN的工作原理?
  • 卷积核是什么?选择大卷积核和小卷积核有什么影响?
  • 你在实际应用中如何设计卷积核?
  • 为什么CNN具有平移不变性?
  • Pooling操作是什么?有几种?作用是什么?
  • 为什么CNN需要pooling操作?
  • 什么是batchnormalization?它的原理是什么?在CNN中如何使用?
  • 卷积操作的本质特性包括稀疏交互和参数共享,具体解释这两种特性以其作用?
  • 你是如何理解fine-tune?有什么技巧
Ø RNN

  • 简述RNN模型原理,说说RNN适合解决什么类型问题?为什么
  • RNN和DNN有何异同?
  • RNN为什么有记忆功能?
  • 长短期记忆网络LSTM是如何实现长短期记忆功能的?
  • 长短期记忆网络LSTM各模块都使用什么激活函数,可以使用其他激活函数么?
  • GRU和LSTM有何异同
  • 什么是Seq2Seq模型?该模型能解决什么类型问题?
  • 注意力机制是什么?Seq2Seq模型引入注意力机制主要解决什么问题?
4、 基础工具
Ø Spark

  • 什么是宽依赖,什么是窄依赖?哪些算子是宽依赖,哪些是窄依赖?
  • Transformation和action算子有什么区别?举例说明
  • 讲解sparkshuffle原理和特性?shuffle write 和 shuffleread过程做些什么?
  • Shuffle数据块有多少种不同的存储方式?分别是什么
  • 哪些spark算子会有shuffle?
  • 讲解sparkschedule(任务调度)?
  • Sparkstage是如何划分的?
  • Sparkcache一定能提升计算性能么?说明原因?
  • Cache和persist有什么区别和联系?
  • RDD是弹性数据集,“弹性”体现在哪里呢?你觉得RDD有哪些缺陷?
  • RDD有多少种持久化方式?memory_only如果内存存储不了,会怎么操作?
  • RDD分区和数据块有啥联系?
  • 当GC时间占比很大可能的原因有哪些?对应的优化方法是?
  • Spark中repartition和coalesce异同?coalesce什么时候效果更高,为什么
  • Groupbykey和reducebykey哪个性能更高,为什么?
  • 你是如何理解caseclass的?
  • Scala里trait有什么功能,与class有何异同?什么时候用trait什么时候该用class
  • Scala 语法中to 和 until有啥区别
  • 讲解Scala伴生对象和伴生类
Ø Xgboost

  • 你选择使用xgboost的原因是什么?
  • Xgboost和GBDT有什么异同?
  • 为什么xgboost训练会那么快,主要优化点事什么?
  • Xgboost是如何处理缺失值的?
  • Xgboost和lightGBM有哪些异同?
  • Xgboost为什么要使用泰勒展开式,解决什么问题?
  • Xgboost是如何寻找最优特征的?
Ø Tensorflow

  • 使用tensorflow实现逻辑回归,并介绍其计算图
  • sparse_softmax_cross_entropy_with_logits和softmax_cross_entropy_with_logits有何异同?
  • 使用tensorflow过程中,常见调试哪些参数?举例说明
  • Tensorflow梯度更新是同步还是异步,有什么好处?
  • 讲解一下TFRecords
  • tensorflow如何使用如何实现超大文件训练?
  • 如何读取或者加载图片数据?
5、 业务工程实现(推荐系统为例)

  • 你是如何选择正负样本?如何处理样本不均衡的情况?
  • 如何设计推荐场景的特征体系?举例说明
  • 你是如何建立用户模型来理解用户,获取用户兴趣的?
  • 你是如何选择适合该场景的推荐模型?讲讲你的思考过程
  • 你是如何理解当前流行的召回->粗排->精排的推荐架构?这种架构有什么优缺点?什么场景适用使用,什么场景不适合?
  • 如何解决热度穿透的问题?(因为item热度非常高,导致ctr类特征主导排序,缺少个性化的情况)
  • 用户冷启动你是如何处理的?
  • 新内容你是如何处理的?
  • 你们使用的召回算法有哪些?如何能保证足够的召回率?
  • 实时数据和离线数据如何融合?工程上是怎样实现?如何避免实时数据置信度不高带来的偏差问题?
  • 你们是如何平衡不同优化目标的问题?比如:时长、互动等
  • 不同类型内容推荐时候,如何平衡不同类型内容,比如图文、视频;或者不同分类
  • 如何保证线上线下数据一致性?工程上是如何实现?
  • 离线训练效果好,但是上线效果不明显或在变差可能是什么问题?如何解决?
  • 在实际业务中,出现badcase,你是如何快速反查问题的?举例说明
  • 使用ctr预估的方式来做精排,会不会出现相似内容大量聚集?原因是什么?你是如何解决的?
  • 你了解有多少种相关推荐算法?各有什么优缺点
  • 深度学习可以应用到推荐问题上解决哪些问题?为什么比传统机器学习要好?
二、数学相关

1、 概率论和统计学


  • 说说你是怎样理解信息熵的?
  • 能否从数据原理熵解析信息熵可以表示随机变量的不确定性?
  • 怎样的模型是最大熵模型?它有什么优点
  • 什么是Beta分布?它与二项分布有什么关系?
  • 什么是泊松分布?它与二项分布有什么关系?
  • 什么是t分布?他与正态分布有什么关系?
  • 什么是多项式分布?具体说明?
  • 参数估计有哪些方法?
  • 点估计和区间估计都是什么?
  • 讲解一下极大似然估计,以及适用场景?
  • 极大似然和最小二乘法有什么关系?
  • 假设检验是什么?有什么作用,距离说明?一类和二类错误分别是什么?
  • 什么是置信区间?
  • P值数据含义是什么?如何计算?
  • 如何证明两个变量是独立分布还是相关的?
  • 什么是协方差,它和相关性有什么联系?
  • 数学期望和平均数有何异同?
2、 最优化问题


  • 什么是梯度?
  • 梯度下降找到的一定是下降最快的方法?
  • 牛顿法和梯度法有什么区别?
  • 什么是拟牛顿法?
  • 讲解什么是拉格朗日乘子法、对偶问题、kkt条件
  • 是否所有的优化问题都可以转化为对偶问题?
  • 讲解SMO(SequentialMinimalOptimization)算法基本思想?
  • 为什么深度学习不用二阶优化?
  • 讲解SGD,ftrl、Adagrad,Adadelta,Adam,Adamax,Nadam优化算法以及他们的联系和优缺点
  • 参数估计有哪些方法?
  • 点估计和区间估计都是什么?
  • 讲解一下极大似然估计,以及适用场景?
  • 极大似然和最小二乘法有什么关系?
  • 假设检验是什么?有什么作用,距离说明?一类和二类错误分别是什么?
  • 什么是置信区间?
  • P值数据含义是什么?如何计算?
  • 如何证明两个变量是独立分布还是相关的?
  • 什么是协方差,它和相关性有什么联系?
  • 数学期望和平均数有何异同?
pic100 发表于 2023-10-4 20:05:06|来自:中国 | 显示全部楼层
研究生课程阶段,我曾上过学校开的《机器学习理论与应用》的课程,当时我们用的教材是周志华老师的西瓜书。那老师开课第一天告诉我们的第一句话是:“这个课程的基础知识很少,我不用半个学期就可以讲完。之后的东西要全凭你们选定一个领域后深度探索,前提是你们掌握足够的编码能力。”
那个学期老师只是前面几节课讲了些基本概念,又讲了些Dropout、BatchNorm方面的内容。什么LSTM、什么Transformer、什么注意力机制,不存在的,从来不讲。
我心里暗自骂,什么老师,什么课程,水的一批,我来上这个课的目的就是系统地学习一下这个课,就这?
然而随着后面慢慢入门,我发现“系统学习机器学习”,确实不是一件易事。它并不像我们学习C++,我们先通过《C++ Primer》了解大概,接下来进阶可以看看《Effective C++》,《STL源码剖析》等等。它并没有这样的学习路线。
大家往往都是先看一些书进行了解之后,在一项一项业务中去实践和探索,应用,没有什么硬性规定好的东西,有效果的框架就是有效果,前几年LSTM好用,后来Transformer来了,到现在自监督非常火,说不准又会有什么新奇的框架出来,替代之前的框架,这和负责的具体业务场景有非常大的关系。
现在想想,当时我们老师说的那句话居然和吴恩达 @吴恩达 老师的三个步骤如出一辙:

  • 1.掌握足够的编码能力
  • 2.学习机器学习和深度学习
  • 3.专注于一个角色
如何系统学习机器学习?接下来我推荐的学习资料都将围绕这三个点展开,除了书籍,还有一些课程和链接
掌握足够的编码能力

学习机器学习最方便的语言是python,因此可以先从python开始,如果已经接触过一点python,那么强烈推荐这本鱼书《深度学习入门》,一个日本作家写的,这本书非常薄,但是他已经足够教你从最基本的一个layer开始搭建起一个神经网络。


对于入门而言,python是足够的,但是机器学习的模型一定是需要被部署到移动端或者服务器端的,因此C++也非常重要。因此还必须得推荐一下这本基础书籍《C++ primer》


学习机器学习和深度学习

西瓜书、花书、以及吴恩达老师的机器学习课程已经是非常优质的机器学习课程了。这里我推荐一个李沐老师 @李沐 出的深度学习课程。李沐老师是绝对的机器学习领域的大牛了。亚马逊首席科学家,著有 IT 畅销书《动手学深度学习》,在知乎上已经是绝对公认的大佬,出了很多课程。
李沐的深度学习课 - 知乎值得一提的是,这个课程应该可以算是比较系统也比较友好的了,因为它是从基础的数学知识开始讲的!从基础的数学知识出发,到常用的优化方法,然后过渡到机器学习领域。主要内容涵盖了卷积神经网络、循环神经网络的常用结构,包括LSTM、Transformer等等。



涉及课程内容

对于前面的内容,主要以理论讲解为主,到后期涉及具体的模型时,会有手把手的关键代码讲解,因此比起纯讲理论的课程要友好很多。对于已经具有一定基础的同学,也可以把这个课程当作一个字典,用于查缺补漏。
专注于一个角色

由于我所接触的领域是自动驾驶的感知算法领域,因此这里我只推荐一些对应的网课和书籍。
首先计算机视觉中的各种论文、框架、pytorch实现等等可以参考这位Github上大佬的项目,真的讲的非常详细,无论是老的各种RCNN结构和Yolo结构,还是新出的一些各式各样的的卷积方式:转置卷积、膨胀卷积、以及目标分割领域的论文解读。可以这么说,我秋招的基础知识就是跟这个大佬的课程学的。这里也给出它的Github链接:deep-learning-for-image-processing
此外,除了所以各种深度学习方面的论文,一些传统机器学习方面计算机视觉的书还是很有价值的,比如这本《计算机视觉:模型、学习和推理》,常看常新。



聊到最后,我还是想说说我研究生上的那门机器学习的课程:
那门机器学习课程后面的任务是,不同学院的人,选择一个自己感兴趣的领域,定期做论文分享,最后的课程大作业是复现3篇论文的内容,并进行Presentation。
现在想想,这才是我当时上那门课最大的收获。让我现在面对铺天盖地的花里胡哨的论文方法时,不至于手足无措。
dianl 发表于 2023-10-4 20:05:51|来自:中国 | 显示全部楼层
想要成为一名人工智能从业者?系统学习机器学习是重点!

机器学习是一门不需要进行明确编程就能使计算机发挥作用的科学。在过去的十年里,机器学习已经为我们提供了自动驾驶汽车、实时语音识别、高效网络搜索等实用工具,并帮助我们极大地提升了对人类基因组的认知。许多研究人员都认为发展机器学习是向人类水平的人工智能迈进的最好方式。

这里向大家提供三个系统学习机器学习的步骤:学习基础编码知识、学习机器学习及深度学习、专注于一个角色。

想要成功构建机器学习系统,基本的编程技能是先决条件。在开始实践简单的机器学习算法之前,你需要具备编写一个简单的计算机程序(函数调用,for loops,条件语句,基本的数学操作)的能力。虽然掌握更多数学知识能让你更具优势,但也不必将精力过多投入到诸如线性代数、概率和统计这样的数学基础上。

在学习了基础编码知识后,就可以正式开始你的机器学习之旅了。由斯坦福大学推出的“机器学习课程”是你不错的选择。该课程提供了对机器学习、数据挖掘和统计模式识别的广泛介绍,能帮助大家有效构建对机器学习的认知和理解。主要内容包括:监督学习、无监督学习和机器学习的最佳实践。

该课程从大量的案例研究和应用中汲取经验,便于大家学习如何将学习算法应用于构建智能机器人(感知、控制)、文本理解(网络搜索、反垃圾邮件)、计算机视觉等任务。

此外,深度学习也是你需要涉猎的领域。由DeepLearning.AI开发的“深度学习专业课程”涵盖了你在计算机视觉、自然语言处理和语音识别等领域构建应用程序所需的知识。你将从医疗保健、自动驾驶、手语阅读、音乐生成和自然语言处理等方面开展案例研究,以便于在掌握理论知识的基础上了解深度学习在各行业中的实际应用。

当你对机器学习和深度学习都有了较为深入的学习后,下一步行动将取决于你心中想要成为的角色,例如成为数据科学家、机器学习工程师或机器学习研究员等,亦或是将所学的AI技能与你目前从事的工作相结合,将人工智能更好地应用于现实世界问题。

确定角色之后就要迈入真正的实践环节了。对此,项目选择和团队合作至关重要。确定可行和有价值的项目是一个重要的步骤,必须在你的职业生涯中反复实践。在完成项目的过程中,团队合作比单打独斗更容易取得成功。与他人合作、提供及听取建议的能力至关重要,这能帮助你在协作过程中建立广泛的关系网。当你需要帮助或建议的时候,拥有一个强大的职业关系网能够助你前行。

在积累了一定的机器学习理论知识和实践经验后,找到一份相关的工作看似是每个人的最终目标,但它只是漫长职业生涯中的一小步。你需要保持自律,不断学习。身边的人并不清楚你把周末的时间是用在学习还是刷手机上了,但随着时间的推移,他们终将注意到差异。自律的生活可以帮助你在保持健康的同时继续进步。

希望上述建议能为你打开机器学习的大门,从初学者一路走向从业者。这条路注定是宽阔却不平坦的,但这一路上遇到的人和事都将助你走向成功。
我的深度学习相关课程也将在近期登录知乎,敬请关注,我们下次再见!
请继续学习!
吴恩达
军团秘密 发表于 2023-10-4 20:06:04|来自:中国 | 显示全部楼层
2021.05.10更新:
评论区有挺多人质疑半年能否完成这么多内容,我的观点是半年时间足够完成前两个步骤的学习,完成前两个步骤后就可以去参加互联网公司算法岗位的面试了,对于代码能力不错,Leetcode easy题目熟练的同学,已经有很大可能性拿到一份实习Offer,步骤三在实习过程中持续进行,那么秋招的时候就能拿到正式Offer了。
推荐一下自己在数据科学道路上的学习笔记,终生更新,终生开源,喜欢的同学可以点个star,repo下载到本地,阅读效果更佳
zhangjx831/Data-Science-Notes
原答案:
不请自来答一波,半年前入坑机器学习,如今已经拿到某互联网大厂算法岗实习offer,给大家推荐一下我的学习路线。
机器学习主要分为传统的统计学习和深度学习两个部分。统计机器学习在上个世纪就一直在用,只不过当初不叫机器学习这个名字,深度学习从2012年起掀起了一波AI热潮。想要学习机器学习,将来找算法岗工作可以分为三步。
步骤一:打好数学和代码基础
相信大部分想学习机器学习的都是一些理工科的同学,包括数学、物理、计算机、自动化等,这些同学本科期间数学和代码功底比较扎实,这个步骤可以选择性略过。对于一些数理基础不是特别扎实的同学,比如生化环材还有一些商科文科的同学,想学习机器学习,还需要先复习(预习)一些数学和代码知识。我就属于后面这一部分同学,下面来讲讲我当时怎么做的。
数学基础主要就是微积分、线性代数、概率论与统计这三个部分。对于微积分来说,至少要掌握多元微积分的知识,会求偏导,求积分。线性代数对机器学习比较重要,需要懂一些矩阵运算法则,求矩阵特征值,求方程组,矩阵的逆等等。概率论与统计是重中之重,要了解一些基本分布,条件分布、联合分布等等。数学基础这个部分如果不太懂的话,可以在mooc上搜一些考研数学的复习视频,短平快的复习好这三大部分的知识点。对于线性代数部分的学期,可以参考麻省理工学院MIT的公开课,知乎上已经有人做了课程笔记,可以搜索一下。而概率论统计也可以在coursera上搜索相应课程,推荐一门statistic with python的课程,既复习了统计学基础,又练习了python代码能力。
https://www.coursera.org/specializations/statistics-with-python对于代码基础部分,刚开始做机器学习一般都从比较简单的python入手,很多的软件包都是基于python而写的。对于python的学习,推荐coursera上的另一门网课,python for everybody,讲解深入浅出。除此之外,最好懂一些常用包的使用,numpy,pandas和matplotlib,这三个分别是python中进行科学计算、数据处理和数据可视化的包,我的学习建议是多写代码多练习,找一个数据集,进行数据导入、预处理、探索性分析、可视化,这些操作来一遍,python就学了个大概了。如果还想进一步深入,可以了解一些python面向对象编程的原理,不过这部分内容在机器学习中用到的不多。
https://www.coursera.org/learn/python/home/welcome步骤一我建议对于基础好的同学可以略过,对于基础稍弱的同学在一个月之内,每天学习2-4个小时就能基本上掌握大概,后面碰到不懂的,再去对应学习即可。
步骤二:机器学习入门
打好了数学基础和基本的python基础后,我们就可以正式开始机器学习的学习了。这部分就不得不提机器学习领域最著名的网课和书籍了。网课那就是斯坦福大学Andrew Ng吴恩达在coursera上的免费网课machine learning了。
https://www.coursera.org/learn/machine-learning/home/welcome这个网课一定要看,老师讲的浅显易懂,对小白来说很友好,课后编程作业是用Matlab写的,如果不懂Matlab的同学也可以用python做,在GitHub上有很多人把自己用python实现的算法po了上去,可以找对应的GitHub repo去看。
看完网课之后,就可以找对应的书籍加深对于机器学习基础的理解。网课的内容覆盖有限,起到一个启蒙的作用,对相应内容了解大概之后,可以读一读李航老师的《统计学习方法》和周志华老师的《机器学习》,又称西瓜书。这两本书我更建议先看《统计学习方法》,这个讲解更浅显一些。在这个部分,可以主要看一下《统计学习方法》前8章基本的监督学习内容和第13-16章基本的无监督学习内容。之后有时间可以看看其他章节的拓展内容,比如马尔可夫模型、EM算法等等。对于西瓜书可以先看看前10章的内容,之后再了解后续内容。
学到这里,我们就对机器学习有一个基本的了解,但是这些都是理论知识,缺少实战经验,为了提高机器学习的实战能力,我推荐《机器学习实战》这本书,教你怎么样用python实现之前所说的那些算法,基本的回归、分类、聚类、降维在那里都有。
下面就是一些近期大火的深度学习内容的学习,深度学习由于是近几年才兴盛起来,书籍没有很多,主要通过网课和论文学习。这里我推荐吴恩达的深度学习专项课程。老师的讲解同样深入浅出,能够快速了解深度学习在近些年的发展,包括基本的神经网络模型、卷积神经网络、循环神经网络以及深度学习领域的一些trick。作业是用python完成的。如果你能听完课,做完作业,那么python水平会得到很大提高,并且会使用一些keras、tensorflow的框架构建深度学习模型。
https://www.coursera.org/specializations/deep-learning至此,第二步骤告一段落,如果能做完上面的步骤,你已经成为机器学习领域半个专家,这个时候已经可以去互联网公司面试了,运气好的话,就可以找到一份算法岗位的实习机会,继续精进机器学习算法知识。这个步骤大概用时4-6个月,每天2-4小时
步骤三:持续提高工程能力和机器学习领域知识
下面这一步,本人也是正在进行中,来和大家讲讲我的计划。如果要成为一个出色的算法工程师,那么就要做到持续学习。如今算法工程师不仅需要懂机器学习,更要是一个合格的软件工程师,代码能力非常重要,要会复现paper,上线模型。这个部分可以通过打比赛来提高。著名的比赛有两个,一个是国外的Kaggle网站,另一个是国内阿里的天池竞赛,通过参加比赛,提升自己的代码能力和对机器学习领域的理解。
https://www.kaggle.com/天池大数据众智平台-阿里云天池这里可以选一个自己喜欢的方向进行深入钻研,目前业界比较火的三个方向是广告推荐、自然语言处理NLP和计算机视觉CV方向。同时也有一些相对小众比如异常检测、风控等方向等待大家去挖掘。学习这些知识需要通过阅读最新业界的论文。AI领域的顶级会议包括AAAI, SIGKDD, IJCAI, AISTATS等等,阅读这些论文可以了解业界最新进展,启发思路。
另外在这个阶段,可以继续夯实基础,我推荐几本书。首先还是之前的《统计学习方法》和西瓜书,可以将剩下的章节阅读完。另外就是两本机器学习领域的圣经《Pattern Recognition and Machine Learning》和《Element of Statistic Learning》,这两本书是机器学习领域不可不读的经典著作。另外深度学习领域的圣经则称为花书,也是可以拜读的经典著作。
步骤三更多的是在实践与工作中学习,计算机领域是个需要终身学习的地方,算法岗更是如此,每年深度学习算法都会有大的突破,需要不断阅读新论文,提高自己,如果大家希望入行机器学习算法,可以按照上面步骤做,虽然如今算法岗内卷严重,但如果努力,还是能在强手如林的算法领域找到一席之地,与君共勉!
下面是上述提到的几本书链接,大家有兴趣可以从我的链接点进去购买,都是京东自营的,良心推荐
<a data-draft-node="block" data-draft-type="mcn-link-card" data-mcn-id="1365382978651115520">

快速回帖

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则