神经网络中的激活函数

激活函数是神经网络的重要的组成部分,但是什么是激活函数呢,有什么作用呢?

激活函数的来源

线性函数是很简单的函数,也正是因为它的简单,它不能很好的概括一些复杂的问题,如何才能把线性的函数变成非线性的呢?这时候激活函数出场了,说“我来掰弯你”,复杂问题解决了。

激活函数

在这里插入图片描述
激活函数套在原来的函数上,用力一扭,原来的线性函数被扭弯了。

这个AF(activation function)也不是什么触不可及的东西,它本质就是另外一个非线性函数。比如说relu,sigmoid,tanh等。将这些掰弯利器嵌套在原有的结果之上,活生生把原有的线性结果给扭曲了。是的输出结果y也有了非线性的特征。举个例子,比如使用了relu这个掰弯利器,如果此时线性函数的结果是1,y还是1,不过线性函数为-1的时候,y不再是-1,而会是0。

你甚至可以创造自己的激活函数来处理自己的问题,不过要确保的是这些激活函数必须是可以微分的,因为在backpropagation误差反向传递的时候,只有这些可微分的激活函数才能把误差传递回去。

常用选择

在这里插入图片描述

要恰当使用这些激活函数,还是有窍门的。比如当你的神经网络层只有2-3层,不是很多的时候,对于隐藏层,使用任意的激活函数,随便掰弯是可以的,不会有特别大的影响。不过当你使用特别多层的神经网络,在掰弯的时候,万万不能随意选择利器。因为这会涉及到梯度爆炸,梯度消失的问题。

在具体的例子中,我们默认首选的激活函数是什么。在少量层的结构中,我们可以尝试很多不同的激活函数。在cnn的卷积层中,推荐的激活函数是relu。在rnn中,推荐的是tanh或者是relu。

发布了240 篇原创文章 · 获赞 26 · 访问量 20万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章