深度学习笔记总结(1) 神经网络和深度学习(Neural Networks and Deep Learning)

针对深度学习基础部分,有必要恶补一些吴恩达的深度学习课程,其实晚上有很多总结和笔记,本系列文章是针对黄海广大佬整理的《深度学习课程笔记(V5.47)》的总结和自己的理解,以便加深印象和复习。

1 第一周 深度学习引言

1.1 深度学习为什么会兴起

  • 数据规模
    数据规模越来越大,远超过传统机器学习算法的学习能力。
  • 计算量
  • 算法的创新
    发展和提出了多样的神经网络,具有强大的计算机能力


    image
  • 计算机硬件的发展
    比如GPU、TPU的出现

2 第二周 神经网络的编程基础

2.1 逻辑回归

下面是逻辑回归的输出函数:


2.2 损失函数

损失函数又叫做误差函数,用来衡量算法的运行情况,Loss function:𝐿(𝑦 , 𝑦).通过这个𝐿称为的损失函数,来衡量预测输出值和实际值有多接近。
逻辑回归用的损失函数为:


为什么用这个函数作为损失函数?


2.3 梯度下降算法

梯度下降算法就是为了通过 最小化代价函数(成本函数)J(w,b)来更新参数w和b,说白了就是原先的w和b会使函数更大,需要更新一下,使损失变小。



逻辑回归的代价函数(成本函数)𝐽(𝑤, 𝑏)是含有两个参数的:


3 第三周 浅层神经网络

3.1 激活函数

  • sigmoid

sigmoid激活函数曲线像一个字母"S",我们选择它作为激活函数的主要原因是sigmoid的值域为(0,1).因此,它特别适合用于我们必须将概率预测为输出的模型。由于任何事件发生的概率仅存在于0和1的范围之间,因此sigmoid是不错的选择。

softmax函数是一种更通用的逻辑激活函数,用于多类分类。

  • tanh

tanh看起来和sigmoid差不多。tanh 函数是 sigmoid 的向下平移和伸缩后的结果。对它进行了变形后,穿过了 (0,0)点,并且值域介于+1 和-1 之间,函数图像也是S形。

但是tanh效果总是优于 sigmoid 函数。因为函数值域在-1 和+1 的激活函数,其均值是更接近零均值的。在训练一个算法模型时,如果使用 tanh 函数代替 sigmoid 函数中心化数据,使得数据的平均值更接近 0 而不是 0.5.

tanh函数主要用于两类之间的分类任务。

重点:sigmoid 函数和 tanh 函数两者共同的缺点是,在𝑧特别大或者特别小的情况下,导数的 梯度或者函数的斜率会变得特别小,最后就会接近于 0,导致降低梯度下降的速度。

  • relu
    ReLU是目前使用最多的激活函数,它几乎用于所有卷积神经网络或深度学习。
    值域是[0,无穷]
  • leaky relu
    Leaky Relu。 当x是负值时,这个函数的值不是等于 0,而是轻微的倾斜,如图。 这个函数通常比 Relu 激活函数效果要好,尽管在实际中 Leaky ReLu 使用的并不多


  • relu和leaky relu的优点: 第一,在𝑧的区间变动很大的情况下,激活函数的导数或者激活函数的斜率都会远大于0,在程序实现就是一个 if-else 语句,而 sigmoid 函数需要进行浮点四则运算,在实践中, 使用 ReLu 激活函数神经网络通常会比使用 sigmoid 或者 tanh 激活函数学习的更快。第二,sigmoid 和 tanh 函数的导数在正负饱和区的梯度都会接近于 0,这会造成梯度弥散,而 Relu 和 Leaky ReLu 函数大于 0 部分都为常熟,不会产生梯度弥散现象。(同时应该注 意到的是,Relu 进入负半区的时候,梯度为 0,神经元此时不会训练,产生所谓的稀疏性, 而 Leaky ReLu 不会有这问题)

  • 激活函数选择的经验:1 . 如果输出是 0、1 值(二分类问题),则输出层选择 sigmoid 函数,然后其它的所 有单 元都选择 Relu 函数。2. 这是很多激活函数的默认选择,如果在隐藏层上不确定使用哪个激活函数,那么通常会 使用 Relu 激活函数。有时,也会使用 tanh 激活函数,但 Relu 的一个优点是:当𝑧是负值的 时候,导数等于 0。

  • 常见激活函数比较


3.2 为什么要用激活函数

如果你是用线性激活函数或者叫恒等激励函数,那么神经网络只是把输入线性组合再输 出。

如果你使用 线性激活函数或者没有使用一个激活函数,那么无论你的神经网络有多少层一直在做的只是 计算线性函数,所以不如直接去掉全部隐藏层。

4 第四周 深层神经网络

4.1 参数VS超参数

深度神经网络的超参数指:算法中的学习率(learning rate)、iterations(梯度下降法循环的数量)、L(隐藏层数目)、𝑛𝑙、choice of activation function(激活函数的选择)都需要我们自己来设置,这些数字实际上控制了最后的参数𝑊和𝑏的值,所以它们被称作超参数。

推荐阅读更多精彩内容