Study Note for Deep Learning


Catalog
    目录


      引言

      在之前博客中已经较为系统的学习了Andrew Ng的Machine Learning,并且每个章节对应的实验也都做了。 本博客对课程《deep learning coursera》中的五个模块进行学习,同样的相关的笔记以及实验代码也会记录在这里~


      Foundation on Neural Network

      感觉这部分跟之前博客《My study note of ML》重复较多,但是当作重新复习一次了~


      Binary Classification(二分类)与Logistic Regression(逻辑回归)

      分类问题分为二分类和多分类,二分类问题是指输出只有两个类别的问题,多分类问题是指输出有多个类别的问题。

      Image description
      逻辑回归(Logistic Regression)可以理解为在线性回归的基础上加上了一个sigmoid函数,将线性回归的输出值映射到0-1之间,从而实现二分类问题的解决。
      Image description
      进一步地,训练逻辑回归模型的目标是最小化损失函数,进而获取最优的权重w和b,损失函数的定义如下:
      Image description
      而cost function for training the parameter的定义如下:
      Image description
      通过梯度下降法(Gradient Descent)来最小化cost function,从而得到最优的参数w和b。
      Image description
      进一步地,通过下图可视化梯度下降法的过程,可以看到在每一次迭代中,cost function都在减小,最终收敛到最优解。
      Image description


      Computation Graph

      接下来看看前向传播(Forward Propagation)和反向传播(Backward Propagation)的过程,这里引入了计算图(Computation Graph)的概念。 从左到右的计算可以计算出cost function的值,从右到左的计算可以计算出梯度值(导数)。

      Image description Image description Image description
      接下来看看逻辑回归的计算图,同样的,从左到右的计算可以计算出cost function的值,从右到左的计算可以计算出梯度值(导数)。
      Image description


      Vectorization

      通过向量化来简化代码以及提高运算速度。而所谓的向量化其实也就是把权重和输入以矩阵的形式写出,并通过矩阵运算来实现。

      Image description Image description
      而之所以python对于向量化的支持较好,是因为python中的boardcasting机制,可以使得不同维度的矩阵进行运算。 但同时会引入一些难以发现的bug,比如矩阵维度不匹配却不报错。因此首先尽可能的把数据都以矩阵的形式写出,然后再进行运算。
      Image description
      进一步的,也可以通过assert再次检查矩阵的维度是否匹配,从而避免一些潜在的bug。


      基于逻辑回归实现图片分类任务

    • 代码链接

    • 神经网络

      直观来说,可以通过多个sigmoid函数的堆叠实现神经网络,之前也曾尝试过用逻辑回归实现神经网络的代码测试。

      Image description Image description Image description


      activation function

      一般用relu函数或者tanh函数作为激活函数,因为sigmoid函数在深度神经网络中会出现梯度消失的问题。因此一般在二分类的最后一层(输出层)使用sigmoid函数,其他层使用relu或其他激活函数

      Image description Image description


      基于神经网络的梯度下降(backpropagation)

      Image description Image description


      神经网络的初始化

      一般初始化习惯采用很小的值,这主要是对于sigmoid以及tanh函数来说,小的值的时候斜率(梯度)较大。

      Image description


      手写实现神经网络(非调用库函数)

    • 神经网络实现平面数据分类

    • Improving Deep Neural Network


      Structuring Machine Learning Projects


      Convolutional Neural Networks


      Natural Language Processing with sequence models


      参考资料