人工智能面试总结(3)—— 激活函数
该面总结了春招/秋招各厂高频面试八股,除开围绕简历扣项目细节,公司最喜欢问的还是这些经典算法中涉及的知识点。
(3)激活函数
说说激活函数作用?
激活函数是神经网络中的一个关键组件,它将输入信号的加权和进行非线性变换,输出给下一层。激活函数的作用是引入非线性性质,使得神经网络能够拟合更加复杂的非线性模式。激活函数的另一个重要作用是将输出范围限制在一个固定的范围内,避免信号的过度放大或缩小,从而导致梯度消失或爆炸的问题。
说说激活函数为什么需要非线性函数?
神经网络的线性组合不具有拟合非线性函数的能力,因此需要引入非线性激活函数来提高网络的拟合能力。如果使用线性激活函数,多个线性层组合后仍然是一个线性变换,无法拟合复杂的非线性关系。因此,使用非线性激活函数可以使得神经网络具有更强的拟合能力。
说说你知道的激活函数以及各自特点、适用场景?
- Sigmoid函数:将实数映射到(0,1)的区间内,具有平滑性和可导性,在二分类问题中有广泛应用。但是,在输入的绝对值较大或较小时,梯度接近于0,容易导致梯度消失问题,也容易造成输出的饱和现象。
- Tanh函数:将实数映射到(-1,1)的区间内,具有平滑性和可导性,在分类问题中常用作Sigmoid函数的替代品。但是,也存在梯度消失和饱和现象的问题。
- ReLU函数:在输入大于0时,输出等于输入,而在输入小于等于0时,输出为0,具有非线性和可导性,能够有效地缓解梯度消失的问题,并且在训练过程中运算速度较快。但是,在输入为负数时,输出为0,称为“ReLU死亡”,影响了神经元的稳定性。
- Leaky ReLU函数:在ReLU的基础上,将输入为负数时的输出由0改为一个小的斜率,能够有效地解决ReLU死亡的问题,同时也缓解了梯度消失的问题。
- ELU函数:在输入小于等于0时,输出为一个较小的值而不是0,能够有效地避免ReLU死亡的问题,同时还能够缓解梯度消失的问题。
说说ReLU6?
ReLU6是对ReLU的一个改进,将ReLU的上限从0改为了6。这样可以防止ReLU的输出无限增长,避免过拟合的问题。
说说ELU指数线性单元特点?
ELU指数线性单元也是一种激活函数,具有如下特点:
- 可以将输出设置为负值,有利于减少偏差;
- 对于负数的输出有一个较小的斜率,能够更好地抑制“死亡神经元”问题;
- 计算速度比ReLU和Leaky ReLU略慢。
说说Sigmoid的缺点,以及如何解决?
Sigmoid函数存在以下缺点:
- 输出不是以0为中心的,可能导致收敛速度变慢;
- 容易出现梯度消失问题,导致训练过程不稳定;
- 计算代价较高。
为了解决这些问题,可以采用其他激活函数,例如ReLU、Leaky ReLU和ELU等。
说说ReLU在零点可导吗,如何进行反向传播?
ReLU在零点不可导,因为导数在零点处为0。在反向传播时,可以将零点处的导数定义为0或1,两种方式均可。实际上,由于ReLU在实际应用中的效果很好,这种不可导的问题通常不会对模型的性能产生影响。
说说Softmax溢出怎么处理?
当计算Softmax函数的指数函数指数很大时,会出现溢出现象,即计算结果超出计算机可表示的范围。为了避免这种情况的出现,通常采用以下两种方法:
- 对每个数值减去一个常数c,这个常数可以是输入值的最大值,这样能够确保每个数值在负数范围内,避免指数爆炸。
- 使用一种称为"LogSumExp trick"的技巧。该技巧可以通过计算每个输入值与最大值的差的指数和的对数,然后将其与最大值相加得到Softmax函数的值。
说说激活函数有哪些性质?
- 可导性:神经网络中的大多数优化算法都需要激活函数是可导的。
- 单调性:激活函数是单调的,即输入值越大,输出值越大或越小。
- 非线性:激活函数需要是非线性的,因为如果激活函数是线性的,多层神经网络的输出就是输入的线性组合,无法处理非线性模式。
- 输出范围:激活函数的输出范围必须与网络的任务相匹配。
- 平滑性:激活函数的平滑性可以减小噪声对网络的影响。
说说如何选择激活函数?
- 模型的任务类型
- 模型的架构
- 梯度消失问题
- 训练效率
- 可解释性
一般来说,ReLU是一种通用的激活函数,对于多数任务都可以使用。对于回归问题,可以使用tanh或sigmoid函数。对于分类问题,可以使用softmax函数。如果需要解决梯度消失问题,可以使用ELU激活函数。
说说ReLU函数的特点?
- ReLU函数是一种非线性激活函数。
- 在输入大于零时,输出等于输入,否则输出为零。
- ReLU函数可以缓解梯度消失的问题,而且计算速度快。
- ReLU函数不是在整个输入范围内都可导,但在大部分范围内都可导。
- ReLU函数常常在深度学习模型中使用,是一种常见的激活函数。
说说什么时候用线性激活函数?
线性激活函数的输出与输入成正比例关系,通常用于回归问题或输出层中,因为它可以直接输出实数值而不需要进行转换。如果任务需要网络输出和输入的线性相关性,例如预测房价等回归问题,可以使用线性激活函数。
说说怎么理解ReLU负半区间也是非线性激活函数?
ReLU(Rectified Linear Unit)是一种非线性激活函数,它在正半区间是线性函数,在负半区间是零,可以解决梯度消失问题,同时加快训练速度。虽然在负半区间的导数为零,但在实际应用中,这并不会导致网络无法更新。因为只要有一个神经元在负半区间的输出发生变化,它的导数就会变成正数,反向传播时就可以进行梯度更新
说说Softmax函数如何应用于多分类?
Softmax函数是一种常用的激活函数,主要用于多分类问题。它将一个K维的实数向量归一化为一个概率分布,可以将神经网络的输出转化为各个类别的概率分布,从而进行多分类任务。通过 Softmax 函数,网络输出的每个分量都被映射到 的区间内,同时满足所有分量之和为 ,即为一个概率分布。最终,预测的类别是具有最大概率的那个类别。