一、代价函数
1. 什么是代价函数
最优解的目的函数,代价函数的作用。
2. 代价函数的原理
例如:
假设一个模型
f
(
x
)
f(x)
f(x)的函数是
y
=
w
∗
x
y=w*x
y=w∗x
该模型要预测出最优的
w
w
w那么 代价函数可写成
e
=
(
1
/
m
)
∗
∑
i
=
1
m
(
x
i
2
w
2
)
−
2
x
i
y
i
w
+
y
i
2
e=(1/m)*\sum_{i=1}^m (x_i^2 w^2)-2 x_i y_i w+y_i^2
e=(1/m)∗∑i=1m(xi2w2)−2xiyiw+yi2
这里的代价函数
w
w
w为自变量
e
e
e表示因变量
{这里的
e
e
e表示均方差} 所以我们要使得我们可以得到最优解就需要让误差最小
既:二次函数的最低点
−
2
a
/
b
-2a/b
−2a/b
以上是个人的笔记,此处更加详尽的笔记请参考: 代价函数.
二、梯度下降
1. 批量梯度下降
一口气计算所有数据与当前模型偏差,根据所得出的均方误差,进行梯度下降。
代码:
for i in range(100): #进行100次梯度下降
k = 2*np.sum(xs**2)*w + np.sum(-2*xs*ys) #一口气计算误差
alpha = 0.1
k = k/100 #均方差
w = w - alpha * k #下降
plt.clf()
plt.scatter(xs,ys)
y_pre = w * xs
plt.plot(xs, y_pre)
plt.pause(0.1)
2. 随机梯度下降
一个点一个点对模型进行下降
代码:
# "随机梯度下降"
for i in range(100):
x = xs[i]
y = ys[i]
k = 2*(x**2)*w + (-2*x*y) #计算单个点的下降幅度
alpha = 0.1
w = w - alpha * k
plt.clf()
plt.scatter(xs,ys)
y_pre = w * xs
plt.plot(xs, y_pre)
plt.pause(0.01)
三、梯度下降为什么梯度
在当模型 y = w x y = wx y=wx时只有w是我们需要拟合的最优解,我们可以近似为斜率。但是当情况变得复杂时 y = w x + b y = wx + b y=wx+b时我们所需要的最优解就变成了两个 w w w 和 b b b,那么最优图像就近似与一个曲面。当维度更高时就不单单是能用斜率来表示,所以采用各个分量的向量和来进行梯度下降。
四、python知识点
list.append()
append() 方法用于在列表末尾添加新的对象。
示例:
list1 = ['Google', 'Runoob', 'Taobao']
list1.append('Baidu')
print ("更新后的列表 : ", list1)
最终展示结果: [‘Google’, ‘Runoob’, ‘Taobao’, ‘Baidu’]
以上是B站ele实验室 上课学习笔记。