深度学习如何入门?
https://www.zhihu.com/question/26006703
怎么入门机器/深度学习?
回答这个问题,最先要考虑的问题是:你有多少时间?
准备用三个月入门,和想要一个月速成,肯定是截然不同的路径。当然我建议大家稳扎稳打,至少可以拿出五个月的时间来学好机器学习的基础知识。
基础很重要,知其所以然很重要。毕竟工具总在进步,每个月都会出现更好的深度学习技术,但基础知识是不变的。
如何用五个月时间入门?下面分三个部分,详细指南。(以及,如果你确实时间有限,最后还有一个速成指南)
五个月入门
Part 1:从机器学习开始(两个月)
最好的入门教程,就是吴恩达讲授的机器学习。吴恩达这套课程发布很久了,虽然有些地方稍微过时,但相信我,现在没有任何公开的课程,能比吴恩达讲得更好。真的,课程结束时我几乎哭了出来。
这个课程可以说适合任何水平的学生,当然,你最好还是得知道两个矩阵如何相乘,以及对编程有一些基本的了解。
<img src="https://pic4.zhimg.com/v2-943ee29a6e594726cb7aef9e020435ff_b.png" data-caption="" data-size="normal" data-rawwidth="1080" data-rawheight="485" class="origin_image zh-lightbox-thumb" width="1080" data-original="https://pic4.zhimg.com/v2-943ee29a6e594726cb7aef9e020435ff_r.jpg">
这套课程可以前往Coursera学习,传送门:
https://www.coursera.org/learn/machine-learning
也可以上网易公开课收看,传送门:
http://open.163.com/special/opencourse/machinelearning.html
如果你有时间,一定要听完全部的课程。如果时间紧张,至少要听完前五节课程,后面的可以暂时跳过。
吴恩达的机器学习课程深入讲解了经典的机器学习模型,如线性回归、逻辑回归、神经网络、支持向量机、PCA、无监督学习等等。大部分重要概念,都以简单易懂的方式进行了介绍。
课程延伸
当你学习到第五节课,也就是开始讲述神经网络时,建议开始查看与课程平行的外部资料。比方3bule1brown推出的神经网络讲解视频。推荐必看。
YouTube传送门:
https://youtu.be/aircAruvnKk?list=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi
或者可以前往B站查看:
http://space.bilibili.com/88461692/#/
以及,我觉得吴恩达在讲神经网络时有点快,所以建议补充阅读一些资料。比如有关神经网络和深度学习的在线书籍,免费的就很好了。
传送门:
http://neuralnetworksanddeeplearning.com/
<img src="https://pic1.zhimg.com/v2-7b911537b2b41c55d0e747ac8bb66fe8_b.png" data-caption="" data-size="normal" data-rawwidth="1080" data-rawheight="457" class="origin_image zh-lightbox-thumb" width="1080" data-original="https://pic1.zhimg.com/v2-7b911537b2b41c55d0e747ac8bb66fe8_r.jpg">
作者Michael A. Nielsen以一种简单直观的方式,深入探究了神经网络的每个细节。建议阅读这本书的前两章,与吴恩达的课程并行。当你熟悉更多概念后,开始搞深度学习时,可以再看书中的其余部分。
如果你英文不好,这本《神经网络与深度学习》也有中文翻译版本,可以免费在线查看。
传送门在此:
https://tigerneil.gitbooks.io/neural-networks-and-deep-learning-zh/content/
<img src="https://pic1.zhimg.com/v2-e6bdd2af3b77f76caf90664e555c1904_b.png" data-caption="" data-size="normal" data-rawwidth="1080" data-rawheight="343" class="origin_image zh-lightbox-thumb" width="1080" data-original="https://pic1.zhimg.com/v2-e6bdd2af3b77f76caf90664e555c1904_r.jpg">
这个部分的学习结束之后,你就能明白机器/深度学习的许多概念。最后推荐阅读Christopher Olah的博客,很有意思。
传送门:http://colah.github.io/
<img src="https://pic1.zhimg.com/v2-ebf3a89b9b6da8117ef31400cbf6da0c_b.png" data-caption="" data-size="normal" data-rawwidth="1080" data-rawheight="545" class="origin_image zh-lightbox-thumb" width="1080" data-original="https://pic1.zhimg.com/v2-ebf3a89b9b6da8117ef31400cbf6da0c_r.jpg">
Part 2:涉足深度学习(1个月)
开始研究深度学习之前,最好重温一下大学数学。Ian Goodfellow**般的“花书”《深度学习》,简明扼要的概括了大部分重要主题。
建议大家尽可能深入地阅读线性代数、概率、信息理论的章节。每当读论文遇到深度学习概念时,都可以在书中找到参考。
<img src="https://pic2.zhimg.com/v2-9338199c21e4765b1928658fc14bfadd_b.png" data-caption="" data-size="normal" data-rawwidth="736" data-rawheight="710" class="origin_image zh-lightbox-thumb" width="736" data-original="https://pic2.zhimg.com/v2-9338199c21e4765b1928658fc14bfadd_r.jpg">
以及,这本书有在线的版本。
例如英文版在此:
https://github.com/janishar/mit-deep-learning-book-pdf/blob/master/complete-book-bookmarked-pdf/deeplearningbook.pdf 。
而中文翻译版本在此:
https://github.com/exacity/deeplearningbook-chinese
<img src="https://pic2.zhimg.com/v2-7a8f7bbe0a7c1b6a40238c7723a1f0e9_b.png" data-caption="" data-size="normal" data-rawwidth="1080" data-rawheight="376" class="origin_image zh-lightbox-thumb" width="1080" data-original="https://pic2.zhimg.com/v2-7a8f7bbe0a7c1b6a40238c7723a1f0e9_r.jpg">
关于深度学习的在线资料有很多,你可能会挑花了眼。
再一次,我觉得最好的选择,还是听吴恩达的《深度学习专项系列课程(Deep Learning Specialization)》。
Coursera传送门:
https://www.coursera.org/specializations/deep-learning
网易云课堂的传送门:
https://mooc.study.163.com/smartSpec/detail/1001319001.htm/
这门课程包括五大章节。其实不是免费的,你可以按照50美元/月购买。当然,如果你负担不起,还能申请“助学金”。申请时请详细阐明理由,处理的时间大概需要15天左右。
当然不付费,大部分内容都是可以看的。以及视频的部分,在很多地方也能免费收看。
这五门课程主要讲的是:
1、神经网络和深度学习(4周)
2、改善深度神经网络(3周)
3、结构化机器学习项目(2周)
4、卷积神经网络(4周)
5、序列模型(3周)
<img src="https://pic2.zhimg.com/v2-2ec23bc8f9e5feef617ab624237ed3fd_b.png" data-caption="" data-size="normal" data-rawwidth="1080" data-rawheight="437" class="origin_image zh-lightbox-thumb" width="1080" data-original="https://pic2.zhimg.com/v2-2ec23bc8f9e5feef617ab624237ed3fd_r.jpg">
前三门课程涉及一般的神经网络和深度学习,第四、第五门课程涉及特定主题。如果你打算搞视觉,第四课必听;如果你搞NLP、音频等,第五课必听。但如果你需要听第五课,那么建议也把第四课好好听一下。
这里鼓励大家一下,课程里每周的内容,实际上一两天就能学完,所以不要被课程表吓倒。劳逸集合、提升效率。
学到这个地步,其实就可以再去http://neuralnetworksanddeeplearning.com/ ,查看第三到第六章的内容,来强化你的概念。如果你有什么还没搞懂的,请前往Olah的博客。
以及,这时候你要开始看深度学习的论文了,从中学习知识。深度学习有个强烈的特点,那就是内容都非常新,阅读论文是跟上时代唯一的方法。不想被抛下,那么还是养成阅读论文的好习惯吧。
Part 3:深度学习上手练(两个月)
学到这里,你应该对机器学习和深度学习中的大多数概念有了正确的理解,现在是时候投入沸腾的实际生活中了。
练手深度学习,最好的资源在fast.ai。
<img src="https://pic3.zhimg.com/v2-43375e199f3fd6d70313bb24e66f2542_b.png" data-caption="" data-size="normal" data-rawwidth="1069" data-rawheight="545" class="origin_image zh-lightbox-thumb" width="1069" data-original="https://pic3.zhimg.com/v2-43375e199f3fd6d70313bb24e66f2542_r.jpg">
传送门在此:http://course.fast.ai/
他们在流行的深度学习工具PyTorch上构建了一个库,只需要几行代码,就能实现世界级的性能。
fast.ai的理念有点不同。吴恩达等老师的教授方法是自上而下,先讲再做。而fast.ai倡导自下而上,先做再讲。
所以在他们的课程中,第一节就带你建立一个强大的图像分类器。自己训练模型的快感,刺激着你去完成其余的课程。
<img src="https://pic2.zhimg.com/v2-51fe4a58e42ada297cf493ee19b26539_b.png" data-caption="" data-size="normal" data-rawwidth="1080" data-rawheight="589" class="origin_image zh-lightbox-thumb" width="1080" data-original="https://pic2.zhimg.com/v2-51fe4a58e42ada297cf493ee19b26539_r.jpg">
除此以外,还要推荐两门课。
斯坦福大学的CS231n和CS224n。CS231n专注于计算机视觉的深度学习,而CS224n专注于序列建模。
CS231n,李飞飞等主讲。
官网传送门:http://cs231n.stanford.edu/
CS224n,目前是Richard Socher主讲。
官网传送门:http://web.stanford.edu/class/cs224n/
此前的课程,网上也有中文字幕版本,大家可自行搜索。
到这里,为期五个月的机器/深度学习入门就结束了。
希望大家都能稳扎稳打,夯实基础。
以及最后,兑现一个开头的承诺。如果你确实时间很紧张,必须尽快入门机器/深度学习,那么请看——
速成指南
我最多只有俩月
1、完成吴恩达机器学习课程的前五周,要做编程练习。
2、看完3Blue1Brown的视频。
3、完成吴恩达的深度学习专项系列课程,做练习。
4、如果你想搞图像,看专项课程第四讲,搞NLP或序列数据,看第五讲。
5、搜索你感兴趣的开源实现。如果你还没想好用什么语言,推荐Keras。然后根据需要,再迁到TensorFlow或者PyTorch框架。
我,只有一个月
想要在30天完成入门超级困难。除非,你只是想了解机器学习的工作原理,然后应用到自己的项目中。
如果是这样的话,速成建议如下:
1、略读吴恩达机器学习课程第1-5周的课程,只看视频,掌握概念即可。第三周可以跳过MATLAB/Octave课程。
2、看完3Blue1Brow的视频。
3、略读吴恩达深度学习专项系列课程的第一课,也就是神经网络和深度学习。
4、如果你想做图像处理项目,看一下Nielsen书中的第六章:http://neuralnetworksanddeeplearning.com/chap6.html
如果你需要序列建模的一些想法,可以看看Olah的博客:http://colah.github.io/posts/2015-08-Understanding-LSTMs/
5、Siraj Raval拍了很多有趣的视频,涉及大多数机器/深度学习的主题。传送门在此:https://www.youtube.com/channel/UCWN3xxRkmTPmbKwht9FuE5A
6、搜索跟你感兴趣的开源实现,随时调整以满足你的需求。如前所述,我推荐你先用带有TensorFlow后端的Keras语言。
其他资源
YouTube上有一个两分钟读论文的系列视频,可以帮你快速了解全球深度学习的最热门进展。
如果你关注进机器学习领域的进展,Twitter是个绝佳的工具。
遇到困境的时候,记得reddit和Facebook上有很多志同道合的人,不要犹豫,在社区里寻求帮助,大家会伸出援手。
结论
机器学习和深度学习是当今世界最具魅力的技术之一。而且这个领域的深度学习专家总是处于稀缺的状态。从职业前景来看,深度学习非常吸引人。
需要提醒的是,与计算机学科的其他领域不同,深度学习的资源还不够丰富。很多时候你会遇到失败挫折,千万不要灰心丧气,你可以向更多人寻求帮助,很多人都愿意伸出援手,大家都在学习。
关于机器/深度学习,有一个误解是需要计算机科学的背景才能学习。这不是真的,你确实需要一些编程的思维才好入手,但也仅限于此。现在机器学习领域的很多专家,都来自其他研究领域。
如果你有计算机科学的背景,这是一个非常好的开始。但如果你出身其他学科,想要迎头赶上并不难。
感谢看到这里。
<img src="https://pic3.zhimg.com/v2-046c0768fe051c240670c250bb491a1a_b.png" data-caption="" data-size="normal" data-rawwidth="1080" data-rawheight="310" class="origin_image zh-lightbox-thumb" width="1080" data-original="https://pic3.zhimg.com/v2-046c0768fe051c240670c250bb491a1a_r.jpg">
原作:Masum Hasan
问耕 编译整理
原作地址:
欢迎大家关注我们的专栏:量子位 - 知乎专栏
赞同 3.1K56 条评论
分享
收藏感谢收起
深度学习,机器学习,人工智能
编辑推荐
共 2 项收录
12,386 人赞同了该回答
关于深度学习,网上的资料很多,不过貌似大部分都不太适合初学者。 这里有几个原因: 1.深度学习确实需要一定的数学基础。如果不用深入浅出地方法讲,有些读者就会有畏难的情绪,因而容易过早地放弃。 2.中国人或美国人写的书籍或文章,普遍比较难一些。我不太清楚为什么,不过确实是这样子的。
深度学习,确实需要一定的数学基础,但真的那么难么?这个,还真没有。不信?听我来给你侃侃。看完,你也会觉得没那么难了。
本文是针对初学者,高手可以无视,有不对的地方,还请多多批评指正。
这里,先推荐一篇非常不错的文章: 《1天搞懂深度学习》,300多页的ppt,台湾李宏毅教授写的,非常棒。 不夸张地说,是我看过最系统,也最通俗易懂的,关于深度学习的文章。
这是slideshare的链接: http://www.slideshare.net/tw_dsconf/ss-62245351?qid=108adce3-2c3d-4758-a830-95d0a57e46bc&v=&b=&from_search=3
没梯子的同学,可以从我的网盘下: 链接:http://pan.baidu.com/s/1nv54p9R 密码:3mty
要说先准备什么,私以为,其实只需要知道导数和相关的函数概念就可以了。高等数学也没学过?很好,我就是想让文科生也能看懂,您只需要学过初中数学就可以了。
其实不必有畏难的情绪,个人很推崇李书福的精神,在一次电视采访中,李书福说:谁说中国人不能造汽车?造汽车有啥难的,不就是四个轮子加两排沙发嘛。当然,他这个结论有失偏颇,不过精神可嘉。
导数是什么,无非就是变化率呗,王小二今年卖了100头猪,去年卖了90头,前年卖了80头。。。变化率或者增长率是什么?每年增长10头猪,多简单。这里需要注意有个时间变量---年。王小二卖猪的增长率是10头/年,也就是说,导数是10. 函数y=f(x)=10x+30,这里我们假设王小二第一年卖了30头,以后每年增长10头,x代表时间(年),y代表猪的头数。 当然,这是增长率固定的情形,现实生活中,很多时候,变化量也不是固定的,也就是说增长率也不是恒定的。比如,函数可能是这样: y=f(x)=5x²+30,这里x和y依然代表的是时间和头数,不过增长率变了,怎么算这个增长率,我们回头再讲。或者你干脆记住几个求导的公式也可以。
深度学习还有一个重要的数学概念:偏导数,偏导数的偏怎么理解?偏头疼的偏,还是我不让你导,你偏要导?都不是,我们还以王小二卖猪为例,刚才我们讲到,x变量是时间(年),可是卖出去的猪,不光跟时间有关啊,随着业务的增长,王小二不仅扩大了养猪场,还雇了很多员工一起养猪。所以方程式又变了:y=f(x)=5x₁²+8x₂ + 35x₃ +30 这里x₂代表面积,x₃代表员工数,当然x₁还是时间。 上面我们讲了,导数其实就是变化率,那么偏导数是什么?偏导数无非就是多个变量的时候,针对某个变量的变化率呗。在上面的公式里,如果针对x₃求偏导数,也就是说,员工对于猪的增长率贡献有多大,或者说,随着(每个)员工的增长,猪增加了多少,这里等于35---每增加一个员工,就多卖出去35头猪. 计算偏导数的时候,其他变量都可以看成常量,这点很重要,常量的变化率为0,所以导数为0,所以就剩对35x₃ 求导数,等于35. 对于x₂求偏导,也是类似的。 求偏导我们用一个符号 表示:比如 y/ x₃ 就表示y对 x₃求偏导。
废话半天,这些跟深度学习到底有啥关系?有关系,我们知道,深度学习是采用神经网络,用于解决线性不可分的问题。关于这一点,我们回头再讨论,大家也可以网上搜一下相关的文章。我这里主要讲讲数学与深度学习的关系。先给大家看几张图:
<img src="https://pic3.zhimg.com/v2-91704850c698cbe0cdfd0af76d328ebe_b.png" data-rawwidth="631" data-rawheight="488" class="origin_image zh-lightbox-thumb" width="631" data-original="https://pic3.zhimg.com/v2-91704850c698cbe0cdfd0af76d328ebe_r.jpg">
图1. 所谓深度学习,就是具有很多个隐层的神经网络。
<img src="https://pic4.zhimg.com/v2-7875411304340d5accd6d800be9f933b_b.jpg" data-rawwidth="432" data-rawheight="576" class="origin_image zh-lightbox-thumb" width="432" data-original="https://pic4.zhimg.com/v2-7875411304340d5accd6d800be9f933b_r.jpg">
图2.单输出的时候,怎么求偏导数
<img src="https://pic2.zhimg.com/v2-c52b1fcdd42c3ac413120b56e40a8619_b.jpg" data-rawwidth="432" data-rawheight="576" class="origin_image zh-lightbox-thumb" width="432" data-original="https://pic2.zhimg.com/v2-c52b1fcdd42c3ac413120b56e40a8619_r.jpg">
图3.多输出的时候,怎么求偏导数。后面两张图是日语的,这是日本人写的关于深度学习的书。感觉写的不错,把图盗来用一下。所谓入力层,出力层,中间层,分别对应于中文的:输入层,输出层,和隐层。
大家不要被这几张图吓着,其实很简单的。干脆再举一个例子,就以撩妹为例。男女恋爱我们大致可以分为三个阶段: 1.初恋期。相当于深度学习的输入层。别人吸引你,肯定是有很多因素,比如:身高,身材,脸蛋,学历,性格等等,这些都是输入层的参数,对每个人来说权重可能都不一样。 2.热恋期。我们就让它对应于隐层吧。这个期间,双方各种磨合,柴米油盐酱醋茶。 3.稳定期。对应于输出层,是否合适,就看磨合得咋样了。
大家都知道,磨合很重要,怎么磨合呢?就是不断学习训练和修正的过程嘛!比如女朋友喜欢草莓蛋糕,你买了蓝莓的,她的反馈是negative,你下次就别买了蓝莓,改草莓了。 ------------------------------------------------------------------------------------------------ 看完这个,有些小伙可能要开始对自己女友调参了。有点不放心,所以补充一下。 撩妹和深度学习一样,既要防止欠拟合,也要防止过拟合。所谓欠拟合,对深度学习而言,就是训练得不够,数据不足,就好比,你撩妹经验不足,需要多学着点,送花当然是最基本的了,还需要提高其他方面,比如,提高自身说话的幽默感等,因为本文重点并不是撩妹,所以就不展开讲了。这里需要提一点,欠拟合固然不好,但过拟合就更不合适了。过拟合跟欠拟合相反,一方面,如果过拟合,她会觉得你有陈冠希老师的潜质,更重要的是,每个人情况不一样,就像深度学习一样,训练集效果很好,但测试集不行!就撩妹而言,她会觉得你受前任(训练集)影响很大,这是大忌!如果给她这个映象,你以后有的烦了,切记切记! ------------------------------------------------------------------------------------------------
深度学习也是一个不断磨合的过程,刚开始定义一个标准参数(这些是经验值。就好比情人节和生日必须送花一样),然后不断地修正,得出图1每个节点间的权重。为什么要这样磨合?试想一下,我们假设深度学习是一个小孩,我们怎么教他看图识字?肯定得先把图片给他看,并且告诉他正确的答案,需要很多图片,不断地教他,训练他,这个训练的过程,其实就类似于求解神经网络权重的过程。以后测试的时候,你只要给他图片,他就知道图里面有什么了。
所以训练集,其实就是给小孩看的,带有正确答案的图片,对于深度学习而言,训练集就是用来求解神经网络的权重的,最后形成模型;而测试集,就是用来验证模型的准确度的。
对于已经训练好的模型,如下图所示,权重(w1,w2...)都已知。
<img src="https://pic1.zhimg.com/v2-8521e1fa289e08dbbab5aa63b6527bd4_b.png" data-rawwidth="940" data-rawheight="736" class="origin_image zh-lightbox-thumb" width="940" data-original="https://pic1.zhimg.com/v2-8521e1fa289e08dbbab5aa63b6527bd4_r.jpg">
图4
<img src="https://pic4.zhimg.com/v2-ef5ad0d06a316f762f0625b2468e2f43_b.png" data-rawwidth="776" data-rawheight="174" class="origin_image zh-lightbox-thumb" width="776" data-original="https://pic4.zhimg.com/v2-ef5ad0d06a316f762f0625b2468e2f43_r.jpg">
图5
我们知道,像上面这样,从左至右容易算出来。但反过来呢,我们上面讲到,测试集有图片,也有预期的正确答案,要反过来求w1,w2......,怎么办?
绕了半天,终于该求偏导出场了。目前的情况是:
1.我们假定一个神经网络已经定义好,比如有多少层,都什么类型,每层有多少个节点,**函数(后面讲)用什么等。这个没办法,刚开始得有一个初始设置(大部分框架都需要define-and-run,也有部分是define-by-run)。你喜欢一个美女,她也不是刚从娘胎里出来的,也是带有各种默认设置的。至于怎么调教,那就得求偏导。
2.我们已知正确答案,比如图2和3里的r,训练的时候,是从左至右计算,得出的结果为y,r与y一般来说是不一样的。那么他们之间的差距,就是图2和3里的E。这个差距怎么算?当然,直接相减是一个办法,尤其是对于只有一个输出的情况,比如图2; 但很多时候,其实像图3里的那样,那么这个差距,一般可以这样算,当然,还可以有其他的评估办法,只是函数不同而已,作用是类似的:
<img src="https://pic4.zhimg.com/v2-e5ddd26d65aa04ed82f2a51fc8212427_b.png" data-rawwidth="484" data-rawheight="102" class="origin_image zh-lightbox-thumb" width="484" data-original="https://pic4.zhimg.com/v2-e5ddd26d65aa04ed82f2a51fc8212427_r.jpg">
不得不说,理想跟现实还是有差距的,我们当然是希望差距越小越好,怎么才能让差距越来越小呢?得调整参数呗,因为输入(图像)确定的情况下,只有调整参数才能改变输出的值。怎么调整,怎么磨合?刚才我们讲到,每个参数都有一个默认值,我们就对每个参数加上一定的数值∆,然后看看结果如何?如果参数调大,差距也变大,你懂的,那就得减小∆,因为我们的目标是要让差距变小;反之亦然。所以为了把参数调整到最佳,我们需要了解误差对每个参数的变化率,这不就是求误差对于该参数的偏导数嘛。
关键是怎么求偏导。图2和图3分别给了推导的方法,其实很简单,从右至左挨个求偏导就可以。相邻层的求偏导其实很简单,因为是线性的,所以偏导数其实就是参数本身嘛,就跟求解x₃的偏导类似。然后把各个偏导相乘就可以了。
这里有两个点:
这里有两个点:一个是**函数,这主要是为了让整个网络具有非线性特征,因为我们前面也提到了,很多情况下,线性函数没办法对输入进行适当的分类(很多情况下识别主要是做分类),那么就要让网络学出来一个非线性函数,这里就需要**函数,因为它本身就是非线性的,所以让整个网络也具有非线性特征。另外,**函数也让每个节点的输出值在一个可控的范围内,这样计算也方便。
貌似这样解释还是很不通俗,其实还可以用撩妹来打比方;女生都不喜欢白开水一样的日子,因为这是线性的,生活中当然需要一些浪漫情怀了,这个**函数嘛,我感觉类似于生活中的小浪漫,小惊喜,是不是?相处的每个阶段,需要时不时**一下,制造点小浪漫,小惊喜,比如;一般女生见了可爱的小杯子,瓷器之类都迈不开步子,那就在她生日的时候送一个特别样式,要让她感动得想哭。前面讲到男人要幽默,这是为了让她笑;适当的时候还要让她激动得哭。一哭一笑,多整几个回合,她就离不开你了。因为你的非线性特征太强了。
当然,过犹不及,小惊喜也不是越多越好,但完全没有就成白开水了。就好比每个layer都可以加**函数,当然,不见得每层都要加**函数,但完全没有,那是不行的。
由于**函数的存在,所以在求偏导的时候,也要把它算进去,**函数,一般用sigmoid,也可以用Relu等。**函数的求导其实也非常简单:
<img src="https://pic2.zhimg.com/v2-a9311523c35a3558844d1edc22cee9ed_b.jpg" data-rawwidth="257" data-rawheight="159" class="content_image" width="257">
求导: f'(x)=f(x)*[1-f(x)] 这个方面,有时间可以翻看一下高数,没时间,直接记住就行了。 至于Relu,那就更简单了,就是f(x) 当x<0的时候y等于0,其他时候,y等于x。 当然,你也可以定义你自己的Relu函数,比如x大于等于0的时候,y等于0.01x,也可以。
另一个是学习系数,为什么叫学习系数?刚才我们上面讲到∆增量,到底每次增加多少合适?是不是等同于偏导数(变化率)?经验告诉我们,需要乘以一个百分比,这个就是学习系数,而且,随着训练的深入,这个系数是可以变的。
当然,还有一些很重要的基本知识,比如SGD(随机梯度下降),mini batch 和 epoch(用于训练集的选择),限于篇幅,以后再侃吧。其实参考李宏毅的那篇文章就可以了。
这篇拙文,算是对我另一个回答的补充吧: 深度学习入门必看的书和论文?有哪些必备的技能需学习? - jacky yang 的回答
其实上面描述的,主要是关于怎么调整参数,属于初级阶段。上面其实也提到,在调参之前,都有默认的网络模型和参数,如何定义最初始的模型和参数?就需要进一步深入了解。 不过对于一般做工程而言,只需要在默认的网络上调参就可以了,相当于用算法; 对于学者和科学家而言,他们会发明算法,难度还是不小的。向他们致敬!
写得很辛苦,觉得好就给我点个赞吧:)
------------------------------------------------------------------------------------------------
关于求偏导的推导过程,我尽快抽时间,把数学公式用通俗易懂的语言详细描述一下,前一段时间比较忙,抱歉:)
------------------------------------------------------------------------------------------------
赞同 12K440 条评论
分享
收藏感谢收起
知乎用户
970 人赞同了该回答
深度学习怎么入门,一般无非是从Hinton coursera 上的 Neural Networks for Machine Learning以及stanford cs231开始。但是太多的人因为英语水平很差或者数学基础差,然后去报什么机器学习,深度学习培训班,被人收割智商税。
既然如此那我就推荐一个中文在线课程Hung-yi Lee ,这是台大的李宏毅教授 的课程主页,排名第一的答案那个300多页ppt作者也是他,严重怀疑这三百多页ppt就是他的课程ppt 的一个子集。
以下就是他讲的deep learning
machine learning and having it deep and structed 15
课程截图
<img src="https://pic1.zhimg.com/v2-d5de4acb5cc4e3f408ab12ff37abaff4_b.png" data-rawwidth="869" data-rawheight="665" class="origin_image zh-lightbox-thumb" width="869" data-original="https://pic1.zhimg.com/v2-d5de4acb5cc4e3f408ab12ff37abaff4_r.jpg">
17年课程截图
<img src="https://pic4.zhimg.com/v2-3f5beeb2f27b114a1a604c546d0e154f_b.png" data-rawwidth="870" data-rawheight="661" class="origin_image zh-lightbox-thumb" width="870" data-original="https://pic4.zhimg.com/v2-3f5beeb2f27b114a1a604c546d0e154f_r.jpg">
这是我见过的最好的中文深度学习资料,课程设置非常合理,内容由浅入深,比如他会将算法的原始paper 点出来,内容很全,大概会涵盖近几年最新的paper ,而且也会引用reddit 讨论的deep learning问题,同时他也会讲很多调参的技巧。又比方说他也会教一些深度学习工具的使用,15年教theano,17教tensorflow以及keras。他的课程主页上有ppt,video,homework,非常适合初学者食用,如果你的数学很差,他的课程主页有一门linear algebra,还有一门machine learning ,这两门课会补很多数学知识。
希望初学者长点心,不要报什么培训班,被别人收割智商税。当然你只要英语强,你可以直接去YouTube上找到一堆的大牛开的公开课以及会议演讲的视频。