1
MengQuadra 2022-01-25 09:34:50 +08:00
个人愚见:
1. 梯度下降是因为在参数贼多函数复杂程度爆炸的时候,求全局最优解的代价无法接受。引入梯度使得在高维空间搜索近似解存在可行性。入门自然是从简单的开始。比起不收敛,高质量与可靠的训练数据来源是个更困难的前提。 2. 大部分的数据质量都摸不到网络的瓶颈,管他局部还是全局,好用就是好结果(暴论 |
2
BruceYuan 2022-01-25 09:44:10 +08:00
我的理解:
1. 假如数据量多的话,等同于最小二乘法求极值,需要计算超大规模矩阵逆,计算量远大于梯度下降; 2. 你定义的代价函数一般都是很简单的函数,你可以直接计算它的二阶导,以 MAE 为例,二阶导就是 > 0, 因为设计损失函数的时候就会让它一阶导为 0 的时候是最大值或者最小值。 |
3
tfdetang 2022-01-25 10:25:20 +08:00
我的理解:
多元微积分课程中是已经有了一个 已知函数 f(x*) 来求极值, 当然这个问题很复杂,不过这个问题并不是机器学习所解决的问题。 机器学习的目的是,我并不知道 f(x*)长什么样,更不要说有多少极值点和鞍点了;而是通过 x-> f(x*) -> y 的先验知识去模拟出一个 x->^f(x*)->^y 尽可能的与原函数相似。 所以损失函数衡量的也是 y 与 ^y 的差距,并不是直接去衡量 f(x*)的极值点 |
4
huzhikuizainali OP @BruceYuan 1. 假如数据量多的话,等同于最小二乘法求极值,需要计算超大规模矩阵逆,计算量远大于梯度下降;---------------如果不用线性代数的方式求极值呢?用微积分的。当然我也不确定用微积分求二次多元函数的偏导数计算量集亍比线性代数方式计算量小。
应用梯度下降法真的是因为计算量的原因么? |
5
huzhikuizainali OP @tfdetang 你说的 f(x*)是目标函数?还是代价函数?
|
6
BruceYuan 2022-01-26 09:41:01 +08:00
@huzhikuizainali 你说的微积分求极值,应该要知道 目标函数 是什么?
1. 你不知道 f(*) 是什么? 2. 对于复杂的 f(*) ,存在多个极值;如果是 微积分(多元得算偏导) f'(*) = 0 , 只能判断某个 定义域下面的极值点?而且还得保证这个函数是 连续可导的。 如果使用 梯度下降(一般是变种,比如 sgd 、adam 之类的)则可以缓解 2 中的问题 (因为这本身就是一种用来求极值的方法) |
7
huzhikuizainali OP @BruceYuan 我知道 2 ,但是不知道 1
其次,梯度下降法只能缓解 2 。也就是说具体问题具体分析。有时候看运气。也许求得的知识局部极值。对么? |