学习笔记——激励函数activation func、损失函数loss func

取各家之长吧,自己码一遍加深印象,参考链接已附上,侵删。

参考:
1.常见的激励函数和损失函数
https://blog.csdn.net/Chile_Wang/article/details/100557019
2.常用激活函数(激励函数)理解与总结
https://blog.csdn.net/tyhj_sf/article/details/79932893
3.【AI实战】快速掌握TensorFlow(四):损失函数
https://my.oschina.net/u/876354/blog/1940819
4.深度学习的激活函数分析—Sigmoid & ReLU & Softmax
https://blog.csdn.net/yituoxiaoge_keliang/article/details/80422642
5.谈谈激活函数以零为中心的问题
https://blog.csdn.net/weixin_30444105/article/details/98423768
6.关于Sigmoid数据输出不是zero-centered的理解
https://blog.csdn.net/weixin_43835911/article/details/89294613

我们在训练模型前,需要设定的几个超参数:

  • 学习率 learning rate
  • 优化器 optimizer
  • 以及防止过拟合的几种工具,如Dropout和正则化L1、L2。
  • 激励函数 activation func
  • 损失函数 loss func

一. 激励函数

1. 什么叫激励函数?
  • 神经元从输入到输出,会经历一个f函数,这个函数就叫做激励函数,本质就是一个非线性函数。
  • 作用:激励函数的作用非常纯粹,就是为了让网络模型非线性,可以几乎逼近任意函数,网络的表达能力更强大。
  • 激励函数的作用:通过激励函数会将数据压缩到一定的范围区间内,得到的数据的大小将决定该神经元是否处于活跃状态,即:是否被激活。

以下两幅图帮助理解:
在这里插入图片描述
在这里插入图片描述

2. 常见的激励函数

  • Sigmoid、tanh、ReLU - 用于隐层神经元输出

  • Softmax- 用于多分类神经网络的输出

  • Linear - 用于回归神经网络的输出(或者二分类的问题)


(1) sigmoid激励函数
在这里插入图片描述
(2) tanh激励函数
在这里插入图片描述

  • sigmoid:每一层输出都在(0,1)之间,经过多层连乘运算后,每层神经元的输出值越来越小, 直至为0,也就是梯度消失。
  • tanh:也存在同样的连乘导致梯度消失的问题。
  • sigmoid和tanh,通常用在层数较少的神经网络中;或者放在回归模型输出层中用作回归激励函数;或者放在分类模型输出层中用作计算概率的激励函数。

(3) Relu激励函数
在这里插入图片描述

  • Relu激励函数,弥补sigmoid和tanh的梯度消失问题,并且比sigmoid和tanh计算速度快。

  • Relu函数有很多变种形式。

  • Relu函数通常放在多层神经网络的中间层。

  • Relu激励函数的优点:
    (1) 相比于Sigmoid,梯度不饱和,因此在反向传播过程中,减轻了梯度弥散(梯度消失)的问题,神经网络前几层的参数也可以很快的更新。
    (2) 计算速度快。Sigmoid和tanh函数需要计算指数,relu只需要设置阈值,判断输入是否大于阈值。
    (3) 网络稀疏性。在一定程度上缓解过拟合问题。

  • Relu缺点:
    (1) non-zero-centered:函数的输出不是以零为中心的。Sigmoid的输出也不是以零为中心的,这会导致网络收敛较慢,如图所示,梯度下降权重更新时出现z字型的下降:
    在这里插入图片描述
    (2) Dead ReLU Problem:也就是某些神经元可能永远不会激活,导致相应的参数永远得不到更新。后来也有一个Relu变种形式试图改善问题,但并没有明显优势。

  • 所以,Relu激励函数仍然是目前的优先选择,80~90%的神经网络会用Relu激励函数。

  • 现在主流做法:多做一步BN(batch normalization),尽可能保证每层网络输入具有相同的分布。

(4) linear激励函数

  • 线性激励函数,不对神经元的输出值进行处理,直接输出。
  • 通常用在回归模型的输出层。

(5) softmax激励函数
在这里插入图片描述

  • softmax层,每个节点输出一个概率,所有节点概率之和等于1。
  • softmax层通常用于分类,给出一副图像,softmax给出每个标签对应的概率。

二. 损失函数

1. 什么叫损失函数
  • 神经网络训练的过程,就是基于梯度下降的方法,不断缩小预测值和真实值之间差值的过程。
  • 这个差值就是损失 loss,计算这个差值的函数就是损失函数loss func。
  • 损失函数和神经网络输出层的激励函数,配套使用。
2. 常见的损失函数

(1) 回归任务

  • 损失函数 loss func:均方误差mse
    在这里插入图片描述
  • 输出层激励函数:linear、sigmoid、tanh
  • 输出层神经元个数:1

(2) 二分类任务

  • 损失函数loss func:二分类交叉熵(binary_crossentropy)

  • 输出层激励函数:softmax

  • 输出层神经元个数:2

  • 损失函数loss func:二分类交叉熵(binary_crossentropy)

  • 输出层激励函数:sigmoid 或者 tanh

  • 输出层神经元个数:1

(3) 多分类任务

  • 损失函数 loss func:多分类交叉熵(categorical_crossentropy)
  • 输出层激励函数:softmax
  • 输出层神经元个数:分类类别个数
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值