机器学习简介

news2025/1/13 15:42:51

文章目录

  • 引言
  • 1. 从找规律说起
  • 2. 机器学习应用
    • 2.1 有监督学习
    • 2.2 无监督学习
      • 2.2.1 聚类
      • 2.2.2 降维
  • 3. 机器学习一般流程
  • 4. 机器学习常用概念
  • 5. 深度学习简介
    • 5.1 引入 -- 猜数字
    • 5.2 深度学习
      • 5.2.1 隐含层/中间层
      • 5.2.2 随机初始化
      • 5.2.3 损失函数
      • 5.2.4 导数与梯度
      • 5.2.5 梯度下降
      • 5.2.6 优化器
      • 5.2.7 Mini Batch & epoch
      • 5.2.8 深度学习总结
  • 6. 总结

引言

机器学习是人工智能(AI)的一个子领域,专注于使用算法和统计模型使计算机系统能够执行特定任务,而无需使用明确的指令。相反,它依赖于模式和推断。其核心思想是:给予机器大量数据,让机器从这些数据中学习,并逐渐改进它的预测或决策。

1. 从找规律说起

  • 2 4 6 8 ?

  • 机器学习视角
    在这里插入图片描述

  • 找到一个函数y = f(x) 使得 yi = f(xi)

  • 到这个函数后,用于预测其他x对应的y值

  • y = 2 * x

找规律

  • 复杂一点
  • X可以是多个值
  • X:(1,2) (10,20) (34,65) (79,43)
  • Y: 3 30 99 122
  • Y = ∑xi 或 Y = W * X, W=[1,1]
  • [1,1] * [1,2] = 11 + 12 = 3

还能再复杂

  • Y也可以是一个矩阵
  • X可以是多个矩阵
  • Y可以是多个矩阵
  • X可以是不同维度的多个向量
  • Y可以是不同维度的多个向量
  • X可以是多个不同维度矩阵
  • ……

2. 机器学习应用

  • 很多时候,我们有数据,希望找到规律,但规律很复杂,所以希望靠机器来挖掘规律
  • 知道花朵的大小、颜色等信息,来判断花的种类
  • 知道身体血压、血脂等指标,来预测是否患病
  • 知道房屋的大小、位置等信息,来预测房价
  • 知道企业的业务、规模等信息,来预测股价
  • 知道国家的人口、经济发展等信息,预测未来GDP

2.1 有监督学习

  • 核心目标:建立一个模型(函数),来描述输入(X)和输出(Y)之间的映射关系
  • 价值:对于新的输入,通过模型给出预测的输出

有监督学习要点

  1. 需要有一定数量的训练样本
  2. 输入和输出之间有关联关系
  3. 输入和输出可以数值化表示
  4. 任务需要有预测价值

在这里插入图片描述

有监督学习在人工智能中的应用

文本分类任务
输入:文本 输出:类别
关系:文本的内容决定了文本的类别

机器翻译任务
输入:A语种文本 输出:B语种文本
关系:A语种表达的意思,在B语种中有对应的方式

图像识别任务
输入:图像 输出:类别
关系:图中的像素排列,决定了图像的的内容

语音识别任务
输入:音频 输出:文本
关系:声音信号在特定语言中对应特定的文本

2.2 无监督学习

给予机器的数据没有标注信息,通过算法对数据进行一定的自动分析处理,得到一些结论

常见任务:聚类、降维、找特征值等等

2.2.1 聚类

此处可参考我的另一篇文章 K - Means聚类算法
聚类旨在将数据点组织成几个相似的群组或“簇”,这些群组内的成员比与其他群组的成员更相似。

核心概念:

  1. 簇:由相似的数据点组成的一个集合。
  2. 质心:一个簇中所有点的平均值或中心位置。

主要方法:

  1. K-均值聚类:预先设定要形成的簇的数量(K),然后迭代地将每个数据点分配给最近的质心,并重新计算质心。
  2. 层次聚类:形成一个由层次组成的树状图。它可以从每个数据点为一个簇开始,然后合并最相近的簇,或者开始时将所有点视为一个簇,然后逐渐分裂。
  3. DBSCAN:基于密度的聚类方法,它将高密度的区域划分为簇,并可以识别并忽略噪音点。
  4. GMM (高斯混合模型):假设所有数据由几个高斯分布组成,并使用期望最大化来估计这些分布。
    在这里插入图片描述

2.2.2 降维

此处可参考我的另一篇文章 PCA主成分分析

降维是机器学习和数据分析中的一个重要概念,它涉及将数据从高维空间转换到低维空间,同时尽量保留数据的重要信息或结构。降维通常用于数据可视化、性能优化、噪声消减以及避免“维度的诅咒”。

维度的诅咒:
随着维度的增加,数据的稀疏性增加,导致需要更多的数据来进行有效的学习,这使得高维数据变得难以处理。

常用的降维方法:

  1. 主成分分析(PCA):
  • 通过正交变换将一组可能相关的变量转换为一组线性不相关的变量,这些不相关的变量称为“主成分”。
  • 第一个主成分解释了原始数据中的最大方差,每个后续的成分都有尽可能小的方差。
  • PCA 是线性方法,可能不适合捕捉非线性关系。
  1. 线性判别分析(LDA):
  • 监督学习的降维技术,与PCA类似,但同时考虑类别信息。
  • 目标是最大化类间方差并最小化类内方差,以提高类的可分性。
  1. t-SNE (t-分布随机邻域嵌入):
  • 用于高维数据的可视化。
  • 通过概率分布将相似的对象映射到相似的位置,尤其适合捕捉数据中的复杂结构。
  1. 自编码器:
  • 是深度学习模型,通过尝试复制其输入来学习数据的有效表示。
  • 编码器部分将输入压缩到低维表示,解码器部分尝试从这个表示中重构输入。
  1. 奇异值分解(SVD):
  • 用于矩阵分解。
  • 可用于PCA的实现,也常用于推荐系统。

为什么要降维:

  1. 速度与存储:减少计算量和存储需求。
  2. 可视化:更容易地将高维数据映射到2D或3D,以进行可视化。
  3. 噪声减少:通过消除不重要的特征来减少噪声。
  4. 避免过拟合:减少特征的数量可以帮助模型避免过拟合。

3. 机器学习一般流程

在这里插入图片描述

4. 机器学习常用概念

  1. 训练集
    用于模型训练的训练数据集合
  2. 验证集
    对于每种任务一般都有多种算法可以选择,一般会使用验证集验证用于对比不同算法的效果差异
  3. 测试集
    最终用于评判算法模型效果的数据集合
  4. K折交叉验证(K fold cross validation)
    初始采样分割成K个子样本,一个单独的子样本被保留作为验证模型的数据,其他K-1个样本用来训练。交叉验证重复K次,每个子样本验证一次,平均K次的结果
  5. 过拟合
    模型失去了泛化能力。如果模型在训练集和验证集上都有很好的表现,但在测试集上表现很差,一般认为是发生了过拟合
  6. 欠拟合
    模型没能建立起合理的输入输出之间的映射。当输入训练集中的样本时,预测结果与标注结果依然相差很大

评价指标
为了评价算法效果的好坏,需要找到一种评价模型效果的计算指标。不同的任务会使用不同的评价指标。常用的评价指标有:

  1. 准确率
  2. 召回率
  3. F1值
  4. TopK
  5. BLEU…

回归问题
预测值为数值型(连续值)。如预测房价。

分类问题
预测值为类别(离散值)或在类别上的概率的分布。

  1. 特征
    模型输入需要数值化,对于较为抽象的输入,如声音,文字,情绪等信息,需要将其转化为数值,才能输入模型。转化后的输入,被称作特征。
  2. 特征工程
    筛选哪些信息值得(以特征的形式)输入模型,以及应当以何种形式输入的工作过程。对于机器学习而言非常重要。模型的输入,决定了模型能力的上限。

5. 深度学习简介

5.1 引入 – 猜数字

A: 我现在心里想了一个0-100之间的整数,你猜一下?
B: 60。
A: 低了。
B:80。
A:低了。
B:90。
A:高了
B:88。
A:对了!

  • 假如0~100内,A选取的数字是88
  • 在0~1000内,A选取的数字是888
  • 那么在0~10000内选取呢?
  • 可以认为,A先生选取数字是有规律的,这个规律与他选取范围的上限有关
  • 构建模型预测A心里想的数字
  • 模型输入:A给出的上限数值
  • 模型输出:A心里想的数值

首先B随便猜一个数 ----模型随机初始化
模型函数 :Y = k * x (此样本x = 100)
此例子中B选择的初始k值为0.6
计算B的猜测与真正答案的差距 ----计算loss
损失函数 = sign(y_true – y_pred)
A告诉B偏大或偏小 ----得到loss值
B调整了自己的“模型参数” ----反向传播
参数调整幅度依照B自定的策略 ----优化器&学习率
重复以上过程
最终B的猜测与A的答案一致 ----loss = 0

  • 想要快速获得正确的模型,AB可以有哪些可以优化的地方?
  • 1.随机初始化。
  • 假如B一开始选择的k值为88,则直接loss=0
  • NLP中的预训练模型实际上就是对随机初始化的技术优化
  • 2.优化损失函数
  • 假如损失函数为loss = y_true – y_pred
  • 即当B猜测60的时候,A告知低了28
  • 3.B调整参数的策略
  • B采取二分法调整,50 -> 75 -> 88
  • 4.调整模型结构
  • 不同模型能够拟合不同的数据集

5.2 深度学习

人工神经网络(Artificial Neural Networks,简称ANNs),也简称为神经网络(NN)。它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。
在这里插入图片描述

5.2.1 隐含层/中间层

神经网络模型输入层和输出层之间的部分
隐含层可以有不同的结构:
RNN
CNN
DNN
LSTM
Transformer
在这里插入图片描述

5.2.2 随机初始化

  • 隐含层中会含有很多的权重矩阵,这些矩阵需要有初始值,才能进行运算
  • 初始值的选取会影响最终的结果
  • 一般情况下,模型会采取随机初始化,但参数会在一定范围内
  • 在使用预训练模型一类的策略时,随机初始值被训练好的参数代替

5.2.3 损失函数

  • 损失函数(loss function或cost function)用来计算模型的预测值与真实值之间的误差。
  • 模型训练的目标一般是依靠训练数据来调整模型参数,使得损失函数到达最小值。
  • 损失函数有很多,选择合理的损失函数是模型训练的必要条件。

5.2.4 导数与梯度

导数表示函数曲线上的切线斜率。 除了切线的斜率,导数还表示函数在该点的变化率。
在这里插入图片描述

5.2.5 梯度下降

  • 梯度告诉我们函数向哪个方向增长最快,那么他的反方向,就是下降最快的方向
  • 梯度下降的目的是找到函数的极小值
  • 为什么要找到函数的极小值?
    因为我们最终的目标是损失函数值最小

5.2.6 优化器

  • 知道走的方向,还需要知道走多远
  • 如一步走太大,就可能错过最小值,如果一步走太小,又可能困在某个局部低点无法离开
  • 学习率(learning rate),动量(Momentum)都是优化器相关的概念
    在这里插入图片描述

5.2.7 Mini Batch & epoch

  • 一次训练数据集的一小部分,而不是整个训练集,或单条数据
  • 它可以使内存较小、不能同时训练整个数据集的电脑也可以训练模型。
  • 它是一个可调节的参数,会对最终结果造成影响
  • 不能太大,因为太大了会速度很慢。 也不能太小,太小了以后可能算法永远不会收敛。
  • 我们将遍历一次所有样本的行为叫做一个 epoch

5.2.8 深度学习总结

在这里插入图片描述

  • 训练迭代进行 模型训练好后把参数保存即可用于对新样本的预测
  • 要点:
  • 模型结构选择
  • 初始化方式选择
  • 损失函数选择
  • 优化器选择
  • 样本质量数量

6. 总结

  • 机器学习的本质,是从已知的数据中寻找规律,用来预测未知的样本
  • 深度学习是机器学习的一种方法
  • 度学习的基本思想,是先建立模型,并将模型权重随机初始化,之后将训练样本输入模型,可以得到模型预测值。使用模型预测值和真实标签可以计算loss。通过loss可以计算梯度,调整权重参数。简而言之,“先蒙后调”

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

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

相关文章

【linux kernel】linux内核中的debugfs

文章目录 一、👉相关文件二、👉简介三、👉debugfs的API1、在debugfs中创建目录2、在debugfs目录中创建文件3、创建一个具有初始大小的文件4、创建包含单个整数值(十进制)的文件5、创建包含单个十六进制值得文件&#x…

AI Agent在家务场景下的AgentBench基准测试

近日,来自清华大学、俄亥俄州立大学和加州大学伯克利分校的研究者设计了一个测试工具——AgentBench,用于评估LLM在多维度开放式生成环境中的推理能力和决策能力。研究者对25个LLM进行了全面评估,包括基于API的商业模型和开源模型。 他们发现,顶级商业LLM在复杂环境中表现出…

文件内容搜索工具 - Python实现

在本篇文章中,我们将介绍如何使用 wxPython 库创建一个简单的文件搜索工具。这个工具允许用户选择一个文件夹,并在该文件夹中的所有 .py 文件中查找指定的文字,并显示匹配的位置。 C:\pythoncode\blog\searchwordinpyfile.py 代码实现 我们首…

Apipost数据模型功能详解

在API设计和开发过程中,存在许多瓶颈,其中一个主要问题是在遇到相似数据结构的API时会产生重复性较多的工作:在每个API中都编写相同的数据,这不仅浪费时间和精力,还容易出错并降低API的可维护性。 为了解决这个问题&a…

Android SDK 上手指南||第四章 应用程序结构

第四章 应用程序结构 本教程将主要以探索与了解为主要目的,但后续的系列文章则将进一步带大家深入学习如何创建用户界面、响应用户交互操作以及利用Java编排应用逻辑。我们将专注于大家刚刚开始接触Android开发时最常遇到的项目内容,但也会同时涉及一部…

ICCV2023 | 基于动作敏感性学习的时序动作定位

淘天集团-内容理解算法团队与浙江大学杨易教授团队合作的关于视频时序定位的论文被ICCV2023录取。 本文在业界首次将视频帧级别的细粒度信息引入至时序动作定位领域(Temporal Action Localization,TAL),对于时序动作定位任务&…

iFlyCode 智能编程助手:提升编码效率的人工智能工具

一,介绍 iFlyCode 智能编程助是一款基于人工智能的编程辅助工具,旨在提高开发者的编码效率和准确性。它能够与多种编程语言和集成开发环境(IDE)配合使用,为开发者提供代码建议、自动完成和重构等功能。 以下是 iFlyC…

ethers.js1:ethers的安装和使用

ethers官方文档:Documentation 1、ethers简介: ethers.js是一个完整而紧凑的开源库,用于与以太坊区块链及其生态系统进行交互。如果你要写Dapp的前端,你就需要用到ethers.js。 与更早出现的web3.js相比,它有以下优点…

2023-8-23 滑动窗口

题目链接&#xff1a;滑动窗口 #include <iostream>using namespace std;const int N 1000010;int n, k; int a[N], q[N];int main() {scanf("%d%d", &n, &k);for(int i 0; i < n; i) scanf("%d", &a[i]);int hh 0, tt -1;for(…

Java注解和自定义注解以及应用。

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;微信小程序、页面跳转、移动端、前端☀️每日 一言&#xff1a;追求潮流&#xff0c;其本身一点都不潮流&#xff01; 一、前言 使用 Java 注解&#xff08;Annotations&#xff09;可以在代码中…

读书笔记-10张不同的思维导图

用思维导图做的读书笔记 当我们阅读一本书时&#xff0c;需要整理和记录书中的关键信息和观点&#xff0c;如果用传统的笔记方法&#xff0c;不仅会信息凌乱&#xff0c;而且效率低下。思维导图可以帮助我们更好地理解和组织一本书中所读内容。 一、我们先来了解一下什么是思…

Stable Diffusion 系列教程 | 文生图 - 提示词

目录 1.提示词 基本的规则 2.提示词分类 2.1内容性提示词 2.2 画风艺术派提示词 2.3 画幅视角 2.4画质提示词 3 反向提示词 3.1 内容性反向提示词 3.2 画质性反向提示词 4 实例分析 5 权重 5.1 方法一 5.2 方法二 6.参数 7. 学习and 技巧 7.1 辅助写提示词的网…

c++ 虚函数类对象模型

一、复杂的菱形继承及菱形虚拟继承 单继承&#xff1a;一个子类只有一个直接父类时称这个继承关系为单继承。 多继承&#xff1a;一个子类有两个或以上直接父类时称这个继承关系为多继承。 菱形继承&#xff1a;菱形继承是多继承的一种特殊情况。 菱形继承的问题&#xff1a;从…

从零开始学习YOLOv5 保姆级教程

一、前言 YOLO系列是one-stage且是基于深度学习的回归方法&#xff0c;而R-CNN、Fast-RCNN、Faster-RCNN等是two-stage且是基于深度学习的分类方法。 YOLOv5是一种单阶段目标检测算法&#xff0c;该算法在YOLOv4的基础上添加了一些新的改进思路&#xff0c;使其速度与精度都得…

【C++】vector类的模拟实现(SGI版本)

&#x1f3d6;️作者&#xff1a;malloc不出对象 ⛺专栏&#xff1a;C的学习之路 &#x1f466;个人简介&#xff1a;一名双非本科院校大二在读的科班编程菜鸟&#xff0c;努力编程只为赶上各位大佬的步伐&#x1f648;&#x1f648; 目录 前言一、vector类的模拟实现1.1 vect…

SpringCloud Alibaba实战和源码(7)Skywalking

什么是SkyWalking Skywalking是由国内开源爱好者吴晟开源并提交到Apache孵化器的产品&#xff0c;它同时吸收了Zipkin /Pinpoint /CAT 的设计思路。特点是&#xff1a;支持多种插件&#xff0c;UI功能较强&#xff0c;支持非侵入式埋点。目前使用厂商最多&#xff0c;版本更新较…

水溶性焊锡丝非水溶焊锡丝

Sn63Pb37&#xff0c;无FLUX&#xff0c;水清洗&#xff1b;A可理解为余量或者国标A类标准1% Sn63Pb37&#xff0c;FLUX 1.8% 焊锡膏 焊锡丝 焊锡丝&#xff0c;英文名称&#xff1a;solder wire&#xff0c;由锡合金和助剂两部分组成&#xff0c;合金成份分为锡铅、无铅助剂均…

PX4使用esp8266

文章目录 前言一、给esp8266下载固件接线下固件 二、配置esp8266 前言 硬件&#xff1a; esp01s(esp01好像有些问题&#xff0c;不建议用) usb转串口模块 pix飞控 软件&#xff1a; qgc PX4 参考&#xff1a; https://docs.px4.io/main/en/telemetry/esp8266_wifi_module.html…

1.4亿X区城市运行“一网统管”体系建设项目项目招标WORD

导读&#xff1a;原文《1.4亿X区城市运行“一网统管”体系建设项目项目招标WORD》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 部分内容&#xff1a; 各部分需求…

VS code 设置 资源管理器 对齐线

点击左上角的File --> Preformences --> Settings 然后搜索 workbench&#xff0c;把workbench.tree.renderIndentGuides选成always&#xff0c;这样会一直显示对齐的竖线。 找到workbench.tree.indent&#xff0c;这个值就是缩进的像素数量&#xff0c;值越大&#xff0…