损失函数 与 平均方差函数 傻傻分不清
损失函数是概念;平均方差函数是具体的实现
损失函数(如均方误差 MSE)用于衡量模型预测值与真实值之间的差距。损失越小,说明模型对当前数据的拟合越好。
但模型并非拟合度越高越好,假设模型输入它没见过的数据,模型预测的结果跟实际出入很大,不符合要求,这种现象叫过拟合;如果模型对新数据也有很好的预测效果,就是泛化能力强
后续。。。
对于直线模型很简单,但是世界事物的规律是很复杂的不能通过直线模型来表达,更多是弯弯曲曲的曲线,要描述这样曲线 是通过 非线性函数 (激活函数) 嵌套线性函数,一层嵌套还是不能描述出这样复杂曲线,就需要n多层的这样嵌套函数,理论上能造出非常复杂的曲线(很抽象很难理解)
激活函数 :
梯度下降:
w = w - 学习率 × ∂L/∂w
卧槽! 这个公式是什么意思?其实 ∂L/∂w 是梯度,还是不懂,什么是梯度?回到二维平面,这个梯度等同与初中数学的斜率。这里抛物线描述的是直线模型的损失函数在变量w 方向上变化 。机器通过不断调整w值让损失函数最小,什么时候最小? 答:顶点最小,顶点怎么求?有顶点公式,也可以使用 导数 = 0 求出。
但是复杂模型的损失函数不是一条简单的抛物线,于是就有梯度下降算法,本质上是不断猜和试,但是不能盲猜,面多加水,水多加面,水和面不能一下加太多,就使用小勺子(学习率)慢慢调
如下图
当切点在右边是正数,就减去一点点; 当切点在左边是负数数,负负得正加一点点。就这样一点点不断地试,总有w是某个值,让损失函数最小。
而 ∂L/∂w是高纬度的曲面的表面曲线求导,这里方便人的理解,高维我这里通常指3维,4维我们想象不出来!
下图是一座大山,是3维立体的,红线就是曲面上的某条曲线 ,像不像一个个阶梯,∂L/∂w 就好比下山某条曲线的陡峭程度,如果∂L/∂w的绝对值(包含正负数)越大 说明越陡峭!∂L/∂w如果是正数右倾斜,如果是负数表示左倾斜
∂L/∂w 那是多少怎么算? 这里是使用 链式法则(不展开讲,高数不过关,但这不影响我们理解,机器会就行)
总结一下:
W新 = W当前 - 学习率 × ∂L/∂w
这个是公式指导机器如何自己调整W值,当W猜测是3时,预测值与真实值误差大了,∂L/∂w就变大,那我猜测新的W 值,就需要减少一点∂L/∂w。∂L/∂w有时很大,就需要使用学习率进行缩放。回到下山例子就是,人下山既要快,就需要选择最陡峭的路线,但是不安全,就需要使用学习率控制,要快也要安全。
反向传播:在神经网络从后往前,使用损失函数指导修改预测函数参数的过程,就是反向传播