💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[TOC] # 第一章 深度学习介绍 ## 人工智能 人工智能的概念很宽泛,现在根据人工智能的实力将它分为三大类。 (1) 弱人工智能(Artificial Narrow Intellignece,ANI) 弱人工智能是擅长于单个方面的人工智能。比如战胜世界围棋冠军的人工智能 Al-phaGo,它只会下围棋,如果你让他辨识以下猫和狗,它就不知道怎么做了。我们现在实现的几乎全是弱人工智能。 (2) 强人工智能(Artificial General Intelligence,AGI) 这是类似人类级别的人工智能。强人工智能是指在各方面都能喝人类比肩的人工智能。 (3) 超人工智能(Artificial Superintelligence,ASI) 牛津哲学家、知名人工智能思想家 Nick Bostrom 把超级智能定义为 “在几乎所有领域都比最聪明的人类大脑都聪明得多,包括科学创新、通识和社交技能”。 ## 数据挖掘、机器学习与深度学习 **数据挖掘** 简单来说,数据挖掘就是在大型的数据库中发现有用的信息,并加以分析的过程,也就是人们所说的 KDD(knowledge discovery in database)。一个数据的处理过程,就是从输入数据开始,对数据进行预处理,包括特征选择、规范化、降低维数、数据提升等,然后进行数据的分析和挖掘,再经过处理,例如模式识别、可视化等,最后形成可用信息的全过程。 所以说数据挖掘只是一种概念,即从数据中挖掘到有意义的信息,从大量的数据中寻找数据之间的特性。 **机器学习** 机器学习算是实现人工智能的一种途径,它与数据挖掘类似,是一门多领域交叉学科,设计概率论、统计学、逼近论、计算复杂性理论等多门学科。相比于数据挖掘从大数据之间找相互特性而言,机器学习更注重算法的设计,让计算机能够自动地从数据中 “学习” 规律,并利用规律对未知数据进行预测。 机器学习可以分为以下五个大类: (1) 监督学习:从给定的训练数据集中学习出一个函数,当新的数据到来时,可以根据这个函数预测结果。监督学习的训练集要求是输入和输出,也可以说是特征和目标。训练集中的目标是由人标注的。常见的监督学习算法包括回归与分类。 (2) 无监督学习:无监督学习与监督学习相比,训练集没有人为标注的结果。常见的无监督学习算法有聚类等。 (3) 半监督学习:这是一种介于监督学习与无监督学习之间的方法。 (4) 迁移学习:将已经训练好的模型参数迁移到新的模型来帮助新模型训练数据集。 (5) 增强学习:通过观察周围环境来学习。每个动作都会对环境有影响,学习对象根据观察到的周围环境的反馈来判断。 <br/> 传统的机器学习算法有以下几种:线性回归模型、logistic 回归模型、k-临近算法、决策树、随机森林、支持向量机、人工神经网络、EM 算法、概率图模型等。 **深度学习** 深度学习的最初级版本是人工神经网络,这是机器学习的一个分支,其视图模拟人脑,通过更加复杂的结构自动提取数据特征。 推荐阅读:[深度学习的历史](https://www.jianshu.com/p/efda7876fe1c) <br /> 深度学习的结构 随着神经网络的发展,目前比较流行的网络结构分别有:深度神经网络(DNN)、卷积神经网络(CNN)、循环递归神经网络(RNN)、生成对抗网络(GAN)等。 # 第二章 深度学习框架 框架的出现是为了减少重复的代码,提高工作效率,下面介绍下目前流行的几个深度学习框架。 ## Tensorflow Google 开源的 TensorFlow,是一款使用 C++ 语言开发的开源数学计算软件,使用数据流图(Data Flow Graph)的形式进行计算。图中的节点代表数学运算、线条表示多维数据数组(tensor)之间的交互。 目前 TensorFlow 是全世界使用人数最多、社区最为庞大的一个框架,因为 Google 公司出品,其更新与维护也较为频繁,并且有着 Python 和 C++ 接口,教程也非常完善,可以说是深度学习界框架默认的老大。 其缺点在于语言过于底层,目前有很多基于 Tensorflow 的第三方抽象库将 Tensorflow 的函数进行封装,使其变得简洁,比较有名的有 Keras,Tflearn,tfslim,TensorLayer。 ## Caffe Caffe 全称是 Convolutional Architecture for Fast Feature Embedding,其对于卷积网络的支持特别好,是用 C++ 写的,没有提供 Python 接口,只提供了 C++ 接口。 Caffe 之所以流行,是因为之前很多 ImageNet 比赛里面使用的网络都是用 Caffe 写的,所以如果您想使用这些比赛里面的网络模型就只能使用 Caffe,这也就导致了很多人直接转到 Caffe 这个框架下。 其缺点是不够灵活,同时内存占用高,只提供了 C++ 接口。 ## Torch Torch 是一个有大量机器学习算法支持的科学计算框架。Torch 的特点在于特别灵活,但是另外一个特殊之处是其采用 Lua 作为编程语言,这就增加了学习使用 Torch 的成本。PyTorch 的前身就是 Torch,PyTorch 的低层和 Torch 框架一样,但是使用 Python 重写了很多内容,不仅更加灵活,支持动态图,也提供了 Python 接口。 ## 为何使用 PyTorch # 第三章 多层全连接神经网络 ## PyTorch 基础 ### Tensor(张量) PyTorch 里面处理的最基本的操作对象就是 Tensor,Tensor 是张量的英文,表示一个多维的矩阵,比如零维就是一个点,一维就是向量,二维就是一般的矩阵,多维就相当于一个多维的数组,这和 numpy 是对应的,而且 PyTorch 的 Tensor 可以和 numpy 的 ndarray 相互转换,唯一不同的是 PyTorch 可以在 GPU 上运行,而 numpy 的 ndarray 只能在 CPU 上运行。 常用的不同数据类型的 Tensor 如下: - torch.FloatTensor&emsp;32位浮点型 - torch.DoubleTensor&emsp;64位浮点型 - torch.ShortTensor&emsp;16位整型 - torch.IntTensor&emsp;32位整型 - torch.LongTensor&emsp;64位整型