计算机视觉之人脸学习(二)

1.深度学习中的核心知识

(1)前向运算:给定一个输入,经过网络运算得到最终的输出的过程就是前向运算的过程。能够告诉我们怎么样使用当前的网络结构。

当前的隐藏层节点是由上一层和它相连的节点经过线性运算来得到的。这个线性运算代表了当前层的运算方式,这个运算方式还可以是卷积,池化等等网络运算。每层的隐藏节点运算方式是一样的,区别在于每个节点运算的参数都是不一样的,即它们的加权平均的权值是不同的,所以隐藏层的节点值也会存在差异。

具体的流程:

w,b的取值在反向传播中计算。在网络结构即f函数和w,b已知时,对于给定一个输入,我们就能得到最终的输出,这一过程我们就称为前向运算。 

(2)反向传播:获取网络参数的过程,通过反向传播我们学到参数具体的值,这个过程也是有监督学习的过程,根据我们的样本和标签,利用一些监督学习定义好的网络内部参数。

我们在设计一个神经网络的时候,网络的结构人为的定义好,比如说我们的网络一共有多少个层,每一层应该是什么样类型的层,例如第一层是数据层,第二层是卷积层,第三层是池化层,这个设计的过程称为网络搭建的过程。反向传播就是解决我们网络搭建以后对于其内部参数具体取值,这个过程也称为训练的过程。这个过程我们需要利用有标签的数据,所以神经网络也被称作有监督的算法。

实现:通过计算输出层结果与真实值之间的偏差来进行逐层调节参数,也称为梯度下降算法。神经网络参数训练是一个不断迭代的过程

上面的流程的前提是我们的网络结构是已知的, 不断迭代调节参数最终是预测结果与真实结果的loss达到最小,得到一组最优的解,也就是最好的一组参数组合,是我们神经网络最终用到的参数。

参数更新的过程:参数优化(迭代),通过导数和学习率来完成梯度下降算法。

神经网络只是将我们这里的wx变成更复杂的运算 ,也就是通过前向运算进行形式化,之后我们进行梯度下降法。

(3)梯度下降法

导数:是变化率,是切线的斜率,是瞬时速度,是加速度

方向导数:函数在某点有无数个切线的斜率,每个切线都代表一个变化方向即对应一个方向导数

偏导数:多元函数降维时候的变化,比如二元函数固定y,只让x单独变化,从而看成是关于x的一元函数的变化来研究

梯度:函数在a点无数个变化方向中变化最快的那个方向,找到曲线的最小值,我们只要沿着导数的方向移动。

梯度下降算法:沿着导数下降的方法进行参数更新

选择合适的学习率:如果步长太大,可能错过最优点,表现在我们loss在震荡。在初始时我们尽可能大点,通常为0.01,收敛速度快点,伴随着我们网络迭代的过程,我们逐步的调整学习率的大小。

局部最优解:通过梯度下降法,我们并不能保证我们求解出来的解一定是最优的,最优解出现在导数为0的地方,方法:加入一些随机扰动因子,或者对我们网络的初始化改变等。

一些相关概念:

超参数:需要人为定义的一些参数

机器学习的学习任务分为:无监督学习和有监督学习,以及半监督的学习。

.有监督学习:指我们使用样本进行学习时,全部有样本的标签,标签是通过人工标注得到的。

.无监督学习:指我们使用的样本没有标签

.半监督学习:指我们使用的样本有一部分有标签,一部分没有标签

发布了6 篇原创文章 · 获赞 6 · 访问量 277

猜你喜欢

转载自blog.csdn.net/zjc20172333086/article/details/105656932