V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
huzhikuizainali
V2EX  ›  机器学习

学完微积分线性代数概率统计后应该如何学习机器学习和神经网络?

  •  
  •   huzhikuizainali · 2021-07-03 10:18:49 +08:00 via iPad · 1698 次点击
    这是一个创建于 1274 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这个问题可以拆成两部分。
    1 、机器学习和题目中的数学知识是什么关系?是这些知识在数据科学领域的具体落地应用。除了数学理论还要分析具体案例才知道如何选数学工具,调参数?

    2 、学数学或应用数学的人来转做机器学习(假设代码能力已经具备)是不是降维打击?如果不是,原因是什么?数学专业的转数据科学需要补什么短板(不考虑代码,数据库等计算机技能)。或者说以后想转数据科学的数学专业学生,需要做哪些准备。或者他们在学数学专业课时需要特别注意哪些方面?
    babyformula
        1
    babyformula  
       2021-07-03 10:52:46 +08:00   ❤️ 1
    1. 具体关系可以翻一翻目前高校有关专业的前要数学储备; 最优化, 随机过程, 矩阵论, 少部分信号处理. 本科的课程根据专业不同所教学的程度也有不同, 所以建议至少修到前面几科的专业程度;

    2. 会被降维打击, ML 或者 DL 属于交叉学科, 只强一个分支没太大用, 除非之后也只搞这些交叉学科中的这一个分支的 research, 但是这么搞和单纯研究理论数学 /应用数学也没什么太大区别; 要转的话建议计算机专业课走一遍.
    huzhikuizainali
        2
    huzhikuizainali  
    OP
       2021-07-03 11:14:16 +08:00 via iPad
    @babyformula 等于说数学专业转 ML 最大的短板还是在“代码”方面?不过这方面也不会太短吧?毕竟数学专业的日常也会用 Matlab 或者 python 的常用库吧。致于数据库什么的,只要会用 python 或 Matlab 从数据库取数据就可以了吧。毕竟计算机专业的最后工作也不是所有事情都亲力亲为,而是专精某个细分领域。模型运行效率更加不是 ML 专业的人考虑的事情了吧。关注效率的话,至少要用 c 或 c++重写模型吧。
    不知道以上认知是否靠谱?如有偏颇还望指正。
    marcoxuu
        3
    marcoxuu  
       2021-07-03 11:37:29 +08:00
    如果只是回答标题的问题,我推荐台大李宏毅老师的 ML 课程,从传统 ML 到数学证明解释都讲得很详细,算是中文机器学习入门很好的课程之一。
    至于你拆分的两个问题,把 ML/DL 描述的都过于定性了,ML 应该只能算 math 到 data science 中间的一个 layer,调参也只是 ML/DL 中一个小的步骤。至于数学转数据科学,我觉得不需要补任何技能,在 ML/DL 领域纯做理论更吃香。
    oneTimeElastic
        4
    oneTimeElastic  
       2021-07-03 12:16:24 +08:00 via Android   ❤️ 1
    得看你说做什么方向,如果你做 learning theory 这类 数学要求还是很多的。相反现在深度学习这里很多 paper,如果你去看,其实并没有那么多数学要求。
    如果你想做个研究者那么代码部分相对容易掌握;如果你想做 ml engineer 这类,那么你要掌握的就不只是 python spark 这类,你可能还要根据业务学会别的
    babyformula
        5
    babyformula  
       2021-07-03 12:33:02 +08:00   ❤️ 1
    @huzhikuizainali "代码"也会区分到不同的专业和方向, 如果只是调用 matlab 或者 python 常用库其实在 ML 和 DL 领域可做的东西真的不太多. 举个例子, 研究领域要体现创新性 /突破性势必会要提出一些新的算法或者结构, 那么如何验证这种算法可行或者 benchmark 还是要落在程序的实现上, 这种往往都不是常用库里会出现的. 工业场景就更不用说了, 训练验证只是其中一小部分, 数据和部署有可能是更重要的环节.
    是否亲力亲为得要看具体怎么定义, 如果数据处理(甚至是前处理), 还有训练 /验证框架(甚至是训练代码), 然后还有模型的压缩和部署都由其他专人给处理好, 那剩下的岂不是缓缓键入‘python run.py’就好了. 现实情况下往往这些都是需要 ML/DL engineer 需要考虑的内容
    最后模型的效率和具体语言无关, 和硬件 /架构 /数据结构 /计算机系统 /算法优化 等等这些计算机不同方向的关系很大
    Jooooooooo
        6
    Jooooooooo  
       2021-07-03 13:26:29 +08:00
    1. 重点可以学下矩阵论, 凸优化之类 (都有专门的书

    2. 数学确实有优势, 我研究生导师招人更喜欢本科数学的
    huzhikuizainali
        7
    huzhikuizainali  
    OP
       2021-07-03 15:39:48 +08:00 via iPad
    @oneTimeElastic 谢谢回复。你回复的内容对我很有启发。

    “如果你做 learning theory 这类 数学要求还是很多的。相反现在深度学习这里很多 paper,如果你去看,其实并没有那么多数学要求。”——————意思是,如果不做数据科学理论的推动者,只是将现有数据科学的理论用于实践,并没有那么多数学要求,对么?(这里说的没有那么多数学要求是没有那么高的“纯数学”要求。但是微积分线代概率统计最优化随机分析……这些依然要会,否则现有的数据科学理论方面的书也看不懂,更加不会灵活应用,也不会调参数,对么???)


    “如果你想做 ml engineer 这类,那么你要掌握的就不只是 python spark 这类,你可能还要根据业务学会别的”————这段话中如何定义 ml engineer 的工作内容?还需要根据业务学会什么?可否举个例子?
    huzhikuizainali
        8
    huzhikuizainali  
    OP
       2021-07-03 15:55:48 +08:00 via iPad
    @babyformula 谢谢回复。很有启发。
    “ 如果只是调用 matlab 或者 python 常用库其实在 ML 和 DL 领域可做的东西真的不太多. 举个例子, 研究领域要体现创新性 /突破性势必会要提出一些新的算法或者结构, 那么如何验证这种算法可行或者 benchmark 还是要落在程序的实现上, 这种往往都不是常用库里会出现的. ”———————这段文字所说的创新突破大概是什么段位的创新突破?新的算法或结构又是在什么层面的?例如,现有的“工具”有:k 临近算法,回归,卷积神经网络………。“ 创新性和突破性”是指为这个“工具库”发明添加一些没有的工具么?

    “ 如果数据处理(甚至是前处理), 还有训练 /验证框架(甚至是训练代码), 然后还有模型的压缩和部署都由其他专人给处理好, 那剩下的岂不是缓缓键入‘python run.py’就好了. 现实情况下往往这些都是需要 ML/DL engineer 需要考虑的内容
    最后模型的效率和具体语言无关, 和硬件 /架构 /数据结构 /计算机系统 /算法优化 等等这些计算机不同方向的关系很大”——————不知道有没有这方面“导论”水平的书推荐。不是单独的算法导论,数据结构导论(这有可能会偏向计算机科学领域了),而是数据科学领域的算法、数据结构,硬件,架构这些需要统筹考虑问题的“导论”
    IgniteWhite
        9
    IgniteWhite  
       2021-07-03 16:17:39 +08:00 via iPhone
    probabilistic machine learning 是你要学的下一门课,从你学过的统计,到贝叶斯,到机器学习,概念串起来,神经网络的概念也建立好了

    在下一门课是 deep learning,在建立好神经网络概念的基础上讲各种现在的神经网络结构

    这是我了解的我们学校的相关本科课程设置。第一门课的数学知识擅长的话,就会学的很快。
    IgniteWhite
        10
    IgniteWhite  
       2021-07-03 16:46:41 +08:00 via iPhone
    楼主就是之前问什么是面向对象编程的啊。就说有种熟悉的味道。
    tfdetang
        11
    tfdetang  
       2021-07-03 16:48:44 +08:00   ❤️ 1
    只回答问题 2:

    结论是不会。 机器学习深度学习工作主要分两种,研究型和工程师型。研究型的很多都是数学或应用数学的人,所以不存在降维打击。 而工程师型的主要做的是,理解算法与场景,将合适的算法引入到场景中,并工程化与落地。 工程师型只需要能看懂并理解算法就行,对数理的要求并没有达到非要学数学的人来做才行。
    babyformula
        12
    babyformula  
       2021-07-03 17:03:03 +08:00   ❤️ 1
    @huzhikuizainali 不客气, 欢迎交流

    [这段文字所说的创新突破大概是什么段位的创新突破?]
    A: 几乎涉及到所有 ML/DL 学术界除综述外的成果. 像 ls 老哥所说的 learning theory, (在 ML/DL 领域)要做研究也是需要写代码 /跑程序(实验)/拿数据结果的, 不然的话是不是就变成民科了
    [新的算法或结构又是在什么层面的?]
    A: 可能小到一个 custom op, 或者 explicit regularizer, 可以理解为“k 临近算法,回归,卷积神经网络”中间的一个算子; 大到一个经典算法 /结构(CNN, LSTM 等等), 一套 efficient training 系统, 或者 cuda 架构
    [“ 创新性和突破性”是指为这个“工具库”发明添加一些没有的工具么?]
    A: 可能没到造车这个级别, 但是至少需要通过程序语言, 通过数据, 在可复现的前提下来表达“创新性和突破性”
    [不知道有没有这方面“导论”水平的书推荐]
    A: 这个通用导论会比较复杂, 横跨软件硬件, 暂时还没遇到过, 即使有应该也是大部头吧; 推荐可以先看单一架构, 比如 cuda 的综述, 针对其硬件的设计思路, 架构, 算法层面的设计 /优化等等, 网上都可以找到官方的一些宣讲
    huzhikuizainali
        13
    huzhikuizainali  
    OP
       2021-07-03 17:04:40 +08:00 via iPad
    @tfdetang 谢谢回复
    如果工程师型,微积分线代,概率,统计应该也要很好的掌握吧。否则算法也理解不了。对么?一楼说还要看最优化, 随机过程, 矩阵论, 少部分信号处理。前三个非数学专业或应数专业的课程一般不会讲的。这使我觉得数据科学对数学的门槛要求还是挺高的。不知道工程师型的人员是否也要拿下最优化, 随机过程, 矩阵论, 少部分信号处理这些课程呢?
    huzhikuizainali
        14
    huzhikuizainali  
    OP
       2021-07-03 17:14:10 +08:00 via iPad
    @babyformula 谢谢耐心而详细的回复。不知道业内达到“突破或创新”水平的成果一般会公开发表么?(因为有些成果是公司员工创造的。理论上不应该公开发表。但是一来有些会开源,二来申请专利的时候也会让大家知道我有突破。还有技术过时了也会公开,使大家知道“事后”知道这些突破创新来自该公司且长期由其独家使用。)
    babyformula
        15
    babyformula  
       2021-07-03 18:29:02 +08:00   ❤️ 1
    @huzhikuizainali 这是个很现实的问题, 只说每家企业或者机构可能都会有一些相应的限制, 有些内部公开, 有些部分公开, 有些用作 PR, 有些用来引领行业制定标准, 因人而异吧
    oneTimeElastic
        16
    oneTimeElastic  
       2021-07-03 23:44:24 +08:00 via Android
    我其实建议不要先学什么别的 先找个一个星期过一遍斯坦福的 cv 和 nlp 课(忘了叫什么了) 你刷一遍看看感觉能不能听懂就知道自己的数学水平 /计算机水平能不能理解了
    至于 ml engineer 我认识的是在部署模型 也就是公司的研究者搞好一个模型然后工程师投入实战 比如用 streamlit 搞个 app 出来 这方面水很深 我也不是很懂所以还得请懂得老哥好好解释一下
    oneTimeElastic
        17
    oneTimeElastic  
       2021-07-03 23:46:43 +08:00 via Android   ❤️ 1
    业内的成果就我所知很多不会公开 比如 gpt3 或者谷歌的新 vit 现在大家只知道大概是什么样的模型 具体调参谁知道 都是只有公司内部才能复现结果
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2806 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 09:38 · PVG 17:38 · LAX 01:38 · JFK 04:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.