深度学习实践二、三章

本文详细介绍了深度学习框架Caffe、TensorFlow和pyTorch的特点、优缺点,并讨论了机器学习中的模型评估、模型选择、监督学习与非监督学习,包括正则化方法和衡量指标。
摘要由CSDN通过智能技术生成

目录

第二章 深度学习框架

Caffe

简介 

特点

TensorFlow

简介

特点

pyTorch

简介

特点

三者之间的比较

第三章 机器学习基础知识

模型评估与模型选择

验证

正则化

监督学习与非监督学习

监督学习

回归

均方误差损失函数(Mean Squared Error,MSE):

简单线性回归

多元线性回归

分类

非监督学习(unsupervised learning)

主成分分析(principal component analysis)问题(PCA):

因果关系(causality)和概率图模型(probabilistic graphical models)问题:

生成对抗性网络(generative adversarial networks):

衡量指标

小结


  • 第二章 深度学习框架

       深度学习框架是一种用于构建、训练和部署深度神经网络模型的工具集合。它提供了丰富的函数和工具,使开发者能够方便地创建、调整和优化神经网络模型。这些深度学习框架被应用于计算机视觉、自然语言处理、语音识别、机器学习等多个领域。

       目前常用的深度学习框架有PyTorch、Theano、TensorFlow、Keras、Caffe、MXNet、CNTK、PaddlePaddle

       本章学习的深度学习框架为Caffe、TensorFlow、pyTorch。

Caffe

简介 

Caffe是一个使用C++编写的深度学习框架,特别适合于机器视觉和自然语言处理等领域,是一个清晰、可读性高、快速的学习框架,也是一个功能强大且对初学者友好的深度学习框架,但在选择时也需要考虑到自己的具体需求和框架的最新发展趋势。

优点:Caffe在性能上表现出色,尤其是在GPU加速和模型部署方面。它的设计简洁快速,适合用于卷积神经网络的应用。
缺点:Caffe缺少灵活性,因为它的设计相对固定,不如其他框架那样容易扩展和自定义。

特点

caffe是一个清晰而高效的深度学习框架。

  1. 易用性:Caffe以其简单易用而闻名,它为用户提供了方便的配置和接口,使得模型的训练和部署变得相对容易。
  2. 多语言支持:虽然Caffe的核心是用C++编写的,但它提供了Python和MATLAB的接口,这样可以让更多领域的研究者和开发者能够轻松地使用这个框架。
  3. 性能:Caffe在设计时就考虑到了性能,它的模块化设计使得用户可以自定义各种类型的层和损失函数,以适应不同的研究和应用需求。
  4. 社区与生态:Caffe由伯克利人工智能研究小组和伯克利视觉和学习中心开发,拥有一个活跃的社区和不断更新的生态系统。

TensorFlow

简介

TensorFlow是一个由Google团队开发的端到端开源机器学习平台,它提供了一套完整的工具和资源,支持从研究到生产的全过程,它不仅适用于研究和实验,也适合用于生产环境中的机器学习项目

优点:TensorFlow通过静态计算图和图优化技术提供了高效的性能。它具有高度可定制的图形计算环境,可以构建各种类型的神经网络模型和算法。
缺点:TensorFlow的系统设计过于复杂,接口频繁变动,导致新老版本兼容性问题。接口设计也较为难懂,缺乏易懂的教程。

特点
  1. 全面的生态系统:TensorFlow拥有一个全面而灵活的生态系统,包括各种工具、库和社区资源,这些资源可以帮助研究人员推动机器学习技术的发展。
  2. 基于Python的设计:TensorFlow是完全基于Python语言设计的,这使得它在实现机器学习和深度学习概念时非常简便。它的设计初衷是以最简单的方式来执行复杂的计算任务。
  3. GPU支持:TensorFlow通过pip软件包为支持CUDA®的显卡提供GPU支持,这可以显著提高计算效率,尤其是在处理大规模数据集和复杂模型时。
  4. 教程和资源:对于初学者来说,TensorFlow提供了丰富的教程和指导,帮助用户快速上手。例如,有教程指导如何加载数据集、构建和训练神经网络模型以及评估模型的准确性
  5. 运算性能强:TensorFlow 能在 Google TPU 上获得最佳性能,但它还努力在各种平台上实现高性能 — 这些平台不仅包括服务器和桌面,还包括嵌入式系统和移动设备

pyTorch

简介

PyTorch是一种开源的深度学习框架,它以出色的灵活性和易用性著称。PyTorch具有先进设计理念的框架,其历史可追溯到2002年就诞生于纽约大学的Torch。Torch使用了一种不是很大众的语言Lua作为接口。Lua简洁高效,但由于其过于小众,以至于很多人听说要掌握Torch必须新学一门语言就望而却步,但Lua其实是一门比Python还简单的语言。

优点:PyTorch以其动态计算图使得模型的构建更加灵活,这在某些情况下可能效率较低,但提供了极大的便利。PyTorch库简单,与NumPy、SciPy等可以无缝连接,基于tensor的GPU加速非常给力。它在学术界的优势很大,许多深度学习相关的研究都是通过PyTorch进行的。
缺点:虽然PyTorch在动态计算图方面表现出色,但在某些性能要求极高的场景下可能不如TensorFlow那样高效。

特点

PyTorch特点是拥有生态完整性和接口易用性,使之成为当下最流行的动态框架之一。

  1. 动态计算图:与TensorFlow等其他框架相比,PyTorch的一个显著特点是其动态计算图(也称为自动微分)的特性。这意味着图的构建是即时的,并且可以随着数据流的变化而变化,这为模型的调试和实验提供了极大的便利。
  2. Python优先:PyTorch完全是用Python编写的,这使得它在机器学习开发者和数据科学家中非常受欢迎,因为它允许用户利用Python的强大功能和丰富的库来进行高效的开发。
  3. 易于学习:PyTorch以其学习曲线平缓而闻名。例如,GitHub上的教程,尤其是60分钟的入门教程,被许多用户认为是非常有帮助的学习资源。
  4. 社区支持:作为一个由Facebook支持的框架,PyTorch拥有一个活跃的社区和良好的文档支持,这对于解决学习过程中遇到的问题非常重要。

三者之间的比较

Caffe、TensorFlow和PyTorch在深度学习领域中各有所长,它们的比较涉及多个方面。TensorFlow在工业级应用中占据领先地位,而PyTorch在学术研究中更受欢迎。Caffe则在特定场景下表现出色,尤其是在卷积神经网络的应用中。用户在选择框架时应根据具体需求、项目性质以及个人或团队的熟悉程度来决定。

  1. 设计哲学:Caffe以其简洁快速而著称,但相对缺乏灵活性。TensorFlow采用了静态计算图和图优化技术,提供了高效的性能,但其系统设计较为复杂,且接口频繁变动,可能导致新老版本兼容性问题。PyTorch则以其动态计算图提供了极高的灵活性,使得模型构建更加直观和易于理解。
  2. 性能:TensorFlow和Caffe在性能上表现出色,尤其是在GPU加速和模型部署方面。PyTorch虽然在某些情况下可能效率较低,但其动态计算图使得模型的构建更加灵活,这对于研究和开发非常有利。
  3. 社区和支持:TensorFlow由于其广泛的使用和Google的支持,拥有一个强大的社区和丰富的资源。PyTorch由Facebook人工智能研究院支持,尤其在学术研究领域有着领先地位。Caffe也有活跃的社区,但在一些方面可能不如前两者丰富。
  4. 易用性:PyTorch的设计思路是线性直观且易于使用的,因此它的代码相对于TensorFlow而言通常更容易理解。Caffe的使用也相对简单,但它的灵活性受限于其设计。

第三章 机器学习基础知识

模型评估与模型选择

若对于给定的输入x,若某个模型的输出y ̂=f(x)偏离真实目标值y,那么就说明模型存在误差; y ̂偏离y的程度可以用关于y ̂和y某个函数L(y,y ̂)来表示,作为误差的度量标准:这样的函数L(y,y ̂)称为损失函数

在某种损失函数度量下,训练集上的平均误差被称为训练误差,测试集上的误差称为泛化误差。 由于我们训练得到一个模型最终的目的是为了在未知的数据上得到尽可能准确的结果,因此泛化误差是衡量一个模型泛化能力的重要标准。

过拟合:机器学习中的一个常见问题,它发生在模型对训练数据过度学习的情况下,导致模型在新的、未见过的数据上表现不佳。

特点:

  1. 模型复杂度高:模型可能包含过多的参数,或者模型结构过于复杂,能够捕捉到训练数据中的噪声和细节。
  2. 泛化能力差:模型在训练集上的表现很好,损失函数值较低,但在验证集或测试集上的表现较差,损失函数值较高。
  3. 数据量不足:相对于模型的复杂度来说,可用于训练的数据量可能太少,导致模型无法从数据中学习到足够的泛化特征。

解决方法:

  1. 增加数据量:通过获取更多的训练数据,可以帮助模型学习到更加泛化的特征。
  2. 简化模型:减少模型的复杂度,例如减少神经网络的层数或神经元数量,使用更少的特征或参数。
  3. 正则化:通过引入正则化项来惩罚模型的复杂度,促使模型倾向于学习更加泛化的特征。
  4. 使用dropout:特别是在深度学习中,dropout是一种有效的正则化技术,它可以随机地将网络中的一些神经元的输出置为0,以防止模型对特定数据的过度依赖。

欠拟合:还没训练好。

欠拟合的原因:    

1. 数据未做归一化处理  

 2. 神经网络拟合能力不足  

 3. 数据的特征项不够

 解决方法:

 1. 寻找最优的权重初始化方案    

2. 增加网络层数、epoch    

3. 使用适当的激活函数、优化器和学习率    

4. 减少正则化参数    

5. 增加特征

验证

模型不能过拟合于训练集,否则将不能在测试集上得到最优结果,很多时候我们能得到的数据量非常有限。这个时候我们可以不显式地使用验证集,而是重复使用训练集和测试集,这种方法称为交叉验证。 常用的交叉验证方法有: 简单交叉验证。 K-重交叉验证。

数据集:训练集、验证集、测试集

3种数据集之间的关系: 训练集相当于上课学知识

                                        验证集相当于课后的的练习题,用来纠正和强化学到的知识

                                        测试集相当于期末考试,用来最终评估学习效果

而数据集的划分:

  1. 留出法:分为训练集、验证集、测试集
  2. 交叉法:分为多个子集
  3. n折交叉检验法:分为K个互斥子集,选出K-1个训练集,余下的为测试集
  4. 留一法:每个样本单独留作测试集,其余的为训练集

验证集

当我们的模型训练好之后,我们并不知道他的表现如何。这个时候就可以使用验证集(Validation Dataset)来看看模型在新数据(验证集和测试集是不同的数据)上的表现如何。同时通过调整超参数,让模型处于最好的状态。

验证集有2个主要的作用

  1. 评估模型效果,为了调整超参数而服务
  2. 调整超参数,使得模型在验证集上的效果最好

说明

  • 验证集不像训练集和测试集,它是非必需的。如果不需要调整超参数,就可以不使用验证集,直接用测试集来评估效果。
  • 验证集评估出来的效果并非模型的最终效果,主要是用来调整超参数的,模型最终效果以测试集的评估结果为准。

测试集

当我们调好超参数后,就要开始「最终考试」了。我们通过测试集(Test Dataset)来做最终的评估,来看学习效果(模型效果)好不好。

通过测试集的评估,我们会得到一些最终的评估指标,例如:准确率、精确率、召回率、F1等。

正则化

在优化目标中加入正则化项:

min┬θL(y,y ̂;θ)+λ⋅J(θ)

  • θ为模型参数,L(y,y ̂;θ)为原来的损失函数,J(θ)是正则化项,λ用于调整正则化项的权重。
  • 正则化项通常为θ的某阶向量范数。
  • 通过 限制 参数值域空间,显式地 控制了 模型复杂度,从而避免了过拟合。

L1正则化:使权重的绝对值最小化,且对于异常值是鲁棒的

L2正则化:使得权重的平方最小化,该模型能够学习复杂的数据模式,但对于异常值不具备鲁棒性

Dropout :是一种正则化方法,用于随机禁用神经网络单元

监督学习与非监督学习

监督学习和非监督学习是机器学习领域的两种主要学习方式,它们各自适用于不同的场景和数据集

监督学习适用于有明确标签的任务,如图像识别或邮件分类,而非监督学习适用于探索性的任务,如客户细分或推荐系统。两者都是机器学习的重要分支,各有其优势和适用领域。

监督学习

监督学习是一种通过示例进行学习的方法,它需要使用带有标签的训练数据来训练模型。在这个过程中,算法会学习输入数据与相应输出标签之间的关系,并尝试找到一个映射函数,以便在未来遇到新的输入数据时能够预测出正确的输出标签。监督学习的算法包括分类和回归任务,常见的算法有决策树、支持向量机(SVM)、神经网络等。

监督学习是一种利用带有标签的训练数据来训练模型,使其能够识别或预测新数据的机器学习方法。

监督学习的核心在于模型通过学习输入数据与对应输出标签之间的关系,从而在遇到新的输入时能够给出预测结果。这种方法通常用于分类和回归任务,其中分类任务的目的是预测离散的标签,而回归任务则是预测连续的数值。

监督学习的算法包括但不限于决策树、逻辑回归、线性回归等。这些算法各有特点,适用于不同类型的问题和数据。

在监督学习中,我们根据训练集{〈x^(i),y^(i)〉}_i=1^N中的观测样本点来优化模型f(⋅),使得给定测试样例x′作为模型输入,其输出y ̂尽可能接近正确输出y′。 y ̂= f(x)

回归

回归问题在生活中非常常见,其最简单的形式是一个连续函数的拟合。

均方误差损失函数(Mean Squared Error,MSE):

最常用的回归问题的损失函数。其定义为预测值与真实值之间的平方差的平均值。

该损失函数的值越小,表示模型的预测结果越接近真实值。

简单线性回归

自变量 x 和因变量 y之间存在一条线性关系:

多元线性回归

假设自变量 和因变量 y之间存在一条线性关系,即:

分类

想要预测(检测)的目标是猫,那么在数据集中猫为正样本(Positive ),其他狗、兔子、狮子这些数据为负样本(Negative )。

将这只猫预测(分类)为狗、兔子、其他预测结果为错(False);将这只猫预测为猫,预测结果为对(True)。

将正样本预测正样本(True Positive, TP)

将正样本预测为负样本(False Negative, FN)

将负类样本预测为正样本(False Positive, FP)

将负类样本预测为负样本(True Negative, TN)

准确率(Accuracy):对于测试集中D个样本,有k个被正确分类,D-k个被错误分类,则准确率为: Accuracy=分类正确的样本/样本总数= k/D= (TP+TN)/(TP+TN+FP+FN)

精确率(查准率)- Precision:所有被预测为正样本中实际为正样本的概率

Precision=预测为正样本实际也为样本 / 预测为正样本= TP/TP+FP

精准率代表对正样本结果中的预测准确程度。 准确率则代表整体的预测准确程度,既包括正样本,也包括负样本。

召回率(查全率)- Recall:实际为正的样本中被预测为正样本的概率

Recall=预测为正样本实际也为样本/实际为正样本= TP/TP+FN

召回率越高,也代表网络可以改进的空间越大。

把精确率(Precision)和召回率(Recall)之间的关系用图来表达,就是下面的PR曲线:

平衡点(BEP)P=R

AP(Average Precision):PR曲线下的面积。 通常来说一个越好的分类器,AP值越高

mAP是多个类别AP的平均值。这个mean的意思是对每个类的AP再求平均,得到的就是mAP的值,mAP的大小一定在[0,1]区间,越大越好。该指标是目标检测算法中最重要的一个。

F-度量则是在召回率与精确率之间去调和平均数;有时候在实际问题上,若我们更加看重其中某一个度量,还可以给它加上一个权值α,称为F_α-度量:

F_α=(1+α^2)RP/R+α^2P

特殊地,当α=1时: F_1=2RP/R+P F1分数(F1-score)是分类问题的一个衡量指标。

非监督学习(unsupervised learning)

非监督学习不依赖于标记过的训练数据,而是通过自我学习来发现数据中的结构或模式。在非监督学习中,算法试图自行发现数据集中的特征,如通过聚类算法将数据分组,或者通过降维技术减少数据的维度。非监督学习的应用场景包括市场细分、社交网络分析、异常检测等。

在无监督学习中,数据集{x^(i)}_i=1^N中只有模型的输入,而并不提供正确的输出y^(i)作为监督信号

主成分分析(principal component analysis)问题(PCA):

主成分分析PCA是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。

因果关系(causality)和概率图模型(probabilistic graphical models)问题:

如果想通过物体a去推断物体b,就是将物体a放在这里会增加物体b出现概率的多少,想要找到这样一个确定的促进关系即因果关系

往往会被confounder干扰到,而这个confounder就是物体a与b之间的共因

生成对抗性网络(generative adversarial networks):

为我们提供一种合成数据的方法,甚至像图像和音频这样复杂的非结构化数据。潜在的统计机制是检查真实和虚假数据是否相同的测试,它是无监督学习的另一个重要而令人兴奋的领域

衡量指标

小结

监督学习与非监督学习主要针对数据集定义。

有监督数据集需要人工标注,成本较为昂贵,但是在训练模型时往往能够保障效果。

无监督数据集一般不需要过多人工操作,可以通过爬虫等方式自动大量获得

由于没有监督信息的约束,需要设计巧妙的学习算法才能有效利用无监督数据集训练模型,不过大量廉价数据可以从另一个方面提高模型性能。

模型评估需要根据模型的训练历史判断模型是否处于欠拟合或过拟合状态。尽管有一定的规律作为指导,而且有一些工具可以辅助分析,但是模型的评估过程一般需要较为丰富的经验。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值