【一起撸个DL框架】1 绪论

文章目录
1 绪论1.1 在人工智能的大潮里
人工智能——一个如今十分火热的话题,人们在生活中越来越多地使用它、谈论它 。在2022年之前,人工智能在我们的生活中就已经有了许多落地的应用,如手机扫脸付款、抖音个性化推荐 。而的问世又掀起了新一轮的热潮,寒假期间在新闻联播上看到时,我突然有些恍惚——聊天机器人已不再只是实验室里的玩物、人们眼中的“人工智障”,它突然闯进大众的生活里了 。
人工智能越来越激起人们的好奇与关注了,因为它越来越强大 。但,从“人们手工地定义一条条的规则”到“随便聊”的聊天机器人,从”人工“到”智能“,这其中究竟发生了什么?
【【一起撸个DL框架】1 绪论】也行你已经听过深度学习、机器学习这样的概念,它们与人工智能是这样一种关系:人工智能是我们的目标,机器学习则是手段,而深度学习是机器学习的一种,同时也是目前我们实现人工智能最有希望的方式 。(很强大,但在许多人看来它并不具有真正的智能)
而深度学习技术必然离不开深度学习框架(这正是我真正要介绍的内容),现流行的框架如,,,其基本原理是一致的 。也许你在已经了解了深度学习的理论之后,使用深度框架实践时仍然会遇到一些障碍——源于框架的障碍 。它的封装会让你很方便,但有时它的抽象也会让你很头疼 。
1.2 为什么重复造轮子
程序员间流传着一句“名言”:不要重复造轮子 。但我们如果是作为一个学生的角色,那么应该学会去“造轮子” 。

【一起撸个DL框架】1 绪论

文章插图
使用框架的过程难以让我了解它,因为我能看见的唯有现象而已 。人们有时会说,不懂就去读源代码,而这也很难得以清晰的了解框架的原理,不过是管中窥豹,只见一斑罢了 。而亲手造轮子的方法很有用,它迫使你将脑海中碎片化的知识组织起来,以达到你的目标 。
学习造轮子有三种状态:一是跟着敲代码,二是试着改代码,三是独立设计 。其中后两种方式更有助于促进你自己去思考,我更倾向于第三种 。当然,你肯定无法凭空知道如何去设计一个深度学习框架,学习知识是必要的 。但是在学过一部分之后,就可以试着关上书(或者别的什么资料),从第一行代码开始,自己去设计代码逻辑,以实现一些功能 。
然后,你可以再与你的资料中的实现进行对比,有哪些异同,哪些好的地方和不好的地方,他为什么和你的想法不一样,他的目的是什么 。收获反馈和总结之后,再脱离你的资料,试着去改进你的代码 。
此外,在开始你自己的设计和实现之前,你甚至可以先去干点别的,以在脑海中忘掉书中一些具体的实现细节,留下基本的原理——给自己留下更多思考和选择的机会 。
1.3 深度学习框架简介
所谓“深度学习框架”,其实是一个代码库,我们可以利用其中预定义的函数和类更快地实现一个深度学习任务,比如猫狗分类问题 。本文假设读者已经了解一些深度学习的原理,而重点解释在你实现深度学习任务的过程中,框架究竟帮你做了哪些事情 。
深度学习的本质是函数拟合,例如对于目标函数 y = 2 x + 3 y=2x+3 y=2x+3,你需要现设计一个合适的函数架构,比如 y = w x + b y=wx+b y=wx+b,其中w和b两个参数是未知的,通过不断地把很多组自变量x和对应的函数结果y“喂给”你设计的函数,程序就可以找出w和b的值 。因此,深度学习可以说是一种“在现象中总结出规律”的技术 。
深度学习框架的核心功能是自动微分,而自动微分的原理是复合(嵌套)函数求导的链式法则,例如,y = x 2 , z = 2 ? y y=x^2,z=2*y y=x2,z=2?y,则z关于x的导数