V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
abcbuzhiming
V2EX  ›  机器学习

机器学习得到的那个模型究竟是什么东西?

  •  
  •   abcbuzhiming · 2022-06-13 13:34:48 +08:00 · 2927 次点击
    这是一个创建于 886 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我有两个疑问:

    1.机器学习得到的那个 [模型] 究竟是什么东西?有说它是一个函数的,还有说它就是一个向量的,众说纷纭

    2.为了训练这个模型,需要大量计算器并行运算,所以 GPU 非常适合这个工作。但是在使用这个模型的时候。是哪一部分在计算呢?我了解到有些模型现在居然可以直接部署在手机上,这显然和桌面 GPU 有巨大的性能差距。也就是说,使用模型时的计算量是远远低于训练时的。这是为什么呢
    15 条回复    2023-11-27 11:47:49 +08:00
    rming
        1
    rming  
       2022-06-13 13:42:00 +08:00
    1. 逻辑代码和参数(保存模型也可以选择只保存参数,下次跑的时候,加载逻辑代码,读取保存的参数)
    2. 学习过程就是计算最优参数,需要多次重复计算评估(通过计算训练集的损失率和准确率)
    找个教程系统的学习下就知道了,机器学习新手,不对请指正
    MingHime
        2
    MingHime  
       2022-06-13 14:32:37 +08:00   ❤️ 1
    y=kx ,k (狗头)
    neteroster
        3
    neteroster  
       2022-06-13 14:37:43 +08:00
    ufan0
        4
    ufan0  
       2022-06-13 15:06:52 +08:00
    宏观上看就是暴力数学归纳,哈哈哈
    LxExExl
        5
    LxExExl  
       2022-06-13 15:09:58 +08:00
    二楼正解,就是 y=ax+b ,1 是求 a 和 b ,2 是给 x 算 y 。部署在哪里取决于要算多少个 x 。
    zzgo88
        6
    zzgo88  
       2022-06-13 15:18:37 +08:00   ❤️ 1
    1. 模型可理解为一个函数,给他一个输入(例如一张图片),他会给你一个输出(例如图片的标签或分类),这个函数可以由向量及其他一些数据(如模型架构)表示,例如 3 层 CNN 为架构,但是有无数个 3 层 cnn ,里面有很多参数,都是向量。所有向量都确定后可确定唯一的一个模型或函数。例子,函数 y=wx+b ,x 是输入 y 是输出,wx+b 就是这个函数 /模型的架构(一个负责放缩的参数 w 和一个负责 bias 的 b ),wb 就是参数,在 w ,b 不确定的情况下,y=wx+b 有无数个选择,但如果指定 w 和 b 的值,那么 y=wx+b 就是一个确定的模型或函数。

    2. 模型的训练阶段可理解为从一堆函数中,根据一定的目标(即损失函数)及数据,选择你认为最好的函数。训练过程是一个逐渐获取最终结果的过程(俗称炼丹),包含多个迭代,其中每个迭代包括正向传播(计算损失)以及反向传播(计算梯度)两个阶段,每个阶段通常表示为矩阵乘来提升计算速度;这里使用 gpu 计算。

    而在这个模型的使用阶段(称为推断或 inference ),相比于训练阶段只需要一个迭代,并且只需要正向传播一次,因此在不需要训练模型的时候(比如部署在你手机上),计算量远远小于训练。例子,模型训练后得到 y=2x+1 ,给定一个输入 x=2 ,只需要计算一次 2*2+1 即可。
    agagega
        7
    agagega  
       2022-06-13 15:18:53 +08:00
    最最最简单的情况:

    一个班的学生考试成绩出了,但公布的分数被老师改过。现在你有一批原始分数和改后的分数,你可以把这批分数遍历一遍,算出这些学生实际分数和公开分数差值的平均值。现在你有另外一些学生的公开分数,通过前面的平均数,你可以估计这些学生的实际分数。

    在这个情景里,那个差值平均数就是模型,训练模型就需要遍历数据集计算,而使用模型只需要在新数据上加上这个平均数就好了,所以计算量小很多。这样好理解了吧?
    xilou31
        8
    xilou31  
       2022-06-13 16:11:26 +08:00
    函数和向量应该都是答案。

    用函数表示就是 y = kx+b 。训练过程就是找出这个 k 和 b 。而使用就是把 x 代入,得出 y 。

    用向量表示就是,训练过程就是找出[k,b]向量,使用就是使用[x]向量与[k,b]向量进行向量相乘,得出[y]向量。
    xilou31
        9
    xilou31  
       2022-06-13 16:12:58 +08:00
    说错了那个向量乘法应该是矩阵乘法。
    GrayXu
        10
    GrayXu  
       2022-06-13 19:43:37 +08:00
    1 前面答完了。
    2 训练需要大量计算的一个点是因为进行了**多次**迭代计算优化,包括前向和反向。对于使用者来说,只有**一次**前向计算过程。不过直接部署在移动终端上还有对 memory 的占用问题,这就是做量化、蒸馏等策略来压缩模型(参数)大小的地方。
    ttgo
        11
    ttgo  
       2022-06-13 19:49:50 +08:00
    y=ax+b 没有包含非线性!可能会出现些许误导。
    afutureus
        12
    afutureus  
       2022-06-14 01:39:40 +08:00 via iPhone
    概率空间的一个解。
    xidianwubo12138
        13
    xidianwubo12138  
       2022-07-15 15:06:23 +08:00
    一个大字典
    Yuhyeong
        14
    Yuhyeong  
       2022-10-18 21:47:27 +08:00
    1.最抽象的答案是:y=kx+b
    因为实际上存的就是极多个权重,共同构成一个“函数”。说白就是存储了一堆“k”,你可以设想多少个"k"(假设为 float32 )才能占用到 GB 级别

    2.因为很多不同结构的模型也可以得到一样的输出
    比如,y=k1x+b, 存在一个函数使 k1 在某个区间恒为 1 ,则可以将"k1"直接等价为 1 ,这样就可以一定程度上减少空间占用,迁移到其他平台。
    isSamle
        15
    isSamle  
       354 天前
    数学模型吧,本质上可能是个 N 元 N 次方程组
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4563 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 09:57 · PVG 17:57 · LAX 01:57 · JFK 04:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.