激活函数、条件熵和最大熵在机器学习的应用

文章目录

  • 摘要
  • Abstract
  • sigmoid 和 softmax
    • sigmoid和softmax的关系
  • 条件熵
  • 最大熵
  • 总结

摘要

本周学习内容探讨了神经网络中激活函数的选择及其对梯度消失问题的影响。通过使用 ReLU 函数替代 Sigmoid 函数来改善梯度消失问题的优化方法,同时分析了 Sigmoid、Softmax 激活函数在不同分类场景中的适用性。了解了条件熵和最大熵的定义,及其在概率分布建模中的重要性,结合特征函数与傅里叶变换揭示了最大熵原理如何支持概率分布估计。同时,最大熵、极大似然估计与交叉熵三者在神经网络模型中均可用于参数调整。

Abstract

This week’s learning explores the selection of activation functions in neural networks and their impact on the gradient disappearance problem. By using ReLU function instead of Sigmoid function to improve the optimization method of gradient disappearance problem, the applicability of Sigmoid and Softmax activation function in different classification scenarios is analyzed. We understand the definition of conditional entropy and maximum entropy and their importance in probability distribution modeling. Combining characteristic function and Fourier transform, we reveal how maximum entropy principle supports probability distribution estimation. At the same time, maximum entropy, maximum likelihood estimation and cross entropy can be used for parameter adjustment in the neural network model.

sigmoid 和 softmax

对于上周学习的梯度下降法,有一个很大的缺点是计算量非常的庞大。下面进一步优化和改进梯度下降法,其中一个方法就是把隐藏层的感知机的激活函数换掉,从原来的sigmoid换成ReLu函数。
对于sigmoid函数的图像如下:
在这里插入图片描述
在上面的绿色框框中的梯度变化非常小,然后再通过反向传播,传播到前面几层会造成梯度消失问题,但对于ReLu激活函数就不会出现此类问题,其ReLu的激活函数如下图:
在这里插入图片描述
对于小于0部分,是一条直线其梯度不变,能避免梯度消失的问题,但对于ReLu函数其最大值可以无穷大,但在训练神经网络的损失函数时,使用最大似然估计或者交叉熵都是使用到的概率,在0~1之间。因此,有一种解决方案就是,前面使用ReLu激活函数,后面最后一层使用sigmoid函数。但是对于多分类问题,其sigmoid函数就不再适用了,因为sigmoid函数只能解决一种分类问题,因此需要引入softmax函数。但使用哪个函数具体问题也需要具体分析。
当一个网络只有一个感知机的时候如下图
在这里插入图片描述
当网络有多个感知机时对应如下图
在这里插入图片描述
y中的每一列代表人工标记的一个标签,如,猫、狗…其中,ai是概率,必然大于等于0,同时无论结果分类是否正确,其必然都有一个确定的分类。
其中ai是通过z计算得到的,同时保证满足上述条件,为使投射结果为0~正无穷大,使用对数的方式以及归一化对激活函数进行处理。
在这里插入图片描述
上图中,归一化的过程也就是求softmax的过程。
在这里插入图片描述
回顾交叉熵并重新定义损失函数
在这里插入图片描述

sigmoid和softmax的关系

在这里插入图片描述
通过上图公式可以看出,sigmoid是只有一种分类情况下的softmax.
思考:上面sigmoid函数中有t1和t2两个参数(p1和p2两个概率),如果是针对两个感知机的情况应该如何处理呢?
在这里插入图片描述
上图左边是针对一个感知机的情况(在计算概率的时候,只有当t1发生改变时p1和p2才发生改变),其损失函数可以理解为是猫的标签和不是猫的标签的交叉熵求和。右图是针对两个感知机的情况(在右图中,t1和t2对概率都有影响),其损失函数可以理解为是猫的标签和是狗的标签的交叉熵求和。

条件熵

假设有如下两个事件
在这里插入图片描述
求系统的熵必须把单一的熵都考虑进来,实质也就是求期望的过程,最后可以得到条件熵的公式如下:
H ( Y ∣ X ) = − ∑ x , y P ( x ) P ( y ∣ x ) l o g P ( y ∣ x ) = E ( H ( Y ∣ X = x ( k ) ) ) ( 1 ) \begin{aligned} &H(Y|X) =-\sum_{x,y}P(x)P(y|x)logP(y|x) =E\left(H\left(Y|X=x^{(k)}\right)\right)\end{aligned} (1) H(YX)=x,yP(x)P(yx)logP(yx)=E(H(YX=x(k)))1

最大熵

当分布式均匀分布时(等概分布),其熵最大,也就是不确定也越大。
运用正态分布的例子(只需要确定期望和方差就可以描述要一个正态分布),希望能通过一写参数来确定任何一个概率分布描述出来。
在这里插入图片描述
对于上述公式描述一个正态分布只有要知道一阶矩和二阶矩,通过这个思路可以得出任何一个分布都可以通过来表现阶矩向量
为说明上述思路的正确性,数学家们定义了一个特征函数(任何一个概率分布都可以通过一个特征函数对应起来)
在这里插入图片描述
对密度函数f(x)求傅里叶变换
在这里插入图片描述
傅里叶变换的结果函数和特征函数共轭关系,也再次说明了可以找到一种方法,将一个概率分布和特征函数能做一一对应。
我们的目标是在未知概率分布的具体函数表达式,只知道一些样本数据时,还想让两个概率分布一样,应该怎么解决这个问题。
现在找到了一种思路
在这里插入图片描述
只需要P和Q的期望相同,也就表明了两个概率分布是相同的。
对于结构性数据而言,我们可以通过经验概率来描述一个分布:
在这里插入图片描述
在神经网络中,我们可以参照上述的计算
在这里插入图片描述
上述的目标就是求在已知特征序列属于哪类类别的概率
通过贝叶斯公式可以去近似p(y|x)
在这里插入图片描述
对于怎么去近似分布问题:假设有如下事件
在这里插入图片描述

对于一个事件的二项伯努利分布其求期望在给定特征函数X也就是求概率。扩张到多个事件m个,同样也设置同样的“特征函数”,求正态分布的概率分布中求一阶矩二阶矩三阶矩的过程可以简化成只用求一阶矩。

在这里插入图片描述

上述Xm设置的好处就是把原来很多维空间情况最后都投射到一维上。
我们的目标还是求P(y|x)的最大值,也就是保证H(Y|X)最大。
在这里插入图片描述
保证经验概率 P ~ \tilde{P} P~和目标的概率P是相等的,同时还要满足对于所有分类结果的求和条件概率值为1.
上述求解需要用到拉格朗日乘数法求解。
在这里插入图片描述
对p,和 λ \lambda λ分别求偏导为0,可以得到以下结果:
在这里插入图片描述
为使上述公式更加具象化,假设x是输入的一张图片

在这里插入图片描述
上面的推理过程也印证了求最大熵和softmax的关系,e的引入是通过求熵逆的过程。

在以往的过程中,我们在确定参数一般都是用极大似然估计的方法或者交叉熵的方法。通过上面的学习,现在得到了一种新的方法,即使用最大熵的方法。它们的关系如何?
在这里插入图片描述
上图表明了机器学习的过程,在人脑模型中,通过人为寻找特征构建特征函数,使用拉格朗日乘数法来求解条件概率,然而在神经网络中隐藏层可以自动寻找特征(学习的过程),而输出层则使用最大熵原则来确定p(y|x).
在调整参数,有三种等价的方法:极大似然估计、交叉熵、最大熵。

总结

本周分析了不同激活函数对网络学习效果的影响,通过 ReLU 函数解决梯度消失的问题,并结合 Sigmoid 和 Softmax 函数,讨论了激活函数的选取对模型训练的影响。在分类问题中,ReLU 激活函数在前几层使用,而最后一层则使用 Sigmoid 或 Softmax 以适应不同类别数量的要求。为了进一步提升模型的稳定性与有效性,文中引入条件熵、最大熵等理论,并从数学角度解释了熵在描述分布均匀性中的作用。最大熵原理在未知概率分布的情况下,通过匹配一阶和二阶矩来估计概率分布,确保不确定性最大,从而获得较优模型。最终,结合拉格朗日乘数法推导出最大熵与 Softmax 激活函数的关系,进一步指出最大熵原理在神经网络中的广泛应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/878.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【MySql】-0.1、Unbunt20.04二进制方式安装Mysql5.7和8.0

1、下载Mysql二进制报(选择Linux的通用版本) mysql官网地址:https://downloads.mysql.com/archives/community/ wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.26-linux-glibc2.12-x86_64.tar wget https://downloads.…

全渠道供应链打造中企业定制开发2+1链动模式S2B2C商城小程序的策略与影响

摘要:本文探讨了全渠道供应链打造对于零售企业的重要性及面临的挑战,着重分析了物流环节整合的难点,并以家电行业为例说明了节假日期间物流对企业经营的影响。同时,引入“企业定制开发21链动模式S2B2C商城小程序”这一关键因素&am…

【Python+Pycharm】2024-Python安装配置教程

【PythonPycharm】2024-Python安装配置教程 一、下载装 Python 1、进入Python官网首页,下载最新的Python版本 Download Python | Python.org 选择对应版本下载 安装 测试安装情况 python如果安装失败 在系统环境变量添加安装路径 where pythonwin7安装路径添加…

C++开发者必看:用Flow-IPC改善进程间通信

进程间通信(IPC)对于现代计算环境至关重要,这种机制使得多个处理器核心能够同时执行多个线程。IPC的本意是让不同线程甚至独立程序能够高效地共享数据。例如,当我们在线观看流媒体视频时,可能会有一个线程负责视频解码…

JAVA 插入 JSON 对象到 PostgreSQL

博主主页:【南鸢1.0】 本文专栏:JAVA 目录 ​编辑 简介 所用: 1、 确保 PostgreSQL 数据库支持 JSON: 2、添加 PostgreSQL JDBC 驱动 3、安装和运行 PostgreSQL 4、建立数据库的连接 简介 在现代软件开发中,由于 JSON 数据…

闪存学习_1:Flash-Aware Computing from Jihong Kim

闪存学习_1:Flash-Aware Computing from Jihong Kim 前言一、Storage Media:NAND Flash Memory1、概念2、编程和擦除操作3、读操作4、异地更新操作(Out-Place Update)5、数据可靠性6、闪存控制器(SSD主控)7…

C++STL-deque、stack、queue、priority_queue

C教学总目录 deque、stack、queue、priority_queue 1、deque2、stack使用介绍3、stack实现4、queue使用介绍5、queue实现6、priority_queue使用介绍7、priority_queue实现8、反向迭代器 1、deque deque是双端队列,我们学习的队列是先进先出的(First in first out)&a…

汽车虚拟仿真软件有哪些?行业软件大盘点!

汽车虚拟仿真是指利用计算机技术,根据汽车的设计、制造、测试、运行等各个环节的需求,建立汽车的数学模型和物理模型,通过软件平台进行可视化、动态化、交互式的模拟和分析,从而实现对汽车性能、功能、品质等方面的预测和评估。汽…

【合肥工业大学】操作系统 习题解析 作业答案(仅作学习与交流/侵删)

第一章习题解析 1.设计现代OS的主要目标是什么? 答:(1)有效性 ( 2)方便性 ( 3)可扩充性 ( 4)开放性 2. OS 的作用可表现在哪几个方…

【C++动态规划】2435. 矩阵中和能被 K 整除的路径|1951

本文涉及知识点 C动态规划 LeetCode2435. 矩阵中和能被 K 整除的路径 给你一个下标从 0 开始的 m x n 整数矩阵 grid 和一个整数 k 。你从起点 (0, 0) 出发,每一步只能往 下 或者往 右 ,你想要到达终点 (m - 1, n - 1) 。 请你返回路径和能被 k 整除的…

matlab读取逐日的1km分辨率中国大陆地区的土壤水数据,并汇总至逐月分辨率

1.前言 ESSD一篇文章介绍了逐日的土壤水数据: ESSD - A 1 km daily soil moisture dataset over China using in situ measurement and machine learning 图片来源:Li et al., 2022, ESSD 中国大陆地区的土壤水的数据下载地址: 国家青藏高…

用Pyhon写一款简单的益智类小游戏——2048

文字版——代码及讲解 代码—— import random# 初始化游戏棋盘 def init_board():return [[0] * 4 for _ in range(4)]# 在棋盘上随机生成一个2或4 def add_new_tile(board):empty_cells [(i, j) for i in range(4) for j in range(4) if board[i][j] 0]if empty_cells:i,…

C++类和对象上

1. 类的定义 1.1 类定义格式 • class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的⽅法或者成员函数。…

目标追踪DeepSort

一、卡尔曼滤波 你可以在任何对某个动态系统有 “不确定信息” 的地方使用卡尔曼滤波器,并且可以对系统下一步的行为做出 “有根据的猜测”。即使混乱的现实干扰了你所猜测的干净运动,卡尔曼滤波器通常也能很好地确定实际发生了什么。它还可以利用你可能…

Python爬虫:揭开淘宝商品描述的神秘面纱

在这个信息爆炸的时代,我们每天都在和时间赛跑。作为一名Python开发者,你是否曾梦想拥有超能力,能够瞬间揭开淘宝商品描述的神秘面纱?今天,就让我们一起化身为代码界的“福尔摩斯”,使用Python爬虫技术&…

消息队列面试——打破沙锅问到底

消息队列的面试连环炮 前言 你用过消息队列么?说说你们项目里是怎么用消息队列的? 我们有一个订单系统,订单系统会每次下一个新订单的时候,就会发送一条消息到ActiveMQ里面去,后台有一个库存系统,负责获取…

HTMLCSS:3D旋转动画机器人摄像头

效果演示 创建了一个3D机器人摄像头效果。 HTML <div class"modelViewPort"><div class"eva"><div class"head"><div class"eyeChamber"><div class"eye"></div><div class&quo…

docker占用磁盘过多问题

我在windows系统上用docker&#xff0c;安装在C盘环境下&#xff0c;我发现C盘占用了大量的空间&#xff0c;查找后发现是docker的映像文件占用的&#xff0c;于是开始清理&#xff0c;中间还踩个坑&#xff0c;记录一下&#xff0c;下次需要的时候方便找。 踩坑 我本想移动映…

Flink本地模式安装详解

1. 概述 Apache Flink 支持多种安装和运行模式&#xff0c;主要可以分为以下几种&#xff1a; Local&#xff08;本地&#xff09;模式&#xff1a; 这种模式主要用于学习和测试&#xff0c;所有的 Flink 组件都会在同一个 JVM 进程中运行。这种方式非常适合初学者了解 Flink…

Uniapp 实现app自动检测更新/自动更新功能

实现步骤 配置 manifest.json 在 manifest.json 中设置应用的基本信息&#xff0c;包括 versionName 和 versionCode。 一般默认0.0.1&#xff0c;1. 服务器端接口开发 提供一个 API 接口&#xff0c;返回应用的最新版本信息&#xff0c;版本号、下载链接。客户端检测更新 使…