深圳网站建设公司制作定制,网站建设与维护前景,建筑工程网络图视频教程,中国银行网站建设如果在这个人工智能的时代#xff0c;作为一个有理想抱负的程序员#xff0c;或者学生、爱好者#xff0c;不懂深度学习这个超热的话题#xff0c;似乎已经跟时代脱节了。但是#xff0c;深度学习对数学的要求#xff0c;包括微积分、线性代数和概率论与数理统计等#… 如果在这个人工智能的时代作为一个有理想抱负的程序员或者学生、爱好者不懂深度学习这个超热的话题似乎已经跟时代脱节了。但是深度学习对数学的要求包括微积分、线性代数和概率论与数理统计等让大部分的有理想抱负青年踟蹰前行。那么问题来了理解深度学习到底需不需要这些知识关于深度学习网上的资料很多不过大部分都不太适合初学者。杨老师总结了几个原因深度学习确实需要一定的数学基础。如果不用深入浅出地方法讲有些读者就会有畏难的情绪因而容易过早地放弃。中国人或美国人写的书籍或文章普遍比较难。深度学习所需要的数学基础并没有想象中的那么难只需要知道导数和相关的函数概念即可。假如你高等数学也没学过很好这篇文章其实是想让文科生也能看懂只需要学过初中数学。不必有畏难的情绪我比较推崇李书福的精神在一次电视采访中李书福说谁说中国人不能造汽车造汽车有啥难的不就是四个轮子加两排沙发嘛。当然他这个结论有失偏颇不过精神可嘉。“王小二卖猪”解读深度学习之导数导数是什么无非就是变化率比如王小二今年卖了 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₃ 求偏导。废话半天这些跟深度学习到底有啥关系当然有关系深度学习是采用神经网络用于解决线性不可分的问题。这里我主要讲讲数学与深度学习的关系。先给大家看几张图图1所谓深度学习就是具有很多个隐层的神经网络图2单输出的时候怎么求偏导数图3多输出的时候怎么求偏导数后面两张图是日本人写的关于深度学习的书里面的两张图片。所谓入力层出力层中间层分别对应于中文的输入层输出层和隐层。大家不要被这几张图吓着其实很简单就以撩妹为例。男女恋爱我们大致可以分为三个阶段初恋期。相当于深度学习的输入层。别人吸引你肯定是有很多因素比如身高身材脸蛋学历性格等等这些都是输入层的参数对每个人来说权重可能都不一样。热恋期。我们就让它对应隐层吧这个期间双方各种磨合柴米油盐酱醋茶。稳定期。对应输出层是否合适就看磨合得咋样了。大家都知道磨合很重要怎么磨合呢就是不断学习训练和修正的过程比如女朋友喜欢草莓蛋糕你买了蓝莓的她的反馈是 negative你下次就别买了蓝莓改草莓了。看完这个有些小伙可能要开始对自己女友调参了。有点不放心所以补充一下。撩妹和深度学习一样既要防止欠拟合也要防止过拟合。所谓欠拟合对深度学习而言就是训练得不够数据不足就好比你撩妹经验不足。要做到拟合送花当然是最基本的还需要提高其他方面比如提高自身说话的幽默感等。这里需要提一点欠拟合固然不好但过拟合就更不合适了。过拟合跟欠拟合相反一方面如果过拟合她会觉得你有陈冠希老师的潜质更重要的是每个人情况不一样就像深度学习一样训练集效果很好但测试集不行就撩妹而言她会觉得你受前任(训练集)影响很大这是大忌如果给她这个印象你以后有的烦了切记切记深度学习也是一个不断磨合的过程刚开始定义一个标准参数这些是经验值就好比情人节和生日必须送花一样然后不断地修正得出图 1 每个节点间的权重。为什么要这样磨合试想一下我们假设深度学习是一个小孩我们怎么教他看图识字肯定得先把图片给他看并且告诉他正确的答案需要很多图片不断地教他训练他这个训练的过程其实就类似于求解神经网络权重的过程。以后测试的时候你只要给他图片他就知道图里面有什么了。所以训练集其实就是给小孩看带有正确答案的图片对于深度学习而言训练集就是用来求解神经网络的权重最后形成模型而测试集就是用来验证模型的准确度。对于已经训练好的模型如下图所示权重w1w2...都已知。图4图5像上面这样从左至右容易算出来。但反过来测试集有图片也有预期的正确答案要反过来求 w1w2......怎么办怎么求偏导数绕了半天终于该求偏导出场了。目前的情况是我们假定一个神经网络已经定义好比如有多少层每层有多少个节点也有默认的权重和激活函数等。输入图像确定的情况下只有调整参数才能改变输出的值。怎么调整怎么磨合每个参数都有一个默认值我们就对每个参数加上一定的数值∆然后看看结果如何如果参数调大差距也变大那就得减小∆因为我们的目标是要让差距变小反之亦然。所以为了把参数调整到最佳我们需要了解误差对每个参数的变化率这不就是求误差对于该参数的偏导数吗这里有两个点一个是激活函数主要是为了让整个网络具有非线性特征。我们前面也提到了很多情况下线性函数没办法对输入进行适当的分类很多情况下识别主要是做分类。那么就要让网络学出来一个非线性函数这里就需要激活函数因为它本身就是非线性的所以让整个网络也具有了非线性特征。另外激活函数也让每个节点的输出值在一个可控的范围内计算也方便。貌似这样解释还是很不通俗其实还可以用撩妹来打比方女生都不喜欢白开水一样的日子因为这是线性的生活中当然需要一些浪漫情怀了这个激活函数嘛我感觉类似于生活中的小浪漫小惊喜。相处的每个阶段需要时不时激活一下制造点小浪漫小惊喜。比如一般女生见了可爱的小杯子瓷器之类都迈不开步子那就在她生日的时候送一个特别样式让她感动得想哭。前面讲到男人要幽默这是为了让她笑适当的时候还要让她激动得哭。一哭一笑多整几个回合她就离不开你了。因为你的非线性特征太强了。当然过犹不及小惊喜也不是越多越好但完全没有就成白开水了。就好比每个 layer 都可以加激活函数当然不见得每层都要加激活函数但完全没有那是不行的。关键是怎么求偏导。图 2 和图 3 分别给了推导的方法其实很简单从右至左挨个求偏导就可以。相邻层的求偏导很简单因为是线性的所以偏导数其实就是参数本身嘛就跟求解 x₃ 的偏导类似。然后把各个偏导相乘就可以了。这里有两个点一个是激活函数其实激活函数也没啥就是为了让每个节点的输出都在 0 到 1 的区间这样好算账所以在结果上面再做了一层映射都是一对一的。由于激活函数的存在在求偏导的时候也要把它算进去激活函数一般用 sigmoid也可以用 Relu 等。激活函数的求导其实也非常简单求导 f(x)f(x)*[1-f(x)]这个方面有时间可以翻看一下高数如果没时间直接记住就行了。至于 Relu那就更简单了就是 f(x) 当 x0 的时候 y 等于 0其他时候y 等于 x。当然你也可以定义你自己的 Relu 函数比如 x 大于等于 0 的时候y 等于 0.01x也可以。什么是学习系数另一个是学习系数为什么叫学习系数刚才我们上面讲到∆增量到底每次增加多少合适是不是等同于偏导数变化率经验告诉我们需要乘以一个百分比这个就是学习系数而且随着训练的深入这个系数是可以变的。当然还有一些很重要的基本知识比如 SGD随机梯度下降mini batch 和 epoch用于训练集的选择。上面描述的内容主要是关于怎么调整参数属于初级阶段。上面也提到在调参之前都有默认的网络模型和参数如何定义最初始的模型和参数就需要进一步深入了解。不过对于一般做工程而言只需要在默认的网络上调参就可以相当于使用算法对于学者和科学家而言他们会发明算法这有很大的难度。向他们致敬来源知乎Jacky Yang