当前位置: 首页 > news >正文

生命在于学习——Python人工智能原理(3.3)

在这里插入图片描述

三、深度学习

4、激活函数

激活函数的主要作用是对神经元获得的输入进行非线性变换,以此反映神经元的非线性特性。常见的激活函数有线性激活函数、符号激活函数、Sigmod激活函数、双曲正切激活函数、高斯激活函数、ReLU激活函数

(1)线性激活函数

F(x)=kx+c,其中k和c是常量、线性函数常用在线性神经网络中。

(2)符号激活函数

在这里插入图片描述

(3)Sigmod激活函数

Sigmod函数又称为S形函数,是最为常见的激活函数:
在这里插入图片描述其图像如下
在这里插入图片描述

(4)双曲正切激活函数

在这里插入图片描述

图像如下所示:
在这里插入图片描述

(5)高斯激活函数

在这里插入图片描述

(6)ReLU激活函数

在这里插入图片描述

也可以表示为F(x)=max(0,x),图像如下图所示:

在这里插入图片描述
在神经网络中,ReLU激活函数得到广泛应用,尤其在卷积神经网络中,往往不选择Sigmod或Tanh而选择ReLU,原因主要有以下几点:
a、Sigmod函数求导涉及指数,计算复杂,ReLU代价小,计算速度快。
b、Sigmod函数导数最大值为1/4,链式求导会导致梯度越来越小,训练深度神经网络容易导致梯度消失,但是ReLU函数的导数为1,不会出现梯度消失。
c、有研究表明,人脑在工作时大概只有5%的神经元被激活,而Sigmod函数激活比例是50%,人工神经网络理想状态下激活率为15%-30%,ReLU函数在小于0时完全不激活,可以适应理想网络的激活率要求。

5、梯度下降法

梯度下降法是神经网络模型训练中最常用的优化算法之一,将其应用于寻找损失函数或代价函数的极值点。
常见的梯度下降法有批量下降法、随机梯度下降法和小批量梯度下降法,一般采用小批量梯度下降法。

(1)批量梯度下降法

此方法是最原始的形式,它是指在每一次迭代时使用所有样本来进行梯度的更新。
优点:
a、每次更新使用全部样本,能更准确的朝向极值所在的方向,如果目标函数是凸函数,一定能收敛到全局最小值。
b、它对梯度的无偏估计,样例越多,估计越准确。
c、以此迭代时对所有样本进行计算,可以利用向量化操作实现并行。
缺点:
a、遍历计算所有样本不仅耗时还消耗大量资源。
b、每次更新遍历所有样本,有一些样本对参数更新价值不大。
c、如果是非凸函数,可能会陷入局部最小值。
迭代曲线如下:
在这里插入图片描述

(2)随机梯度下降

每次迭代时只使用一个样本对参数进行更新。
优点:
a、每次只计算一个样本,更新速度大大加快。
b、在学习过程中加入了噪声和随机性,提高了泛化误差。
c、对于非凸函数,它的随机性有助于逃离某些不理想的局部最小值,获得全局最优解。
缺点:
a、更新所有样本需要大量时间。
b、学习过程波动较大。
迭代曲线如下:
在这里插入图片描述

6、交叉熵损失函数

神经网络中分类问题较常使用交叉熵作为损失函数,二分类问题中公式如下,y*表示为真实标签,y表示预测标签:
在这里插入图片描述

多分类问题中公式可以写成下面形式:
在这里插入图片描述

二分类的交叉熵python实现如下:
def binary_crossentropy(t,o):
#y_true是真实标签,y_pred是预测值
return -(y_true * np.log(y_pred)+(1-y_true)*np.log(1-y_pred))

相关文章:

  • 解决浏览器缩放的时候,重新设置滚动条的位置,使页面滚动条固定悬浮在页面底部
  • 尝试用 GPT-4o 写 2024高考语文作文
  • Unity射击游戏开发教程:(27)创建带有百分比的状态栏
  • 课设--学生成绩管理系统
  • Echats-wordcloud 文字云图的踩坑点【Unknown series wordCloud】
  • C# —— 字符串拼接
  • DockerCompose+Jenkins+Pipeline流水线打包Vue项目(解压安装配置Node)入门
  • 【线性代数】向量空间,子空间,向量空间的基和维数
  • 在Linux系统中,使用OpenSSL生成CSR(Certificate Signing Request),并同时生成PEM格式的公钥和私钥的命令如下:
  • 机器视觉:光源的类型以及主要参数
  • 设置 OAuth2 访问令牌的签发时间 (issuedAt) 和过期时间 (expiresAt)
  • 前端面试项目细节重难点(已工作|做分享)(九)
  • Eureka到Nacos迁移实战:解决配置冲突与启动异常
  • Superset二次开发之查询GitHub不同版本修改的文件列表 (Python 方案)
  • srchref,fetchajax,cookiesession
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • 2019年如何成为全栈工程师?
  • CSS3 变换
  • Date型的使用
  • Docker入门(二) - Dockerfile
  • JavaScript 基础知识 - 入门篇(一)
  • JavaScript新鲜事·第5期
  • js
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Meteor的表单提交:Form
  • Mybatis初体验
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • v-if和v-for连用出现的问题
  • vue-router 实现分析
  • 百度地图API标注+时间轴组件
  • 汉诺塔算法
  • ------- 计算机网络基础
  • 算法之不定期更新(一)(2018-04-12)
  • 微信小程序开发问题汇总
  • 新手搭建网站的主要流程
  • 学习HTTP相关知识笔记
  • 如何用纯 CSS 创作一个货车 loader
  • ​​​​​​​​​​​​​​Γ函数
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • ‌‌雅诗兰黛、‌‌兰蔻等美妆大品牌的营销策略是什么?
  • #100天计划# 2013年9月29日
  • #Ubuntu(修改root信息)
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (JS基础)String 类型
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (算法设计与分析)第一章算法概述-习题
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (五)网络优化与超参数选择--九五小庞
  • (转)EXC_BREAKPOINT僵尸错误
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .apk 成为历史!
  • .Net - 类的介绍