2. 机器学习概述

news2024/12/26 6:54:43

机器学习是对能通过经验自动改进的计算机算法的研究。 ---汤姆. 米切尔 1997

        通俗来讲,机器学习就是让计算机从数据中进行自动学习,得到某种知识(或规律)。在早期的工程领域,机器学习也经常被称为模式识别(Pattern Recognition), 但模式识别更偏向于具体的应用任务,比如语音识别,字符识别,人脸识别等。现在机器学习的概念已经逐渐替代模式识别。

         假设我们要训练一个芒果分类的机器学习模型,首先我们列出每个芒果的特征(feature),包括颜色,大小,形状,产地,品牌等,以及我们需要预测的标签(label)。标签可以是连续值也可以是离散值。一个标记好特征以及标签的芒果可以看作是一个样本(sample).一组样本构成的集合称为数据集(data set)。一般将数据集分为两部分:训练集和测试集。我们通产公用一个D维向量x = [x1,x2,x3...,xd]T表示一个芒果的所有特征构成的向量,称为特征向量,其中每一维代表一个特征。而芒果的标签通常用标量y来表示。下面是机器学习学习系统的示例。

        机器学习可以粗略地分为三个基本要素:模型,学习准则,优化算法。 

一. 模型

1.1 线性模型

        线性模型的假设空间为一个参数化的线性函数族,即:

f(x;\Theta ) = w^{T}x + b,

其中参数\Theta 权重向量w和偏置b。

1.2 非线性模型

        广义的非线性模型可以写为多个非线性基函数\o\phi (x)的线性组合

                f(x;\theta ) = w^{T} \phi (x) +b,

其中\phi (x) = [\phi _{1}(x), \phi _{2}(x), ... \phi _{K}(x) ]^{T}为K个非线性基函数组成的向量,参数\theta包含了权重向量w和偏置b。 

二. 学习准则

         模型f(x; \theta )的好坏可以通过期望风险R(\theta )来衡量,它的定义是:

 其中Pr(x,y)为真实的数据分布,\iota (y, f(x;\theta ))为损失函数,用来量化两个变量之间的差异。

2.1 损失函数

        损失函数是一种非负实数函数,用来量化模型预测和真实标签之间的差异。几种常用的损失函数如下:

2.1.1 0-1损失函数:最直观的损失函数是模型在训练集上的错误率。

        其中I(\bullet )是指示函数。虽然0-1损失函数可以客观评价模型的好坏,但其缺点是数学性质不太好,不连续且导数为0,难以优化。因此常用连续可微的损失函数替代。

2.1.2 平方损失函数: 经常用在预测标签y为实数值的任务中,定义为:

        平方损失函数一般不适用于分类问题。

2.1.3 交叉熵损失函数:一般用于分类问题。

 2.1.4 Hinge 损失函数: 对于二分类问题

2.1.5 风险最小化准则: 一个好的模型f(x;\theta )应当有一个比较小的期望错误,但由于不知道真实的数据分布和映射函数,实际上无法计算其期望风险R(\theta ).给定一个训练集,我们可以计算的是经验风险。因此一个切实可行的学习准则是找到一组参数\theta ^{\ast }使得经验风险最小。这就是经验风险最小化准则。

2.1.6 过拟合:根据大数定理可知,当训练集大小|D|趋向于无穷大时,经验风险就趋向于期望风险。然而通常情况下,我们无法获取无限的训练样本,并且训练样本往往是真实数据的一个很小的子集或者包含一定的噪声数据,不能很好地反映全部数据的真实分布。经验风险最小化原则很容易导致模型在训练集上错误率很低,但是在未知数据上错误率很高。这就是所谓的过拟合(Overfitting).

        过拟合问题往往是因为训练数据少以及模型能力强等原因造成的。为了解决过拟合问题,一般是在经验风险最小化准则的基础上引入参数的正则化来限制模型能力,使其不要过度地最小化经验风险。这种准则就是结构风险最小化准则。

其中||\theta|| 是\iota _{2}范数的正则化项,用来减少参数空间,避免过拟合;\lambda用来控制正则化的强度。

        正则化项也可以使用其他函数,L1范数的引入通常会使得参数有一定稀疏性,因此在很多算法中也经常使用。和过拟合相反的一个概念是欠拟合,即模型不能很好的拟合训练数据,在训练集的错误率比较高。欠拟合一般是由于模型能力不足造成的。

        总之,机器学习的学习准则并不仅仅是拟合训练集上的数据,同时也要使泛化错误最低。因此机器学习可以看作使一个从有限,高维,有噪声的数据上得到更一般性规律的泛化问题。

三. 优化算法

3.1 参数与超参数:在机器学习过程中,优化可以分为参数优化和超参数优化。 模型f(𝒙;𝜃)中的𝜃称为模型的参数,可以通过优化算法进行学习. 除了可学习的参数\theta之外,还有一类参数是用来定义模型结构或优化策略的,这类参数叫做超参数 (Hyper-Parameter)。

        常见的超参数包括:聚类算法中的类别个数、梯度下降法中的步长,正则化项的系数,神经网络的层数,支持向量机中的核函数等。超参数的选取一般都是组合优化问题,很难通过优化算法来自动学习。因此超参数优化是机器学习的一个经验性很强的技术,通常是按照人的经验设定,或者通过搜索的的方法对一组超参数组合进行不断试错调整。

3.2 梯度下降法:为了充分利用凸优化中一些高效、成熟的优化方法,比如共轭梯度,拟牛顿法等,很多机器学习方法倾向于选择合适的模型和损失函数以构造一个凸函数作为优化目标。但也有很多模型(比如神经网络)的优化目标是非凸的,智能退而求其次找到局部最优解。

        在机器学习中,最简单和常用的优化算法是梯度下降法,即首先初始化参数\theta _{0},然后按下面的迭代公式来计算训练集D上面风险函数的最小值:

        其中\theta _{t} 为第t次迭代时的参数值,\alpha为搜索步长。在机器学习中,\alpha一般称为学习率。

3.3 提前停止:针对梯度下降的优化算法,除了加正则化项之外,还可以通过提前停止来防止过拟合。在梯度下降训练的过程中,由于过拟合的原因,在训练样本上收敛的参数不一定在测试集上最优。因此除了训练集和测试集之外,有时也会使用一个验证集来进行模型选择。每次迭代时,把新模型在验证集上测试,并计算错误率,如果错误率连续N次不再下降,就停止迭代,这种策略叫提前停止。 

3.4 随机梯度下降法

        当目标函数是整个训练集上的风险函数时,这种方式称为批量梯度下降法(Batch Gradient Descent, BGD).批量梯度下降法在每次迭代时需要计算每个样本上损失函数的梯度并求和。当训练集中的样本数量N很大时,空间复杂度很高,每次迭代的计算开销很大。

        为了减少每次迭代的计算复杂度,我们也可以在每次迭代时只采集一个样本,计算每个样本损失函数的梯度并更新参数,这种方法叫随机梯度下降法(Stochastic Gradient Descent, SGD). 当经过足够次数的迭代时,随机梯度下降也可以收敛倒局部最优解。

         批量梯度下降和随机梯度下降的区别在于每次迭代的优化目标是对所有样本的平均损失函数还是单个样本的损失函数。随机梯度下降的优点是实现简单,收敛速度快,因此使用非常广泛。随机梯度下降相当于在批量梯度下降的梯度上引入了随机噪声,当目标函数非凸时,反而可以使其逃离局部最优点。

        小批量梯度下降法: 随机梯度下降法的缺点是无法充分利用计算机的并行计算能力。小批量梯度下降法是批量梯度下降和随机梯度下降的折中。每次迭代时,我们随机选取一小部分训练样本来计算梯度并更新参数,这样既可以兼顾随机梯度下降法的优点,也可以提高训练效率。    

        在实际应用中,小批量随机梯度下降法具有收敛快,计算开销小的优点,因此逐渐成为大规模的机器学习中的主要优化算法。

3.5 偏差和方差

        为了避免过拟合,我们经常会在模型拟合能力和复杂度之间进行权衡,拟合能力强的模型一般复杂度会比较高,容易发生过拟合。相反如果限制模型的复杂度,降低拟合能力,又可能导致欠拟合。偏差-方差分解可以对这种平衡提供分析和指导工具。

        偏差:指一个模型在不同训练集上的平均性能和最优模型的差异,可以用来衡量一个模型的拟合能力。

        方差:指 一个模型在不同训练集上的差异,可以用来衡量一个模型是否容易过拟合。

四. 机器学习算法分类

        按函数f(x;\theta )的不同,机器学习算法可以分为线性模型和非线性模型;按照学习准则的不同,可以分为统计方法和非统计方法。一般来说,我们按照训练样本提供的信息以及反馈方式的不同,将机器学习算法分为以下几类:

4.1 监督学习:如果机器学习的目标是通过建模样本的特征x和标签y的关系,并且训练集中的每个样本都有标签,那么这类机器学习称为监督学习。根据标签类型的不同,监督学习又可以分为回归问题,分类问题和结构化学习问题。

4.1.1 回归问题:回归问题中的标签y是连续值(实数或者连续整数),f(x;\theta )的输出也是连续值。

4.1.2 分类问题:分类问题中的标签y是离散的类别(符号)。在分类问题中,学习到的模型也被称为分类器。分类问题根据其类别数量又可以分为二分类和多分类问题。

4.1.3 结构化学习:输出y通常是结构化的对象,比如序列,树和图等。由于结构化学习的输出空间比较大,因此我们一般定义一个联合特征空间,将x,y映射为该空间中的联合特征向量\phi(x,y),预测模型可以写为:

4.2 无监督学习: 指从不包含目标标签的训练样本中自动学习到一些有价值的信息。典型的无监督学习问题有聚类,密度估计,特征学习,降维等。

4.3 强化学习:指一类通过交互来学习的机器学习算法。在强化学习中,智能体根据环境的状态做出一个动作,并得到即时或延时的奖励。智能体在和环境的交互中不断学习并调整策略,以取得最大化的期望总回报。这是一种在线的学习机制,它不需要显式地以“输入/输出对”的方式给出训练样本。

4.4 弱监督学习和半监督学习:不需要所有的训练数据都为有标注的,它可以从大规模的五标注数据中充分挖掘出有用的信息,降低对标注样本数量的要求。

 五. 数据的特征表示

        在实际应用中,数据的类型有很多,比如文本,音频,图像,视频等。不同类型的数据,其原始特征的空间也不相同。很多机器学习算法的输入要求是数学上可计算的,需要将这些不同类型的数据转换为向量表。但也有一些不需要,比如决策树。

5.1 图像特征:在手写数字识别数据集(Mnist)中,样本x为待识别的图像。这个图像是灰白图像,其通道数为1,则一张大小为M x N的图像,其特征向量可以简单地表示为M x N 维的向量,每一维的值为图像中对应像素的灰度值。为了提高模型准确率,还会假如一些额外的特征,比如直方图,宽高比,笔画数,纹理特征,边缘特征。假设我们总共抽取了D个特征,这些特征就可以组成一个输入向量X。

5.2 文本特征:在文本情感分类任务中,样本x为自然语言文本,类别y\in\begin{Bmatrix} +1, & -1 \end{Bmatrix}分别表示正面和负面的评价。为了将样本从文本形式转为向量形式,一种简单的方式是使用词袋模型(BoW)。向量x中第i维的值表示词表中的第i个词是否在x中出现。如果出现,值为1,否则为0.

        词袋模型将文本看作是词的集合,不考虑词序信息,不能精确地表示文本信息。一种改进方式是使用N元组合特征,即每N个连续词构成一个基本单元。

5.3 表示学习: 如果直接使用数据的原始特征来进行预测,对机器学习的模型的要求较高,原始特征可能存在以下不足:1.特征比较单一,需要进行非线性的组合才能发挥其作用;2.特征之间的冗余度较高;3.并不是所有的特征都对预测有用;4.很多特征通常是易变的;5.特征中往往存在一些噪声。

        为了提高机器学习算法的能力,我们需要抽取有效的稳定的特征。传统的特征提取需要人工方式进行,需要大量的人工和专家知识。但人工设计的特征在很多任务上也不能满足需要,让机器自动地学习出有效的特征称为特征学习,也叫表示学习。特征学习在一定程度上可以减少模型复杂性,缩短训练时间,提高模型泛化能力,避免过拟合等。

        传统的特征学习具体可以分为:特征选择和特征抽取。

5.3.1 特征选择:选取原始特征集合的一个有效子集,使得基于这个特征子集训练出来的模型的准确率最高。特征选择就是保留有用特征,移除冗余或者无关特征。具体的经典方法有LASSO,弹性网络,最小冗余最大相关方法等。

        最直接的特征选择方法有子集搜索,暴力测试每个特征子集,看机器学习模型中哪个子集上的准确率最高。常用贪心策略,由空集合开始,每一轮添加该轮最优的特征,称为前向搜索;或者从原始特征集合开始,每次删除最无用的特征,称为反向搜索。

        此外,还可以通过L1正则化的方法来实现特征选择,由于L1正则化会导致稀疏特征,因此间接实现了特征选择。

5.3.2 特征抽取:特征抽取是构造一个新的特征空间,并将原始特征投影在新的空间中得到新的表示。以线性投影为例,令x\in R^{D}为原始特征向量,x\acute{}\in R^{K}为经过线性投影后得到的在新空间中的特征向量,有

x\acute{} = Wx

其中W\in R^{^{K * D}}为映射矩阵。

        特征抽取又可以分为监督和无监督的方法。监督的特征学习的目标是抽取对一个特定的预测任务最有用的特征,比如线性判别分析(LDA).而无监督的特征学习和具体任务无关,其目标是减少冗余信息和噪声,比如主成分分析(PCA).

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1829646.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Termius安装docker

安装Termius 直接上官网 新建主机 更新一下yum 更新完成 安装docker的包 设置阿里的yum 直接用命令安装 设置一下开机启动,可以查看docker的版本 拉去portainer的镜像发现报错 出现Get “https://registry-1.docker.io/v2/...“:net/http: TLS hand shake time o…

如何从索尼存储卡恢复数据?

Sony 存储卡广泛用于在数码相机、数码摄像机等中存储照片和视频。如果您从 Sony 存储卡中删除重要数据而未备份,您仍然可以找回丢失的数据。实际上,已删除的视频/照片或文档不会永远丢失,它们仍存储在 Sony 存储卡上,可以通过数据…

功能强大的API函数FindFirstFile使用介绍(附源码)

在处理文件的相关代码中,会频繁使用到Windows系统API函数FindFirstFile,这个函数功能很强大,很多功能都不开它。本文就根据我们在项目中使用该函数的情况,来大概地梳理一下使用FindFirstFile都可以实现哪些常用的功能。 1、FindFirstFile函数声明与WIN32_FIND_DATA结构体 我…

英伟达发布Nemotron-4 340B通用模型:专为生成合成数据设计的突破性AI

引言 2023年6月14日,英伟达发布了Nemotron-4 340B通用模型,专为生成训练大语言模型的合成数据而设计。这一模型可能彻底改变训练大模型时合成数据的生成方式,标志着AI行业的一个重要里程碑。本文将详细介绍Nemotron-4 340B的各个方面&#x…

java高级——Arrays工具类(包含核心的归并和二分排序以及多个底层知识点)

java高级——Arrays工具类 前情提要文章介绍提前了解的知识点1 二分查找思想 Arrays常用方法介绍(8大类)1. 创建数组1.1 copyOf()1.2 copyOfRange()1.3 fill() 2. 数组转集合&#x…

Win11安装WSA 安卓系统,然后再电脑安装APK文件

参考文章: https://blog.csdn.net/m0_56076343/article/details/122334759 https://blog.csdn.net/u012514495/article/details/120885242 在微软的网站下载 打开:https://store.rg-adguard.net/ ,如下图: 在 1 的那个地方&am…

Arthas线上环境问题排查定位工具

一、Arthas简介 Arthas是alibaba推出的一款JVM性能诊断调优的工具,也可以称之为是线上监控诊断产品,通过全局的视角可以实时的查看应用load、内存、GC、线程的状态信息,并且还可以在不修改应用代码的前提下,对业务问题进行诊断&a…

yolo实现大人 小孩 老年人的识别

通过构建人脸检测数据集,实现检测人脸模型的训练 通过构建小孩人脸 大人人脸 老年人人脸的分类数据集,训练分类模型 通过级联人脸检测模型与分类模型,实现图片 视频 摄像头中的人脸检测➕年龄属性判断 python开发语言 pytorch框架 yolo算…

电子设计教程基础篇(电容)

文章目录 前言一、电容原理1.原理2.公式 二、电容种类1.结构1、固定电容2、可变电容3、微调电容 2.介质材料1、气体介质电容1、空气电容2、真空电容3、充气式电容 2、固体介质电容1、无机1、云母电容2、陶瓷电容1、瓷片电容2、独石电容 3、玻璃釉电容(CI&#xff09…

go的netpoll学习

go的运行时调度框架简介 Go的运行时(runtime)中,由调度器管理:goroutine(G)、操作系统线程(M)和逻辑处理器(P)之间的关系 以实现高效的并发执行 当一个gorout…

单例集合:Collection

一.Collection Collection是单列集合的祖宗接口,它的功能是全部单列集合都可以继承使用的。 一.add添加 1.细节1 如果我们要往List系列集合中添加数据,那么方法永远返回true,因为List系列的是允许元素重复的。 2.细节2 如果要往Set系列集合中添加数据,如果当前要添加元素不…

【redis】Redis的经典使用场景

目录 1.最常见——缓存2.数据共享分布式3.分布式锁4.全局ID5.计数器6.限流7.位统计8.购物车9.用户消息时间线timeline10.消息队列11.抽奖点赞、签到、打卡13.商品标签14.商品筛选15.用户关注、推荐模型16排行榜 1.最常见——缓存 数据类型:string例如:热…

tauri嵌入外部二进制文件,以及sidecar是什么意思?

sidecar是什么意思 有时,为了使应用程序正常运行或防止用户安装额外的依赖项(例如Node.js或Python或者ffmpeg等),你可能需要嵌入依赖的二进制文件,我们将这种二进制文件称为"sidecar",中文意思就…

LabVIEW常用的加密硬件

LabVIEW在工程和科学领域中广泛应用,其中数据保护和程序安全尤为重要。为了确保数据的安全性和完整性,常用的加密硬件设备包括TPM(可信平台模块)、HSM(硬件安全模块)和专用加密芯片。本文将推荐几款常用的加…

[DDR4] DDR 简史

依公知及经验整理,原创保护,禁止转载。 专栏 《深入理解DDR4》 存和硬盘,这对电脑的左膀右臂,共同扛起了存储的重任。内存以其超凡的存取速度闻名,但一旦断电,内存中的数据也会消失。它就像我们的工作桌面&…

Python基础用法 之 变量

1.变量的定义 变量的作用:是⽤来保存数据的。定义的语法:变量名 数据值使用:直接使⽤变量名 即可使⽤变量中存储的数据。注意:变量必须先定义后使用。 (即 必须 先存⼊数据 才能 获取数据) 。 # 需求 1, 定义⼀个变量 保存你的名…

(超详细)基于动态顺序表实现简单的通讯录项目

前言: 我们在上一章节用c语言实现了线性表中的的动态顺序表,那么顺序表就只是顺序表吗?当然不是,使用顺序表结构可以实现很多项目,许多项目的数据结构都会用到顺序表,本章节我们就要使用顺序表实现一个简易…

爬虫案例:建设库JS逆向

爬虫流程 1. 确定目标网址和所需内容 https://www.jiansheku.com/search/enterprise/ 只是个学习案例,所以目标就有我自己来选择,企业名称,法定代表人,注册资本,成立日期 2. 对目标网站,进行分析 动态…

win10没有Hyper-v的解决方法

win10没有Hyper-v的解决方法 问题:最近想装下docker,但是在控制面板-程序-启用或关闭Windows功能下找不到Hyper-v节点。 废话不多说,直接上实操教程 1.将下面命令复制到文本文档中,并将文档重命名Hyper.cmd pushd "%~dp0&q…

29.添加录入注入信息界面

上一个内容:28.启动与暂停程序 以 28.启动与暂停程序 它的代码为基础进行修改 效果图: 新建Dialog 给新建的dialog添加空间,如下图 给每个输入框创建一个变量 代码: void CWndAddGame::OnBnClickedButton1() {static TCHAR BASE…