deeplearning课程学习报告(2)

    这个星期把neural networks&deep learning这一课程内容全部结束了,并完成了Convolutional Neural Networks课程之前剩下的一部分编程习题内容。预计下一周将Convolutional Neural Networks课程全部结束。正好上一次因为没有全部收尾,没有作第一课程的总结,现在就将neural networks&deep learning课程自我总结一下,至于Convolutional Neural Networks课程的部分下周再一起做总结吧。

    课程第一周主要是关于概论的问题,这里直接略过。。。


    课程第二周:神经网络基础。主要是关于逻辑回归问题相关内容。

  • 训练样本 deeplearning课程学习报告(2)。其中deeplearning课程学习报告(2)deeplearning课程学习报告(2)

deeplearning课程学习报告(2)为单个样本维度,m为样本容量。

  • 逻辑回归中预测值deeplearning课程学习报告(2)表示为1的概率,取值范围在 deeplearning课程学习报告(2) 之间。因此引入Sigmoid函数deeplearning课程学习报告(2)。其中deeplearning课程学习报告(2)。而Sigmoid函数的导数也可以用自身来表示deeplearning课程学习报告(2)
  • 对于逻辑回归的损失函数采用deeplearning课程学习报告(2),而不采用deeplearning课程学习报告(2)的原因是后者可能是非凸函数,会得到局部最优解而不是全局最优解。至于损失函数的由来如下:

    deeplearning课程学习报告(2) 可以看作预测输出为正类(+1)的概率:

    deeplearning课程学习报告(2)

    当 deeplearning课程学习报告(2) 时, deeplearning课程学习报告(2) ;当 deeplearning课程学习报告(2) 时, deeplearning课程学习报告(2) 。

    将两种情况整合到一个式子中,可得:

    deeplearning课程学习报告(2)

    对上式进行log处理(这里是因为log函数是单调函数,不会改变原函数的单调性):

    deeplearning课程学习报告(2)

    概率 deeplearning课程学习报告(2) 越大越好,即判断正确的概率越大越好。这里对上式加上负号,则转化成了单个样本的Loss function,我们期望其值越小越好,所以:

    deeplearning课程学习报告(2)


  • 梯度下降法用来最小化Cost function,以计算出合适的w和b的值。

    每次迭代更新的修正表达式:

    deeplearning课程学习报告(2)

    deeplearning课程学习报告(2)

    在程序代deeplearning课程学习报告(2)码中,通常使用dw来表示 deeplearning课程学习报告(2) ,用db来表示 deeplearning课程学习报告(2) 。


  • 对单个样本而言,逻辑回归Loss function表达式:

deeplearning课程学习报告(2)

deeplearning课程学习报告(2)

deeplearning课程学习报告(2)

与之对应的关于da、dz的求导:

deeplearning课程学习报告(2)

deeplearning课程学习报告(2)

再对 deeplearning课程学习报告(2) 和b进行求导:

deeplearning课程学习报告(2)

deeplearning课程学习报告(2)

梯度下降法:

deeplearning课程学习报告(2)

deeplearning课程学习报告(2)

deeplearning课程学习报告(2)

对于m个样本求和取均值即可。


课程第三周:浅层神经网络。

  • 示意图如下:
deeplearning课程学习报告(2)
每个节点对应z运算和a运算。对于a运算**函数在不同的层可能会有不同的选择。课程中给出了四种运算如下:

deeplearning课程学习报告(2)


在隐藏层中,tanh函数的表现要好于sigmoid函数,因为tanh取值范围为 deeplearning课程学习报告(2) ,输出分布在0值的附近,均值为0,从隐藏层到输出层数据起到了归一化(均值为0)的效果。
  • 在输出层上,对于二分类任务的输出取值为 deeplearning课程学习报告(2) ,故一般会选择sigmoid函数。
  • 然而sigmoid和tanh函数在当 deeplearning课程学习报告(2) 很大的时候,梯度会很小,在依据梯度的算法中,更新在后期会变得很慢。在实际应用中,要使 deeplearning课程学习报告(2) 尽可能的落在0值附近。初始化时b一般设置为0,W权重矩阵一般取随机值并乘以0.01以使结果在0附近:
  • deeplearning课程学习报告(2)
  • ReLU弥补了前两者的缺陷,当 deeplearning课程学习报告(2) 时,梯度始终为1,从而提高神经网络基于梯度算法的运算速度。然而当 deeplearning课程学习报告(2) 时,梯度一直为0,但是实际的运用中,该缺陷的影响不是很大。Leaky ReLU保证在 deeplearning课程学习报告(2) 的时候,梯度仍然不为0。在选择**函数的时候,如果在不知道该选什么的时候就选择ReLU,当然也没有固定答案,要依据实际问题在交叉验证集合中进行验证分析。

  • 梯度下降公式如下图:


deeplearning课程学习报告(2)

参数说明如下:

deeplearning课程学习报告(2)


课程第四周:深层神经网络。实际上相当于浅层神经网络的推广,相对于浅层(1 hidden layer)多了隐藏层数目。

  • 深层神经网络示意图如下(作业中采用了隐藏层**函数为RELU的L层网络):

deeplearning课程学习报告(2)

作业中给出一个取X.shape=(12288,209)作为例子,各参数如下:

deeplearning课程学习报告(2)

前向传播:deeplearning课程学习报告(2)对于L层用循环(L-1)次实现

后向传播公式如下:

deeplearning课程学习报告(2)

梯度更新:

deeplearning课程学习报告(2)


  • 建立深层神经网络步骤大致如下:
1.初始化参数。包括超参数的选择,W,b的初始化等。
2.前向传播。即z运算和a运算并保存每一层信息。
3.误差计算。
4.后向传播。计算并返回dW,db,dA。
5.更新参数。完成对每一层W,b的更新。

2-5步迭代多次完成参数的学习。




以上部分笔记转载自https://zhuanlan.zhihu.com/p/35333489