最新更新:【深度学习系列】PaddlePaddle之手写数字识别(10.26更新)html
【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理(11.1更新) python
【深度学习系列】PaddlePaddle之数据预处理(11.8更新)git
【深度学习系列】卷积神经网络详解(二)——本身手写一个卷积神经网络(11.22更新)github
【深度学习系列】用PaddlePaddle和Tensorflow进行图像分类(11.29更新)web
【深度学习系列】用PaddlePaddle和Tensorflow实现经典CNN网络AlexNet(12.06更新)面试
【深度学习系列】用PaddlePaddle和Tensorflow实现经典CNN网络Vgg(12.13更新)算法
【深度学习系列】用PaddlePaddle和Tensorflow实现经典CNN网络GoogLeNet(12.20更新)编程
【深度学习系列】用PaddlePaddle和Tensorflow实现GoogLeNet InceptionV2/V3/V4(12.27更新)api
【深度学习系列】一块儿来参加百度 PaddlePaddle AI 大赛吧!(2018.1.4更新)网络
【深度学习系列】关于PaddlePaddle的一些避“坑”技巧(2018.1.13更新)
原文:
不用理会标题,纯粹标题党,可是有干货!昨天看到某位"大牛"写了篇文章,上了首页推荐,叫作"跟着弦哥学人工智能",看到标题还挺惊喜,毕竟在博客园这个以.net文章为主的技术论坛竟然还有大佬愿意写AI方面的文章,因而点击去仔细看了看,发现文风浮夸,恩,不要紧,有干货就行,结果翻到最后也没发现啥干货,看到了参考书目,挺有意思的。放个图在这:
当时看到这个参考书目挺迷的,数学类从高中数学推荐到数学专业学生看的数学分析,计算机算法类一上来就推荐大块头的《算法导论》和理论性偏强的《数据挖掘:概念与技术》,认为这样入门的人来讲并不合适。看书应当是有阶梯型的,不能一口吃成个大胖子,基于不想"大牛"误人子弟,因而我给出了以下建议:
个人回复很平和,也给出了一些对新手比较友好的建议,而且有6我的支持我,想一想算了,然而,今天,在首页中又看到了这位"大牛"在博文骂我是喷子:
这我就不赞同并且不能忍了。对于任何人,无论你是大牛仍是小白,个人原则都是,你能够反驳个人建议,有理有据就行,若是我错了,那就改,没有错,那就互相讨论,交流一下,气场合说不定还能成为个朋友呢。可是对于别人真诚的建议您回以"喷子"是一个有教养的人的表现吗?仗着本身是"大牛",这样没有素质的怼不以为脸红吗?而且,我之因此给出这个建议,有如下三点:
1.做为一个数学系的学生,学了四年数学,对于你胡乱给的参考书目很是的不赞同。一没有阶梯式,对新手不友好,您的标题和写这个系列的目的大概都是准备给小白看的,那么请问,一个小白须要看数学分析原理??学习人工智能有必要须要看普林斯顿微积分原理??以鄙人浅薄的认识来讲,数学分析与高等数学最大的区别是同一个定理,高数只要求会用便可,数学分析本着严谨性,必定会给出证实。然而对于大多数人工智能里所须要的数学,您在工做中须要证实这个定理的正确性和完备性??等你证出来恐怕项目早就结了。您回复我说这只是参考书目不是推荐书目,可是下面的评论大多数是看到书单就决定放弃。您把这些书放出来,就对看您文章的人有必定的引导性,我认为您这是在误人子弟。二是我经过您参考的数目粗略的推导您本身可能都没有对整我的工智能的数学有个框架式的梳理,否则不会有如此不负责任的推荐。可是出于对您的尊重,我并无质疑您的能力,仅仅在评论里对于新手适合的数学书目给了一个简短的推荐。
2.做为一个从事机器学习这一行两年多的程序媛,看到您推荐的计算机系列也认为很是的不靠谱。您推荐的这些书,我大部分都看过。尤为不推荐新手看的就是《算法导论》和《数据挖掘:概念与技术》,这两本书又厚又重,虽然内容全面讲的也不错,可是等你看完都不知道猴年马月了。新手须要的是什么?是上手!其次,《Python核心编程》您真的看完了吗?这本书并非给Python新人读的,很是厚,并且有必定的难度,对于新手很是不友好。并且若是只是想作AI,那这本书的不少地方都不须要用到,web开发,Django框架对于咱们AI工程师来讲真的是必须的吗?不是。小白对于一本书没有重点和非重点的区分,花了大量的时间学了不须要的知识,真是得不偿失。给出引导性,针对性的推荐才是负责任的推荐。
3.对于深度学习方面书籍的推荐我就不吐槽了。槽点太多,无力吐槽。省点力气后面推荐真正适合不一样阶段的新手阅读的书籍好了。
总结:这位大牛,我认为您可能在.net方面积累很是深,作的很好,吸引了一大波粉丝,这点我很佩服您。然而对于深度学习这一块您可能并非很了解。对于一个您并非很了解的领域,在这里绝不谦虚,对于别人的建议充耳不闻,还很得意的骂人“喷子”,恐怕您仍是要多谦虚一点,多学习学习。从从业年龄来看,我是您的后辈,但从从事深度学习这个领域来看,您可能仍是个新人,您说呢?而且到目前为止,您发了两篇文章在首页,都没有任何干货,但愿您赶忙拿干货来打个人脸^_^
下面,开始输出干货。
AI处于目前的风口,因而不少人想要浑水摸鱼,都来分一杯羹,然而可能不少人连AI是什么都不知道。AI,深度学习,机器学习,数据挖掘,数据分析这几点的联系和区别也搞不清楚。因而滋生了不少培训班,收着不菲的费用,教教demo,调调参,教你一个月速成深度学习工程师,赚的盆满钵满。这种行业风气咱们应该摒弃!我认为,目前市面上的任何AI培训都不值得参加!别撒钱给别人了,难道不会心痛吗? - -然而,当你们自学的时候,又不知道从何学起。下了一堆资料,跑了一堆demo,报了一堆cousera,调调参,看看模型结果不错,就觉得入了门,抱歉,很差意思,我说话比较直接,可能你连门都没入。我认为,深度学习这块,有几个层次:(本身胡乱起的名字,忽略吧 - -)
demo侠--->调参侠--->懂原理侠--->懂原理+能改模型细节侠--->超大数据操控侠--->模型/框架架构师
demo侠:下载了目前全部流行的框架,对不一样框里的例子都跑一跑,看看结果,以为不错就好了,进而以为,嘛,深度学习也不过如此嘛,没有多难啊。这种人,我在面试的时候遇到了很多,不少学生或者刚转行的上来就是讲一个demo,手写数字识别,cifar10数据的图像分类等等,然而你问他这个手写数字识别的具体过程如何实现的?如今效果是否是目前作好的,能够再优化一下吗?为何激活函数要选这个,能够选别的吗?CNN的原理能简单讲讲吗?懵逼了。
调参侠:此类人可能不局限于跑了几个demo,对于模型里的参数也作了一些调整,无论调的好很差,先试了再说,每一个都试一下,学习率调大了准确率降低了,那就调小一点,那个参数不知道啥意思,随便改一下值测一下准确率吧。这是大多数初级深度学习工程师的现状。固然,并非这样很差,对于demo侠来讲,已经进步了很多了,起码有思考。然而若是你问,你调整的这个参数为何会对模型的准确率带来这些影响,这个参数调大调小对结果又会有哪些影响,就又是一问三不知了。
懂原理侠:抱歉我起了个这么蠢的名字。可是,进阶到这一步,已经能够算是入门了,能够找一份能养活本身的工做了。CNN,RNN,LSTM信手拈来,原理讲的溜的飞起,对于不一样的参数对模型的影响也是说的有理有据,然而,若是你要问,你能够手动写一个CNN吗?不用调包,实现一个最基础的网络结构便可,又gg了。
懂原理+能改模型细节侠:若是你到了这一步,恭喜你,入门了。对于任何一个作机器学习/深度学习的人来讲,只懂原理是远远不够的,由于公司不是招你来作研究员的,来了就要干活,干活就要落地。既然要落地,那就对于每个你熟悉的,常见的模型可以本身手动写代码运行出来,这样对于公司的一些业务,能够对模型进行适当的调整和改动,来适应不一样的业务场景。这也是大多数一二线公司的工程师们的现状。然而,对于模型的总体架构能力,超大数据的分布式运行能力,方案设计可能还有所欠缺,本人也一直在这个阶段不停努力,但愿可以更进一步。
超大数据操控侠:到这一阶段,基本上开始考虑超大数据的分布式运行方案,对总体架构有一个宏观的了解,对不一样的框架也能指点一二。海量数据的分布式运行如何避免网络通讯的延迟,如何更高效更迅速的训练都有必定经验。这类人,通常就是我这种虾米的领导了。
模型/框架架构师:前面说了一堆都是对现有的框架/模型处理的经验,这个阶段的大侠,哦,不对,是大师能够独立设计开发一套新框架/算法来应对现有的业务场景,或者解决一直未解决的历史遗留问题。没啥好说了,膜拜!
说了这么多,但愿你们对本身找个清洗准确的定位,这样才能针对性的学习。下面基于我我的的经验对不一样阶段的学习者作一些推荐:
demo侠+调参侠:这两个放在一块儿说,毕竟五十步笑百步,谁也没有比谁强多少。固然也不要妄自菲薄,你们都是从这个阶段过来的。这个阶段编程很差的就好好练编程,原理不懂的就好好看书理解原理。动手作是第一位,而后不断改一些模型的参数,看效果变化,再看背后的数学推导,理解缘由,这样比先看一大堆数学公式的推导,把本身绕的晕晕乎乎在开始写代码要好得多。
- 推荐书目
- 数学类:
- 高等数学(同济第七版):没错我说的就是考研的那本参考书,真心不错,难易适中,配合相应的视频或者国外的一些基础课程的视频看,高数理解极限,导数,微分,积分就差很少了
- 高等数学(北大第三版):线性代数的书我看的很少,原来上学的时候学的是高等数学,不过没关系,看前五章就好了。配合相应的视频,掌握矩阵,行列式相关知识便可。
- 几率论:这个没有特别推荐的,由于学的并是不很好,因此不作推荐误人子弟。你们无论看什么书,只要掌握关键知识就好了。不能到时候问个贝叶斯你都不知道咋推吧 = =!
- 信息论:忘记是哪一个出版社了的,很薄的一本,讲的很是不错。里面关于信息的度量,熵的理解,马尔科夫过程都讲的不错(如今公司里没有,我回去找找再补上来)。掌握这个知识,那么对于你理解交叉熵,相对熵这一大堆名字看起来差很少可是又容易弄混的东东仍是不错的。起码你知道了为啥不少机器学习算法喜欢用交叉熵来作cost function~
- 编程类:
- 笨方法学Python(Learn Python the Hard Way)这本书对于彻底没有接触过Python,或者说彻底没有接触过编程的人来讲很是适合。虽然不少人说Python这么简单,一天/周/月就学会了,可是每一个人的基础是不同的,因此不要认为本身一天没学会就很认为本身很蠢,你应该想这样说的人很坏!无论怎么样,这是一本真正的从零开始学Python的书
- 利用Python进行数据分析:这本书是Python的pandas这个包的详细说明版。学习这个能够掌握一些pandas的基本命令。然而这不是重点,由于pandas出来大量数据实在太慢了,还可能会崩溃(不知道如今有没有改善 - -!)重点是,经过学习这本书,对数据的操做有点感受,熟悉基本的数据操做流程,里面全部的操做均可以用原生python来替代,不须要用到pandas这个包。找感受,很是重要。
- Python参考手册:这本书只是做为一个工具书,当你遇到不会的时候翻翻书,巩固一下(固然,事实多是直接去google了),此类书不用所有从头至尾刷完,查漏补缺便可(电子书就行)
- 算法类:
- Deep Learning with Python:别看这又是一本英文书,但其实很是简单易读。我以前在工做一年的时候写了篇总结(【原】数据分析/数据挖掘/机器学习必读书目),也推荐了这本书。这本书其实主要是一个demo例子的集合,用keras写的,没有什么深度,主要是消除你对深度学习的畏难情绪,能够开始上手作,对总体可以作的事作一些宏观的展示。能够说,这本书是demo侠的最爱啦!
- Deep Learning:中文有翻译版的出来了,不过我其实不太想放在这里,由于这本书其实很偏理论。有些章节讲的是真不错,有些地方你完了又会以为,这是啥?这玩意有啥用?会把新手绕来绕去的。你们就先买一本镇场子,有不懂的翻翻看,看不懂的就google,直接看论文,看别人总结的不错的博客,等等。总之只要你能把不懂的弄懂就好了。
懂原理侠:很不错,你的经验值已经提高了很多了。然而还不能开始打怪,毕竟没有那个怪物能够直接被喷死的。你缺乏工具。那么这个阶段,就须要多多增强编程能力。先找一个框架下下来,阅读源码,什么?你说你不会阅读源码,不要紧,网上一大堆阅读源码的经验。固然,这些经验的基础无一例外都是:多读多写。在此基础上再找trick。下好框架的源码后,改动一些代码在运行,debug一下,再不断的找缘由,看看每一个api是怎么写的,本身试着写一写。多写多练,死磕coding三十年,你必定会有收获的。
懂原理+能改模型细节侠:看论文看论文看论文!读源码读源码读源码!这里的读源码不只仅局限于读一个框架的源码了,能够多看看其余优秀的框架,对于同一个层,同一个功能的实现机制,多比较多思考多总结多写。时间长了,确定会有收获的。看论文是为了直接得到原做者的思想,避免了从博客解读论文里得到二手思想,毕竟每一个人的理解都不同,并且也不必定对,本身先看一遍,再看看别的理解,多和大牛讨论,思路就开阔了。
超大数据操控侠:这个阶段我也还在摸索,给不了太多建议,只能给出目前总结的一点点经验:尽可能扩大数据,看如何更快更好的处理。更快--采用分布式机制应该如何训练?模型并行仍是数据并行?多机多卡之间如何减小机器之间的网络延迟和IO时间等等都是要思考的问题。更好--如何保证在提高速度的同时尽可能减小精度的损失?如何改动能够提升模型的准确率、mAP等,也都是值得思考的问题。
模型/框架架构师:抱歉,我不懂,不写了。
总结:
其实你们从我上面的推荐来看,打好基础是很是重要的,后续都是不断的多读优秀的论文/框架,多比较/实践和debug,就能一点点进步。打基础的阶段必定不能浮躁。扎扎实实把基础打好,后面会少走不少弯路。不要跟风盲目崇拜,经典永远不会过期,本身多看书/视频/优秀的博客,比无脑跟风要强得多。最后,我之因此今天这么生气,是由于这个行业目前太浮躁了,不少人太浮夸,误人子弟,有人说真话还被人骂喷子,真是气死我了!你们必定要擦亮双眼,多靠本身多努力。
很差意思强行鸡汤了一波。原本去年打算写一个机器学习系列,可是由于工做和身体的缘由写了三篇就没有更了。今年上半年作了一个大项目又累得要死,下半年才刚刚缓口气,因此以前欠的后续必定会继续更。为了避免让你们盲目崇拜,我决定写一个深度学习系列,每周固定一篇,大概三个月完结。教小白如何入门。而且完!全!免!费!!不是简单的写写网上都有的demo和调参。拒绝demo侠从我作起!有不懂的欢迎你们在个人文章下留言,我看到了会尽可能回复的。这个系列主要会采起PaddlaPaddle这个深度学习框架,同时会对比keras,tensorflow和mxnet这三个框架的优劣(由于我只用过这四个,写tensorflow的人太多了,paddlepaddle我目前用的还不错,就决定从这个入手),全部代码会放在github上(连接:https://github.com/huxiaoman7/PaddlePaddle_code),欢迎你们提issue和star。目前只写了第一篇(【深度学习系列】PaddlePaddle之手写数字识别),后面会有更深刻的讲解和代码。目前作了个简单的大纲,你们若是有感兴趣的方向能够给我留言,我会参考加进去的~
最后一句,低调作人,好好学习,你们下期再会^_^!
----2018.12.3更新
发现一个不错的评论,加到原文来!
如今愈来愈发现做为一个算法工程师,工程能力也很是重要,若是只懂理论,不会实现,也没有什么竞争力。
ps:为了方便你们及时看到个人更新,我搞了一个公众号,之后文章会同步发布与公众号和博客园,这样你们就能及时收到通知啦,有不懂的问题也能够在公众号留言,这样我可以及时看到并回复。(公众号刚开始作,作的比较粗糙,里面尚未东西 = =,后期会慢慢完善~~)
能够经过扫下面的二维码或者直接搜公众号:CharlotteDataMining 就能够了,谢谢关注^_^
更新:我开课啦~ 点击连接:三个月教你从零入门人工智能!!| 深度学习精华实践课程 (免费) 就能够看到个人课程啦,用Tensorflow讲解的,天天更新一课时~