深度学习学完可以从事什么工作?

2020-08-20 10:48发布

2条回答
小叮当
2楼 · 2020-08-20 11:03

学习深度学习课程之后,可以从事的工作有很多。

如:人工智能算法工程师、深度学习算法工程师、计算机视觉工程师、深度学习训练工程师、图像处理算法工程师、自然语言处理算法工程师、智能制造算法工程师、强化学习工程师等等。


007
3楼 · 2020-09-01 08:59







从一句代码都不会写,慢慢接触数据分析花了半年,然后学习机器学习、深度学习、自然语言处理又花了半年多,虽然标题写的是深度学习的学习心得,但其实更多是这一年多的时间里,关于编程、模型等等的学习的回顾和反思。

首先我本科学的是数学,不过说实话学得也不好,很多知识理论考完试就忘了,印象最深的只有实变函数,因为难得逆天,所以实际上,我的背景就是数学学得不好,编程也没怎么接触过(除了用过matlab做数学建模),这样的我却因为一些巧合去了一家企业实习做数据分析,开始正式学习编程。

当时的老板对我也是非常好的,他给我定下了一个半年计划(因为我就实习半年),首先从数据库开始学习数据的预处理,然后学习Java,通过Java连接数据库做一些复杂逻辑的数据处理,同时结合python做分析,这是主线。另一方面,因为当时公司想要做一个交通大数据平台,所以还涉及到前端方面的知识、数据接口之类的东西,这些也要学,不过这些就是其他同事的工作,我就是偷一下师。

这个计划现在看来是非常合理的,主要在于学习的顺序,我认为一个合理的学习顺序对于最终的效果有很大的影响,可以看到,首先学习mysql,语句十分简单,很适合作为一个变成零基础的人入门,然后是学习Java而不是python,我个人觉得python虽然写起来简单,但不够"规范",比如说用python输出一个语句只用一个print就足够了,Java却要写一大堆东西,但那些东西没有意义吗,恰恰相反,它们其实反映了面向对象编程的思想,只是python隐藏了这些东西。所以我觉得如果想要系统学习编程,python并不是一个好的选择(当然,做深度学习的话或许学习C++和python更好,不过那就是后话了)

另一方面,我觉得学习如果想要效率高,最主要的就是要有目的,少点纠结细节,少看书,多实践。这是老板给我的建议,比如说数据库,如果买一本书来看,几百页,看完都一个月过去了,而且对一个编程零基础的人来说,看完估计也是什么都不懂,所以最实际的方法就是在网上搜教程,最简单的sql教程,大概看一下,然后就直接上手,当时我以处理数据为目的,根据需求想办法写出sql语句,想不出来就谷歌,这样几天下来,很容易就熟悉了。

后来我也继续跟着老板做一些大规模数据挖掘和机器学习的内容,然后就进了机器学习的坑,关于机器学习,我个人觉得还是那两点心得,制定一个合理的学习顺序,以及少看书,多看博客。什么是合理的学习顺序,就是比如你不能跳过机器学习直接学深度学习的模型,只有深入理解了线性回归、逻辑回归,才能更好地理解神经网络,像这样一步一步踏实地学习,总是没错的。除此之外,我觉得学习一个模型,很重要的一点就是要自己推导一遍公式,用代码实现一次模型,然后写一篇文章记录下来,只有你能够向别人解释清楚这个模型是什么,这才算真正掌握了一个模型,所以虽然这个过程会耗费很多时间,但我也一直在坚持,一直写博客。

后来,我决定做自然语言处理,又找到了一些新的心得。首先,当你学习的内容慢慢变得前沿,你会发现书肯定是没用的了,因为特别是深度学习这个领域,每年都会出现一个甚至几个有很大突破的模型,即使你买了一本上年出的书,你也会发现它很多内容都是过时的,而且书本讲的都是差不多的内容,最重要的是根本就不够深入!然后就看博客吧,可是还是那个问题,当你学习的内容变得前沿,学的人就会慢慢变少,其中写博客的人就更少了,所以你会发现,比如你想搜一些ESIM模型的文章,好像全网都是同一篇文章相互引用。

这时候就需要看论文了,其实我们可以把论文看成更加严谨的博文,你看博客可能会有小错误,但是论文基本上是不存在的,而且其实论文也写得很详细的,每个细节都会讲解清楚,可能就是有时候不够博客通俗易懂而已,对英语的要求也更高一点。

除此之外,论文也能让你了解到目前学术界的发展进程,比如说,你想学习CNN,然后上网搜文章,感觉学了好多,但其实说的都是上个世纪提出的LeNet,后面已经提出了GoogLeNet、ResNet、DenseNet等等一大堆模型了,可是你不看论文你是不会知道的,或者说你会经常看到这些词,但你并不知道这些原来是CNN的改进版本,也不清楚它的发展历史。

最后,看论文还有一个好处,就是拓展思路,每篇论文其实都包含了这个研究方向的一个综述,也会写到研究团队的改进思路,这些都是很宝贵的东西,在阅读过程中,你就会慢慢发现原来之前觉得很厉害的LSTM其实还是会有短期记忆的问题,原来Transformer就是为了改进LSTM这个缺点用multi-headattention替换所有RNN、LSTM而提出的,诸如此类的,明白不同模型的优缺点,不同模型是如何改进的,这些都对研究有很大的帮助。

所以总的来说,如果现在给我一个新的知识点,我会怎么学习呢,首先就是看博客,看有没有写得比较好的博文,然后就是看相关的论文,再把自己的理解记录下来,写成文章,这样也能帮助到其他需要学习的人,最后,再用代码实现。

关于代码实现模型这一块,我也说一下自己的一些习惯,首先,虽然自己从头开始写一个模型可以深刻地理解它,但耗费的时间实在太多了,所以我往往会在github上下载代码,一般这样下载下来的代码是比较完整的,有很多功能的,然后我就会删减代码,简化代码的好处就在于能让你初步了解实现这个模型的核心模块,同时能理顺整个模型实现的思路,避免其他功能的干扰,比如说你想学习一个简单的全连接神经网络结构,下载了代码发现作者在神经网络的基础上又加入了dropout、残差连接等等,这些结构能让模型效果更好但却不是最核心的模块,所以你就可以删掉它们了,在分析哪些可以删除哪些不可以的时候,你自然就明白了整个模型的思路了。

之后,我会在代码上写注释,分析出每一步的作用,每一步是如何实现的。最后,如果想要更深刻的理解模型,我就会选择把这个模型应用到其他问题上,比如我现在有一个用于图像分类的CNN,那么我就会想办法把它改成用于文本分类的CNN,改动不大,但是实际改完你就会发现对模型的理解又更深了。

以上就是我这一年多时间学习编程、深度学习的一些小小经验,如果能够带给正在烦恼如何入门的你们一些小小的帮助就好。


最近本人在github写了一个自然语言处理的入门教程,包括模型的代码和模型的分析介绍,欢迎交流:NLPBeginner



想浏览更多关于数学、机器学习、深度学习的内容,可浏览本人博客




相关问题推荐

  • 回答 3

    换行。比如,print hello\nworld效果就是helloworld\n就是一个换行符。\是转义的意思,'\n'是换行,'\t'是tab,'\\'是,\ 是在编写程序中句子太长百,人为换行后加上\但print出来是一整行。...

  • 回答 42

    十种常见排序算法一般分为以下几种:(1)非线性时间比较类排序:a. 交换类排序(快速排序、冒泡排序)b. 插入类排序(简单插入排序、希尔排序)c. 选择类排序(简单选择排序、堆排序)d. 归并排序(二路归并排序、多路归并排序)(2)线性时间非比较类排序:...

  • 回答 70
    已采纳

    前景很好,中国正在产业升级,工业机器人和人工智能方面都会是强烈的热点,而且正好是在3~5年以后的时间。难度,肯定高,要求你有创新的思维能力,高数中的微积分、数列等等必须得非常好,软件编程(基础的应用最广泛的语言:C/C++)必须得很好,微电子(数字电...

  • 回答 28

    迭代器与生成器的区别:(1)生成器:生成器本质上就是一个函数,它记住了上一次返回时在函数体中的位置。对生成器函数的第二次(或第n次)调用,跳转到函数上一次挂起的位置。而且记录了程序执行的上下文。生成器不仅记住了它的数据状态,生成器还记住了程序...

  • 回答 9

    python中title( )属于python中字符串函数,返回’标题化‘的字符串,就是单词的开头为大写,其余为小写

  • 回答 6

    第一种解释:代码中的cnt是count的简称,一种电脑计算机内部的数学函数的名字,在Excel办公软件中计算参数列表中的数字项的个数;在数据库( sq| server或者access )中可以用来统计符合条件的数据条数。函数COUNT在计数时,将把数值型的数字计算进去;但是...

  • 回答 1

    head是方法,所以需要取小括号,即dataset.head()显示的则是前5行。data[:, :-1]和data[:, -1]。另外,如果想通过位置取数据,请使用iloc,即dataset.iloc[:, :-1]和dataset.iloc[:, -1],前者表示的是取所有行,但不包括最后一列的数据,结果是个DataFrame。...

  • Python入门简单吗2021-09-23 13:21
    回答 45

    挺简单的,其实课程内容没有我们想象的那么难、像我之前同学,完全零基础,培训了半年,直接出来就工作了,人家还在北京大公司上班,一个月15k,实力老厉害了

  • 回答 4

    Python针对众多的类型,提供了众多的内建函数来处理(内建是相对于导入import来说的,后面学习到包package时,将会介绍),这些内建函数功用在于其往往可对多种类型对象进行类似的操作,即多种类型对象的共有的操作;如果某种操作只对特殊的某一类对象可行,Pyt...

  • 回答 8

     相当于 ... 这里不是注释

  • 回答 4

    还有FIXME

  • 回答 3

    python的两个库:xlrd和xlutils。 xlrd打开excel,但是打开的excel并不能直接写入数据,需要用xlutils主要是复制一份出来,实现后续的写入功能。

  • 回答 8

    单行注释:Python中的单行注释一般是以#开头的,#右边的文字都会被当做解释说明的内容,不会被当做执行的程序。为了保证代码的可读性,一般会在#后面加一两个空格然后在编写解释内容。示例:#  单行注释print(hello world)注释可以放在代码上面也可以放在代...

  • 回答 2

    主要是按行读取,然后就是写出判断逻辑来勘测行是否为注视行,空行,编码行其他的:import linecachefile=open('3_2.txt','r')linecount=len(file.readlines())linecache.getline('3_2.txt',linecount)这样做的过程中发现一个问题,...

  • 回答 4

    或许是里面有没被注释的代码

  • 回答 26

    自学的话要看个人情况,可以先在B站找一下视频看一下

没有解决我的问题,去提问