【了解深度学习框架、认识机器学习基础】


前言

当谈及深度学习框架和机器学习基础知识时,我们需要从基础概念开始,并逐步深入了解这些领域的重要内容。深度学习框架是实现深度学习模型的工具,而机器学习基础知识则是理解这些框架和模型运作原理的基础。本文将介绍深度学习框架以及机器学习的基础知识。


一、深度学习框架

在这里插入图片描述

1、什么是深度学习框架

定义:深度学习框架是一种用于构建训练部署深度神经网络模型的工具集合。它提供了丰富的函数和工具,使开发者能够方便地创建、调整和优化神经网络模型。
意义:框架存在的意义就是屏蔽底层的细节,使研究者可以专注于模型结构。(搭积木)

2、深度学习框架提供的功能

深度学习框架一般提供了模型定义、训练和优化、自动求导、并行计算、部署和推理等功能

3、常用的深度学习框架

在这里插入图片描述

目前常用的深度学习框架有以下几个
PyTorch:PyTorch是一个开源的机器学习框架,由Facebook的人工智能研究团队开发和维护。它提供了一个灵活、高效且易于使用的平台。它在学术界和工业界都受到广泛的欢迎,并被用于各种应用领域,如计算机视觉、自然语言处理、语音识别等。无论是初学者还是专业人士,都可以通过PyTorch来实现复杂的深度学习模型并探索人工智能的无限可能性。
特点:PyTorch 既可以看作为加入了GPU 支持的numpy。PyTorch 的设计思路是线性、直观且易于使用的

Theano:Theano是一个用于高效数值计算和深度学习模型构建的数学符号库,尽管其已经停止了官方开发,但其仍然是深度学习历史上的重要里程碑之一,为后来的深度学习框架奠定了基础,并对深度学习发展产生了深远的影响。
TensorFlow:TensorFlow是一个功能强大、灵活且高性能的机器学习框架。它在学术界和工业界广泛应用于各种任务,如图像识别、自然语言处理、推荐系统等。无论是初学者还是专业人士,都可以通过TensorFlow来实现复杂的机器学习模型,并利用其丰富的工具和资源来推动人工智能技术的发展。
Keras:Keras是一个简单、灵活且功能强大的高级神经网络API,旨在使深度学习模型的构建更加容易和快速。它的设计理念和易用性使得广大研究者和开发者可以更专注于设计和实验新的神经网络模型,从而推动人工智能领域的进步。
Caffe:Caffe是一个注重速度和效率的深度学习框架,特别适合处理图像数据和构建卷积神经网络模型。它在学术界和工业界都得到了广泛的应用,并为研究人员和开发者提供了一个强大的工具来探索和应用深度学习技术。
MXNet:MXNet是一个功能强大且灵活的深度学习框架,适用于各种深度学习任务,包括图像识别、自然语言处理、推荐系统等。它的多语言支持和分布式训练功能使得用户能够轻松构建并训练复杂的深度学习模型,是一个受欢迎的选择之一。
CNTK:CNTK是一个功能强大且高性能的深度学习框架,适用于各种机器学习任务。它的分布式训练和灵活的模型构建方式使得用户能够轻松地构建和训练复杂的神经网络模型,并在实际应用中取得良好的效果。
PaddlePaddle:PaddlePaddle是一个功能丰富、高性能且易用的深度学习平台,适用于各种规模的深度学习任务。它的高性能、灵活性和产业应用经验使得用户能够轻松地构建、训练和部署复杂的深度学习模型,并在实际应用中取得良好的效果。

4、深度学习框架的的应用领域

1、计算机视觉:用于图像识别、目标检测、图像分割、人脸识别等任务。
2、语音识别:用于语音识别、语音合成等任务。
3、强化学习:用于智能游戏、机器人控制、金融交易等领域。
4、推荐系统:用于个性化推荐、广告推荐等任务。
5、生物医学:用于医学影像分析、疾病诊断、基因组学研究等领域。
6、自动驾驶:用于车辆感知、路径规划、决策控制等方面。
7、工业控制:用于设备预测性维护、生产过程优化、质量检测等任务。
在这里插入图片描述

二、机器学习基础

1、模型评估与模型参数选择

误差:预测输出y ̂与真实输出y之间的差异;
经验误差、训练误差:在训练集上的误差;
泛化误差:在新样本上的误差。泛化误差越小越好,经验误差不一定越小越好,可能导致过拟合。

1、数据集

机器学习的基础是数据。数据集由输入特征和对应的目标变量组成。输入特征是描述数据的属性,目标变量是我们希望预测或分类的值。
数据集分为三个类分别为训练集、验证集、测试集。三者关系可以比喻为下图
在这里插入图片描述

1、验证集

在这里插入图片描述

定义:当我们的模型训练好之后,我们并不知道他的表现如何。这个时候就可以使用验证集(Validation Dataset)来看看模型在新数据(验证集和测试集是不同的数据)上的表现如何。同时通过调整超参数,让模型处于最好的状态。
验证集有2个主要的作用
1、评估模型效果,为了调整超参数而服务、
2、调整超参数,使得模型在验证集上的效果最好
注意
验证集不像训练集和测试集,它是非必需的。如果不需要调整超参数,就可以不使用验证集,直接用测试集来评估效果。验证集评估出来的效果并非模型的最终效果,主要是用来调整超参数的,模型最终效果以测试集的评估结果为准。

2、测试集

在这里插入图片描述

**定义:**测试集是用于评估训练好的模型在未见过的数据上的表现的数据集。测试集通常是从原始数据集中独立出来的,模型在训练阶段没有见过这部分数据。将数据集划分为训练集和测试集的主要目的是评估模型在真实场景中的泛化能力,即模型对新数据的预测能力。通过测试集的评估,我们会得到一些最终的评估指标,例如:准确率、精确率、召回率、F1等。

3、训练集

定义: 训练集是用于训练模型的数据集。训练集包含了输入特征和相应的目标变量,模型通过学习训练集中的数据来建立输入特征与目标变量之间的映射关系。训练集是机器学习模型获取知识和经验的来源,通过不断地调整模型参数,使模型能够更准确地预测或分类新数据。

2、数据集的划分

对于小规模样本集(几万量级),常用的划分比例:
训练集:验证集:测试集=6:2:2
训练集:测试集==8:2、7:3
对于大规模样本集(百万级以上),只要验证集和测试集的数量足够即可
例如有 100w 条数据,那么留 1w 验证集,1w 测试集即可。
1000w 的数据,同样留 1w 验证集和 1w 测试集。

3、过拟合与欠拟合

在这里插入图片描述

1、过拟合

定义: 将训练样本自身的一些特点当作所有样本潜在的泛化特点。
表现: 在训练集上表现很好,在测试集上表现不好。
原因: 训练数据太少(比如只有几百组)、模型的复杂度太高(比如隐藏层层数设置的过多,神经元的数量设置的过大)、 数据不纯。
解决方法: 移除特征,降低模型的复杂度:减少神经元的个数,减少隐藏层的层数、训练集增加更多的数据、重新清洗数据、数据增强、正则化。

2、欠拟合

定义: 模型在训练数据上表现不佳,无法很好地捕捉数据中的模式和关系的情况。出现欠拟合的主要原因是模型过于简单或者欠缺足够的训练,导致模型无法很好地拟合数据的复杂性。
原因: 1. 数据未做归一化处理、2. 神经网络拟合能力不足、3. 数据的特征项不够
解决方法:
1、增加模型的复杂度:可以尝试增加模型的层数、参数量或使用更复杂的模型架构,以提高模型的表达能力。
2、增加训练数据量:通过增加更多的训练数据,让模型能够更充分地学习数据中的模式和规律。
3、特征工程:对输入特征进行适当的处理和转换,提取更有信息量的特征,有助于提高模型的性能。
4、超参数调优:调整模型的超参数,如学习率、正则化项等,以获得更好的模型性能。

3、数据集划分的代码示例

代码如下(示例):

import os
import random
import shutil

root_dir = 'data'
train_ratio = 0.8
valid_ratio = 0.1
test_ratio = 0.1

#设置随机种子
random.seed(42)

#拆分后数据集目录
split_dir= 'data'
os.makedirs(os.path.join(split_dir,'train/images'),exist_ok=True)
os.makedirs(os.path.join(split_dir,'train/labels'),exist_ok=True)
os.makedirs(os.path.join(split_dir,'valid/images'),exist_ok=True)
os.makedirs(os.path.join(split_dir,'valid/labels'),exist_ok=True)
os.makedirs(os.path.join(split_dir,'test/images'),exist_ok=True)
os.makedirs(os.path.join(split_dir,'test/labels'),exist_ok=True)

#获取图片文件列表
image_files = os.listdir(os.path.join(root_dir,'images'))
label_files = os.listdir(os.path.join(root_dir,'labels'))

#随机打乱文件列表
combined_files = list(zip(image_files,label_files))#图片、标签转化为列表
random.shuffle(combined_files)#打乱
image_files_shuffled,label_files_shuffled = zip(*combined_files)#重新获取

#根据比例计算划分的边界索引
train_bound = int(train_ratio * len(image_files_shuffled))#图片总数*训练集比例
valid_bound = int((train_ratio + valid_ratio) * len(image_files_shuffled))

#将图片和标签文件移动到相应的目录
for i,(image_file,label_file) in enumerate(zip(image_files_shuffled,label_files_shuffled)):
    if i < train_bound:
        shutil.copy(os.path.join(root_dir,'images',image_file),os.path.join(split_dir,'train/images',image_file))
        shutil.copy(os.path.join(root_dir,'labels',label_file),os.path.join(split_dir,'train/labels',label_file))
    elif i <valid_bound:
        shutil.copy(os.path.join(root_dir,'images',image_file),os.path.join(split_dir,'valid/images',image_file))
        shutil.copy(os.path.join(root_dir,'labels',label_file),os.path.join(split_dir,'valid/labels',label_file))
    else:
        shutil.copy(os.path.join(root_dir,'images',image_file),os.path.join(split_dir,'test/images',image_file))
        shutil.copy(os.path.join(root_dir, 'labels', label_file), os.path.join(split_dir, 'test/labels', label_file))

2.验证

定义:参数的选择(即调参)必须在一个独立于训练集和测试集的数据集上进行,这样的用于模型调参的数据集被称为开发集或验证集。

1、常用的交叉验证方法

在这里插入图片描述

很多时候我们能得到的数据量非常有限。这个时候我们可以不显式地使用验证集,而是重复使用训练集和测试集,这种方法称为交叉验证。

1、留出法

留出法(Holdout cross validation)按照固定比例将数据集静态的划分为训练集、验证集、测试集。

2、自组法

自组法(bootstrapping)适合于样本数目较少,有放回的取法。

3、k 折交叉验证

k 折交叉验证(k-fold cross validation):k 一般取 10,将数据集分为训练集和测试集,将测试集放在一边,将训练集分为 k 份,每次使用 k 份中的 1 份作为验证集,其他全部作为训练集。通过 k 次训练后,我们得到了 k 个不同的模型。评估 k 个模型的效果,从中挑选效果最好的超参数 使用最优的超参数,然后将 k 份数据全部作为训练集重新训练模型,得到最终模型
在这里插入图片描述

3、正则化

在这里插入图片描述

**定义:**正则化是一种常用的机器学习技术,用于控制模型的复杂度并防止过拟合。正则化通过在模型的损失函数中引入额外的惩罚项,使模型在训练过程中更倾向于选择简单的权重参数。

1、 L1正则化

L1 正则化(Lasso):L1 正则化通过在损失函数中添加参数向量的 L1 范数作为惩罚项,即将参数向量的绝对值之和作为正则化项。L1 正则化能够促使部分权重参数变为 0,从而实现特征选择和稀疏性。

2、 L2正则化

L2 正则化(Ridge):L2 正则化通过在损失函数中添加参数向量的 L2 范数的平方作为惩罚项,即将参数向量的平方和作为正则化项。L2 正则化使得模型的权重参数逐渐趋近于 0,但不会完全取到 0,因此 L2 正则化不具备特征选择的能力。

4、无监督学习

定义: 数据中不含有“目标”的机器学习问题通常被为无监督学习(unsupervised learning)。在无监督学习中,数据集{x(i)}_i=1N中只有模型的输入,而并不提供正确的输出y^(i)作为监督信号。

1、聚类问题

定义:将数据集中的样本划分为不同的组或簇,使得同一簇内的样本具有较高的相似性,而不同簇之间的样本具有较大的差异性。聚类算法能够帮助我们发现数据中的内在结构和模式,并对数据进行有效的组织和归纳。
在这里插入图片描述

2、主成分分析问题

定义:主成分分析PCA是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维
在这里插入图片描述

3、因果关系与概率模型问题

在这里插入图片描述

定义因果关系(causality)和概率图模型(probabilistic graphical models) 都是统计学和机器学习领域的重要概念,它们在理解数据生成过程、推断变量之间的关系以及进行预测和决策方面起着关键作用。
因果关系指的是一种变量之间的因果联系,即一个变量的变化导致另一个变量的变化。研究因果关系的目的在于确定某个事件或变量对其他事件或变量产生的影响。
概率图模型是一种用来表示变量之间依赖关系的图结构,并利用概率分布来描述这些依赖关系的模型。概率图模型包括贝叶斯网络(Bayesian networks)和马尔可夫随机场(Markov random fields)等。

4、无监督学习衡量指标

1、轮廓系数(Silhouette Score):轮廓系数是一种用于评估聚类效果的指标,它结合了簇内样本的紧密度和簇间样本的分离度。轮廓系数的取值范围在[-1, 1]之间,值越接近1表示聚类效果越好。
2、Calinski-Harabasz 指数:Calinski-Harabasz 指数也是一种用于评估聚类效果的指标,它基于簇内样本的紧密度和簇间样本的分离度。该指数的数值越大表示聚类效果越好。
3、Davies-Bouldin 指数:Davies-Bouldin 指数是一种聚类效果的度量指标,它考虑了簇内样本的紧密度和簇间样本的分离度,同时避免了某些缺点,如 K-means 对异常值敏感等。
4、互信息(Mutual Information):互信息可用于度量聚类结果与真实标签之间的相似度,即评估聚类结果与真实情况之间的一致性程度。互信息的取值范围在[0, 1]之间,值越大表示聚类结果与真实标签之间的一致性越高。
5、DB 指数(Dunn Index):DB 指数是一种聚类效果的度量指标,它考虑了簇内样本的紧密度和簇间样本的分离度。DB 指数的数值越小表示聚类效果越好。

5、监督学习

定义:监督学习是一种机器学习范式,其中模型的训练数据包含输入特征和对应的标记输出,模型的学习过程受到标记输出的监督指导。
在这里插入图片描述

1、回归

定义:回归问题在生活中非常常见,其最简单的形式是一个连续函数的拟合。回归问题中通常使用均方损失函数来作为度量模型效果的指标,最简单的求解例子是最小二乘法。
在这里插入图片描述
最常用的回归问题的损失函数。其定义为预测值与真实值之间的平方差的平均值。该损失函数的值越小,表示模型的预测结果越接近真实值。

1、简单的线性回归

自变量 x 和因变量 y之间存在一条线性关系:
在这里插入图片描述

2、多元线性回归

假设自变量 和因变量 y之间存在一条线性关系
在这里插入图片描述

2、线性回归预测的场景

1、预测房价

在这里插入图片描述

假设我们想要预测某个城市的房价。我们可以收集到该城市过去几年的房价数据,以及一些相关的因素,比如房屋的面积、房龄、所处区域、楼层等。我们可以使用这些数据建立一条最佳拟合直线,从而对未来的房价进行预测。
在这个例子中,自变量可以包括面积、房龄、所处区域等,因变量是房价。
我们可以通过最小二乘法来估计截距和斜率的值,从而得到一条最佳拟合直线。这条直线可以用来预测未来的房价,也可以用来分析不同因素对房价的影响。

2.预测销售额

在这里插入图片描述
假设我们想要预测某家公司未来一年的销售额。我们可以收集到该公司过去几年的销售额数据,以及一些相关的因素,比如广告投入、促销活动、季节性因素等。我们可以使用这些数据建立一条最佳拟合直线,从而对未来的销售额进行预测。
在这个例子中,自变量可以包括广告投入、促销活动、季节性因素等,因变量是销售额。我们可以通过最小二乘法来估计截距和斜率的值,从而得到一条最佳拟合直线。这条直线可以用来预测未来的销售额,也可以用来分析不同因素对销售额的影响。

3、分类

定义:分类是一种常见的任务,其目标是根据输入变量的特征将数据分为不同的类别或标签。分类问题通常是监督学习的一种形式,模型需要从已知的数据中学习特征与标签之间的关系,然后用于预测新样本的类别。常见的分类算法包括:逻辑回归(Logistic Regression)、决策树(Decision Trees)、支持向量机(Support Vector Machines,SVM)、K近邻算法(K-Nearest Neighbors,KNN)、朴素贝叶斯分类器(Naive Bayes Classifier)
在这里插入图片描述

1、分类的评价指标

在这里插入图片描述

2、准确率

准确率(Accuracy):对于测试集中D个样本,有k个被正确分类,D-k个被错误分类,则准确率为:
在这里插入图片描述

3、召回率

召回率(查全率)- Recall:实际为正的样本中被预测为正样本的概率
在这里插入图片描述
把精确率(Precision)和召回率(Recall)之间的关系用图来表达,就是下面的PR曲线:
在这里插入图片描述
AP(Average Precision):PR曲线下的面积。通常来说一个越好的分类器,AP值越高
mAP是多个类别AP的平均值。这个mean的意思是对每个类的AP再求平均,得到的就是mAP的值,mAP的大小一定在[0,1]区间,越大越好。该指标是目标检测算法中最重要的一个。

  • 39
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值