所以免费爱做网站,互联网软件门户网站,免费建立个人视频网站,十堰秦楚网官网以下内容有任何不理解可以翻看我之前的博客哦#xff1a;吴恩达deeplearning.ai专栏 文章目录 引入——改进下需求预测模型ReLU函数(整流线性单元 rectified linear unit#xff09;线性激活函数(linear activation function)激活函数的选择实现方式为什么需要激活函数 到现在…以下内容有任何不理解可以翻看我之前的博客哦吴恩达deeplearning.ai专栏 文章目录 引入——改进下需求预测模型ReLU函数(整流线性单元 rectified linear unit线性激活函数(linear activation function)激活函数的选择实现方式为什么需要激活函数 到现在为止我们一直在隐藏层和输出层使用sigmoid函数作为激活函数之所以我们这样做是因为我们创建了大量逻辑回归单元并且要将它们串联起来。但在很多情况下你使用其它的激活函数会使你的神经网络更加强大。
引入——改进下需求预测模型
让我们先看看之前的博客中见到过的需求预测例子 在之前我们将awareness这个神经元看作是一个逻辑回归即要么意识到要么没有意识到。但在很多情况下awareness的情况并不会这么绝对它们可能有些了解但不多有可能很了解也有可能已经开始病毒化传播了如果此时仍然使用sigmoid函数就会降低神经网络模型的准确性。所以我们不如改变为预测awareness的概率为多大甚至是从0到无穷大的一个值因为要考虑到病毒化传播的几何级增长从而可以更精确地调整模型。 之前我们采用的sigmoid函数的数学公式为 a 2 [ 1 ] g ( w 2 [ 1 ] b 2 [ 1 ] ) g ( z ) 1 1 e − z a_2^{[1]}g(w_2^{[1]}b_2^{[1]})\\ g(z)\frac{1}{1e^{-z}} a2[1]g(w2[1]b2[1])g(z)1e−z1 通过数学上的分析可以知道gz一定是一个01之间的数因此无法满足我们对于改变模型的需求。
ReLU函数(整流线性单元 rectified linear unit
事实上为了满足函数取值为0到无限大我们可以采取非常简单的函数就是relu函数数学公式为: g ( z ) m a x ( 0 , z ) g(z)max(0,z) g(z)max(0,z) 通俗点解释这个函数就是如果z大于0那么就是z本身否则就是0。
线性激活函数(linear activation function)
和ReLU函数类似只是允许了小于零的部分存在在某些地方可能会有人称呼它为没有使用激活函数(no activation function)因为就是它本身和没用一样),数学表达式为 g ( z ) z g(z)z g(z)z 以上三个可以说是迄今为止神经网络最常用的三个激活函数在之后的博客中我们将讨论第四种激活函数Softmax通过这些激活函数你能构建功能强大的神经网络。但是问题来了我们什么时候该使用何种激活函数呢。
激活函数的选择
事实上关于激活函数的选择只要你观察了特征向量X和标签Y那么对于激活函数的选择将会十分地自然。 它主要取决于你输出层的标签。 具体来说如果你正在处理Y为布尔值的问题即二分类问题时通常选择的就是sigmoid函数原理在之前的章节中提到过这也是非常自然的想法。 但如果你正在解决一些回归相关问题那么你可能会选择其它的激活函数例如股票预测就建议使用线性激活函数因为你对于输出值的范围要求在负无穷到正无穷之间。 最后如果y只能取非负值例如房子的价格等总不能倒贴吧就可以使用ReLU作为激活函数。 事实上ReLU是神经网络中迄今为止使用的最广泛的激活函数。尽管我们早期使用了很多的sigmoid函数但现在ReLU的应用比sigmoid多多了除非你要解决的单纯是二分类问题。 这是为什么呢第一ReLU的运算比sigmoid快多了ReLU只需要一步判断便能得出结果但是sigmoid既要求幂又要取反等等。第二个重要原因是ReLU仅仅在图形的一个部分变平而sigmoid有两个部分变平一个函数在很多地方都很平时会导致你在使用梯度下降的速度真的很慢这也很好理解假设你在预测一个二分类问题结果输出的结果为0.8和0.9对于代价函数来说带来的修正都很小而且越靠近正确答案时这个修正越小从而使速度降低了。 在下面这张w,b和成本函数的图中也可以看出图中的很多地方都非常平坦这意味着斜率近乎于0这会阻碍梯度下降。而ReLU函数就没有这个问题。 下面补充下激活函数在代码中的实现方式
实现方式
就是在Dense函数中修改参数
from dense.keras.layers import Dense
model Sequential([Dense(units25, activation relu),#layer1Dense(units15, activation relu),#layer2Dense(units1, activation sigmoid)#layer3])当然在别的情况下也有别的激活函数
Dense(unitsx, activation linear)激活函数的种类还有很多例如tan h函数、LeakyReLU函数、swish函数等这些函数一般使用范围就没那么广可以自己了解。
为什么需要激活函数 还是这个需求预测模型如果我们采用线性激活函数会如何呢事实证明这个神经网络将会变得和线性回归网络没有什么不同所以这会破坏使用神经网络模型的全部目的。因为它将无法拟合比线性回归更加复杂的模型。让我们举个更简单的例子吧 假设一个只有一个隐藏层一个最终输出层且每层只有一个神经元特征向量也仅仅含有一个特征这估计是最最最简单的神经网络了假设所有的激活函数仍然使用线性激活函数那么计算过程如上那么 a [ 2 ] a^{[2]} a[2]就是上图所计算出来的线性函数那么还不如使用线性回归模型呢。 如果你学过线性代数那么你会知道这个结果源于:线性函数的线性组合仍然是线性函数。那么无论如何都无法创造出更加复杂的模型。 所以对于任何一个神经网络而言只使用线性激活函数那么模型的计算结果仍然等同于线性回归的结果。对于大部分神经网络使用ReLU就足够了。 这篇博客把激活函数有关的内容详细介绍了一下下一博客将介绍有关多分类问题的内容。 为了给读者你造成不必要的麻烦博主的所有视频都没开仅粉丝可见如果想要阅读我的其他博客可以点个小小的关注哦。