深度学习总结1

序言:当我们面临一个全新的知识的时候,最好学习的办法就是先去了解它的一个大概框架,然后再深抠某个点,在学习的过程中,不断的总结,不断的思考,这样才会有提高,我想这也是为什么写这一系列博客的原因。秋招在即,很多知识点似是知道,却当面试官问起来一知半解。因此,该一系列博客对当前深度学习中比较基础的知识点进行总结,若有错误的地方,恳请大家指正。

  1. 深度学习和机器学习有什么不同
  2. 为什么深层神经网络难以训练
  3. 为什么需要非线性激活函数
  4. 激活函数有哪些性质
  5. 如何选择激活函数
  6. ReLu激活函数的优点
  7. 交叉熵损失函数及其推导

一、深度学习和机器学习有什么不同

1)深度学习与传统机器学习最重要的区别是,随着数据量的增加,其性能也随之提高。当数据很小的时候,深度学习算法并不能很好地执行,这是因为深度学习算法需要大量的数据才能完全理解它。下图便能很好的说明这个事实:在这里插入图片描述
从上图我们可以看到,随着数据量的增大,深度学习的性能会越来越好,而传统机器学习方法性能表现却趋于平缓;但传统的机器学习算法在数据量较小的情况下,比深度学习有着更好的表现。
2)传统的机器学习需要定义一些手工特征,从而有目的的去提取目标信息, 非常依赖任务的特异性以及设计特征的专家经验。而深度学习可以从大数据中先学习简单的特征,并从其逐渐学习到更为复杂抽象的深层特征,不依赖人工的特征工程。

二、为什么深层神经网络难以训练

1)梯度消失:梯度消失是指通过隐藏层从后向前看,梯度会变得越来越小,说明前面层的学习会显著慢于后面层的学习,所以学习会卡住,除非梯度变大。
消失原因:学习率的大小,网络参数的初始化,激活函数的边缘效应等。在深层神经网络中,每一个神经元计算得到的梯度都会传递给前一层,较浅层的神经元接收到的梯度受到之前所有层梯度的影响。如果计算得到的梯度值非常小,随着层数增多,求出的梯度更新信息将会以指数形式衰减,就会发生梯度消失。
2)梯度爆炸:在深度网络或循环神经网络(Recurrent Neural Network, RNN)等网络结构中,梯度可在网络更新的过程中不断累积,变成非常大的梯度,导致网络权重值的大幅更新,使得网络不稳定;在极端情况下,权重值甚至会溢出,变为 Nan值,再也无法更新。
3) 权重矩阵的退化导致模型的有效自由度减少
参数空间中学习的退化速度减慢,导致减少了模型的有效维数,网络的可用自由度对学习中梯度范数的贡献不均衡,随着相乘矩阵的数量(即网络深度)的增加,矩阵的乘积变得越来越退化。在有硬饱和边界的非线性网络中(例如 ReLU 网络),随着深度增加,退化过程会变得越来越快。

三、为什么需要非线性激活函数

1)激活函数可以把当前特征空间通过一定的线性映射转换到另一个空间,学习和模拟其他复杂类型的数据,例如图像、视频、音频、语音等。
2)假若网络中全部是线性部件,那么线性的组合还是线性,与单独一个线性分类器无异。这样就做不到用非线性来逼近任意函数。
3)使用非线性激活函数 ,以便使网络更加强大,增加它的能力,使它可以学习复杂的事物,复杂的表单数据,以及表示输入输出之间非线性的复杂的任意函数映射。使用非线性激活函数,能够从输入输出之间生成非线性映射。

四、激活函数有哪些性质

1)非线性
2)可微性:当优化方法是基于梯度的时候,就体现了该性质;3)单调性:当激活函数是单调的时候,单层网络能够保证是凸函数;
4)f(x)≈x:当激活函数满足这个性质的时候,如果参数的初始化是随机的较小值,那么神经网络的训练将会很高效;如果不满足这个性质,那么就需要详细地去设置初始值;
5)输出值的范围:当激活函数输出值是有限的时候,基于梯度的优化方法会更加稳定,因为特征的表示受有限权值的影响更显著;当激活函数的输出是无限的时候,模型的训练会更加高效,不过在这种情况小,一般需要更小的 Learning Rate。

五、如何选择激活函数

Sigmoid函数
在这里插入图片描述
优点:非线性,输出范围有限,适合作为输出层
缺点:在两边太平滑,学习率太低;值总是正的;输出不是以0为中心。
tanh函数
在这里插入图片描述
解决了sigmoid的大多数缺点,仍然有两边学习率太低的缺点。
ReLU函数
在这里插入图片描述
优点:不会同时激活所有的神经元,这意味着,在一段时间内,只有少量的神经元被激活,神经网络的这种稀疏性使其变得高效且易于计算。
缺点:x<0时,梯度是零。随着训练的进行,可能会出现神经元死亡,权重无法更新的情况。也就是说,ReLU神经元在训练中不可逆地死亡了。
Leaky ReLU函数
在这里插入图片描述
解决了ReLu死神经元的问题
Softmax函数
优点:可以处理多分类问题。softmax函数最好在分类器的输出层使用。
总结
1)如果输出是 0、1 值(二分类问题),则输出层选择 sigmoid 函数,然后其它的所有单元都选择 Relu 函数。
2)如果在隐藏层上不确定使用哪个激活函数,那么通常会使用 Relu 激活函数。有时,也会使用 tanh 激活函数,但 Relu 的一个优点是:当是负值的时候,导数等于 0。
3)sigmoid 激活函数:除了输出层是一个二分类问题基本不会用它。
4)tanh 激活函数:tanh 是非常优秀的,几乎适合所有场合。如果遇到了一些死的神经元,我们可以使用 Leaky ReLU 函数。

六、ReLu激活函数的优点

1)sigmoid 和 tanh 函数的导数在正负饱和区的梯度都会接近于 0,这会造成梯度弥散,而 Relu 和Leaky ReLu 函数大于 0 部分都为常数,不会产生梯度弥散现象。
2)在区间变动很大的情况下,ReLu 激活函数的导数或者激活函数的斜率都会远大于 0,在程序实现就是一个 if-else 语句,而 sigmoid 函数需要进行浮点四则运算,在实践中,使用 ReLu 激活函数神经网络通常会比使用 sigmoid 或者 tanh 激活函数学习的更快。
3)需注意,Relu 进入负半区的时候,梯度为 0,神经元此时不会训练,产生所谓的稀疏性,而 Leaky ReLu 不会产生这个问题
稀疏激活性:从信号方面来看,即神经元同时只对输入信号的少部分选择性响应,大量信号被刻意的屏蔽了,这样可以提高学习的精度,更好更快地提取稀疏特征。当 x<0 时,ReLU 硬饱和,而当 x>0 时,则不存在饱和问题。ReLU 能够在 x>0 时保持梯度不衰减,从而缓解梯度消失问题。

七、交叉熵损失函数及其求导推导

定义:
在这里插入图片描述
1)交叉熵损失函数的数学原理
我们知道,在二分类问题模型中,例如逻辑回归(Logistic Regression)、神经网络(Neural Network)等,真实样本的标签为0和1,分别表示负类和正类。模型的最后通常会经过一个Sigmoid函数,输出一个概率值,这个概率值反映了预测正类的可能性:概率越大,可能性越大。
Sigmoid函数的表达式如下:
在这里插入图片描述
其中S是模型上一层的输出。

当Sigmoid函数的输出表征了当前样本标签为1的概率:
在这里插入图片描述
当前样本标签为0的概率:
在这里插入图片描述
假设我们从极大似然性的角度出发,考虑上面两种情况,则
在这里插入图片描述
可从最简单的方式来理解这个公式,当y=0时,上面式子第一项就为1;当y=1时,上面式子的第二项就是1;重点来了,我们当然希望概率 p(y|x)越大越好。首先,我们对p(y|x) 引入log函数,因为log运算并不会影响函数本身的单调性。
在这里插入图片描述
这里,我们希望log p(y|x) 越大越好,反过来,只要log p(y|x) 的负值-log p(y|x) 越小就行。那么我们就可以引入损失函数,令Loss = log p(y|x) 即可,则可以得到损失函数:
在这里插入图片描述
上面是单个样本的损失函数,如果是计算N个样本的总的损失函数,则:在这里插入图片描述
以上就是交叉熵损失函数的推导过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值