上一节简要学习了什么是神经网络,大体上知道了深度学习的一个框架。这一节继续学习深度学习第二步goodness of function。
Training Data
这个Data不仅仅需要判断的数据,还需要与之对应着的标签(target)。比如给一些图片,并且还给这些图片对应的是什么,有小狗狗还有小猫咪。
Learning Target
训练的目的就是要将输入数据经过某函数得到的输出数据(output)与对应着的标签(target)相比较,差别越小越好,这里的差别也叫损耗,即loss。也就是说找到这个函数使之差别最小。
A good function should make the loss of all examples as small as possible
每一个数据的损耗记为 lr ,那么所有数据的总损耗就为 L=∑Rr=1lr ,所以目的就是find a function in function set —-> find the network parameters θ∗ 来让 L 尽可能的小。
How to pick the best function
找函数其实就是找参数,还记得每个神经元都有自己的参数吗??那整个神经网络的参数就是
Gradient Descent
梯度下降法:
就是一个不断递归求解最优的方法。计算过程就是沿梯度下降的方向求解极小值(也可以沿梯度上升方向求解极大值),而神经网络就是求解极小值。
我们用TensorFlow来训练一下。
我们发现此时的
loss=0
为最小,而且
k
也等于0,所以是训练最优,分类最好。我们也发现这个
那需要计算什么才能求得
loss
最小时的参数呢? 如果求的参数是
w
,那么我们就计算
其实就是不断循环计算
w←w−η∂L/∂w
使得最后的
∂L/∂w
最小,
η
为 learning rate(学习率)。
每一个参数都是如此,那么最后就会列出一个列向量:
这个列向量就是梯度向量。
那么梯度下降可以用如下图描述:
但是,能确保都能有最小值吗?? 因为我们取的初始点可以是不同的,所以也会导致最后的求的最小值不同,也就是说结果不同,我们只能尽量地避免局部最小值,但是不能保证最后求出的一定是最小值。