科普:深度学习真的那么难吗?
扫描二维码
随时随地手机看文章
今天,面对AI如此重要的江湖地位,深度学习作为重要的一个研究分支,几乎出现在当下所有热门的AI应用领域,其中包含语义理解、图像识别、语音识别,自然语言处理等等,更有人认为当前的人工智能等同于深度学习领域。
如果在这个人工智能的时代,作为一个有理想抱负的程序员,或者学生、爱好者,不懂深度学习这个超热的话题,似乎已经跟时代脱节了。
但是,深度学习对数学的要求,包括微积分、线性代数和概率论与数理统计等要求,让大部分的有理想抱负青年踟蹰前行。那么问题来了,理解深度学习,到底需不需要这些知识?关子就不卖了,标题已经说明。
前段时间,编辑闲逛各大社区论坛,发现一篇非常适合初学者学习的深度学习的回复帖子,用风趣的白话和例子深入浅出的分析了深度学习的过程,非常通俗易懂。通过与在西门子从事人工智能领域的杨安国老师沟通,获得内容编辑授权,把内容重新整理修正,内容更加通俗易懂,希望人人都能够理解深度学习。
关于深度学习,网上的资料很多,不过貌似大部分都不太适合初学者。杨老师总结了几个原因:
1、深度学习确实需要一定的数学基础。如果不用深入浅出地方法讲,有些读者就会有畏难的情绪,因而容易过早地放弃。
2、中国人或美国人写的书籍或文章,普遍比较难一些。
深度学习所需要的数学基础并没有想象中的那么难,只需要知道导数和相关的函数概念即可。高等数学也没学过?很好,这篇文章其实是想让文科生也能看懂,只需要学过初中数学就完全可以。
其实不必有畏难的情绪,比较推崇李书福的精神,在一次电视采访中,李书福说:谁说中国人不能造汽车?造汽车有啥难的,不就是四个轮子加两排沙发嘛。当然,他这个结论有失偏颇,不过精神可嘉。
导数是什么?无非就是变化率。
比如:王小二今年卖了100头猪,去年卖了90头,前年卖了80头。。。变化率或者增长率是什么?每年增长10头猪,多简单。这里需要注意有个时间变量---年。王小二卖猪的增长率是10头/年,也就是说,导数是10。
函数y=f(x)=10x+30,这里我们假设王小二第一年卖了30头,以后每年增长10头,x代表时间(年),y代表猪的头数。
当然,这是增长率固定的情形,而现实生活中,很多时候,变化量也不是固定的,也就是说增长率不是恒定的。比如,函数可能是这样: y=f(x)=5x2;+30,这里x和y依然代表的是时间和头数,不过增长率变了,怎么算这个增长率,我们回头再讲。或者你干脆记住几个求导的公式也可以。
深度学习还有一个重要的数学概念:偏导数,偏导数的偏怎么理解?偏头疼的偏,还是我不让你导,你偏要导?都不是,我们还以王小二卖猪为例,刚才我们讲到,x变量是时间(年),可是卖出去的猪,不光跟时间有关啊,随着业务的增长,王小二不仅扩大了养猪场,还雇了很多员工一起养猪。所以方程式又变了:y=f(x)=5x2;+8x + 35x +30
这里x代表面积,x代表员工数,当然x还是时间。
上面我们讲了,导数其实就是变化率,那么偏导数是什么?偏导数无非就是多个变量的时候,针对某个变量的变化率。在上面的公式里,如果针对x求偏导数,也就是说,员工对于猪的增长率贡献有多大,或者说,随着(每个)员工的增长,猪增加了多少,这里等于35---每增加一个员工,就多卖出去35头猪。 计算偏导数的时候,其他变量都可以看成常量,这点很重要,常量的变化率为0,所以导数为0,所以就剩对35x求导数,等于35. 对于x求偏导,也是类似的。
求偏导我们用一个符号表示:比如 y/ x就表示y对x求偏导。
废话半天,这些跟深度学习到底有啥关系?当然有关系,深度学习是采用神经网络,用于解决线性不可分的问题。关于这一点,我们回头再讨论,大家也可以网上搜一下相关的文章。这里主要讲讲数学与深度学习的关系。先给大家看几张图:
图1. 所谓深度学习,就是具有很多个隐层的神经网络。
图2.单输出的时候,怎么求偏导数
图3.多输出的时候,怎么求偏导数。