V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
James369
V2EX  ›  程序员

AI 的算法和数据结构中的算法一样吗, AI 的模型和数学建模一样吗?

  •  
  •   James369 · 2021-06-30 09:33:09 +08:00 · 4090 次点击
    这是一个创建于 1271 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在 AI 这么火,但是有些概念没搞懂(如题),还有搭建神经网络 是不是就是在那做数学建模?。

    另外什么是算法工程师,我感觉他们也没搞出什么算法,都在标注数据、训练、调参,完了继续重复上述过程(中间可能看看复杂的各种学术论文=天书)
    42 条回复    2021-07-01 15:23:25 +08:00
    jdhao
        1
    jdhao  
       2021-06-30 09:40:51 +08:00 via Android   ❤️ 1
    差不多,算法就是解决问题流程代码话而已。

    也不一样,leetcode 上的算法,譬如二分,搜索等等,比较简单,而且程序运行结果大多数是确定的,输入 A,必须输出 B 。AI 用的算法就不是这样,因为用到了模型,必须要训练这个模型,经过训练模型的输出,也不一定会是你想要的输出,所以 AI 算法才有准确率的问题。
    NilChan
        2
    NilChan  
       2021-06-30 09:42:09 +08:00 via Android   ❤️ 1
    我觉得不一样。AI 算法更像人类给定一个模型,让计算机自己训练出算法。
    James369
        3
    James369  
    OP
       2021-06-30 09:44:22 +08:00
    @jdhao 是不是可以理解为,AI 算法就是一个神经网络结构?
    p2pCoder
        4
    p2pCoder  
       2021-06-30 09:44:42 +08:00   ❤️ 1
    片面点来讲,AI 最基础来说,就是统计,最基础的就是数据,有了数据就是去拟合一个 f(x)j=y 这个函数,就比如大学做实验的时候,我们会在坐标纸上根据点的分布,去拟合一个线性函数,这也是机器学习的一种基础应用。只是真实世界的数据特别特别多,很高维,对应的函数也特别复杂
    这是很简单片面的理解,到了真正的落地就很复杂了
    root99527
        5
    root99527  
       2021-06-30 09:49:32 +08:00
    算法工程师的价值在于,通常落地场景的资源都是有限的,尤其是端侧,如何让有限的资源在当前场景中表现最优,是工程师需要考虑的问题。
    jdhao
        6
    jdhao  
       2021-06-30 09:50:09 +08:00 via Android
    @James369 不是,神经网络只是众多 AI 算法中的一种。
    James369
        7
    James369  
    OP
       2021-06-30 09:53:29 +08:00
    @root99527 是吗,我觉得算法工程师的价值不在于 工程落地,而是在于研究出新颖的算法,发表顶级论文(本身论文就是评估算法工程师的一项指标)。
    工程落地是属于软件工程师和系统架构师的职责。
    MinQ
        8
    MinQ  
       2021-06-30 09:58:46 +08:00   ❤️ 2
    @James369 工程师这个称呼本身就代表着他要面对的是工程场景,他们要做的事情就是将算法在一个合适的场景中实现,达到在各种资源的约束下的最优解。研究新颖算法的人我们管他们叫做研究员
    MinQ
        9
    MinQ  
       2021-06-30 10:01:27 +08:00
    @James369 算法工程师的价值在于解答在当前场景的资源约束下,用哪个算法,以什么样的参数设置最合适,为什么
    JerryCha
        10
    JerryCha  
       2021-06-30 10:02:46 +08:00
    朴 素 贝 叶 斯
    p2pCoder
        11
    p2pCoder  
       2021-06-30 10:14:58 +08:00
    @James369 算法工程师核心在于落地,而且所有问题的基础在于数据,无论对于实验室的研究员还是大厂的算法工程师,做数据的时间都远多于做模型的时间,因为再复杂的模型都是一个确定的结构,都算是简单的,但是数据却有太多东西需要去探索。
    p2pCoder
        12
    p2pCoder  
       2021-06-30 10:27:58 +08:00
    @James369 所有技术的核心都在于商业价值,无论对于 cv nlp 还是推荐 搜索 广告,整个系统的计算和存储成本都是极高的,而算法模型的结构复杂度,参数数量,都是对计算 和存储的成本的极大考量。还有就是大公司的算法的核心 kpi 在于业务指标,不在于发论文,大厂的算法研究员现在也大都有落地的 kpi 了。
    James369
        13
    James369  
    OP
       2021-06-30 10:42:41 +08:00
    @p2pCoder 让他们按一定指标去优化算法还有可能,不过很多算法工程师只会用 Python (甚至连计算机系统原理都不懂),所以让他们去落地我想还得借助于软件工程师。但是他们的工资开的老高了,真是匪夷所思。
    TimePPT
        14
    TimePPT  
       2021-06-30 11:24:34 +08:00
    @James369 术业有专攻而已,解决的是整个系统里不同的问题,你让普通的系统工程师天天面对深度学习各种问题调参也会懵逼。
    至于工资价格,是市场供需决定的,未来趋势是 AI 技术平民化,工资溢价自然会降低。
    czfy
        15
    czfy  
       2021-06-30 11:28:19 +08:00
    要是你觉得算法工程师工作很简单,机器学习算法和数据结构算法没啥区别,算法工程师只会 python,你去面试一下这些岗位就行了,然后你也能拿你觉得高得不合理的工资了
    GrayXu
        16
    GrayXu  
       2021-06-30 11:33:07 +08:00
    @James369 你这话的问题在于你不了解算法实际部署的问题。在很多场景下,并不是我给出一个算法,这个算法直接对接新数据,直接输出你想要的结果。除了楼上所说的资源限制以外,对于实际场景针对性的优化、finetune 、特征的处理都是算法最后效果好坏中很重要的一环。而不仅仅是算法是否 fancy,是否有发表论文。
    和 @p2pCoder 说的一样,实际业务上线的算法有方方面面的角度需要考虑,而不是哪一个是 state of the art 就拿来用。不要低估特征处理等的重要性。

    至于你说的"很多算法工程师只会用 Python (甚至连计算机系统原理都不懂)",就只是你所处环境的 bias 了。
    p2pCoder
        17
    p2pCoder  
       2021-06-30 11:42:02 +08:00   ❤️ 1
    @James369 工程能力强的算法很多,这个群体是卷到变态的,我这几年就是做算法的工程落地的,作为一个后端,遇到过很多工程能力碾压后端开发的算法工程师。
    fredli
        18
    fredli  
       2021-06-30 13:06:28 +08:00
    传统算法是命令式,AI 更像声明式
    pcslide
        19
    pcslide  
       2021-06-30 13:17:18 +08:00
    你说的应该时神经网络吧?
    数学建模涵盖的内容远超神经网络。。。
    pcslide
        20
    pcslide  
       2021-06-30 13:22:47 +08:00
    @James369 喷算法工程师不懂计算机原理有点过了吧?计算机组成,操作系统,编译原理,c 语言这些是系里的必修课。研究生阶段大概太多时间放在算法这块,之前的知识变得模糊了,但不可能不懂。
    James369
        21
    James369  
    OP
       2021-06-30 13:37:26 +08:00
    @pcslide @GrayXu 我遇到了几个,会写函数但不会写应用,会写模块但不会做系统,不会前后端不会 linux,甚至连动态库 /静态库的区别也不懂。
    imn1
        22
    imn1  
       2021-06-30 13:48:45 +08:00   ❤️ 2
    这样说吧,理论家和实业家
    举个例子,那两位获得诺贝尔奖的硬盘之父之父,就是理论家,但他们能自己造出大家通用的硬盘么?估计够呛,还是需要实业家把他们的科学成果落地

    AI 建模也是分理论和实体的,研究数学模型的人,把原本不可比较的数据,通过数学方法(降维、变形等等),实现“可比较”,但是这样的人,地球上少之又少,如果把具体的业务数据交给他们,他们可能也只能作出“数学结论”,而不是业务可用的报告
    现在的算法工程师,是把别人的数学理论,落地到实用业务,他们需要了解所使用的数学知识,才能把“数学结论”转化为业务报告,但他们本身不需要创造这个数学计算过程,其实也很难创造

    AI 算法,实际上已经是业务范畴了,它背后的数学原理,最初其实和 AI 没太大关系,最初的数学研究其实就是把不可比数据实现可比-->找出其中的数学规律,仅此而已,只是后来人把这套理论,发展到 AI 上,发扬光大
    现在的算法工程师,可以说是后来人的后来人的后来人,就是逐步发展中产生的人才,也是业务具体化、实例化的实现者

    实例化就是双向结合,例如人脸辨认中有一种算法 KNN 距离近邻,KNN 里面也有多种近邻方式,其中马氏距离(或叫闵氏距离、明氏距离,译音区别)、欧氏距离这些,远在 AI 这个概念出现之前就有了,逐渐产生分类、聚类算法时,也和 AI 扯不上关系,当时
    而一些需要在实物生产中需要分类的实业家,例如制衣业衣服的大中小码,发现可以使用这些数学方法,把不同的人的身体的尺寸,应用到这些数学方法的“初始数据”,就能实现聚类出少数的几种尺码,大大降低生产的成本

    AI 就是在聚类分析发展过程中的,第三、第四代产物
    算法工程师就是把有意义的业务数据,代入数学原理中那些无意义的数字,使用其方法原理,产生数学结论,再把这些数学结论(结论也只是数字,也是没有实际意思),通过筛选和匹配,转化为有意义的业务结果,指导业务发展

    “没有最佳、只有最适合”,这是数学建模中普遍说的一句话,算法工程师就是寻找这个“最适合”的人
    root99527
        23
    root99527  
       2021-06-30 13:51:24 +08:00
    @James369 不会 linux 这个有点夸张了。训练他咋训练的,win 么?
    James369
        24
    James369  
    OP
       2021-06-30 14:16:20 +08:00
    @root99527 会几条命令而已,我不认为他懂原理。比如管道如何工作不懂,进程组会话不懂
    VoidChen
        25
    VoidChen  
       2021-06-30 14:17:25 +08:00
    你自身的水平决定了你身处的圈子,而圈子的天花板就是你认知的高度= =
    James369
        26
    James369  
    OP
       2021-06-30 14:26:16 +08:00
    @imn1 看了这么多,我还是觉得离落地实现 有一定距离,也就是说算法还是需要 工程人员进行落地实现,这也是未来 AI 时代软件工程师的发展空间。算法工程师可以说是衔接在 研究员和程序员之间的桥梁吧。
    imn1
        27
    imn1  
       2021-06-30 14:33:15 +08:00
    @James369 #26
    Y
    AI 比较早应用的是语境翻译,但至今也没什么飞跃式的进展,可见 AI 目前还是“吹”的阶段
    将来如何不知道,以我的认知不能做什么断言,反正也不知道能否活到那一天
    GrayXu
        28
    GrayXu  
       2021-06-30 14:45:56 +08:00
    @James369 21L,所以问题就变成了,你身边的“算法工程师”能否代表工业界算法工程师的普遍情况?
    pcslide
        29
    pcslide  
       2021-06-30 14:56:59 +08:00
    @James369
    你提的这些,好像除了不会 linux (应该指 shell ??),都不影响工作。。。。
    我记得之前有教授说,现在软件变得非常复杂,对大多数使用者(工程师)来说,很多组件都是黑盒。人们不再在乎黑盒内部,而是通过 poking (尝试?),来琢磨如何使用。
    就比如你说的”动态库 /静态库“,大多数情况下,对于要处理大量数据的进程(数据量远远大于代码),是动态库还是静态库(我理解得没错吧?)这点细微差别可以忽略不计。所以知不知道又有什么差别?
    可能有些场景,你对系统了解些,你 debug 会快,程序效率会增加那么一点。但是经典算法已经被 n 多仙人打磨过了,轮不到你磨。自己造的轮子,更需要改进的是数据处理和算法本身,版本迭代比换新衣服还快,与其在乎增加那点点效率,不如放心思在容易看懂,容易修改方面比较实在。
    pcslide
        30
    pcslide  
       2021-06-30 15:08:48 +08:00
    @James369 至于 linux 里得管道如何工作(还有进程如何会话),是通过文件还是通过内存或者是透过内核消息,这些对使用者并不重要。即使表面上透过文件读写来共享数据其实质也可能是内存共享,这些都是很好得抽象层。最重要的 posix 规范并不会去管你如何实现,一如 C 和 python 国际标准只会规范哪些函数需要 thread-safe,至于这些函数你怎么实现,没人管你。
    James369
        31
    James369  
    OP
       2021-06-30 15:09:20 +08:00
    @GrayXu #28 不,我想阐述的观点就是,算法工程师与软件工程师各司其职,术业有专攻。
    正如#29 楼所描述,这样的算法工程师仅仅只能做算法而已,做不了软件系统。
    InvincibleDream
        32
    InvincibleDream  
       2021-06-30 15:10:00 +08:00
    简单来说 AI 相关的算法一般是基于机器学习的,最终成品是结合了算法模型和数据。算法模型相同但是数据不同的情况下,在同一业务场景下成品的效果也不同。而数据结构的算法多数是不依赖数据的。从算法实现来讲,大部分 AI 算法与已有的数据结构算法实现不同,没法直接复用。AI 模型常用于解决一般性问题,比如 CV 中的目标检测,NLP 中的文本生成。我理解的数学建模一般是针对特定对象进行,比如供应链、客流量等。
    pcslide
        33
    pcslide  
       2021-06-30 15:20:49 +08:00
    @James369 每个人得经历不一样,你可能碰到的是我这种比较菜的。我碰到过不少 nvidia,自动驾驶大厂,做机器学习专用芯片的算法工程师,人家搞 C 和系统就像砍瓜切菜一样。
    GrayXu
        34
    GrayXu  
       2021-06-30 15:23:10 +08:00
    @James369 这个我认可,在大厂里,这样的分工也很常见。不过研究算法的是研究员,整合系统做实现的叫“算法工程师”。
    IgniteWhite
        35
    IgniteWhite  
       2021-06-30 15:56:45 +08:00 via iPhone
    @pcslide #33 我有个牛逼同学博士也学这个的,直接优化给 ASIC 或者 FPGA 的机器学习算法,Python 那些个库都看不上。我个菜鸡以为用 Python 库就很高端了……
    garvan
        36
    garvan  
       2021-06-30 17:27:26 +08:00
    最基本的行业敬畏都不懂的吗。。。“我不要你以为,我要我以为....”
    SmiteChow
        37
    SmiteChow  
       2021-06-30 17:27:51 +08:00
    算法内涵不一样 书上的算法是过程的经典实现 在实际场景中面对不同的输入效果好坏都不一定 所以需要估算时空复杂度

    AI 的算法就不是时空复杂度能框定效果了,它的自由度更高,在不同的参数下效率有本质的不同,所以需要喂数据去拟合参数

    至于模型就是一个通用的词,代表了某个场景的解决方案,所以数据建模是面向场景,你喂的数据也是来源场景的,故可以认为一样的含义
    gy0624ww
        38
    gy0624ww  
       2021-06-30 18:28:41 +08:00
    你说只会 python 的不是算法工程师吧,技术运营岗位也偶差不多的工作。需要用 python 写模型
    Huelse
        39
    Huelse  
       2021-06-30 22:23:25 +08:00
    @pcslide
    我认为真正懂的人无论是基础理论还是对上层抽象实操起来都是得心应手的,我此前交流的一位 MIT CS Ph.D.就能做到,的确让人佩服

    规范实现的好坏还是很重要的,同样是 c++编译器,msvc 和 gcc 风评就完全不一样,clang 也能独领风骚
    akira
        40
    akira  
       2021-06-30 22:41:37 +08:00
    欢迎一起来炼丹
    wangyzj
        41
    wangyzj  
       2021-07-01 11:51:42 +08:00
    不一样
    搞 ai 也得刷题
    oneTimeElastic
        42
    oneTimeElastic  
       2021-07-01 15:23:25 +08:00 via Android
    是,机器学习 /统计学习就是数学建模,深度学习这块现在还不好说
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2203 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 01:50 · PVG 09:50 · LAX 17:50 · JFK 20:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.