神经网络与深度学习
简介:zhuanlan.zhihu.com/p/61591812
github项目:github.com/nndl/nndl.g...
示例代码:github.com/nndl/nndl-c...
课程练习:见github.com/nndl/exerci...
绪论
名词解释:
什么是神经网络:
- 深度学习(Deep Learning)是一种模仿人脑工作原理的算法,旨在识别模式和数据中的关系。
- 由一系列的层组成,每层包含多个神经元。每个神经元接收输入并根据一个激活函数来决定是否将信号传递到下一层。
什么是深度学习:
-
深度学习是一种机器学习技术,它使用多层的神经网络来学习数据中的复杂模式。
-
"深度"指的是网络中隐藏层的数量。更多的隐藏层可以帮助网络学习更复杂的模式。
在《神经网络和深度学习》(邱锡鹏)一书中写道 深度学习问题是一个机器学习问题,指从有限样例中,通过算法总 结出一般性的规律,并可以应用到新的未知数据上。
和传统的机器学习不同,深度学习采用的模型一般比较复杂,指样本的原始输入到输出目标资治安的数据流会经过多个线性或非线性的组件,其中每个组件都会对学习进行加工,且会影响后续的组件。所以在输出结果的时候,我们并不知道其中每个组件的贡献是多少。其中贡献是模型的某个部分最终输出结果的影响程度。可以体现在权重和激活 贡献分配问题 CPA 这个是一个关键问题,关系如何需欸每个组件的参数。
目前比较好的解决贡献度分配问题的模型是 人工神经网络 ANN 简称 神经网络 至此我们梳理清楚了 深度学习和神经网络的关系。但是还需要注意,神经网络和深度学习并不是等价的。深度学习可以采用神经网络也可以采用其他模型(比如深度信念网络------一种概率图模型)。不过其中较为突出的是神经网络模型。
什么是人工智能:
- 简单的说 AI 就是让机器具有人类的智能,这是一个长期目标。而当下的chatgpt系列都属于人工智能。
- 图灵测试 我们很难诠释智能一词但是还是由一种方法来评判一个程序是否符合人工智能的概念:"一个人在 不接触对方的情况下,通过一种特殊的方式,和对方进行一系列的问答。如果 在相当长时间内,他无法根据这些问题判断对方是人还是计算机,那么就可以 认为这个计算机是智能的"。
目前,人工智能的主要领域大体上可以分为以下几个方面:
- 感知 即模拟人的感知能力,对外部刺激信息(视觉和语音等)进行感知和加工。 主要研究领域包括语音信息处理和计算机视觉等。
- 学习 即模拟人的学习能力,主要研究如何从样例或与环境交互中进行学习。主 要研究领域包括监督学习、无监督学习和强化学习等。
- 认知 即模拟人的认知能力,主要研究领域包括知识表示、自然语言理解、推理、 规划、决策等。

上图的是神经网络的发展历史再次不多赘述。
现在开始正真的学习
机器学习
在我之前的认知中 机器学习 和 传统统计学 没有太多区别。但在阅读完之后还是可以总结一些区别的:
-
相似指出
- 数据驱动:机器学习和传统统计学都是依赖与数据进行分析和预测。
- 模型构建:两者都使用各种模型来从数据中提取模式或进行预测。
-
区别
类目 机器学习 传统统计学 目标和应用 通常更注重预测和模型的性能,即能够准确地预测新数据点。(它会发生) 更侧重于理解数据的生成机制,推断和描述数据背后的关系,以及参数的置信度和假设检验。(为什么它会发生) 方法和技术 倾向于使用更复杂的算法,如神经网络、随机森林等,重视预测准确性和算法的自动化。 使用的模型(如线性回归、ANOVA等)往往更为简单和透明,强调模型的解释性和理论基础。 模型评估 评估通常基于预测性能(如准确率、精确率、召回率等)。 评估更侧重于模型参数的显著性、置信区间和拟合优度。
虽然机器学习和传统统计学有所不同,但它们并非相互排斥。在实际应用中,两者经常被结合使用,以利用各自的优势。例如,统计方法可以用于理解数据和初步分析,而机器学习技术则用于构建高性能的预测模型。理解这两个领域的差异和联系对于有效地分析数据和解决实际问题非常重要。
当我们用机器学习来解决实际任务时,会面对多种多样的数据形式,比如 声音、图像、文本等。像图像这类数据很自然地可以表示为一个连续的向量。而文本数据一般由离散符号组成。特别是计算机内部,每个符号都是表示为无意 义的编码,很难找到合适的表示方式。因此,在实际任务中使用机器学习模型 一般会包含以下几个步骤

- 数据预处理:经过数据的预处理,如去除噪声等。比如在文本分类中,去 除停用词等。
- 特征提取:从原始数据中提取一些有效的特征。比如在图像分类中,提取 边缘、尺度不变特征变换(Scale Invariant Feature Transform,SIFT)特 征等。
- 特征转换:对特征进行一定的加工,比如降维和升维。降维包括特征抽取 (Feature Extraction)和特征选择(Feature Selection)两种途径。常用的 特征转换方法有主成分分析(Principal components analysis,PCA)、线 性判别分析(Linear Discriminant Analysis)等。 很多特征转换方法也都是机 器学习方法。
- 预测:机器学习的核心部分,学习一个函数进行预测。
上述流程中,每步特征处理以及预测一般都是分开进行处理的。传统的机 器学习模型主要关注于最后一步,即构建预测函数。但是实际操作过程中,不 同预测模型的性能相差不多,而前三步中的特征处理对最终系统的准确性有着 十分关键的作用。由于特征处理一般都需要人工干预完成,利用人类的经验来 选取好的特征,并最终提高机器学习系统的性能。因此,很多的模式识别问题 变成了特征工程(Feature Engineering)问题。开发一个机器学习系统的主要 工作量都消耗在了预处理、特征提取以及特征转换上。 ------原文 邱锡鹏:《神经网络与深度学习》
表视学习
为了提高机器学习系统的准确率,我们就需要将输入信息转换为有效的特 征,或者更一般性称为表示(representation)。如果有一种算法可以自动地学 习出有效的特征,并提高最终机器学习模型的性能,那么这种学习就是可以叫 做表示学习(Representation Learning)。
这一段读者需要书上说的很详细。
深度学习
为了学习一种好的表示,需要构建具有一定"深度"的模型,并通过学习 算法来让模型来自动学习出好的特征表示(从底层特征,到中层特征,再到高 层特征),从而最终提升预测模型的准确率。所谓"深度"是指原始数据进行非 线性特征转换的次数。如果把一个表示学习系统看作是一个有向图结构,深度 也可以看作是从输入节点到输出节点所经过的最长路径的长度。 这样我们就需要一种学习方法可以从数据中学习一个"深度模型",这就是 深度学习(Deep Learning,DL)。深度学习是机器学习的一个子问题,其主要 目的是从数据中自动学习到有效的特征表示。
深度学习虽然早期主要用来 进行表示学习,但越来越多 地用来进行处理更加复杂的 推理、决策等问题。
常见的深度学习框架
在深度学习中,一般通过误差反向传播算法来进行参数学习。采用手工方 式来计算梯度再写代码实现的方式会非常低效,并且容易出错。此外,深度学 习模型需要的计算机资源比较多,一般需要在CPU和GPU之间不断进行切换, 开发难度也比较大。因此,一些支持自动梯度计算、无缝CPU和GPU切换等 功能的深度学习框架就应运而生。比较有代表性的框架包括:Theano、Caffe、 TensorFlow、Pytorch、Keras等。
- Theano1: 蒙特利尔大学的Python工具包,用来高效地定义、优化和执行 Theano 项目目前已停止维 多维数组数据对应数学表达式。Theano 可以透明的使用 GPUs 和高效的符号 护。 微分。
- Caffe2: 全称为 Convolutional Architecture for Fast Feature Embedding, 是一个卷积网络模型的计算框架,所要实现的网络结构可以在配置文件中指定, 不需要编码。Caffe是用C++和Python实现,主要用于计算机视觉。
- TensorFlow3: Google公司开发的Python工具包,可以在任意具备CPU或 者GPU的设备上运行。TensorFlow的计算过程使用数据流图来表示。TensorFlow的名字来源于其计算过程中的操作对象为多维数组,即张量(tensor)。
- Chainer4: 一个最早采用动态计算图的神经网络框架,其核心开发团队为来 自日本的一家机器学习创业公司Preferred Networks。和 Tensorflow、Theano、 Caffe等框架使用的静态计算图相比,动态计算图可以在运行时动态地构建计算 图,因此非常很适合进行一些复杂的决策或推理任务。
- PyTorch5: 由Facebook、NVIDIA、Twitter等公司开发维护的深度学习框 架,其前身为Lua语言的Torch6。PyTorch也是基于动态计算图的框架,在需 要动态改变神经网络结构的任务中有着明显的优势。