已知:(X,Y)=(X,f(x))对应的数据(1,1),(2,1.8),(3,3.2),(4,3.8),(5,5.25),找到这些点拟合出的函数?
假设: 的函数最简单的形式为 h ( x ) = θ x h(x)=\theta x h(x)=θx 目标: min θ L ( θ ) = 1 2 N ∑ i ( h ( x i ) − f ( x i ) ) 2 \min_{ \theta} L(\theta)=\frac{1}{2N} \sum_{i} \left( h(x_i)-f(x_i) \right) ^2 θminL(θ)=2N1i∑(h(xi)−f(xi))2
开始:
STEP1: 开始我们随意假设 θ = 0.5 \theta =0.5 θ=0.5
STEP2: 计算损失值。得出损失值为3.202(损失太大, θ \theta θ不合理) L ( 0.5 ) = 1 2 ∗ 5 [ ( 1 − 0.5 ∗ 1 ) 2 + ( 1.8 − 2 ∗ 0.5 ) 2 + ( 3.2 − 3 ∗ 0.5 ) 2 + ( 3.8 − 4 ∗ 0.5 ) 2 + ( 5.25 − 5 ∗ 0.5 ) 2 ] = 3.202 L(0.5)=\frac{1}{2*5} [(1-0.5*1)^2+(1.8-2*0.5)^2+ (3.2-3*0.5)^2+\\(3.8-4*0.5)^2+(5.25-5*0.5)^2] \\= 3.202 L(0.5)=2∗51[(1−0.5∗1)2+(1.8−2∗0.5)2+(3.2−3∗0.5)2+(3.8−4∗0.5)2+(5.25−5∗0.5)2]=3.202
STEP3: 更新优化 θ \theta θ,更新方法为 θ < = θ − α ∂ L ( θ ) ∂ θ \theta <= \theta-\alpha\frac{\partial L(\theta)}{\partial \theta} θ<=θ−α∂θ∂L(θ),其中 α \alpha α为学习率在(0,1)范围内,假设 α = 0.05 \alpha=0.05 α=0.05(在实际的应用中 α \alpha α是需要设定的) 因此, θ = 0.5 − 0.05 ∗ 1 5 [ ( 0.5 ∗ 1 − 1 ) ∗ 1 + ( 0.5 ∗ 2 − 1.8 ) ∗ 2 + ( 0.5 ∗ 3 − 3.2 ) ∗ 3 + ( 0.5 ∗ 4 − 3.8 ) ∗ 4 + ( 0.5 ∗ 5 − 5.25 ) ∗ 5 ] = 0.5 − ( 0.05 ∗ ( − 39.4 5 ) ) = 0.894 \theta=0.5-0.05*\frac{1}{5}[(0.5*1-1)*1+(0.5*2-1.8)*2+(0.5*3-3.2)*3+\\(0.5*4-3.8)*4+(0.5*5-5.25)*5] \\=0.5-(0.05*(-\frac{39.4}{5}))=0.894 θ=0.5−0.05∗51[(0.5∗1−1)∗1+(0.5∗2−1.8)∗2+(0.5∗3−3.2)∗3+(0.5∗4−3.8)∗4+(0.5∗5−5.25)∗5]=0.5−(0.05∗(−539.4))=0.894
STEP4: 按照STEP2计算损失值。得出损失值为0.093828(损失已经很小了, θ \theta θ还可以继续优化下去) L ( 0.894 ) = 1 2 ∗ 5 [ ( 1 − 0.894 ∗ 1 ) 2 + ( 1.8 − 2 ∗ 0.894 ) 2 + ( 3.2 − 3 ∗ 0.894 ) 2 + ( 3.8 − 4 ∗ 0.894 ) 2 + ( 5.25 − 5 ∗ 0.894 ) 2 ] = 1 10 [ 0.10 6 2 + 0.01 2 2 + 0.51 8 2 + 0.22 4 2 + 0.7 8 2 ] = 0.093828 L(0.894)=\frac{1}{2*5} [(1-0.894*1)^2+(1.8-2*0.894)^2+ (3.2-3*0.894)^2+\\(3.8-4*0.894)^2+(5.25-5*0.894)^2] \\= \frac{1}{10}[0.106^2+0.012^2+0.518^2+0.224^2+0.78^2]=0.093828 L(0.894)=2∗51[(1−0.894∗1)2+(1.8−2∗0.894)2+(3.2−3∗0.894)2+(3.8−4∗0.894)2+(5.25−5∗0.894)2]=101[0.1062+0.0122+0.5182+0.2242+0.782]=0.093828
STEP5: 按照上述步骤继续优化 θ \theta θ,最终我们可以得出很好的函数来逼近已知数据。
可以看出,上面的例子中 θ \theta θ的初始值以及学习率 α \alpha α是关键。 其实, θ \theta θ的初始值设置不是问题。就目标函数而言,这里 min θ L ( θ ) = 1 2 N ∑ i ( h ( x i ) − f ( x i ) ) 2 = 1 2 N ∑ i ( θ x i − f ( x i ) ) 2 \min_{ \theta} L(\theta)=\frac{1}{2N} \sum_{i} \left( h(x_i)-f(x_i) \right) ^2\\=\frac{1}{2N} \sum_{i} \left( \theta x_i-f(x_i) \right) ^2 θminL(θ)=2N1i∑(h(xi)−f(xi))2=2N1i∑(θxi−f(xi))2 损失函数是关于 θ \theta θ的二次函数,二次函数求最小值,令其导数=0(基础,对于连续函数,导数=0处的点为驻点,驻点是可能的极值点,也有可能是鞍点)。其实, θ \theta θ的初始选择不是问题,无非就是选的距离最优点近一些就快一些,否则就会慢一些。解释如下图:
然而, α \alpha α学习率的选择将是一个影响沿着梯度下降方向迈出多大步子的问题,步子迈大了,可能会迈过最优点,步子迈小了,需要多轮iteration,耗时一些。
上面说的是最简单的一个参数问题,多个参数比较复杂,原理是一样,给定初始参数值,按照梯度下降更新梯度,需要说明,每次求最优,是需要各个参数求偏导数同时满足=0,并按照各自的梯度同时更新各自的参数。