IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 神经网络常用激活函数 -> 正文阅读

[人工智能]神经网络常用激活函数

激活函数:只是一个抽象概念,使用激活函数时为了让中间输出多样化,能够处理更复杂的问题。

激活函数给神经元引入了非线性因素,若无激活函数,则每一层最后输出的都是上一层输入的线性函数,不管加多少层神经网络,我们最后的输出也只是最开始输入数据的线性组合而已。当加入多层神经网络时,就可以让神经网络拟合任何线性函数及非线性函数,从而使得神经网络可以适用于更多的非线性问题,而不仅仅是线性问题。

>> 01 sigmoid函数

f(x)=\frac{1}{1+e^{-x}}????????

f^{'}(x)=f(x)(1-f(x))

  • ?sigmoid函数是机器学习中的一个比较常用的函数,用于隐层神经元输出,取值范围为(0,1);
  • 它可以将一个实数映射到(0,1)的区间,用来做二分类,而且是单调递增,比较容易优化;
  • 在特征相差比较复杂或是相差不是特别大时效果比较好;
  • 优点:平滑、易于求导;
  • 缺点:①收敛比较慢,反向传播求误差梯度时,求导涉及除法;②Sigmoid是软饱和,反向传播时,容易产生梯度消失,从而无法完成深层网络的训练;(x趋于无穷大的时候,也会使导数趋于0)Sigmoid函数并不是以(0,0)为中心点;?
from matplotlib import pyplot as plt
import numpy as np
import math

def sigmoid_function(x_list):
    fx = []
    for x in x_list:
        # print(x)
        fx.append(1 / (1 + np.exp(-x)))
    return fx

if __name__ == '__main__':
    x_list = np.arange(-10, 10, 0.01)
    fx = sigmoid_function(x_list)

    ax = plt.gca()                                     # get current axis 获得坐标轴对象
    ax.spines['right'].set_color('none')               # 将右边的两条边颜色设置为空
    ax.spines['top'].set_color('none')                 # 将上边的两条边颜色设置为空
    ax.xaxis.set_ticks_position('bottom')              # 指定下边的边为 x 轴
    ax.yaxis.set_ticks_position('left')                # 指定左边的边为 y 轴
    ax.spines['bottom'].set_position(('data', 0))      # 指定的x轴绑定到0这个点
    ax.spines['left'].set_position(('data', 0))        # 指定的y轴绑定到0这个点
    plt.plot(x_list, fx, label='Sigmoid ', linestyle="-")  # label为标签
    plt.legend(['Sigmoid '])

    plt.title('Sigmoid  Function')
    plt.show()

??>> 02 tanh函数

f(x)=\frac{sinh(x)}{cosh(x)}=\frac{1-e^{-2x}}{1+e^{-2x}}=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}=\frac{e^{2x}-1}{e^{2x}+1}=2sigmoid(2x)-1

f^{'}(x)=tanh{'}(x)=sech^{2}(x)=1-tanh^{2}(x)

  • 优点:①函数输出以(0,0)为中心;②收敛速度相对于Sigmoid更快;
  • 缺点:tanh函数并没有解决sigmoid梯度消失的问题
from matplotlib import pyplot as plt
import numpy as np
import math

def tanh_function(x_list):
    fx = []
    for x in x_list:
        fx.append((np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x)))
    return fx

if __name__ == '__main__':
    x_list = np.arange(-10, 10, 0.01)
    fx = tanh_function(x_list)

    ax = plt.gca()                                     # get current axis 获得坐标轴对象
    ax.spines['right'].set_color('none')               # 将右边的两条边颜色设置为空
    ax.spines['top'].set_color('none')                 # 将上边的两条边颜色设置为空
    ax.xaxis.set_ticks_position('bottom')              # 指定下边的边为 x 轴
    ax.yaxis.set_ticks_position('left')                # 指定左边的边为 y 轴
    ax.spines['bottom'].set_position(('data', 0))      # 指定的x轴绑定到0这个点
    ax.spines['left'].set_position(('data', 0))        # 指定的y轴绑定到0这个点
    plt.plot(x_list, fx, label='Tanh', linestyle="-")  # label为标签
    plt.legend(['Tanh'])

    plt.title('Tanh Function')
    plt.show()

?>> 03 tanh函数

f(x)=max(0, x)=\left\{\begin{matrix} 0 & (x \leqslant 0)& \\ x & (x > 0) & \end{matrix}\right.

  • 优点:①收敛速度快;②有效的缓解了梯度消失问题;③对神经网络可以使用稀疏表达;④对于无监督学习,也能获得很好的效果。
  • 缺点:在训练过程中容易出现神经元失望,之后梯度永远为0的情况。
from matplotlib import pyplot as plt
import numpy as np
import math

def sigmoid_function(x_list):
    fx = []
    for x in x_list:
        fx.append(np.where(x < 0, 0, x))
    return fx

if __name__ == '__main__':
    x_list = np.arange(-10, 10, 0.01)
    fx = sigmoid_function(x_list)
    print(len(fx))
    ax = plt.gca()  # get current axis 获得坐标轴对象
    ax.spines['right'].set_color('none')  # 将右边的两条边颜色设置为空
    ax.spines['top'].set_color('none')  # 将上边的两条边颜色设置为空
    ax.xaxis.set_ticks_position('bottom')  # 指定下边的边为 x 轴
    ax.yaxis.set_ticks_position('left')  # 指定左边的边为 y 轴
    ax.spines['bottom'].set_position(('data', 0))  # 指定的x轴绑定到0这个点
    ax.spines['left'].set_position(('data', 0))  # 指定的y轴绑定到0这个点
    plt.plot(x_list, fx, label='Tanh', linestyle="-")  # label为标签
    plt.legend(['Tanh'])

    plt.title('Tanh Function')
    plt.show()

?

??

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-10-24 14:56:26  更:2021-10-24 14:58:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 8:30:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码