深度学习算法工程师_深度学习工程师和机器算法工程师 - CSDN
精华内容
参与话题
  • 尤其是在就业一年比一年难的情况下,经历过好多次心态崩裂,也问过很多人,来总结一下如果想成为一个【深度学习 CV 算法工程师】需要什么学习能力和知识储备。 这个文章应该会是一个【记录】的文章,看看自己这一路...

    声明:

    1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献。
    2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。
    3)博主才疏学浅,文中如有不当之处,请各位指出,共同进步,谢谢。
    4)此属于第一版本,若有错误,还需继续修正与增删。还望大家多多指点。大家都共享一点点,一起为祖国科研的推进添砖加瓦。

    〇、写在前面

    在这里插入图片描述
    讲道理,其实这个博客我是怀着一个很严肃的心情准备写的,但是吧,一谈到【找工作】这个问题,我就很焦虑。。。。。。看到这个省略号了嘛?这就是我的心情 😐,尤其是在就业一年比一年难的情况下。为什么这么说?

    事实上19届秋招算法岗就有些【供过于求】了,头条甚至发了 算法劝退贴。而这很大程度上就是由于前几年算法就业形势太好了,导致一大批人转算法,这导致的大泡沫其实还没有消化掉,所以其实不是现在算法突然不好找工作了,而是之前太容易了。其实你说公司真的不缺算法工程师嘛?当然不是,公司也是有算法工程师的缺口的,那为什么出现这种情况?除了要劝退一部分盲目入行的同学;听到、遇到的好几个HR都说,收到几百份简历,但是没什么匹配的。所以说做算法的人多是真的,可是需要做算法的人也是真的,而主要的矛盾点在于 供需不匹配

    所以在经历过好多次心态崩裂,也问过很多前辈和大佬之后,参考了很多大佬的文章之后,我决定来总结一下如果想成为一个【深度学习算法工程师】需要什么学习能力和知识储备。这个文章应该会是一个【记录】性质的文章,期望看看自己这一路走来 学了什么准备学什么需要学什么,希望和各位共勉。

    一、编程能力

    这真是个老生常谈的问题,为什么这么说呢,自然是因为这个【编程能力】我听过不下几百遍,听的脑瓜子都疼,可是没法子,这就是 必备技能,必备到什么程度?

    这么说吧,假如你想写作文,如果你不会写字,组词,造句,我想你应该完全没法完成这个创作过程。很形象吧,但是也确实如此,仔细想一想,招你进去是要干活的,公司不会招聘一个只会 MATLAB 或者 python 都用不熟的人来做项目开发吧,做纯算法研究都不行。

    • MATLAB 大家都懂的,做实验室研究确实很棒,高效方便的矩阵和数组运算,画图方面也相当不错,但是工业应用还没听过谁说是用 MATLAB 实现的呢。
    • python 你可能想问为什么,可以这么说,如果连 python 这样比较简单的语言还用不熟,那真是无话可说。

    那么 具体地说,编程能力需要哪些基本要求呢?

    (1)熟练使用 linux

    在这里插入图片描述
    新手肯定都是用 Windows 起手的了,像我之前就是这样,但是在学习过程中发现在 Windows 上搞不定了,一般也会先忍几次,然后掉头就去学 linux 了,一定是这样的过程。哪些在 Windows 上真的搞不定呢?比如:最新论文中提出的视觉开源算法等等。

    但是在条件上可能很多人都觉得不是太合适,比如实验室条件,电脑条件等等,不过对我们而言,linux 并不需要了解太深。装个 ubuntu 系统,常用的文件操作、程序编译等知道就OK了。剩下的完全是在使用的过程中现用现学,手边常备一本书 《鸟哥的linux私房菜》,神书,你可以百度或者Google一下自然就知道这个书的强大了。在或者现在的网络比较强大了,资源也是很多,实验楼 也是一个不错的选择,帮你搭配好的环境,直接使用就OK了。如果还是想自己搞一下,虚拟机也是一个不错的选择,不会影响你电脑本来的环境配置,但是还满足了要求。

    个人计划

    • 《鸟哥的linux私房菜》
    • 实验楼

    (2)熟练使用 python

    在这里插入图片描述
    网络如此发达的今天,如果你说你找不到资源我是不相信的,但是如果你说你眼花缭乱了,我是毫不质疑的。因为我当时就就是这样的,基础部分看廖雪峰的 python教程 就可以了,我个人有看一些,但是真正入门的是一本书——《Python编程:从入门到实践》,极其的基础,但是对小白来说非常友好。

    有的同学会问是学 python2 还是 python3?这么说吧,python 核心团队计划2020年停止支持 python2,也就是说 python2 马上就要说再见了,肯定还是学 python3,遇到之前的 python2 的代码再查找区别即可。python 学起来其实很简单,看别人代码的过程就是学习的过程。对于不熟悉的用法多搜下官方文档,如 pythonnumpypandasmatplotscikit-learn等等。

    python 的开发环境值得说一下,因为有太多选择,这里比较建议使用 pycharm 和 jupyter notebook 吧,具体可以参考这个博客——Windows10 下 Anaconda和 PyCharm 的详细的安装教程(图文并茂)

    个人计划

    • 《Python编程:从入门到实践》
    • 《疯狂Python讲义》

    (3)流畅使用 C++

    在这里插入图片描述
    至于 C++,比较普遍的都是 《C++ primer》《C++ primer plus》 这样的大块头书,如果是入门的话应该还可以,倒是不如 《王道程序员求职宝典》 这类书实用。大块头书优点在于全面,同时也往往导致了重点不突出。如果想看视频课程的话,推荐中国慕课上北大的《程序设计与算法》,第1门课程是 C 语言程序设计,第2门课程是算法基础,第3门课程是 C++ 程序设计。看视频课程一般比较慢,如果没什么基础或者特别想把基础学好的话,强烈推荐。

    个人计划

    • 《C++ primer》
    • 《C++ primer plus》
    • 程序设计与算法课程(一)
    • 程序设计与算法课程(三)

    (4)良好的算法基础

    在这里插入图片描述
    其实没做过检测或者分割或者其他的,是很正常的,快速跟进就是了,这是公司开发的常态。但是如果一些网络结构基础,图像的基础概念,卷积神经网络的基础——大话卷积神经网络CNN(干货满满),等等,这样很可能会犯很多低级错误,可能会出现很多问题。

    这就要求开发能力必须过关,因为算法效率在实际生产中还是有要求的。工业界用的算法是滞后于学术界好几年的,不要对公司所做的算法有太多的幻想,现实数据比你想的质量差太多,现实用的算法也没有那么高端,大部分时间都不是用在建模。

    个人计划

    • LeetCode
    • 牛客网
    • 《剑指offer》

    python:

    • 《算法图解》
    • 《用Python解决数据结构与算法问题》
    • 《数据结构与算法 Python语言描述》

    C++:

    • 《啊哈!算法》
    • 程序设计与算法课程(二)
    • 《算法导论中文第三版》(这是本神书。。。)

    (5)良好的编程习惯

    在这里插入图片描述
    这里说的习惯有:多使用类,多利用函数封装,写好项目的目录结构,良好的变量或者函数命名,善用程序的注释功能,Python 编程语言需要遵循 PEP8 规范(杂谈——Python代码写得丑怎么办?autopep8来帮你)等等。这可以帮助你更好的和同事或者同行沟通,而且看着也舒服,就算好久不看程序了,依然可以做到很好的回溯记忆。

    二、深度学习理论

    在这里插入图片描述
    基于深度学习的计算机视觉是计算机视觉的两大方向之一,另一个是 SLAM,机器学习包括深度学习里的大部分算法本质上都是用来做 分类 的。具体到计算机视觉领域一般就是 物体分类(Object Classification)目标检测(Object Detection)语义分割(Image Semantic Segmentation) 等,当然也有一些很酷又好玩的东西比如 edges2catsdeepart 等等。

    我主要做一些【图像重建】或者【超分辨率】相关的东西。其实一般是看一看论文,复现复现网络结构,或者直接跑一跑别人的代码,做一做网络结构修改,调一调超参数。前期的图像数据集制作,还有预处理才是主要的工作。深度学习为什么这么强?它比传统的图像处理方法好吗?它主要解决了什么样的问题呢?

    个人比较认同是以下三点:学习特征的能力很强,通用性强,开发优化维护成本低。存在的问题可能就是数据量,对 label 的精准性要求比较大。之前看过的一个文章写得不错,参见 为什么深度学习几乎成了计算机视觉研究的标配?

    关于这一部分理论的学习,漫天飞的各种资源。这里推荐一些:

    个人计划

    • 《一天搞懂深度学习》
    • CS231N课程
    • Deep Learning AI课程
    • 《DeepLearning深度学习花书》
    • 《Tensorflow+实战Google深度学习框架》
    • 《图解神经网络与深度学习》
    • 《PyTorch深度学习实战》
    • 《Python 深度学习(Keras)》
    • 《深度学习之Pytorch》
    • 《深度学习框架PyTorch》
    • 《PaddlePaddle与深度学习应用实战》
    • 《动⼿学深度学习》
    • 《深度学习之PyTorch实战计算机视觉》
    • 经典深度学习论文

    三、g++, CMake和Makefile

    在这里插入图片描述
    python 是脚本语言,而当前大量的 AI 算法都部署在移动端嵌入式平台,需要使用 c / c++ / java 语言,g++,CMake 和 Makefile 正是 Linux 下编译 C系代码 的工具,也是必备的基础。实际上一些python,matlab开源项目也需要预编译,更多的等到了工作岗位自然懂。

    个人计划

    • g++
    • CMake
    • Makefile

    四、shell,vim 和 git

    在这里插入图片描述
    Linux 下一个熟练的工程师,会比 Windows 下工作效率高很多,提高写代码效率可以从终端多任务管理,熟练使用 shell 命令,熟练使用 vim 等开发环境,熟练使用 git 命令等地方入手。

    • shell 命令是 Linux 的操作基础,也是学习使用 Linux 的开始,而慢慢熟悉高级的 shell 命令在将来的工作中会带来很大的效率提升。
    • vim 是 Linux 下最常用的编辑器,从小白到高手都可以使用,而它的列编辑,查找替换,自动补全等功能都是效率的保证,或许从visual studio等环境切换过来的同学刚开始会有些许不适应,但是时间久了就会越来越明白 vim 的好。
    • git 是程序员必备的素养,慢慢学会维护几个自己的代码库,等到将来出问题的时候就明白了。

    个人计划

    • shell
    • vim
    • git

    五、python 爬虫

    在这里插入图片描述
    深度学习项目开发中最重要的就是 数据!!!或许是一句戏言,但是有一句话是这么说的,深度学习在目前阶段可以认为是一个数据的游戏,你的数据更好,标记的更完美,你的运行结果就更棒。尤其是实际的项目经常没有足够多的数据,这个时候就需要自己去想办法获取了。除了公开的数据集之外,其他的数据怎么获得呢?互联网是一个什么资源都有的大宝库,学会使用好爬虫,你将可能成为时代里最有资源的人,我想叫你金矿工,而且这也很可能是项目成功的开始。

    个人计划

    • 网络爬虫
    • 《Python项目案例开发从入门到实战——爬虫、游戏和机器学习》

    六、数据可视化

    在这里插入图片描述
    处理数据的一个常用的手段就是数据可视化!在深度学习项目中,常需要的数据可视化操作包括原始图片数据的可视化,损失和精度的可视化等。除了对数据可视化,还需要对模型进行可视化,方便调试和感知。

    这个方面我的建议是多打一些比赛,多看一看别人的代码和博客,这样就会很容易学会的。

    个人计划

    • Kaggle
    • 天池

    七、数学基础

    在这里插入图片描述

    • 微积分:其实个人感觉涉及的微积分知识相对简单,积分很少,微分也不是特别复杂,花一天时间学一学就行。

    • 概率论与统计:这个比较高深,是应用在机器学习领域里最重要的数序分支。应用比如:条件概率、相关系数、最大似然、大数定律、马尔可夫链等等,还是得好好搞一下概率。

    • 线性代数:数字图像本身就是以矩阵的形式呈现的,多个向量组成的样本也是矩阵这种形式非常常见,大多机器学习算法里每个样本都是以向量的形式存在的,多个矩阵叠加则是以张量(tensor)的形式存在 Google 深度学习库 TensorFlow 的字面意思之一。

    • 凸优化:这个需要单独拎出来说一下。因为太多问题(尤其机器学习领域)都是优化问题(求最优),凸优化是里面最简单的形式,所以大家都在想办法怎么把一般的优化问题转化为凸优化问题。至于单纯的凸优化理论,好像已经比较成熟了。在机器学习里,经常会看到什么求对偶问题、KKT条件等,潜下心花两天学一学。

    数学知识真的没必要系统学习,效率低又耗时,毕竟大家都有本科或者研究生的基础了,这就足够了。用的最多的就是矩阵论!!!或者用到的时候学,学完之后总结一下。再就是活学活用网上的搜索资源,比如 CSDN、知乎等等。

    个人计划

    八、公众号

    时代变了,一百年前的人类绝对想像不出自己有了困惑不是去翻书或请教他人而是告诉身旁的一台机器。如今,小学生做道算术题或小女生来个大姨妈都要问问电脑:这是怎么回事。但这些与学视觉又有什么关系呢?——答:没有。好像跑偏的有点多了,再扯远一点吧。跨越时间维度来思考一些新事物的发生及其与旧事物的联系,也许会给你一种想象的自由。比如电报、电话、视频聊天和全息通话用 HoloLens 通话,再比如马车、汽车、火车、飞机和火箭太空旅行,蒸汽机、电、互联网和AI。所以活用资源,多看肯定没错,不过要有所选择的看,不能啥都看,,,人的精力还是优先的。

    先说明公众号不是打广告,推荐几个自己看的而已(排名没有先后顺序)。

    • 机器学习实验室
    • 磐创AI
    • kaggle竞赛宝典
    • 有三AI
    • 我爱计算机视觉
    • Datawhale
    • 计算机视觉life
    • CVer
    • 小小挖掘机

    九、彩蛋

    看一下目录,你会发现它向一把小刀一样,是不是?希望你我能剑锋所指,所向披靡!!!

    推荐一个自己写的博客——大话卷积神经网络CNN(干货满满),种树从现在开始。

    在这里插入图片描述

    如果有幸帮到你,请帮我点个【赞】,给个【关注】!如果能顺带【评论】给个鼓励,我将不胜感激。

    如果想要更多的资源,欢迎关注 @我是管小亮,文字强迫症MAX~

    回复【福利】即可获取我为你准备的大礼,包括C++,编程四大件,NLP,深度学习等等的资料。

    想看更多文(段)章(子),欢迎关注微信公众号「程序员管小亮」~

    在这里插入图片描述
    学习AI可以看一下这个课程!
    在这里插入图片描述

    参考文章

    展开全文
  • 公众号推荐推荐人/文文俗话说,一个人走得快,但一群人可以走的远。在数据科学和机器学习的道路上,相信每个人都不是闭门造车的人。技术学习除了在个人努力外,交流和分享也是很重要...
        

    公众号推荐

    640?wx_fmt=jpeg

    推荐人/文文

    俗话说,一个人走得快,但一群人可以走的远。在数据科学和机器学习的道路上,相信每个人都不是闭门造车的人。技术学习除了在个人努力外,交流和分享也是很重要的一部分。

    今天给大家推荐的微信公众号「机器学习实验室」,一个以机器学习和深度学习为主题的,包括但不限于爬虫与数据采集、数据分析与数据挖掘、统计与数据可视化、R语言与Python学习的个人数据技术学习的公众号。

    该公众号适合以下群体:

    • 数据科学相关爱好者。

    • 机器学习与深度学习算法从业者。

    • 数学统计与计算机相关专业老师和同学。

    号主简介

    机器学习实验室的号主作为一名统计专业的硕士毕业生,一路从数据分析师进阶到深度学习算法工程师。现于杭州一家AI初创公司担任深度学习算法工程师,主要研究方向为计算机视觉。号主在数据科学和机器学习的各个方向均有所涉及,尤其对机器学习和深度学习钻研颇丰。曾参与狗熊会团队编写的《R语言:从数据思维到数据实战》一书。目前也正在撰写《深度学习笔记》一书,预计于年底出版。

    640?wx_fmt=png

    《R语言 从数据思维到数据实战》

    公号内容

    机器学习实验室公众号内容丰富,已经发表高质量原创文章 130 余篇,主要覆盖以下方面内容:

    1. 机器学习:主要包括主流机器学习算法的数学推导和Python手写实现。

    机器学习算法手推系列(更新中):

    数学推导+纯Python实现机器学习算法1:线性回归

    数学推导+纯Python实现机器学习算法2:逻辑回归

    数学推导+纯Python实现机器学习算法3:k近邻

    数学推导+纯Python实现机器学习算法4:决策树之ID3算法

    数学推导+纯Python实现机器学习算法5:决策树之CART算法

    数学推导+纯Python实现机器学习算法6:感知机

    数学推导+纯Python实现机器学习算法7:神经网络

    数学推导+纯Python实现机器学习算法8:线性可分支持向量机

    数学推导+纯Python实现机器学习算法9:线性支持向量机

    数学推导+纯Python实现机器学习算法10:线性不可分支持向量机

    数学推导+纯Python实现机器学习算法11:朴素贝叶斯

    数学推导+纯Python实现机器学习算法12:贝叶斯网络

    数学推导+纯Python实现机器学习算法13:Lasso回归

    数学推导+纯Python实现机器学习算法14:Ridge岭回归

    2. 深度学习:包括对吴恩达deeplearningai系列五门课、cs231n、cs224d等课程的学习笔记系列。对DNN、CNN、RNN等主流神经网络和计算机视觉、自然语言处理等技术均有详尽文章。

    深度学习60讲系列:深度学习第60讲:深度学习笔记系列总结与感悟

    深度学习100问系列(更新中):

    深度学习100问-1:深度学习环境配置有哪些坑?

    深度学习100问-2:深度学习应掌握哪些Git开发技术?

    深度学习100问-3:深度学习应掌握哪些Linux开发技术?

    深度学习100问-4:深度学习应遵循怎样的论文研读路线?

    深度学习100问-5:如何阅读一份深度学习项目代码?

    深度学习100问-6:有哪些经典的卷积类型?

    3. R语言:包括R语言数据分析、ggplot2数据可视化、R语言爬虫等内容。

    R语言:R语言兵器谱:数据科学家的十八般武艺

    4. Python:包括Python爬虫、Python编程特性、数据结构等内容。

    Python:Python爬虫的两套解析方法和四种爬虫实现

    5. 论文研读:包括对计算机视觉(图像识别、目标检测、语义分割和实例分割)和自然语言处理等领域经典论文的研读和复现。

    图像分类和图像分割经典论文研读:

    深度学习第34讲:图像语义分割经典论文研读之 FCN 全卷积网络

    深度学习第35讲:图像语义分割经典论文研读之 u-net

    深度学习第36讲:图像实例分割经典论文研读之 Mask R-CNN

    6. 技术综述:包括对机器学习和深度学习各研究方向的技术综述:

    深度学习第24讲:计算机视觉之目标检测算法综述

    深度学习第33讲:CNN图像语义分割和实例分割综述

    深度学习第49讲:语音识别综述——从概念到技术(上)

    深度学习第50讲:语音识别综述——从概念到技术(下)

    7. 经验感想:主要包括个人学习、工作经验总结和技术观念等:

    2019上半年,我成为了一名深度学习算法工程师

    数据分析入行半年之经验、感悟与思考

    一个统计数据人的职业生涯第一年

    号主的志向:

    数据热爱者。坚信数据技术和代码改变世界。机器学习和深度学习修炼中。进击的coder。为成为一名未来的数据科学家而奋斗终生。

    正在学习机器学习的你千万不要错过哦!

    640?wx_fmt=jpeg

    展开全文
  • 怎样成为一名优秀的算法工程师

    万次阅读 多人点赞 2019-10-21 15:04:01
    其它机器学习、深度学习算法的全面系统讲解可以阅读《机器学习-原理、算法与应用》,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造。 书的购买链接 书的勘误,优化,源代码资源 原创声明:本文为 SIGAI 原创...

    其它机器学习、深度学习算法的全面系统讲解可以阅读《机器学习-原理、算法与应用》,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造。

    原创声明:本文为 SIGAI 原创文章,仅供个人学习使用,未经允许,不得转载,不能用于商业目的。

    怎样成为一名优秀的算法工程师?这是很多从事人工智能学术研究和产品研发的同学都关心的一个问题。面对市场对人才的大量需求与供给的严重不足,以及高薪水的诱惑,越来越多的人开始学习这个方向的技术,或者打算向人工智能转型。市面上各种鱼龙混杂的培训班以及误导人的文章会把很多初学者带入歧途,浮躁的跟风将会让你最后收获甚微,根本达不到企业的用人要求。为了更好的帮助大家学习和成长,少走弯路,在今天的文章里,SIGAI的作者以自己的亲身经历和思考,为大家写下对这一问题的理解与答案。

    首先来看一个高度相关的问题:一个优秀的算法工程师必须具备哪些素质?我们给出的答案是这样的:

    数学知识

    编程能力

    机器学习与深度学习的知识

    应用方向的知识

    对自己所做的问题的思考和经验

    除去教育背景,逻辑思维,学习能力,沟通能力等其他方面的因素,大多数公司在考察算法工程师的技术水平时都会考虑上面这几个因素。接下来我们将按照这几个方面进行展开,详细的说明如何学习这些方面的知识以及积累经验。

     

    数学知识

    与其他工作方向如app、服务器开发相比,以及与计算机科学的其他方向如网络,数据库,分布式计算等相比,人工智能尤其是机器学习属于数学知识密集的方向。在各种书籍,论文,算法中都充斥着大量的数学公式,这让很多打算入门的人或者开始学习的人感到明显的压力。首先我们考虑一个最核心的问题:机器学习和深度学习究竟需要哪些数学知识?在SIGAI之前的公众号文章“学好机器学习需要哪些数学知识”里,我们已经给出了答案。先看下面这张表:

    算法或理论 用到的数学知识点
    贝叶斯分类器

    随机变量,贝叶斯公式,随机变量独立性,正态分布,最大似然估计

     

    决策树 概率,熵,Gini系数
    KNN算法 距离函数
    主成分分析 协方差矩阵,散布矩阵,拉格朗日乘数法,特征值与特征向量
    流形学习 流形,最优化,测地线,测地距离,图,特征值与特征向量

    线性判别分析

    散度矩阵,逆矩阵,拉格朗日乘数法,特征值与特征向量
    支持向量机 点到平面的距离,Slater条件,强对偶,拉格朗日对偶,KKT条件,凸优化,核函数,Mercer条件
    logistic回归 概率,随机变量,最大似然估计,梯度下降法,凸优化,牛顿法
    随机森林 抽样,方差
    AdaBoost算法 概率,随机变量,极值定理,数学期望,牛顿法
    隐马尔可夫模型 概率,离散型随机变量,条件概率,随机变量独立性,拉格朗日乘数法,最大似然估计
    条件随机场 条件概率,数学期望,最大似然估计
    高斯混合模型 正态分布,最大似然估计,Jensen不等式
    人工神经网络 梯度下降法,链式法则
    卷积神经网络 梯度下降法,链式法则
    循环神经网络 梯度下降法,链式法则
    生成对抗网络 梯度下降法,链式法则,极值定理,Kullback-Leibler散度,Jensen-Shannon散度,测地距离,条件分布,互信息
    K-means算法 距离函数
    强化学习 数学期望,贝尔曼方程
    贝叶斯网络 条件概率,贝叶斯公式,图
    VC维 Hoeffding不等式

                                                 更多算法工程师的必读文章,请关注SIGAICN公众号

    上面的表给出了各种典型的机器学习算法所用到的数学知识点。我们之前已经总结过,理解绝大多数算法和理论,有微积分/高等数学,线性代数,概率论,最优化方法的知识就够了。除流形学习需要简单的微分几何概念之外,深层次的数学知识如实变函数,泛函分析等主要用在一些基础理论结果的证明上,即使不能看懂证明过程,也不影响我们使用具体的机器学习算法。概率图模型、流形学习中基于图的模型会用到图论的一些基本知识,如果学习过离散数学或者数据结构,这些概念很容易理解。除此之外,某些算法会用到离散数学中的树的概念,但很容易理解。

    如果你已经学过这些大学数学课,只要把所需的知识点复习一遍就够了。对于微积分,通俗易懂而又被广为采用的是同济版的高等数学:

     

     

    在机器学习中主要用到了微分部分,积分用的非常少。具体的,用到了下面的概念:

    导数和偏导数的定义与计算方法,与函数性质的关系

    梯度向量的定义

    极值定理,可导函数在极值点处导数或梯度必须为0

    雅克比矩阵,这是向量到向量映射函数的偏导数构成的矩阵,在求导推导中会用到

    Hessian矩阵,这是2阶导数对多元函数的推广,与函数的极值有密切的联系

    凸函数的定义与判断方法泰勒展开公式

    拉格朗日乘数法,用于求解带等式约束的极值问题

    其中最核心的是多元函数的泰勒展开公式,根据它我们可以推导出梯度下降法,牛顿法,拟牛顿法等一系列最优化方法。如果你想要深入的学习微积分,可以阅读数学系的教程,称为数学分析:

     

    与工科的高等数学偏重计算不同,它里面有大量的理论证明,对于锻炼数学思维非常有帮助。北大张筑生先生所著的数学分析可谓是国内这方面教材的精品。

    下面来看线性代数,同样是同济版的教材:

    如果想更全面系统的学习线性代数,可以看这本书:

    相比之下,线性代数用的更多。具体用到的知识点有:

    向量和它的各种运算,包括加法,减法,数乘,转置,内积

    向量和矩阵的范数,L1范数和L2范数

    矩阵和它的各种运算,包括加法,减法,乘法,数乘

    逆矩阵的定义与性质

    行列式的定义与计算方法

    二次型的定义

    矩阵的正定性

    特征值与特征向量

    奇异值分解

    线性方程组的数值解

    机器学习算法处理的数据一般都是向量、矩阵或者张量。经典的机器学习算法输入的数据都是特征向量,深度学习算法在处理图像时输入的2维的矩阵或者3维的张量。掌握这些概念是你理解机器学习和深度学习算法的基础。

    概率论国内理工科专业使用最多的是浙大版的教材:

    如果把机器学习所处理的样本数据看作随机变量/向量,就可以用概率论的方法对问题进行建模,这代表了机器学习中很大一类方法。在机器学习里用到的概率论知识点有:

    随机事件的概念,概率的定义与计算方法

    随机变量与概率分布,尤其是连续型随机变量的概率密度函数和分布函数

    条件概率与贝叶斯公式

    常用的概率分布,包括正态分布,伯努利二项分布,均匀分布

    随机变量的均值与方差,协方差

    随机变量的独立性

    最大似然估计

    这些知识不超出普通理工科概率论教材的范围。

    最后来说最优化,几乎所有机器学习算法归根到底都是在求解最优化问题。求解最优化问题的指导思想是在极值点出函数的导数/梯度必须为0。因此你必须理解梯度下降法,牛顿法这两种常用的算法,它们的迭代公式都可以从泰勒展开公式而得到。

    凸优化是机器学习中经常会提及的一个概念,这是一类特殊的优化问题,它的优化变量的可行域是凸集,目标函数是凸函数。凸优化最好的性质是它的所有局部最优解就是全局最优解,因此求解时不会陷入局部最优解。如果一个问题被证明为是凸优化问题,基本上已经宣告此问题得到了解决。在机器学习中,线性回归、岭回归、支持向量机、logistic回归等很多算法求解的都是凸优化问题。

    拉格朗日对偶为带等式和不等式约束条件的优化问题构造拉格朗日函数,将其变为原问题,这两个问题是等价的。通过这一步变换,将带约束条件的问题转换成不带约束条件的问题。通过变换原始优化变量和拉格朗日乘子的优化次序,进一步将原问题转换为对偶问题,如果满足某种条件,原问题和对偶问题是等价的。这种方法的意义在于可以将一个不易于求解的问题转换成更容易求解的问题。在支持向量机中有拉格朗日对偶的应用。

    KKT条件是拉格朗日乘数法对带不等式约束问题的推广,它给出了带等式和不等式约束的优化问题在极值点处所必须满足的条件。在支持向量机中也有它的应用。

    如果你没有学过最优化方法这门课也不用担心,这些方法根据微积分和线性代数的基础知识可以很容易推导出来。如果需要系统的学习这方面的知识,可以阅读《凸优化》,《非线性规划》两本经典教材。

     

    编程能力

    编程能力是学好机器学习和深度学习的又一大基础。对于计算机类专业的学生,由于本科已经学了c语言,c++,数据结构与算法,因此这方面一般不存在问题。对于非计算机专业的人来说,要真正学好机器学习和深度学习,这些知识是绕不开的。

    虽然现在大家热衷于学习python,但要作为一名真正的算法工程师,还是应该好好学习一下c++,至少,机器学习和深度学习的很多底层开源库都是用它写的;很多公司线上的产品,无论是运行在服务器端,还是嵌入式端,都是用c++写的。此外,如果你是应届生,在校园招聘时不少公司都会面试你c++的知识。

    C++最经典的教材无疑是c++ primer:

    对做算法的人来说,这本书其实不用全部看,把常用的点学完就够了。对于进阶,Effective c++是很好的选择,不少公司的面试题就直接出自这本书的知识点:

    接下来说python,相比c++来说,学习的门槛要低很多,找一本通俗易懂的入门教程学习一遍即可。

    数据结构和算法是编写很多程序的基础,对于机器学习和深度学习程序也不例外。很多算法的实现都依赖于数组,链表,数,排序,查找之类的数据结构和基础算法。如果有时间和精力,把算法导论啃一遍,你会有不一样的感受:

    对于应届生来说,学完它对于你通过大互联网和人工智能公司校园招聘的技术面试也非常有用。

    上面说的只是编程语言的程序设计的理论知识,我们还要考虑实际动手能力。对于开发环境如gcc/g++,visual studio之类的工具,以及gdb之类的调试工具需要做到熟练使用。如果是在linux上开发,对linux的常用命令也要熟记于心。这方面的知识看各种具体的知识点和教程即可。另外,对于编程的一些常识,如进程,线程,虚拟内存,文件系统等,你最好也要进行了解。

     

    机器学习与深度学习

    在说完了数学和编程基础之后,下面我来看核心的内容,机器学习和深度学习知识。机器学习是现阶段解决很多人工智能问题的核心方法,尤其是深度学习,因此它们是算法工程师的核心知识。在这里有一个问题:是否需要先学机器学习,还是直接学深度学习?如果是一个专业的算法工程师,我的建议是先学机器学习。至少,你要知道机器学习中的基本概念,过拟合,生成模型,ROC曲线等,上来就看深度学习,如没有背景知识你将不知所云。另外,神经网络只是机器学习中的一类方法,对于很多问题,其他机器学习算法如logistic回归,随机森林,GBDT,决策树等还在被大规模使用,因此你不要把自己局限在神经网络的小圈子里。

    首先来看机器学习,这方面的教材很多,周志华老师的机器学习,李航老师的统计学习方法是国内的经典。这里我们介绍国外的经典教材,首先是PRML:

    此书深厚,内容全面,涵盖了有监督学习,无监督学习的主要方法,理论推导和证明详细深入,是机器学习的经典。此外还有模式分类这本书,在这里不详细介绍。

    深度学习目前最权威的教程是下面这本书:

    它涵盖了深度学习的方方面面,从理论到工程,但美中不足的是对应于介绍的相对较少。

    强化学习是机器学习很独特的一个分支,大多数人对它不太了解,这方面的教程非常少,我们推荐下面这本书:

    美中不足的是这本书对深度强化学习没有介绍,因为出版的较早。不知最新的版本有没有加上这方面的内容。

    在这里需要强调的是,你的知识要系统化,有整体感。很多同学都感觉到自己学的机器学习太零散,缺乏整体感。这需要你多思考算法之间的关系,演化历史之类的问题,这样你就做到胸中有图-机器学习算法地图。其实,SIGAI在之前的公众号文章“机器学习算法地图”里已经给你总结出来了。

     

    开源库

    上面介绍了机器学习和深度学习的理论教材,下面来说实践问题。我们无需重复造车轮子,熟练的使用主流的开源库是需要掌握的一项技能。对于经典的机器学习,常用的库的有:

    libsvm

    liblinear

    XGBoost

    OpenCV

    HTK

    Weka

    在这里我们不一一列举。借助于这些库,我们可以方便的完成自己的实验,或是研发自己的产品。对于深度学习,目前常用的有:

    Caffe

    TensorFlow

    MXNet

    除此之外,还有其他的。对于你要用到的开源库,一定要理解它的原理,以及使用中的一些细节问题。例如很多算法要求输入的数据先做归一化,否则效果会非常差,而且面临浮点数溢出的问题,这些实际经验需要你在使用中摸索。如果有精力把这些库的核心代码分析一遍,你对实现机器学习算法将会更有底气。以深度学习为例,最核心的代码无非是实现:

    各种层,包括它们的正向传播和反向传播

    激活函数的实现

    损失函数的实现

    输入数据的处理

    求解器,实现各种梯度下降法

    这些代码的量并不大,沉下心来,我相信一周之内肯定能分析完。看完之后你会有一种豁然开朗的感觉。

     

    应用方向的知识

    接下来是各个方向的知识,与机器学习有关的应用方向当前主要有:

    机器视觉

    语音识别

    自然语言处理

    数据挖掘

    知识图谱

    推荐系统

    除此之外,还有其他一些特定小方向,在这里不一一列举。这些具体的应用方向一般都有自己的教材,如果你以后要从事此方向的研究,系统的学习一遍是必须的。

     

    实践经验与思考

    在说完理论与实践知识之后,最后我们来说经验与思考。在你确定要做某一个方向之后,对这个方向的方法要有一个全面系统的认识,很多方法是一脉相承的,如果只追求时髦看最新的算法,你很难做出学术上的创新,以及工程上的优化。对于本问题所有的经典论文,都应该化时间细度,清楚的理解它们解决了什么问题,是怎么解决的,还有哪些问题没有解决。例如:

    机器视觉目标检测中的遮挡问题

    推荐系统中的冷启动问题

    自然语言处理中文分词中的歧义切分问题

    只有经过大量的编程和实验训练,以及持续的思考,你才能算得上对这个方向深刻理解,以至于有自己的理解。很多同学对自己实现轮上的算法没有底气,解决这个问题最快的途径就是看论文算法的开源代码,在github上有丰富的资源,选择一些合适的,研究一下别人是怎么实现的,你就能明白怎么实现自己的网络结构和损失函数,照葫芦画瓢即可。

    计算机以及人工智能是一个偏实践的学科,它的方法和理论既需要我们有扎实的理论功底,又需要有丰富的实践能力与经验。这两个方面构成了算法工程师最主要的素质。科学的学习路径能够让你取得好的学习效果,同时也缩短学习时间。错误和浮躁的做法则会让你最后事倍功半。这是SIGAI对想进入这个领域,或者刚进入这个领域的每个人要说的!

     

    推荐阅读

    [1] 机器学习-波澜壮阔40年 SIGAI 2018.4.13.

    [2] 学好机器学习需要哪些数学知识?SIGAI 2018.4.17.

    [3] 人脸识别算法演化史 SIGAI 2018.4.20.

    [4] 基于深度学习的目标检测算法综述 SIGAI 2018.4.24.

    [5] 卷积神经网络为什么能够称霸计算机视觉领域? SIGAI 2018.4.26.

    [6] 用一张图理解SVM的脉络 SIGAI 2018.4.28.

    [7] 人脸检测算法综述 SIGAI 2018.5.3.

    [8] 理解神经网络的激活函数 SIGAI 2018.5.5.

    [9] 深度卷积神经网络演化历史及结构改进脉络-40页长文全面解读 SIGAI 2018.5.8.

    [10] 理解梯度下降法 SIGAI 2018.5.11.

    [11] 循环神经网络综述—语音识别与自然语言处理的利器 SIGAI 2018.5.15

    [12] 理解凸优化 SIGAI 2018.5.18

    [13] 【实验】理解SVM的核函数和参数 SIGAI 2018.5.22

    [14] 【SIGAI综述】行人检测算法 SIGAI 2018.5.25

    [15] 机器学习在自动驾驶中的应用—以百度阿波罗平台为例(上) SIGAI 2018.5.29

    [16] 理解牛顿法 SIGAI 2018.5.31

    [17] 【群话题精华】5月集锦—机器学习和深度学习中一些值得思考的问题 SIGAI 2018.6.1

    [18] 大话Adaboost算法 SIGAI 2018.6.2

    [19] FlowNet到FlowNet2.0:基于卷积神经网络的光流预测算法 SIGAI 2018.6.4

    [20] 理解主成分分析(PCA) SIGAI 2018.6.6

    [21] 人体骨骼关键点检测综述 SIGAI 2018.6.8

    [22] 理解决策树 SIGAI 2018.6.11

    [23] 用一句话总结常用的机器学习算法 SIGAI 2018.6.13

    [24] 目标检测算法之YOLO SIGAI 2018.6.15

    [25] 理解过拟合 SIGAI 2018.6.18

    [26] 理解计算:从√2到AlphaGo ——第1季 从√2谈起 SIGAI 2018.6.20

    [27] 场景文本检测——CTPN算法介绍 SIGAI 2018.6.22

    [28] 卷积神经网络的压缩和加速 SIGAI 2018.6.25

    [29] k近邻算法 SIGAI 2018.6.27

    [30] 自然场景文本检测识别技术综述 SIGAI 2018.6.27

    [31] 理解计算:从√2到AlphaGo ——第2季 神经计算的历史背景 SIGAI 2018.7.4

    [32] 机器学习算法地图 SIGAI2018.7.6

    [33] 反向传播算法推导-全连接神经网络 SIGAI2018.7.9

    [34] 生成式对抗网络模型综述 SIGAI2018.7.11

     

     

    原创声明:本文为 SIGAI 原创文章,仅供个人学习使用,未经允许,不得转载,不能用于商业目的。

     

     

    展开全文
  • 深度学习的突破极大推动了人工智能的发展,并广泛应用在计算机视觉、自然语言处理等领域中。谷歌、百度的IDL、腾讯的AI lab、华为等都在重金布局人工智能,同时,以深度学习为核心技术的人工智能企业不断涌现,我们...

    深度学习的突破极大推动了人工智能的发展,并广泛应用在计算机视觉、自然语言处理等领域中。谷歌、百度的IDL、腾讯的AI lab、华为等都在重金布局人工智能,同时,以深度学习为核心技术的人工智能企业不断涌现,我们耳熟能详的有:格林深瞳、商汤科技、Face++、地平线、图森未来、依图科技、云从科技、极视角、中科慧眼、中科视拓、银河水滴等。

    据领英近日发布的《全球AI领域人才报告》显示,截至2017年一季度,基于领英平台的全球AI(人工智能)领域技术人才数量超过190万,其中美国相关人才总数超过85万,高居榜首,中国的相关人才总数为5万人,仅为美国的1/17,同时,国内人工智能人才缺口达到500多万,供求比例仅为1:10,供需严重失衡。

    作为人工智能最稀缺的人才之一,深度学习工程师面临近百万的缺口,成为了各大企业竞相争夺的香饽饽,年薪大都在20万-60万之间。越来越多的在职程序员、院校学生开始学习机器学习、深度学习算法。

    640?wx_fmt=png&wxfrom=5&wx_lazy=1

    深度学习岗位招聘(来自拉勾网)

    深度学习,作为机器学习的一类算法,为什么在诸多应用领域中的表现,远超传统的机器学习方法?它的原理或本质到底是什么?如何将深度学习模型应用到实际问题中?在实际问题中,深度学习模型又有哪些使用技巧?上述问题是初学者经常遇到的困惑。

    中科院自动化所一线青年学者,推出《深度学习:从理论到实践(升级版)》在线直播课程。课程体系设置充分结合理论与实践,PPT以及代码均会提供给学员。讲师团队均为中科院自动化所博士,在人工智能国际顶级会议期刊ICCV、TNNLS、TIP论文20余篇。

    课程内容

    1. 数学基础(预习PPT)

    主要包括机器学习概论、贝叶斯决策理论、参数与非参数估计、回归与分类、梯度下降优化以及信息熵等。

    2. 深度学习理论(6学时)

    主要包括前馈神经网络(概述、单层神经网络、多层神经网络),卷积神经网络(基本概念、发展历程、网络特点、网络设置、网络训练以及相关应用),反馈神经网络(Hopfield网络、玻尔兹曼机、受限玻尔兹曼机)等。

    3. 深度网络常见模型与Keras实战(8学时)

    主要包括Keras与残差网络(从LSTM到Highway网络、从Highway网络到残差网络、基于Highway网络的应用),自动编码机AE及生成对抗网络GAN(AE的起源与变种、生成对抗网络GAN、基于GAN网络的应用),基于Keras的行为识别(行为识别问题简介、基于深度学习的行为识别常用模型介绍、基于Keras的行为识别实践),基于Keras的场景分割(场景分割问题简介、基于深度学习的场景分割常用模型介绍、基于Keras的场景分割实践)。

    4. 深度学习框架(4学时)

    主要包括Caffe入门(简介、安装和配置、优点与局限性分析、深入Caffe源码、Caffe调试),Caffe提高(基于Caffe的MINST手写识别、Caffe的Python接口、Caffe修改与添加Layer、网络训练技巧)。

    讲师团队

    汪老师团队,成员均为中科院自动化所博士,在领域顶级会议期刊 ICCV、TNNLS、TIP等发表论文20多篇;参加全国视频图像分析技术挑战赛,获得目标检测识别第二名,熟练掌握并应用深度学习Keras框架和Caffe框架。

    宫老师,中国科学院自动化研究所博士,在计算机视觉与人工智能领域具有近六年的研究经历。攻读博士学位期间主要研究方向是模式识别与图像处理,曾在模式识别领域内顶级国际期刊发表论文,参加某知名互联网公司举办的图像分割竞赛,获得第四名的成绩。目前即将就职于国内某知名外企,任算法工程师一职,主要负责计算机视觉与人工智能方面的算法研发工作。

    课程价格

    本期课程限报 300人,报满为止。课程售价为 499元,前 100 名报名者,可领取 100 元优惠券。

    开课时间及形式

    1. 10月29日-11月26日每周末晚7点-9点,在线直播授课

    2. 课程一年内可实时查看视频回放;

    3. 课程PPT和源程序,会提前公开给学员;

    4. 课前、课中和课后,微信群均可答疑。

    请添加深蓝学院助教微信报名

    640?wx_fmt=jpeg

    展开全文
  • 成长总结Author:louwill 公众号又十来天没有更新了,首先依然是感谢关注我公众号的12000多位朋友们一直以来的支持。最近我换了工作,刚刚搬到...
  • 目前利用深度学习这个工具可以做很多事情,各大领域(图像,语音,NLP等),各大行业(娱乐,金融,医疗等)这几年都被玩的风生水起。很多的非本专业的技术人员想转行过来都是应该的,话说回来又有几个人是真正这一行...
  • 文 章 目 录1 热门、稀缺高端岗位薪资2 人工智能职位发展趋势分析3 人工智能职位就业指导薪酬—北上深平均月薪18K+薪酬地图:从职位薪水来看,人工智能行业的高薪主要分布在京津、长三角、珠三角及部分内陆省会城市...
  • vivo 2020届秋招提前批深度学习算法工程师笔经面经前言笔经面经 前言 又到了一年找工作的时节,秋招也是一年比一年早了。在上周结束的vivo秋招提前批,博主参加了深度学习算法工程师岗位的笔试与面试,也是博主人生...
  • 百度2013深度学习算法工程师笔试题。
  • 整理自牛客 在梯度下降法中,为什么梯度的负方向是函数下降最快的方向? 为什么引入Relu呢?...推导BP算法 Inverted Dropout BN:Internal Covariate Shift Inception v1 - v4 focal loss softnms ...
  • PaperWeekly 致力于推荐最棒的工作机会,精准地为其找到最佳求职者,做连接优质企业和优质人才的桥梁。 如果你需要我们来帮助你推广实习机会或全职岗位,请添加微信号「...
  • 算法工程师要求--深度学习

    千次阅读 2019-03-19 10:04:51
    算法工程师要求--深度学习写在开始技术要求知识拓展 写在开始 第一次在csdn写东西,希望能逐渐积累,在技术层面有所沉淀,尤其是前沿技术。 技术要求 根据某一岗位的职位要求进行针对性学习 基本算法 :CNN,FCN,...
  • 面试可能会问到的深度学习算法总结
  • 2018年机器学习算法工程师——秋招自我总结

    千次阅读 多人点赞 2020-03-03 00:11:18
    2018年机器学习算法工程师——秋招自我总结 (2018.3.12 ~ 2018.10.14) (1)简历 - 笔试 - 面试(一面,二面,……,HR面,加面) - offer ...
  • 文/编辑 | 言有三 一直有同学希望我在公众号写写面试相关的东西,一直没写。我们不会开相关的板块,因为没有标准,容易引起争议,而且可能会...这里说的是招聘一个算法工程师,一个能够为公司创造收益的人,简单起...
  • 深度学习算法面试题总结

    万次阅读 多人点赞 2018-11-19 10:14:26
    1. 什么是凸集、凸函数、凸学习问题? 凸集:若对集合C中任意两点u和v,连接他们的线段仍在集合C中,那么集合C是凸集。 公式表示为:αu+(1-α)v∈C α∈[0, 1] 凸函数:凸集上的函数是凸函数。凸函数的每一个...
  • 算法工程师必备技能

    2019-04-01 21:11:55
    非科班转行算法工程师
  • 初面 1.自我介绍。 2.聊项目中的一些问题。...5.对于常用的机器学习/深度学习算法有哪些了解? 总监面 1.自我介绍。 2.挑一个项目重点介绍,展开聊。 3.select()、poll()和epoll()的区别是? 4.C++...
  • 书中收录了超过 100 道机器学习算法工程师的面试题目和解答,其中大部分源于 Hulu 算法研究岗位的真实场景。本书从日常工作、生活中各种有趣的现象出发,不仅囊括了机器学习的基本知识,而且还包含了成为出众算法...
  • 来源:AI科技大本营2018 年,人工智能在各行各业中的落地应用越来越多。十多年前,所有的企业都在想办法互联网化,如今,所有的互联网企业都在试图 AI 化。技术的竞争归根...
1 2 3 4 5 ... 20
收藏数 45,098
精华内容 18,039
关键字:

深度学习算法工程师