学习深度学习需要具备哪些基础才可以?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习深度学习需要具备哪些基础才可以?相关的知识,希望对你有一定的参考价值。
如果未来要走深度学习方向的话,其实本科数学系的课程基本上够用了,如果不够的话,查缺补漏地看一些资料和书籍就可以了。不需要再去读一个数学系的研究生学位。
推荐《Deep Learning》这本书。作者是 Ian Goodfellow、Yoshua Bengio 和 Aaron Courville 三位大牛。这本书的中文版于 2017 年 7 月 22 号上市。该书由众多译者协力完成。《深度学习》这本书从浅入深介绍了基础数学知识、机器学习经验以及现阶段深度学习的理论和发展,不管是人工智能技术爱好者,还是相关从业人员使用这本书都是非常有好处的。另外,读者如果想熟悉一些数学知识,本书也做了一些介绍,包括矩阵,导数等基本内容。读者可以从头读到尾。
《深度学习》这本书的一大特点是介绍深度学习算法的本质,脱离具体代码实现给出算法背后的逻辑,不写代码的人也完全可以看。为了方便读者阅读,作者特别绘制了本书的内容组织结构图,指出了全书20章内容之间的相关关系。读者可以根据自己的背景或需要,随意挑选阅读。
官方中文版的 GitHub 链接在此:https://github.com/exacity/deeplearningbook-chinese
深度学习
京东
¥ 151.20
去购买
除此之外,还有一本书《动手学深度学习》。本书旨在向读者交付有关深度学习的交互式学习体验。书中不仅阐述深度学习的算法原理,还演示它们的实现和运行。与传统图书不同,本书的每一节都是一个可以下载并运行的 Jupyter记事本,它将文字、公式、图像、代码和运行结果结合在了一起。此外,读者还可以访问并参与书中内容的讨论。
全书的内容分为 3 个部分:第一部分介绍深度学习的背景,提供预备知识,并包括深度学习基础的概念和技术;第二部分描述深度学习计算的重要组成部分,还解释近年来令深度学习在多个领域大获成功的卷积神经网络和循环神经网络;第三部分评价优化算法,检验影响深度学习计算性能的重要因素,并分别列举深度学习在计算机视觉和自然语言处理中的重要应用。
本书同时覆盖深度学习的方法和实践,主要面向在校大学生、技术人员和研究人员。阅读本书需要读者了解基本的Python编程或附录中描述的线性代数、微分和概率基础。
动手学深度学习
京东
¥ 76.50
去购买
如果觉得数学知识不太够,可以看这一本《深度学习的数学》。本书基于丰富的图示和具体示例,通俗易懂地介绍了深度学习相关的数学知识。第1章介绍神经网络的概况;第 2 章介绍理解神经网络所需的数学基础知识;第 3 章介绍神经网络的优化;第 4 章介绍神经网络和误差反向传播法;第 5 章介绍深度学习和卷积神经网络。书中使用 Excel 进行理论验证,帮助读者直观地体验深度学习的原理。
参考技术A 数学基础如果你能够顺畅地读懂深度学习论文中的数学公式,可以独立地推导新方法,则表明你已经具备了必要的数学基础。
掌握数学分析、线性代数、概率论和凸优化e799bee5baa6e58685e5aeb931333431373233四门数学课程包含的数学知识,熟知机器学习的基本理论和方法,是入门深度学习技术的前提。因为无论是理解深度网络中各个层的运算和梯度推导,还是进行问题的形式化或是推导损失函数,都离不开扎实的数学与机器学习基础。
数学分析
在工科专业所开设的高等数学课程中,主要学习的内容为微积分。对于一般的深度学习研究和应用来说,需要重点温习函数与极限、导数(特别是复合函数求导)、微分、积分、幂级数展开、微分方程等基础知识。在深度学习的优化过程中,求解函数的一阶导数是最为基础的工作。当提到微分中值定理、Taylor公式和拉格朗日乘子的时候,你不应该只是感到与它们似曾相识。
线性代数
深度学习中的运算常常被表示成向量和矩阵运算。线性代数正是这样一门以向量和矩阵作为研究对象的数学分支。需要重点温习的包括向量、线性空间、线性方程组、矩阵、矩阵运算及其性质、向量微积分。当提到Jacobian矩阵和Hessian矩阵的时候,你需要知道确切的数学形式;当给出一个矩阵形式的损失函数时,你可以很轻松的求解梯度。
概率论
概率论是研究随机现象数量规律的数学分支,随机变量在深度学习中有很多应用,无论是随机梯度下降、参数初始化方法(如Xavier),还是Dropout正则化算法,都离不开概率论的理论支撑。除了掌握随机现象的基本概念(如随机试验、样本空间、概率、条件概率等)、随机变量及其分布之外,还需要对大数定律及中心极限定理、参数估计、假设检验等内容有所了解,进一步还可以深入学习一点随机过程、马尔可夫随机链的内容。
凸优化
结合以上三门基础的数学课程,凸优化可以说是一门应用课程。但对于深度学习而言,由于常用的深度学习优化方法往往只利用了一阶的梯度信息进行随机梯度下降,因而从业者事实上并不需要多少“高深”的凸优化知识。理解凸集、凸函数、凸优化的基本概念,掌握对偶问题的一般概念,掌握常见的无约束优化方法如梯度下降方法、随机梯度下降方法、Newton方法,了解一点等式约束优化和不等式约束优化方法,即可满足理解深度学习中优化方法的理论要求。
机器学习
归根结底,深度学习只是机器学习方法的一种,而统计机器学习则是机器学习领域事实上的方法论。以监督学习为例,需要你掌握线性模型的回归与分类、支持向量机与核方法、随机森林方法等具有代表性的机器学习技术,并了解模型选择与模型推理、模型正则化技术、模型集成、Bootstrap方法、概率图模型等。深入一步的话,还需要了解半监督学习、无监督学习和强化学习等专门技术。
DevOps 需要学习什么基础知识,需要掌握哪些技能?
来自社区问答,供参考
@eximbank 系统架构师:
1、首先必需具备coding能力,诸如Pythong, Go或C/C++等;
2、必需能动操作系统/Linux+Windows的基本,进程管理,网络管理,存储管理,虚拟化+Docker等;
3、知道一些管理服务器的开源组件和系统命令等,包括DNS,OSI网络和安全,监控,日志,性能方面等;
4、懂企业架构,诸如WebServer,数据库等
5、最关键得理解Infrastructure,自动化工具引擎、管理虚拟化的工具平台、Docker管理平台及其相关架构、Orchestrate 工具和常用一些云的使用技巧,当然包括Infrastructure的运营和运维操作能力,什么监控(也要懂应用监控等)工具等等。
有这些5个方面的实力,估计就差不多了~~~其他就是不停的 practice
@bryan 软件架构设计师 :
首先看一下这个词 ,devops=development(开发)+ operation(运维)。从中是否可以看到需要学习哪方面的知识了呢?
随着技术的发展和专业化的不断发展,很多传统部门于是有了研发部门和运维部门。职责不同,理念就会不同。
1)对于研发部门,考核指标一般是如何快速响应业务需求。希望用一些新的技术来解放生产力,可以更好的提升研发效率,因此会更容易引入一些新框架和新工具。任何技能的上手都需要一个逐渐学习的过程,有一定的学习成本。总而言之,“求变”;
2)对于运维部门,考核指标一般是如何保持业务系统的稳定性。任何系统一般是运行很久之后才会进行稳定期。对于2个系统,一个是很古老的技术,已经运行十年了;一个是很先进的技术,每两周就更新一次。那么哪个系统最容易出现运维问题呢?显然是后者,变化越多,概率越高。为了不出事情,怎么办呢?那就不变更了呗。不变就不会出问题。总而言之,“求稳”。
一个“求变”,一个"求稳",于是就产生了矛盾,产生了互相指责。怎么解决这个事情呢?如果一个团队包含研发人员和运维人员,那么就会好多了。因为二者的职责也都融合到一起了。所以,我个人感觉devops是一种理念。那么这种理念怎么落地呢?个人认为,需要真正落地,首先从高管层意识到devops真正是什么,然后从企业组织架构层面进行调整。
回到lz的问题。devops需要什么技术呢?那么不难回答了。如果你是运维人员,那就多了解一些项目研发过程和研发技术,如果你是研发人员,那就多了解一些基础环境的运维,如操作系统、中间件等。
对开发需要了解到什么程度呢?从项目生命周期看,全程参与和跟踪过一个项目研发;从技术层面看,项目研发语言、代码管理git、自动化构建maven/gradle等,整个知识谱图是一个不断扩充的过程。我难以给出一个清晰的清单。可以推荐一些书供参考,《凤凰项目:一个IT运维的传奇故事》和《Effective DevOps》(中文本已出版)。
@he7yong 研发工程师 Canway:
DevOps,这个词在中国的IT圈中是被用滥了的词,有公司关注在CI/CD和持续交付,有公司关注在运维开发,也有公司提出来DevSecOps关注在安全。
因此,你看看根据自己公司的要求,很多公司关注在应用代码的快速上线,这种情况你可能更多的需要关注在持续交付流水线的构建,以及应用在多个环境中的自动化的部署。
以上内容仅供参考,欢迎点击阅读原文,分享您的观点
以上是关于学习深度学习需要具备哪些基础才可以?的主要内容,如果未能解决你的问题,请参考以下文章