【学习笔记】机器学习-监督学习

本文详细介绍了机器学习的基本概念,重点讲解了监督学习的原理,包括学习形式分类、损失函数、训练数据与测试数据的关系,以及过学习和欠学习的概念。此外,还探讨了判别模型和生成模型的区别。通过对浙江大学吴飞教授课程的整理,旨在帮助读者深入理解机器学习的核心思想。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

翻到刚开始接触机器学习时的笔记,闲着无事将其整理成博客。主要参照中国MOOC中浙江大学计算机学院吴飞老师的《人工智能课程》。

一. 机器学习(Machine Learning,ML)基本概念

1.定义:

机器学习是专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。
“机器学习是用数据或以往的经验,以此优化计算机程序的性能标准。”

2.基本手段

(1)从原始数据中提取特征
(2)学习映射函数𝑓
(3)通过映射函数𝑓将原始数据映射到语义空间,即寻找数据和任务目标之间的关系。

3.按学习形式分类

(1)监督学习(supervised learning)
数据有标签、一般为回归分类 等任务
利用一组已知类别的样本调整分类器的参数,使其达到所要求性能的过程
*半监督学习 即介于监督学习和无监督学习之间,数据并不是全都有标签。

(2)无监督学习(un-supervised learning)
数据无标签、一般为聚类或若干降维任务。
又称归纳性学习(clustering)利用K方式(Kmeans),建立中心,通过循环和递减运算(iteration&descent)来减小误差,达到分类的目的。

(3)强化学习(reinforcement learning)
序列数据决策学习,一般从环境交互中学习

二、监督学习

1. 概述

监督学习是从标记的训练数据来推断一个功能的机器学习任务。

训练数据包括一套训练示例。在监督学习中,每个实例都是由一个输入对象(通常为矢量)和一个期望的输出值(也称为监督信号)组成。监督学习算法是分析该训练数据,并产生一个推断的功能,其可以用于映射出新的实例。

一个最佳的方案将允许该算法来正确地决定那些看不见的实例的类标签。这就要求学习算法是在一种“合理”的方式从训练数据到看不见的情况下形成。

可用于分类、识别、推荐等。

2.重要元素

(1)标注数据 标识了类别信息的数据。
(2)学习模型 如何学习得到映射模型
(3)损失函数 如何对学习结果进行度量

3.损失函数

训练映射函数f:使得f(xi)预测结果尽量等于yi

  • 训练集中一共有𝑛个标注数据,第𝑖个标注数据记为(𝑥𝑖,𝑦𝑖) ,其中第𝑖个样本数据为𝑥𝑖,𝑦𝑖是𝑥𝑖的标注信息。
  • 从训练数据中学习得到的映射函数记为𝑓,𝑓对𝑥𝑖的预测结果记为𝑓(𝑥𝑖)。损失函数就是用来计算𝑥𝑖真实值𝑦𝑖与预测值𝑓(𝑥𝑖)之间差值的函数。
  • 很显然,在训练过程中希望映射函数在训练数据集上得到“损失”之和最小,
    即min∑𝐿𝑜𝑠𝑠(𝑓(𝑥𝑖),𝑦𝑖)。

表:典型的损失函数

损失函数名称损失函数定义
0-1损失函数𝐿𝑜𝑠𝑠(𝑦𝑖,𝑓(𝑥𝑖))= 1,𝑓(𝑥𝑖)≠𝑦𝑖 ; 𝐿𝑜𝑠𝑠(𝑦𝑖,𝑓(𝑥𝑖))= 0,𝑓(𝑥𝑖)=𝑦𝑖
平方损失函数𝐿𝑜𝑠𝑠(𝑦𝑖,𝑓(𝑥𝑖))=(𝑦𝑖−𝑓(𝑥𝑖))2
绝对损失函数𝐿𝑜𝑠𝑠(𝑦𝑖,𝑓(𝑥𝑖))=|𝑦𝑖−𝑓(𝑥𝑖)|
对数损失函数/对数似然损失函数𝐿𝑜𝑠𝑠(𝑦𝑖,𝑃𝑦𝑖𝑥𝑖)=−𝑙𝑜𝑔𝑃(𝑦𝑖|𝑥𝑖 )

4.训练数据与测试数据

训练数据于测试数据
经验风险(empirical risk):
训练集中数据产生的损失。经验风险越小说明学习模型对训练数据拟合程度越好。
经验风险最小化

期望风险(expected risk):
当测试集中存在无穷多数据时产生的损失。期望风险越小,学习所得模型越好。模型具有更大的泛化能力。
泛化能力:机器学习算法对新鲜样本的适应能力。学习的目的是学到隐含在数据背后的规律,对具有同一规律的学习集以外的数据,经过训练的网络也能给出合适的输出。)
期望风险最小化

5.”过学习(over-fitting)” 和 “欠学习(under-fitting)”

如果训练集不是很大,也就是用来给学习机器学习的样本数量比较有限的情况下,如果过于追求让经验风险小,学习复杂性太高,会导致过学习现象,也就是学习出来的模型的推广能力变差,这可以用泛化误差变大来表征。

经验风险期望风险效果
小(训练集上表现好)小(测试集上表现好)泛化能力强
小(训练集上表现好)大(测试集上表现不好)过学习(模型过于复杂)
大(训练集上表现不好)大(测试集上表现不好)欠学习
大(训练集上表现不好)小(测试集上表现好)“神仙算法”或“黄粱美梦”

结构风险最小化(structural minimization):为了防止过拟合,在经验风险上加上表示模型复杂度的正则化项(regulatizer)或惩罚项(penalty term ) :
结构风险最小化

6.监督学习的两种方法:判别模型和生成模型

判别模型:

  • 直接学习判别函数𝑓(𝑋) 或者条件概率分布𝑃(𝑌|𝑋) 作为预测的模型,即判别模型。
  • 判别模型关心在给定输入数据下,预测该数据的输出是什么。
  • 典型判别模型包括回归模型神经网络支持向量机(SVM)Ada boosting等。

生成模型:

  • 生成模型从数据中学习联合概率分布𝑃(𝑋,𝑌)(通过似然概率𝑃(𝑋|𝑌) 和类概率𝑃(𝑌) 的乘积来求取) P(Y|X)=(P(X,Y))/(P(X)) 或者 P(Y|X)=(P(X|Y)×P(Y))/(P(X))
  • 典型方法为贝叶斯方法、隐马尔可夫链
  • 授之于鱼、不如授之于“渔”
  • 联合分布概率𝑃(𝑋,𝑌)或似然概率𝑃(𝑌|𝑋)求取很困难
### RVIZ2 中不支持立体视觉的原因 RVIZ2 主要用于可视化来自不同传感的数据,包括激光雷达、摄像头等。然而,在当前版本中确实存在对立体视觉支持不足的情况[^2]。 原因主要在于: - **数据处理复杂度**:立体视觉涉及到两幅图像的同时处理与匹配计算,这对实时性能提出了更高要求。 - **API 设计差异**:ROS 2 的 API 虽然提供了丰富的功能接口来构建复杂的机人应用系统,但对于特定类型的多目相机的支持还不够完善。 ### 解决方案 尽管官方默认情况下未直接提供针对立体视觉的良好集成体验,但仍有一些可行的方法可以实现这一需求: #### 方法一:自定义插件开发 通过创建自定义显示插件的方式扩展 RVIZ2 功能。这需要开发者熟悉 C++ 编程语言以及 ROS 2 插件机制,并能够调用 OpenCV 或其他计算机视觉库来进行双目视差图的生成和渲染。 ```cpp #include <rviz_common/display.hpp> // ... other necessary includes ... class StereoVisionDisplay : public rviz_common::Display { public: // Implement required methods and members here... }; ``` #### 方法二:利用第三方工具链 借助于像 `stereo_image_proc` 这样的包先对外部获取到的左右眼图片流做预处理得到深度信息后再输入给 RVIZ2 显示。这种方式不需要修改 RVIZ2 源码本身,相对简单易行一些。 ```bash ros2 run stereo_image_proc disparity stereo/left/image_raw stereo/right/image_raw ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值