莫烦pytorch学习笔记(三)——激励函数(Actibvation Function)

1.非线性方程

我们为什么要使用激励函数?因为激励函数是为了解决我们日程生活中不能用线性方程所概括的问题。

什么是线性方程(linear function)?y随x变化而线性变化的方程叫线性方程。可知,非线性方程是y不随x变化线性变化的方程。

激励函数的作用就是为了让线性方程变成非线性方程,简而言之就是让直线变弯,“掰弯”线性方程。

2.激励函数

y=AF(Wx),其中AF指的就是激励函数,其实,这个激励函数只是另一个非线性的函数,比如relu,sigmoid,tanh。

将这些方程套在原来的结果上,强行把原来的线性结果扭曲了,使得输出的y也有了非线性的特征。

举个栗子,使用了relu函数,如果Wx的值为一,那y=1,如果Wx的值为-1,那y=0,此时不是线性关系。

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

3.常用选择

选择激励函数的窍门:

1.当你的神经网络层只有两三层,对于隐藏层,使用任意的激励函数都可以,不会有很大的影响。

2.当你的神经网络层数较多的时候,使用激励函数不可随意选择,可能会涉及到梯度爆炸,梯度消失的问题。

具体的例子中,首选默认的激励函数:

1.在少量层结构中, 我们可以尝试很多种不同的激励函数。

2.在卷积神经网络 Convolutional neural networks 的卷积层中, 推荐的激励函数是 relu。

3.在循环神经网络中 recurrent neural networks, 推荐的是 tanh 或者是 relu。

注:具体选择,后面写到的时候会回头修改。

猜你喜欢

转载自blog.csdn.net/liuhongkai111/article/details/81301190