(吴恩达机器学习)神经网络入门

1:为什么神经网络可以实现复杂的非线性假设函数的计算?
对于一个较为复杂的数学式子的求解过程,我们是分步进行求解的。
例如要求解a*(b+c)的值,我们是先进行b+c的计算,然后在将其结果与a相乘。对于这个式子神经网路的求解过程如下图所示:
(吴恩达机器学习)神经网络入门_第1张图片
第一层是输入层,最后一层是输出层,中间为隐藏层。隐藏层实际上就是一个复杂式子的中间计算过程,除了输入层外,其他的每一个节点表示的就是一个计算过程,计算的具体过程由参数值所决定。所以不论所要求解或者表达的式子多么的复杂,通过增加隐藏层的数目和层中的节点数,一定可以表示出来。

下面是简单的神经网络实现与(AND)、或(OR)和非异或(XNOR)的例子:

与(AND)
(吴恩达机器学习)神经网络入门_第2张图片
或(OR)
(吴恩达机器学习)神经网络入门_第3张图片
非异或(XNOR)
(吴恩达机器学习)神经网络入门_第4张图片

2:神经网络代价函数的理解,2部分的含义?
(吴恩达机器学习)神经网络入门_第5张图片
与逻辑回归代价函数相比,神经网络的代价函数如上图所示。
代价函数的含义是:表示预测值与真实值之间的误差,与样本和假设函数有关。
因此上图代价函数的第一部分是求预测值与真实值之间的平均误差,所以只与样本数目(m)和假设函数数目(k)有关,第二部分是对每个参数进行正则化。

3:结合梯度下降算法的核心思想,阐述正向传播和反向传播的作用?

梯度下降算法的核心思想步骤:
1:通过样例计算出预测值,并计算出代价函数值J.
2:计算出每个参数的偏导数.
3:用计算出的偏导数值更新参数.
4:一直循环执行上述1、2、3步,指导获得(局部)最优解。

正向传播的作用:类似于梯度下降算法的步骤1,计算出预测值以便于计算出当前误差。计算过程如下图所示:
(吴恩达机器学习)神经网络入门_第6张图片

反向传播的作用:类似于梯度下降算法的步骤2,计算出每个节点的误差值,以此计算出每个参数的偏导数值,即梯度下降的方向。
方向传播算法的执行步骤如下图所示:
(吴恩达机器学习)神经网络入门_第7张图片
(吴恩达机器学习)神经网络入门_第8张图片

4:阐述神经网络代价函数在高级优化算法中的应用过程,并进行梯度检测?
(吴恩达机器学习)神经网络入门_第9张图片
高级优化算法的参数theta和initialTheta都是n+1维的列向量,而神经网络中的参数是不同规格的矩阵。要想利用高级优化算法,我们需要将所有的参数矩阵转化为一个列向量才能进行函数调用(使所有参数平等化),算法执行完毕后,再将所得的参数列向量转化为之前的矩阵格式。
两次转换的Octave代码如下:
(吴恩达机器学习)神经网络入门_第10张图片

完整的高级优化算法的调用如下图所示:
(吴恩达机器学习)神经网络入门_第11张图片

4:梯度检测
通过反向传播算法我们可以快速的求出神经网络中各个参数的偏导数值,但是有时求解的结果会有一定的BUG,所以我们要进行梯度检测即偏导数计算结果的检测,用标准的求偏导数的计算过程所得的结果和上述反向传播计算所求得的结果进行对比。

标准的求偏导数的计算过程如下:
(吴恩达机器学习)神经网络入门_第12张图片
Octave实现代码如下:
(吴恩达机器学习)神经网络入门_第13张图片
若两次所求结果”一致”(相差不大),则可以安心使用。注意:梯度检测只需要进行一个即可,不需要每次迭代都是用,否则会非常的耗时。

5:为什么不能使用0来初始化所有的参数值,而要运用随机初始化?
(吴恩达机器学习)神经网络入门_第14张图片
若使用0来初始化所有的参数值,那么每一个节点的计算公式都是一样的,并且通过反向传播算法,求得的偏导数也都一样,所以更新的结果也一样,因此每一个节点的含义都变得一样了,出现了非常高的冗余现象,这样的神经网络基本上不可能使我们获得所需要的结果,所以我们要进行随机初始化函数。随机初始化的方法如下图所示:
(吴恩达机器学习)神经网络入门_第15张图片

6:运用神经网络的一般步骤?

1:选择网络架构,即每一层的节点数及层数。
(吴恩达机器学习)神经网络入门_第16张图片
输入层的节点数由样本的属性个数决定
输出层的节点数由分类的数目决定
隐藏层的节点数目一般大于输入层和输出层的节点数目,层数可以是1或多,若为多层,每层的节点数相同。

2:训练神经网络的具体步骤(6步)。
(吴恩达机器学习)神经网络入门_第17张图片
(吴恩达机器学习)神经网络入门_第18张图片

你可能感兴趣的:(——机器学习——,机器学习)