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

文章目录

  • 摘要
  • 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 激活函数的关系,进一步指出最大熵原理在神经网络中的广泛应用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【AIGC】深入探索『后退一步』提示技巧:激发ChatGPT的智慧潜力

博客主页: [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯“后退一步”技巧介绍技巧目的 💯“后退一步”原理“后退一步”提示技巧与COT和TOT的对比实验验证 💯如何应用“后退一步”策略强调抽象思考引导提…

uni-app 下拉刷新、 上拉触底(列表信息)、 上滑加载(短视频) 一键搞定

一、下拉刷新 1. 首先找到pages.json中 给需要进行下拉刷新的页面设置可以下拉刷新 2. 然后在需要实现下拉刷新的script标签内添加 导入onPullDownRefresh import {onPullDownRefresh} from dcloudio/uni-app 下拉刷新触发的事件 onPullDownRefresh(()> {console.log(正…

Springboot与easypoi(2):合并单元格、二级表头、动态导出

一、纵向合并单元格 使用Excel(needMerge true)标记的属性表示此单元格需要合并。ExcelCollection表示一对多的集合,下面是合并单元格案例。 实体类 企业类: package com.ywz.entity;import cn.afterturn.easypoi.excel.annotation.Excel; import cn.…

android——渐变色

1、xml的方式实现渐变色 效果图&#xff1a; xml的代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <shape xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools…

使用python画一颗圣诞树

具体效果&#xff1a; 完整代码&#xff1a; import random def print_christmas_tree(height): # 打印圣诞树的顶部 for i in range(height): # 打印空格&#xff0c;使树居中 for j in range(height - i - 1): print(" ", end"") # 打印星号&…

SAP ABAP开发学习——BAPI

目录 业务对象 概念 ​编辑业务对象浏览 BAPI BAPI的浏览 BAPI的调用 BAPI的确认和返回 BAPI的创建 MM/SD常用BAPI 附加&#xff1a;长文本修改 业务对象 概念 业务对象浏览 进入SWO3查看 双击BUS2012 双击下图上方红色位置可以看到BAPI方法的内容 BAPI BAPI(Busines…

MR30分布式IO:石化行业的智能化革新

在浩瀚的工业领域中&#xff0c;石化行业如同一座巨大的化工厂&#xff0c;将自然界的原始资源转化为人们日常生活中不可或缺的各种产品。然而&#xff0c;随着生产规模的扩大和工艺复杂度的提升&#xff0c;石化行业面临着前所未有的挑战&#xff1a;如何在保证生产效率的同时…

VLAN高级特性:VLAN聚合

一、VLAN聚合的概述 在一般的三层交换机中&#xff0c;通常是采用一个VLAN对应一个VLANIF接口实现广播域之间的互通&#xff0c;这导致了在一些情况下造成了IP地址的浪费。 因为一个VLAN对应的子网中&#xff0c;子网号&#xff0c;子网广播地址、子网网关地址不能用作VLAN内…

【Linux系列】磁盘空间不足

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

进程与线程的初探

什么是进程&#xff1f; 现代的操作系统需要运行各种各样的程序。为了管理这些程序的运行&#xff0c;操作系统提出了进程(process)的抽象&#xff1a;每一个进程对应一个运行中的程序。 进程 进程的状态 为了对进程进行管理&#xff0c;操作系统定义了进程的状态。 新生状态…

DNS服务器部署

一、正反向分析 二、主从服务器配置 前提操作&#xff1a; 虚拟机关闭防火墙 一、正反向分析 1、主配置文件 2、正向分析 3、反向分析 二、主从服务器配置 从服务器主配置 从服务器Type改为slave。 编写正反向分析文件。 测试&#xff1…

Spring DispatcherServlet详解

文章目录 Spring DispatcherServlet详解一、引言二、DispatcherServlet的初始化与工作流程1、DispatcherServlet的初始化1.1、加载配置和建立WebApplicationContext1.2、初始化策略 2、DispatcherServlet的工作流程2.1、请求分发2.2、代码示例 三、总结 Spring DispatcherServl…

计算机性能分析的三个模型

计算机性能分析的三个模型【1】 一、瓶颈分析&#xff08;Bottleneck Analysis&#xff09;二、利特尔法则&#xff08;Littles Law&#xff09;【2】三、M/M/1 QueueReference 一、瓶颈分析&#xff08;Bottleneck Analysis&#xff09; 瓶颈分析可以帮我们更好地定位导致性能…

Golang | Leetcode Golang题解之第520题检测大写字母

题目&#xff1a; 题解&#xff1a; func detectCapitalUse(word string) bool {// 若第 1 个字母为小写&#xff0c;则需额外判断第 2 个字母是否为小写if len(word) > 2 && unicode.IsLower(rune(word[0])) && unicode.IsUpper(rune(word[1])) {return f…

开发一个基于Delphi的题库生成系统

开发一个基于Delphi的题库生成系统 步骤一&#xff1a;需求分析 首先明确系统需要实现的功能&#xff0c;比如&#xff1a; 添加题目编辑题目删除题目题目分类管理随机生成试卷导出试卷为PDF或Word格式 步骤二&#xff1a;设计数据库 使用SQLite或其他轻量级数据库存储题…

红队-shodan搜索引擎篇

如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 一.shodan原理与功能的介绍 Shodan Search Engine 它是专门搜网络设备的,只要联网的,只要有IP地址的都可以称为网络设备 1.shodan&#x…

机器学习中的数据可视化:常用库、单变量图与多变量图绘制方法

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

Python复习2

一、封装函数 #自己封装len函数 s1 "hello,python" print(f"s1的长度为{len(s1)}")def my_len(data):count0for i in data:count 1print(f"{data}的长度为{count}")my_len(s1) 二、容器的排序&#xff08;排序之后的结果都会变成列表&#xf…

从0开始深度学习(23)——图像卷积

上节了解了卷积层的原理&#xff0c;本节以图像为例&#xff0c;介绍一下它的实际应用 1 互相关运算 严格来说&#xff0c;卷积层是个错误的叫法&#xff0c;因为它所表达的运算其实是互相关运算&#xff08;cross-correlation&#xff09;。 首先&#xff0c;我们暂时忽略通…

代码随想录算法训练营第十二天| 226.翻转二叉树、101. 对称二叉树、104.二叉树的最大深度 、111.二叉树的最小深度

226.翻转二叉树 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 文章讲解&#xff1a;代码随想录 视频讲解&#xff1a;听说一位巨佬面Google被拒了&#xff0c;因为没写出翻转二叉树 | LeetCode&#xff1a;226.翻转二叉树_哔哩哔哩_bilibili《代码随想录》…