搞懂深度学习到底需要哪些数学知识
IT互联网行业有个有趣现象,玩资本的人、玩产品的人、玩技术的人都能很好的在这个行业找到自己的位置并取得成功,而且可以只懂其中一样,不需要懂其余两样。玩技术的人是里面最难做的,也是三者收益最低的,永远都要不停学习,不停把画饼变成煎饼。 在今年5月底,Alphago又战胜了围棋世界冠军柯洁,AI再次呈现燎原之势席卷科技行业,吸引了众多架构师对这个领域技术发展的持续关注和学习,思考AI如何做工程化,如何把我们系统的应用架构、中间件分布式架构、大数据架构跟AI相结合,面向什么样的应用场景落地,对未来做好技术上的规划和布局。 之前发表过一篇文章 《如何用70行Java代码实现深度神经网络算法》 (点击「阅读原文」获得文章),记录了深度神经网络的计算过程和程序实现,本文再进一步研究一下背后的数学原理。 为了彻底理解深度学习,我们到底需要掌握哪些数学知识呢?经常看到会列出一系列数学科目:微积分、线性代数、概率论、复变函数、数值计算等等。这些数学知识有相关性,但实际上这是一个最大化的知识范围,学习成本会非常久,本文尝试归纳理解深度学习所需要的最小化数学知识和推导过程。 (以下根据作者的学习理解整理,有误之处,欢迎专家学者提出指导批评)。 多层神经网络的函数构成关系 多层神经网络从输入层,跨多个隐含层,到最后输出层计算误差,从数学上可以看做一系列函数的嵌套组合而成,上一层函数输出做为下一层函数输入