这里写自定义目录标题
一题看懂反向传播与梯度下降
接下来一段时间可能会好好看一下机器学习了,加油鸭(ง •_•)ง
从PayPal的一道填空题说起
今天刷牛客,看到了如下一道题:
以神经网络使用了如下结构:输入层有三个节点,隐藏层有一层且有两个节点,输出层有一个节点。隐藏层使用relu作为输出函数,输出层的损失函数为 1 2 ( y − y ^ ) 2 \frac{1}{2}(y-\hat{y})^2 21(y−y^)2,其中 y y y是真实值, y ^ \hat{y} y^是预测值。
输入层到隐藏层的第一个节点中,参数为 [ 1 , 1 , 1 ] [1,1,1] [1,1,1],截距为 0.1 0.1 0.1;到第一个节点中,参数为 [ − 1 , − 1 , − 1 ] [-1,-1,-1] [−1,−1,−1],截距为 0.1 0.1 0.1。
隐藏层到输出层的参数为 [ 1 , 1 ] [1,1] [1,1],截距为 0.1 0.1 0.1。
请问:
- 对于输入 [ 0.3 , 0.2 , 0.4 ] [0.3,0.2,0.4] [0.3,0.2,0.4],其预测结果为 (1) ?
- 在反向传播中,假设学习率为 0.1 0.1 0.1,且真实值为 1.0 1.0 1.0,在该轮BP后,使用梯度下降去更新参数,请问一下参数会被更新为:隐藏层到输出层的参数 [ ( 2 ) , ( 3 ) ] [ (2) , (3) ] [(2),(3)],截距 (4) 。
梯度下降
想象一个被随机放在群山中的登山者,在一个看不见前路的黑夜,在对地形一无所知的情况下,他如何最快速的从所在位置找到其能找到的最低点呢?
答案是,从所在位置朝下降坡度最大的方向迈步,每迈出一步,判断一下当前位置下降坡度最大的方向,并迈出下一步,直至到达不存在下降坡度的地方。
回到当前的问题,这里的山就是损失函数,登山者就是模型中的参数,随机放入山中指的是,参数初始为随机值。
找到最低点就是找到最小的损失函数,而登山者的迈步就是不断修改参数值,对任意参数
w
w
w,
w
n
+
1
=
w
n
−
Δ
w
w^{n+1} =w^n-\Delta w
wn+1=wn−Δw
而寻找最大的下降坡度就是计算函数相对于某个参数的梯度,向梯度下降最为明显的方向移动,以前面含两个参数的损失函数为例,对于第n次计算
w
n
+
1
=
w
n
−
η
∂
L
∂
w
∣
w
=
w
n
w^{n+1} =w^n-\eta\frac{\partial L}{\partial w}|_{w=w^n}
wn+1=wn−η∂w∂L∣w=wn
b
n
+
1
=
b
n
−
η
∂
L
∂
b
∣
b
=
b
n
b^{n+1} =b^n-\eta\frac{\partial L}{\partial b}|_{b=b^n}
bn+1=bn−η∂b∂L∣b=bn
公式中的
η
\eta
η为学习率(learning rate)。