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

2022-06-13 13:34:48 +08:00
 abcbuzhiming
我有两个疑问:

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

2.为了训练这个模型,需要大量计算器并行运算,所以 GPU 非常适合这个工作。但是在使用这个模型的时候。是哪一部分在计算呢?我了解到有些模型现在居然可以直接部署在手机上,这显然和桌面 GPU 有巨大的性能差距。也就是说,使用模型时的计算量是远远低于训练时的。这是为什么呢
2964 次点击
所在节点    机器学习
15 条回复
rming
2022-06-13 13:42:00 +08:00
1. 逻辑代码和参数(保存模型也可以选择只保存参数,下次跑的时候,加载逻辑代码,读取保存的参数)
2. 学习过程就是计算最优参数,需要多次重复计算评估(通过计算训练集的损失率和准确率)
找个教程系统的学习下就知道了,机器学习新手,不对请指正
MingHime
2022-06-13 14:32:37 +08:00
y=kx ,k (狗头)
neteroster
2022-06-13 14:37:43 +08:00
ufan0
2022-06-13 15:06:52 +08:00
宏观上看就是暴力数学归纳,哈哈哈
LxExExl
2022-06-13 15:09:58 +08:00
二楼正解,就是 y=ax+b ,1 是求 a 和 b ,2 是给 x 算 y 。部署在哪里取决于要算多少个 x 。
zzgo88
2022-06-13 15:18:37 +08:00
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
2022-06-13 15:18:53 +08:00
最最最简单的情况:

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

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

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

用向量表示就是,训练过程就是找出[k,b]向量,使用就是使用[x]向量与[k,b]向量进行向量相乘,得出[y]向量。
xilou31
2022-06-13 16:12:58 +08:00
说错了那个向量乘法应该是矩阵乘法。
GrayXu
2022-06-13 19:43:37 +08:00
1 前面答完了。
2 训练需要大量计算的一个点是因为进行了**多次**迭代计算优化,包括前向和反向。对于使用者来说,只有**一次**前向计算过程。不过直接部署在移动终端上还有对 memory 的占用问题,这就是做量化、蒸馏等策略来压缩模型(参数)大小的地方。
ttgo
2022-06-13 19:49:50 +08:00
y=ax+b 没有包含非线性!可能会出现些许误导。
afutureus
2022-06-14 01:39:40 +08:00
概率空间的一个解。
xidianwubo12138
2022-07-15 15:06:23 +08:00
一个大字典
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
2023-11-27 11:47:49 +08:00
数学模型吧,本质上可能是个 N 元 N 次方程组

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/859266

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX