2. 机器学习概述

机器学习是对能通过经验自动改进的计算机算法的研究。 ---汤姆. 米切尔 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.mzph.cn/pingmian/28445.shtml

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

相关文章

guli商城业务逻辑-基础篇笔记

这里写目录标题 0.1 viscode设置用户代码片段1.实现多级菜单接口1.1 对接前端菜单1.2 对接网关接口解决跨域问题,如果不解决跨域,浏览器还是访问不了api1.3 把商品服务添加网关1.4 修改前端显示分类菜单1.5 给菜单添加删除修改功能1.5.1 删除功能的后端业…

Oracle 入门--前提

目录 1.sqlplus 2.dual是什么? 3.SQL语句的种类 4.Oracle是如何工作的 5.Oracle查看配置文件 6.修改配置文件 7.常用的参数设置 1.sqlplus 管理数据库:启动,关闭,创建,删除对象......查看数据库的运行状态&…

【分布式计算】java消息队列机制

消息队列是一种在不同组件或应用之间进行数据传递的技术,通常用于处理异步通信。它允许消息的发送者(生产者)和接收者(消费者)之间进行解耦。 概念 消息队列是一种先进先出(FIFO)的数据结构&…

机器学习(V)--无监督学习(一)聚类

根据训练样本中是否包含标签信息,机器学习可以分为监督学习和无监督学习。聚类算法是典型的无监督学习,目的是想将那些相似的样本尽可能聚在一起,不相似的样本尽可能分开。 相似度或距离 聚类的核心概念是相似度(similarity)或距离(distance…

嵌入式学习记录6.14(练习)

#include "mainwindow.h" #include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this);this->resize(1028,783); //设置左侧背景QLabel *lab1new QLabel(this);lab1->…

【内存管理之堆内存】

1.栈上的基元 2.栈上的聚合对象 3.手动分配和释放 4.分配堆内存 5.数组内存分配和释放 6.数组内存分配 7.不要使用野指针 8.黑暗时代

STM32理论 —— μCOS-Ⅲ(2/2):时间管理、消息队列、信号量、任务内嵌信号量/队列、事件标志、软件定时器、内存管理

文章目录 9. 时间管理9.1 OSTimeDly()9.2 OSTimeDlyHMSM()9.3 OSTimeDlyResume()9.4 延时函数实验 10. 消息队列10.1 创建消息队列函数OSQCreate()10.2 发送消息到消息队列函数(写入队列)OSQPost()10.3 获取消息队列中的消息函数(读出队列)OSQPend()10.4 消息队列操作实验 11. …

12 款 Android 照片恢复应用程序列表

丢失难忘的照片总是令人痛苦的。如果软件崩溃或意外删除,Android 设备上的照片也可能会丢失。这时照片恢复应用程序就派上用场了。查看我们为 Android 收集的顶级照片恢复应用程序。 但是,您不会想为自己选择任何照片恢复应用程序。因此,我们…

Doris:冷热分层

目录 一、冷热分层介绍 二、存储策略(Storage policy) 2.1 创建存储资源 2.2 创建存储策略 2.3 使用存储策略 三、使用限制 一、冷热分层介绍 冷热分层支持所有 Doris 功能,只是把部分数据放到对象存储上,以节省成本&am…

openGauss 6.0.0 一主二备集群安装及使用zcbus实现Oracle到openGauss的数据同步

一、前言 openGauss 6.0.0-RC1是openGauss 2024年3月发布的创新版本,该版本生命周期为0.5年。根据openGauss官网介绍,6.0.0-RC1与之前的版本特性功能保持兼容,另外,在和之前版本兼容的基础上增加了很多新功能,比如分区表性能优化…

go的netpoll学习

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

统计完全子字符串

很不错的计数问题&#xff0c;用到了分组循环技巧和滑动窗口 代码的实现方式也非常值得多看 class Solution { public:int f(string s,int k){int res 0;for(int m1;m<26&&k*m<s.size();m){int cnt[27]{};auto check[&](){for(int i0;i<26;i){if(cnt[i]…

跟着刘二大人学pytorch(第---10---节课之卷积神经网络)

文章目录 0 前言0.1 课程链接&#xff1a;0.2 课件下载地址&#xff1a; 回忆卷积卷积过程&#xff08;以输入为单通道、1个卷积核为例&#xff09;卷积过程&#xff08;以输入为3通道、1个卷积核为例&#xff09;卷积过程&#xff08;以输入为N通道、1个卷积核为例&#xff09…

计算机组成原理之定点除法

文章目录 定点除法运算原码恢复余数法原码不恢复余数法&#xff08;加减交替法&#xff09;运算规则 习题 定点除法运算 注意 &#xff08;1&#xff09;被除数小于除数的时候&#xff0c;商0 &#xff08;2&#xff09;接下来&#xff0c;有一个除数再原来的基础上&#xff0c…

springboot + Vue前后端项目(第十六记)

项目实战第十六记 写在前面1 第一个bug1.1 完整的Role.vue 2 第二个bug2.1 修改路由router下面的index.js 总结写在最后 写在前面 发现bug&#xff0c;修复bug 1 第一个bug 分配菜单时未加入父id&#xff0c;导致分配菜单失效 <!-- :check-strictly"true" 默…

图的应用之最小生成树

大纲 生成树介绍 特点 但n个 种类 最小生成树 应用 构造算法 MST性质 Prim算法 依次选择与顶点相邻的不会构成回路的最小边对应的顶点 Kruskal算法 依次选不会构成环的最小边 区别 Prim算法有n个顶点进行选择&#xff0c;每个顶点有n个选择&#xff0c;复杂度为O(n*n) K…

C51学习归纳13 --- AD/DA转换

AD/DA转换实现了计算机和模拟信号的连接&#xff0c;扩展了计算机的应用场景&#xff0c;为模拟信号数字化提供了底层支持。 AD转换通常是多个输入通道&#xff0c;使用多路选择器连接到AD开关&#xff0c;实现AD多路复用的目的&#xff0c;提高利用率。 AD/DA转换可以使用串口…

我的创作纪念日(1825天)

Ⅰ、机缘 1. 记得是大一、大二的时候就听学校的大牛说&#xff0c;可以通过写 CSDN 博客&#xff0c;来提升自己的代码和逻辑能力&#xff0c;虽然即将到了写作的第六个年头&#xff0c;但感觉这句话依旧受用; 2、今年一整年的创作都没有停止&#xff0c;本年度几乎是每周都来…

UniApp或微信小程序中scroll-view组件使用show-scrollbar在真机Android或IOS中隐藏不了滚动条的解决办法

show-scrollbar 属性 不论是使用 变量 还是直接使用 布尔值或者直接使用 css 都是在 ios、Android 上是都没有效果。。 真机中还是出现滚动条 解决办法 添加下面CSS ::-webkit-scrollbar {display: none;width: 0 !important;height: 0 !important;-webkit-appearance: no…

盛世古董乱世金-数据库稳定到底好不好?

是不是觉得这个还用问&#xff1f; 是的要问。因为这个还是一个有争议的问题。但是争议双方都没有错。这就像辩论&#xff0c;有正反双方。大家都说的有道理&#xff0c;但是很难说谁对谁错。 正方观点&#xff1a;数据库稳定好 其实这个是用户的观点&#xff0c;应用开发人…