《Deep Learnning Tutorial》笔记(二)

来源:互联网 发布:suse linux vsftp 编辑:程序博客网 时间:2024/05/18 01:31

上一节简要学习了什么是神经网络,大体上知道了深度学习的一个框架。这一节继续学习深度学习第二步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

找函数其实就是找参数,还记得每个神经元都有自己的参数吗??那整个神经网络的参数就是 θ = {w1,w2,...,b1,b2,...}, 找到这些参数就能知道对应的函数是什么了。找参数,一个个暴力地试??不现实!!接下来介绍一个方法来确定参数——Gradient Descent

Gradient Descent

梯度下降法:
就是一个不断递归求解最优的方法。计算过程就是沿梯度下降的方向求解极小值(也可以沿梯度上升方向求解极大值),而神经网络就是求解极小值。
我们用TensorFlow来训练一下。
这里写图片描述
我们发现此时的 loss=0 为最小,而且 k 也等于0,所以是训练最优,分类最好。我们也发现这个 k 是不断下降的过程,这是最理想的。

那需要计算什么才能求得 loss 最小时的参数呢? 如果求的参数是 w,那么我们就计算 L/w,如果是负值,则增加 w,相反是正直,则减少 w,直至越来越小。
这里写图片描述

其实就是不断循环计算 wwηL/w 使得最后的 L/w 最小,ηlearning rate(学习率)。
每一个参数都是如此,那么最后就会列出一个列向量:

L/w1L/w2...L/b1...

这个列向量就是梯度向量

那么梯度下降可以用如下图描述:
这里写图片描述

但是,能确保都能有最小值吗?? 因为我们取的初始点可以是不同的,所以也会导致最后的求的最小值不同,也就是说结果不同,我们只能尽量地避免局部最小值,但是不能保证最后求出的一定是最小值。