最全面、最前沿、最专业的游戏研发实战

提供最全面的游戏研发技能分享,让您在最短时间变成高级游戏工程师

查看:0|回复:6

【推荐】学习机器学习深度学习之后,还需要掌握传统算法和数据结构吗?

 attach_img

4

帖子

10

回复

13

积分
最后登录:
2025-04-05 14:34
注册时间:
2023-02-26 14:02
楼主
  发表于:2025-04-05 18:40:14|查看用户信息

本人数学专业本科,研究生读的计算机,方向是深度学习相关的,在平时上课和自己自学,看论文都是深度学习和机器学习相关的。打算毕业之后从事机器学习相关工作,但是不知道学完Dl,ML的相关算法之后,还需不需要学习传统的数据结构,比如二叉树,图,队列,栈什么的,还有必要学习算法导论里的算法吗?

如果都学的话,那感觉时间不够,而且这些难度都挺大的。

有没有前辈来指点一二呢?


5

帖子

2

回复

6

积分
最后登录:
2025-04-05 17:08
注册时间:
2023-04-19 17:20
1 楼
  发表于:2025-04-05 18:45:58|查看用户信息

我觉得你要是不去看算法导论,好公司的面试基本都跪!算法岗,硕士一般公司都是招去做算法实现的。博士才是招过去做算法优化,算法理论推导的多。普通程序员不懂机器学习算法的,以前没有系统做过这方面研究的,做起实现来还是很难的,因为牵扯到算法的理解。做机器学习,人工智能方面的东西还是要有这方面的基础。所以,才需要招有这方面背景的人来做算法实现。


而做算法实现,就需要牵扯到coding能力了,机器学习很多算法也都用了算法导论里面的东西,比如二叉树,图,Hash等这些都会在实际中遇到的。而且现在算法岗需要用C++和Java的比较多,python也有,貌似少一点。这也牵扯到CS基础能力,对语言的理解程度,算法复杂度等等问题。C++大把大把的坑需要你去踏过长教训(说多都是泪)。。。所以,为了好工作,以后上手快,我觉得你需要学的东西其实挺多。。。

1.机器学习算法方面,就多刷论文,发paper(这个含金量高);

2.算法导论还是要刷,数据结构这完全就是程序员标配!这本书1个月你就能刷完了,研究生时间大把大把的,你要是一天在实验室呆10个小时刷这本书,你一个礼拜就刷的很详细了;

3.程序语言也最好选一个,python最简单入门,Java其次,C++最坑(在坑里出不来了,泪),多写代码,多调试,这个很重要,如何快速定位bug!

我觉得2,3学好了,哪怕你木有找到算法岗的好职位,也能当个很好的程序员了。。。

研究生3年,时间很长也很短,在学校最宝贵的其实就是时间;现在让我回学校,我觉得我一整天都会想着去啃书,啃算法导论,啃C++,啃大把大把的论文,学英语,学数学。。。时间真的是最最宝贵的,而且你会觉得真的努力去学了,时间根本不够用。。。学的越多,不知道的越多,越想学,然后“恶性循环”!


3

帖子

10

回复

12

积分
最后登录:
2025-04-05 17:22
注册时间:
2024-07-11 15:29
2 楼
  发表于:2025-04-05 18:48:00|查看用户信息

满肚子若只有各种算法数学公式,当你真需要开展项目的时候你会发现无法入手,简单的数据处理的问题就能搞死你,别说复杂算法的实现了,再跟着是效率,一大堆问题。


你工作了,就没有了你上课时那样的便利了,不是调个包跑个R就行了,大多数需要开发的东西是需要硬code的。


没有软件工程师的基本加点,在机器学习应用上寸步难行。除非你单纯搞算法,phd大神,那当我没说过。


1

帖子

5

回复

6

积分
最后登录:
2025-04-05 17:44
注册时间:
2023-11-21 21:54
3 楼
  发表于:2025-04-05 18:48:54|查看用户信息

一定是需要掌握的哦,因为:

1.传统机器学习,在使用python,R或MATLAB开发时,若调用现成库,数据结构用到的不多,若需要对库做二次开发,做各种优化,那么为了运算效率,数据结构就大有用武之地。


2. 在深度学习技术做应用时,大多直接调用现成的算法包,比如梯度下降算法中各种optimizer,只需了解optimizer的基本原理,并不需特别太关注optimizer的具体实现,研究人员应该把时间精力多用在论文学习,关注模型本身即可。而在这些optimizer算法具体实现中,为了计算效率,往往对数据结构有较高的要求,当研究人员做最基础算法包开发,这些数据结构的知识也是必不可少的。


3. 传统数据结构有用在:哈弗曼树在自然语言处理领域中hierarchical softmax模型有应用。一些聚类问题中也会用到最小生成树这种数据结构,等等。而这些一般都封装在算法包中,供人调用。


4

帖子

3

回复

7

积分
最后登录:
2025-04-05 16:58
注册时间:
2023-03-11 23:29
4 楼
  发表于:2025-04-05 18:50:10|查看用户信息

要不要学“基础算法“完全看这题主到底想找什么样的机器学习相关的工作吧?

我最近在找工作的来着。。大概有三种调调吧。。题主你看着自己的技能点,时间和学历选选有针对性的加强呗。。

1)纯research向找工作基本不考coding啊。。。就算考也是让你实现一下precision recall,AUC,之类的。。。重点是project,各种东西的基本原理以及大量的公式推导。。。

2)R&D基本还是有部分coding的,刷题就够了。。。目前大概多数是一半一半的考。。。

3)SDE就纯coding 了,视你申请的职位级别而定,考的可能很基础也可能特别恐怖。。你之前做的项目什么dl的只是个加分点,可能面试官连问都不会问的。。。

最后加点自己的废话:

编程方面我一直是个渣渣,所以对coding好的人有莫名强烈的崇拜感,这事儿从我以前的回答里大概都有体现。


5

帖子

9

回复

12

积分
最后登录:
2025-04-05 14:32
注册时间:
2023-05-19 10:16
5 楼
  发表于:2025-04-05 18:50:55|查看用户信息

我不懂机器学习,只懂基本算法和数据结构。我很好奇,如果没有学明白基本算法和数据结构,真的能够理解机器学习吗?

5

帖子

3

回复

7

积分
最后登录:
2025-04-05 17:01
注册时间:
2023-04-19 17:20
6 楼
  发表于:2025-04-05 18:52:40|查看用户信息

谈一点个人看法,需要掌握小部分,传统的算法和数据结构能够对机器学习的算法实现和设计起到优化作用,提升计算效率,能够让程序更快的运行机器学习算法。


传统算法侧重点是计算复杂度和数据结构,实现最优解方案,并且这个解是精确的,得出一个最优的计算过程,传统的算法是建立在离散数学的基础上的。


机器学习的侧重点是建立模型,这套模型的算法能够对训练数据进行数据好坏判断和数据规律总结,并得出数据和模型的表达形式,建立在统计学的基础上(本质上是大规模非线性问题)


所以可以看到,传统的算法可以优化机器学习的训练数据,来提升机器学习模型的计算效率,举个例子:

目前语音识别都用到了DNN模型,但语音识别需要处理大量的原始数据,如果数据量很大,那么后续的处理速度会很慢,而DNN的BackPropagation算法并不适合并行处理,想要加速训练速度,这个时候用传统算法对这部分原始数据进行结构优化,大大的优化训练数据,这样子就能提升处理速度。


所以,学习深度学习,可以学习部分传统算法,但并不需要掌握太多,毕竟二者区别已经很大了


共 1/1 页

0

帖子

0

回复

0

积分
最后登录:
1970-01-01 08:00
注册时间:
1970-01-01 08:00
会员必须登录才能发布帖子! 点击登录