文章目录
- 11 为什么引入非线性激励函数?
- 12 请问人工神经网络中为什么ReLu要好过于tanh和sigmoid function?
- 13 为什么LSTM模型中既存在sigmoid又存在tanh两种激活函数,而不是选择统一一种sigmoid或者tanh?这样做的目的是什么?
- 14 如何解决RNN梯度爆炸和弥散的问题?
- 15 什么样的数据集不适合用深度学习?
11 为什么引入非线性激励函数?
深度学习的前提是神经网络的隐层加上了非线性激活函数,提升了模型的非线性表达能力,使得神经网络可以逼近任意复杂的函数。假如有一个100层的全连接神经网络,其隐层的激活函数都是线性的,则从输入层到输出层实际上可以用一层全连接来等价替换,这样就无法实现真正的深度学习。举个简单的例子,线性函数 f(x)=2x+3 对 x 经过三次相同的线性变换等价于对 x 只进行一次线性变换:f(f(f(x)))=2(2(2x+3)+3)+3=8x+21。
12 请问人工神经网络中为什么ReLu要好过于tanh和sigmoid function?
先看sigmoid、tanh和RelU的函数图:
13 为什么LSTM模型中既存在sigmoid又存在tanh两种激活函数,而不是选择统一一种sigmoid或者tanh?这样做的目的是什么?
sigmoid 用在了各种gate上,产生0~1之间的值,这个一般只有sigmoid最直接了,相当于要么是1则记住,要么是0则忘掉。tanh 用在了状态和输出上,是对数据的处理,这个用其他激活函数或许也可以。二者目的不一样另可参见A Critical Review of Recurrent Neural Networks for Sequence Learning的section4.1,说了那两个tanh都可以替换成别的。本题解析来源:为什么LSTM模型中既存在sigmoid又存在tanh两种激活函数?
https://www.zhihu.com/question/46197687
14 如何解决RNN梯度爆炸和弥散的问题?
为了解决梯度爆炸问题,Thomas Mikolov首先提出了一个简单的启发性的解决方案,就是当梯度大于一定阈值的的时候,将它截断为一个较小的数。
具体如算法1所述:
算法:当梯度爆炸时截断梯度(伪代码)
15 什么样的数据集不适合用深度学习?
1、数据集太小,数据样本不足时,深度学习相对其它机器学习算法,没有明显优势。
2、数据集没有局部相关特性,目前深度学习表现比较好的领域主要是图像/语音/自然语言处理等领域,这些领域的一个共性是局部相关性。图像中像素组成物体,语音信号中音位组合成单词,文本数据中单词组合成句子,这些特征元素的组合一旦被打乱,表示的含义同时也被改变。对于没有这样的局部相关性的数据集,不适于使用深度学习算法进行处理。举个例子:预测一个人的健康状况,相关的参数会有年龄、职业、收入、家庭状况等各种元素,将这些元素打乱,并不会影响相关的结果。