PyTorch官网demo解读——第一个神经网络(4)

上一篇:PyTorch官网demo解读------第一个神经网络(3)-CSDN博客

上一篇我们聊了手写数字识别神经网络的损失函数和梯度下降算法,这一篇我们来聊聊激活函数。

大佬说激活函数的作用是让神经网络产生非线性,类似人脑神经元一样,人脑神经元对输入的处理是非线性的。这个说法有些抽象,其实回到我们具体的模型中,激活函数的作用是将输出约束在某个预期的范围内,同时让输入到输出符合我们预期的分布。例如sigmod函数将输出约束在0~1之间,同时如果输入在0周围,输出的差异比较大,如果输入偏离0较多,则输出的差异就比较小。

代码解读

python 复制代码
# 激活函数
def log_softmax(x):
    return x - x.exp().sum(-1).log().unsqueeze(-1)

完整代码请参见++第一篇++

demo代码中使用了一个自定义的log_softmax激活函数,其实这并不是一个标准的log_softmax函数,标准的log_softmax函数如下(来自PyTorch官网):

对以上公式进行一波推导得出(参见推导原文):

对比上面的代码发现代码里面的实现是没有减去M的,但这样也是可行的。

替换激活函数

单单看上面代码的激活函数有时候不是很好理解为什么这样做,不要激活函数可以吗?用其它激活函数又如何呢?下面我们就动手来捣鼓一下,看看换几个其它的激活函数会怎样?

首先我们把原来用log_softmax作为激活函数的结果跑出来,方便后面做对比:

接下来我们就来替换几个激活函数看看效果。

1. 替换成softmax函数

代码:

python 复制代码
def softmax(x):
    return x.exp() / x.exp().sum(-1).unsqueeze(-1)

运行结果:

分析:

使用softmax函数训练出来的模型精度略逊于log_softmax,但不会相差太多。为什么呢?可以留言发表看法。

2. 替换成sigmod函数

代码:

python 复制代码
def sigmod(x):
    return 1 / (1 + (-x).exp())

运行结果:

分析:

使用sigmod函数作为激活函数训练出来的模型精度只有0.6094,比使用log_softmax差很多,说明sigmod函数不能作为分类问题模型的激活函数

3. 替换成tanh函数

代码:

python 复制代码
def tanh(x):
    p_exp = x.exp()
    n_exp = (-x).exp()
    return (p_exp - n_exp) / (p_exp + n_exp)

运行结果:

分析:

使用tanh函数作为模型的激活函数,训练出来精度为0.7188,比使用sigmod函数稍微好点,但比log_softmax还是差太多,所以tanh函数同样不适合作为分类问题模型的激活函数

总结

通过替换不同类型的激活函数,我们可以从侧面看出激活函数对于模型的重要性,也引起我们对激活函数的思考,算是抛砖引玉吧。在其它模型中如何选择激活函数呢?让我们共同学习!

如切如磋,如琢如磨!

相关推荐
limengshi1383929 分钟前
机器学习面试:请介绍几种常用的学习率衰减方式
人工智能·学习·机器学习
AKAMAI29 分钟前
Sport Network 凭借 Akamai 实现卓越成就
人工智能·云原生·云计算
周末程序猿1 小时前
机器学习|大模型为什么会出现"幻觉"?
人工智能
JoannaJuanCV1 小时前
大语言模型基石:Transformer
人工智能·语言模型·transformer
飞哥数智坊1 小时前
Qoder vs CodeBuddy,刚起步就收费,值吗?
人工智能·ai编程
强盛小灵通专卖员1 小时前
闪电科创,深度学习辅导
人工智能·sci·小论文·大论文·延毕
通街市密人有1 小时前
IDF: Iterative Dynamic Filtering Networks for Generalizable Image Denoising
人工智能·深度学习·计算机视觉
大千AI助手1 小时前
TruthfulQA:衡量语言模型真实性的基准
人工智能·语言模型·自然语言处理·llm·模型评估·truthfulqa·事实性基准
蚂蚁RichLab前端团队1 小时前
🚀🚀🚀 RichLab - 花呗前端团队招贤纳士 - 【转岗/内推/社招】
前端·javascript·人工智能
智数研析社1 小时前
9120 部 TMDb 高分电影数据集 | 7 列全维度指标 (评分 / 热度 / 剧情)+API 权威源 | 电影趋势分析 / 推荐系统 / NLP 建模用
大数据·人工智能·python·深度学习·数据分析·数据集·数据清洗